get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/26253/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 26253,
    "url": "http://patches.dpdk.org/api/patches/26253/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20170703191402.3638-10-jerin.jacob@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20170703191402.3638-10-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170703191402.3638-10-jerin.jacob@caviumnetworks.com",
    "date": "2017-07-03T19:13:37",
    "name": "[dpdk-dev,v2,09/34] app/testeventdev: update options through the command line",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "aba27ff0d8f01b7cdebf08fb4bfeda096aa4f269",
    "submitter": {
        "id": 305,
        "url": "http://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20170703191402.3638-10-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/26253/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/26253/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id D892C7CA3;\n\tMon,  3 Jul 2017 21:15:17 +0200 (CEST)",
            "from NAM03-DM3-obe.outbound.protection.outlook.com\n\t(mail-dm3nam03on0046.outbound.protection.outlook.com [104.47.41.46])\n\tby dpdk.org (Postfix) with ESMTP id 7B32F5587\n\tfor <dev@dpdk.org>; Mon,  3 Jul 2017 21:15:15 +0200 (CEST)",
            "from jerin.domain.name (111.93.218.67) by\n\tBLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.1220.11; Mon, 3 Jul 2017 19:15:10 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=0TVI79PykPKzr3JDx63iAnlWwWwQmxwvPu4f9yeeqq4=;\n\tb=lJyK9qUmY40v3FRBfnKgpFZ+D0M9xNsjxbufWQtAuwwQvJlWnbjgJ2tL5gcPf4ghJhb9Rj/xiXz0J+IZUM9JHV675TP1EM80+E4BsK1JyDtG51eU2vh+gAkxAka57uYDwVM5YLxu40WXreTJRIF1PidKVFbmtZ1K6LhRRnMVpZU=",
        "Authentication-Results": "dpdk.org; dkim=none (message not signed)\n\theader.d=none;dpdk.org; dmarc=none action=none\n\theader.from=caviumnetworks.com;",
        "From": "Jerin Jacob <jerin.jacob@caviumnetworks.com>",
        "To": "dev@dpdk.org",
        "Cc": "harry.van.haaren@intel.com, bruce.richardson@intel.com,\n\themant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com,\n\tnarender.vangati@intel.com, nikhil.rao@intel.com,\n\tgprathyusha@caviumnetworks.com,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>",
        "Date": "Tue,  4 Jul 2017 00:43:37 +0530",
        "Message-Id": "<20170703191402.3638-10-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.13.2",
        "In-Reply-To": "<20170703191402.3638-1-jerin.jacob@caviumnetworks.com>",
        "References": "<20170528195854.6064-1-jerin.jacob@caviumnetworks.com>\n\t<20170703191402.3638-1-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[111.93.218.67]",
        "X-ClientProxiedBy": "PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (10.174.144.19) To\n\tBLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "e0df1dce-7761-4a1a-3f54-08d4c247d55f",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BLUPR0701MB1716; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1716;\n\t3:trdqNVR7w90kmcM5VOrI0bcucVRdWRnCzcJYsxs23P8ynwb6WfaOmAamr6DOr7hMOhFe3y6gHH2FPY6vkXxwBnTLzkKoRduRNgfQMba7FYFcfvJXOKlW32Y8elt71r8qkCRIOe9SqwSGNaURycIAU1aaQ9FFdtkZrryzlsC9HnNCPXgNPqdun6anP6rfASQDp/pBGNsbbtwcqUK58qU76vYw2S94F11skYV3X2AuYkobnFQJiWbDQT568Qq+6mosRTdaXUxsP6LEWl0fDjM6798y5NC63Wz+VmwtA/MTqkAjnOaW0UEYG9YRaTEa7/MDWwl1mJLVTOFoP/8tu7T5vKHjtEH6GQ41mKH1kSIwIdDVDLkGS22gAOnmZDTqgzTO7LbMpastp03XsTMUy25MgKHwOtwPAz98gHxEHx6XFVHYu/94l5nuO7LeuwTV+72pWOuqFoM54E3QD61iqkIKBdzFhrhnCyAWi2zNFYx0ba6K7Sk6x3fEBgnQEVshBmqmg+R/1rLE9TGibtTJL4Kdcnt0d9+Ix+FfpIsSJNHb9pzQnDJIaEUUrnGV4vB57D1KeJTjZasWZ0Tozl5Lqtka/gyB/7paguak6APjN6CkZPDDMBMELiWXlhRupwI40eNQZDWfPXP2xR+1MUKwOylGYqiKb8d/Xlbiylf4VGYHPLPvyS6eaR2vfKf4n6lQmHAa38rVPF0oU0nyyigKiNbKdxiEdM7tc+GjbVLOENQBwvSNLi2GUC61Bo9X5qAN2RjO",
            "1; BLUPR0701MB1716;\n\t25:5ewJnEVC35M84GOayipU3u8PxhPcZe7QqX0gySz7gKukPhw0FWFKvhoPNFJWdSNaACDiFnX24UKvFq9iAkoSqrfrGWgpKxsX/bsfZ5/OgPjsJ9T8m+2WkINIJzrTapzrosLikfmeJXx1u+lpGmRaHmXjxTd1kCglosq0H7Wse1G+qJzXHHyyxKDBONAaJ1xlXka9Qsge/QxGMnzqfdpeIktr99PypMYd+fZu+QPonb6Z9rjg0L8Df1uZ9QVjeNy5fR97xzK0m/UqE+KacDZuLNVxpj2qQgPyWDxc8GEhtJXDaUwaev0fYKFP188nIFuLbMYzaSm9fDz2bB++v4c1eYkaqFBuAkBUt0KR7rTq4qnfpsOWv4exMKkDaVxuLZ+dONM1+Po2n8YTjiYkdKEYBaAKrdCC3xEiRaGVS6f1lEo7oCDNLWUlf2VrPFDxrlnZ6MeYXR7A7JCO9mtF3VU5hdnKZ6+oJsdmEZB6a9b3cJnCOTEL6pERjkRUhumg0KN2J+kRB7Yk8zmMtW6+bNQ0juk3TFc3L85mS7LlKxTHjrSPrxyJArgPXML/zi/Ebp2hjEf9zq+F7ng4zrnjvxIJci5UAJdhJBI98RtUXXe8z/3H+AN6J8fy+0iRSIjsy6KAmM8UkARvaMH5tuNPxJqCu9oxXh2NdnuAlLWyrMEzJAWETGfuBJWHivcyDLSB0GYdH4i8dAaPB8bUG9gwRSrg0QbmJNNwoOqWfFiNbHJ52AB6Vuz0jphbz+igI1ober6uXgTyn9s9JnZdytjZPIQCC37+wPxIeQFqw3L6GeF+5ajaGkjE9oMCRuYU8IIjFNC5J4js6KWc99tT4P4Jffdufxw8hzs208tfnLv65Q+cSlwJCk634jL7sE1Yvcyy8vw9tb/ySJwNh2tM1+o3KkufoQyyvXn97kfcdR3nF/7+sNQ=",
            "1; BLUPR0701MB1716;\n\t31:4iaw7LajmE02njLW34be+xHGcZQ7S3YiLb1JGcrd4+Iro2q7y6xP4SmowZG+KGYH0f9pM5QArf2Tid+mBGlKGQtN+qh9id04kmexKMX+sPToEnE8ilFgilDMezcJHLjlmSnKta0POADw9Tjt46hgia7wBIgJoVvRnmBIUEeqh/rWuqIgUrfEbkGdOCjtGTTsfsof2gLPbAp2R7sIfbw8lLtoz3GA+6c0UNRoTJHLkvj9qRnLtvJZ8ijh2NH+rS1m7woTQQGmzxOIiWgwCUklBs68QLFLyQFQrg9Bh1AdAnf+cbQGfsUXmOt7EQn1ri6IckfbdC1RqoJVTjrDq0u99FemJu8ESKM3KPfh241bZvpa2mfia6I42NPC4onlHpKJ4F7z+mTaESNNGFicEL5w7wxXEQhMTJfzu2XLuuoDXJA2TZP/6DHeATdHPYgi1FSYZngLAu8aJ+lrw2ATKBIauqSb8mBoKo4JniMzmlciktceWT1lH6gMEL9AxhU9IXhFq75M7+F34lDc4M1evnFDy8YouQN0HwhrQb7pstYIyJDFGt523bBiAHSAObkF0AL1+rhs6fsxM6jEuV597yEkgj+69IWA4vC4tor6KlmyjxPFDJ5N2rWuWEpjIwGP4t2rMJEAiD8txYn2C95hD0wle/ZQLZYunvtJ+RMJt48VdGA=",
            "1; BLUPR0701MB1716;\n\t20:Py/uFq5GiFxsgIEXBNnUw+DNXHzWjsys9XPJYui+fFUNsjVlJXKaqfrHdCCeL5k7aBZRThIhMTCBZ++WQN8jHK88MQJfoXFZrEbHZfOtmJZT3S/8+aaM04t0GvZZWsWhrU6hhPD/I5Nuz26GgjGFyIh8iJpyRiqowp/tzw83DmjsqQJrykS9KNvRMtFniTXrJpihPXvb4RYPY43/TJ1BFncRxNO52fw+ven0CfAj7tDjJjxNX9F4OOcyd6ihm0iALrrDbvtVvervGYwPbPNjqTLwQU26eSNgXHA7PRXgbwLkjwZEuHNDJEb1S9NUa0njiNz7oXv2FealUs9zWvijZaVZAkYTJA2RHiKYtoYkGX7uIgjONUFoi1qWREsVLRtouUELBb4MZWGLqUhT3+1g5opk0AILRDyQoJWYOANrxz40TNk9WKq3SH/WHWEQcNWxu/nVVOjZw/FnkR/HdtYjbcM3TEcUaHtcD3LiXALNfk5dlP7vFWPWsgB2nHodl0XiNL0Hhh+DBklu6+DpbbhToCnR+GqV6qQkO+AwXCZegLVdwidD303AI1sGcgXp9gyfez0Veynt0QUlgdcLYNb4T8zDpgfzyThoGgiOtMwjwQ8=",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t4:WdjwNesKfFi7mpIkPG/XbCUOQp2xh9X6lPUZ5G2E?=\n\tDeRrhSSokj1xq7Jm0CvgQLHsfKwppI3mlsfczVB3ui1NVcGDCe1NrmVNUAUU74Pe3Fr73lRZNSjD8kheum4ASrOOJT+Ay9oyHMaF2mNsC/wS2lZpI1GDcGmynbBZdk5MJP8SCYC/r+QdunWiH5KsplCX//XXDvkOmJ25c1IQZhKPX7KwucboaGqM5V5+kSrxN0bQJk2tRMQh65LjqHe0CZHC9e17a0iKB2f4yb+A3urVBwxB0D+uippDSnKAuhIqgKRCVDt8fRx4Lc6BM8aS3jVcjy5ZcdFbWkhO9fmwHtIL5xZY4sdG9kbtVqqD3u3/Pz2RVEX68aGRD00dfOkGKS2UFwaJqGg3GPMSxzCETzbn7ol+nlDPMbpOLMT7YucBSugdD42Qi1z76STO3qEqzKQcgZSmNZ3xEbp5CqQZA2eNQQjA9Lk1tanJKwP95NEtSv2YyFgoT5G7pw8lrvGU90T3jHIHOIQ7nozKP4PDzg8pptA0oVMzPfh5erPkDuIJg8aTRuOxMNfw47ZvHJG43lnKmHQ+eOGkqmkNo4DfsY6ONrU+lmUnR9UoBkOYX4gGWbwHF4vIO2ifTOonQ38eF33O4M8RnJ2nDjyB32fFb/8w5dTL3ejweml2X2UA4NkElD+JkXVPGSGEyfh2bS0kE01KZxg9SIwcLo86W/8zmW4dzJWY2HPaiTymdhPddAwse8Rtf6wfoPEG9BC0q04kwY2ITjXVj5wQ6bhkSf1EAczEY/M+nmrApZ6R6lLI75GO/+HX7RmaWt36eDOTyV8ylXyrPXvAtJY7oCOo6OAZvGFcUoEKkHnwBh8LP6pnaoLkMleeB59+RY1RMWGkb3tXXAbvYNXYE4gsERPlXcKIke+8sZkOHjGNeD8O6/A6oVSpqlO0OsRVsFxOKL0n7jNc6v02eB4exI2Ose04o18MVUK1FKnu7Be3mmoHIsCJ2rJ8lgHEFAoBmLbEu7ZD8ZAPSjZK/S5kZKssaNgaCJSE5GFS1hmh5SSzi+jGRzBOfHqPlFwBX2VpyryCa/ldaGbOLEetOAL2ZibE3G30zJChlyLH4OKbIR44QVntK5Ekwr6neCyxKofIXlqnyAbJKCqN1Zuo9ySWZxOjoes1DbAqjuVkqEcUHu8awI2XSFxJASwMfFInYU5O9G0ixQgdlP/fOCikLAhXAPfNRhrC8lMX/lP/p8ihWO6WxElOjzu8yoPYA2k=",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t23:3k3rlUAzD5I3FYj6MKgVP5v+W2ZmWhljbrbjeqV?=\n\tQN5c1MvaEQBVczqLb4pQlClidTvxKbXeGlyAPQYCFUd46+IkkxtBl08tmXqpJ6Rrg3fyCs3WS0qWXsww8/mth24MP62IobtEhBuDLY5UOGKKs2xFwC0ynPkHU4w8Rl4kRFDyHC+PJqims3lw4WVfxNlzG5Yc8BNVCuumxVDnprgtfWbWV7U7pDNEsMCPfoCuceEpbSy/lSqXytErbCiz6WuZVbAiasgFQZY9JMsFyh5yG4JUj1tzGkL/IMeDDrWmhCsiE3HDAGzxtll4M177PudPtSqSJ1z7G1+NFOXj3638F2ffc++mD72d+vEV6A0IaYqD1XEobZP85e5q2JoVOARrovEalZsXSKpqxSA+M8EF9k4pl3W2SrlkTPnHS8mfn7guwBIuEB9Mw/L+PaNz6Mfymj1u3j+7HrOBL1RURVF3n3LEZxpBxvo4Y2tyD9QDhmLCow67tSiD2PsEDJdcd/g5+3cpgoEEVjlaeTWcz+fyiFR45EWMCUmJQBoFsKRMDzoACx1iGhrehskWaaKclP8JsHXgZJOKOIRWaUH+Fh93V+VwtTJTyU7TmwbTeBw/oAqSxLrmFUkaRgmLNsepqVI+4fokBoaLCGNZrtMv42hnQmoSVD8WZo4KLt31Y9L911ZLVgtStVcbEQ115tqAoiVkJaOvr0OSJK5qkNBG5FSOANfKYuJK8W+VRnl4rRGHf4218I3eSQmBTvCkZ5S8t4w2nmd50Pgk+3SyUR4HkFB0tODhkPhY8GBLS05pqdM865FDMw358mRw14MKOh2RNSANGe3hHnL/wjFzzlFRtcEELNrQpFSrT0nk8wc1mz7ibHOKcfmF52sGQT7DudZaZ1aASqB88O5W8fLkPHW68G8Jk0xQeFlsc6qlwDbCW0wPjjFvMcGPW9WsdWBK3Wy58k4l/LrMT0S1XhL6TeH1JCTaP451hJYeS61VD6EBAQqNMMN45t0uKlflgk1/PvzbU4uEztyVBXUABSfRFp18/UuigiA7HYj2QylkeXeawYG5ZLFsweTP8vguScs+Jm/fx5EWvqgh0Ql2sioTgBkyjam+vwda9fsCk1f8h5Jl7yR7MF93eOoWzlBu5ArVJ/HwpRrwUIaGTkh8RWZzMBFPr6Ee7Dw==",
            "=?us-ascii?Q?1; BLUPR0701MB1716;\n\t6:kV2YdotV2GeIjfOHSseHecxcQbfsihWQoan2dpsB?=\n\ttdxGt6Pd7i6k5851C2bln1ouAb/xYbWdnIj4rlsJQ2tjnSP0+9HJ+ZRoGTpxYwd6Mjs9zbUqR5jPTYBudGzMhF2MWCNbtnAysHbUkBJwqbWVUBKP5gMh9KNsuV0OaMf3Jpyi/2x2+QEJHw5UGahuEE6ZAOHuOH6InBwJip32l9NRRNjVGJzhS5Pk6/daWwIu4hNzEbOjCVjnac2SHBoT3S6hRkmiEct8O8U/ARzTcl3XK3ky0McKYWTevKJKfJZepoJ0eHfpoM+HANW3wCIwOYmev/Dy4On2Jjt3vdFJsYScqw1sOMT7vGmEDa9dIZCcrMi9YVJ1xZF4yzgVGwVI8T0CJvw+U2+FzgXFL+xTZ8YEfS6JCbXX3dHnCoXdeyqo8zmwsUZpret7kOJb3A2rtZEzftUzdtqkdbgJZdqhShf8d/qYYFnMWaudRkU3W+i1prxYpAP99/DxHd3zfZVprVFwqYMfdR4pIybQuF9NqVj5kg8+Ja6A1ReD4EhElpB0ccJADixNogM1fKp9QDd0luzLGTGX8s0WnaBm0f4MDYWFPo00dqrPNtaEqPfAG/Of/eafQrTFr/udGMC1f98/5eH4dZOT8xdQjumsG1SDnG0kQRQELp+fQf2FnCoMt1OGJjfdrCZcj+smrH85fnwDJ8olCLCJ2QN5NbE+MCNZCxG7Zv+29Bv9Lx4lJuxK+zFlDeh1DFF/0Rd8vwlvj2AOKF3osodt2DJnOsI2kkb0Ug4NFsTVjYY5qMkEEoVQQ/kvWgGNP2uTwGrHj8/PyMbA/XuA994jNn1qujq8O1KjnHdUzz9+iEJAIP75oeG12y2Jz784Pbmm/vvwqKuU2jGJzrTEXFjTu/CVe1HukhAALjASxeBIWMh5HYvDxKwdrujaRxhQDkXGED/2iVUpvDAWRasqLl3M6vJdjWY4WXdYlUoq+gBYYJ52l0L/wjk5/r4XlU4=",
            "1; BLUPR0701MB1716;\n\t5:U1MWxxFTm0s1yLIJJLs2E3uLHRnE+u/is7VCpEzb1qz0WMn20J7IrQUTnFncrN/Qtp8yIRYOEZ+r5SibFSpQ/f0tyBlRm19HanYwWrCbpJgl/tGNqHRoe7TZHjb2PRHqWsyDNkkmzLxsuPeneDKKGB4yXJuvye1I3rS2sz3PMd7SLCjAzu/LC0+A2IG8v33lJz/4IoIUGvebwiaAE+4FfixK3f4BBdZPm0Wh5zYMrPTd5Dp0+Yto0EFI3TBBRIgSrJlfZVNYB3/EUfsqByopORKwPdUx2NMvCz0dHOMXQb2AbJlEIL113NDP+v9ZHCJOuxJxzzevF4ytIxVgyl7NYt1cVPsSnu+bYBJCYgvbXAV820FTRIHBSMv6IO5ZKxE/XzkmWgj1Xam4Tktpadi3/PLa1j5UyzMHNX+ZtxJXrnhX09JPRrevsG9gMAJFo/rR60BFfl537HncAv3QLfC4EFQdUYj/lGmibFNL3q2EVvMTdC7Km6Usz8QFERTPuQOK;\n\t24:y5bFkYz534U3ALVxnITW4K72cUYnXNTbmwdd7kJI+Tjh+xlsI+epeQsDncjXKABISP7V/wbbjmd6Vkoja62z4i9fDc0GivhWzKZWTDbPEE4=",
            "1; BLUPR0701MB1716;\n\t7:oeQUJRQ2zYAgrS8vqXs/DIYicI+F/lxUQyW+iXpAl1G5eKEAopF6kYw7c8qOMHAI8FHy5ruFGDt8KO9s+zJiK0t6OQXLTaPw7WLROhu/pYYYvlioLgMvm5+/5E8j2uS2Y+gyTjw8Up/Pkub1ohJz/6tZYnwOTEvS8NyUXmoIYjkTqu+sb4czE/2XRrBTwhx/L/SSOnMnCJKEuC6IAPQAF664JM7uzC83bU90TIwgJB4Bho+gxvb6yL8eGQ0iPFD1z71Cva6AFlSC8bKJaQds9yjZrYrguA7N9VLZI6Xhar7Z2nC/yYZwGVlW2TTqrOpIL6JzwFe7jWntF7/s7bnBatpOdR8lSYG0GtVPZgBMykU062ZaAKXgqSNCnUVg9xNs1JxM5PqN4b272SK+MxV1tGWe7qO0atZdcgv0wSK8BHF8/L62qSqGgL9RYktoqhbdoSMh3csPrTBuR6BsXrODplu3tLiktNEmNbF2j8heqgMWSAs1fhjZEpvKrpTGvO0PCP+B6BeKYWGd0aKY0ZKjgWXPcdWCgVCPgfvE/ZRWzKsSePSVc+l2641ipHl07R0Td3WCkDZqkqx4n8W9wdrze3odo902GHBjBPIs5PimNOG37bdWe9M0JPGTdZFnQFdGyOKxUszPouTyoW4jQwo3pgJ9IWJ91y6BFDpfEiACT/E4x/bySfMuJJyb3NRsmyUSDFxmufwiSJedS05Rt12MT91i6fHzypieBsUaBCHRkdCHy7b+6qINXExntKCMSpIwwSSO/kGKgr5kvtMFCZH6dc77APK0GoyPtuagdmSusmk="
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1716:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB1716C4DF8A1D3F81DC9829E2E3D60@BLUPR0701MB1716.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(236129657087228)(167848164394848)(228905959029699); ",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BLUPR0701MB1716; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BLUPR0701MB1716; ",
        "X-Forefront-PRVS": "035748864E",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(478600001)(53416004)(72206003)(38730400002)(110136004)(107886003)(42186005)(8656002)(50986999)(76176999)(36756003)(6512007)(53936002)(4326008)(25786009)(5003940100001)(6916009)(42882006)(2950100002)(66066001)(5009440100003)(6666003)(2351001)(2361001)(6486002)(6116002)(189998001)(305945005)(33646002)(5660300001)(81166006)(8676002)(3846002)(47776003)(1076002)(2906002)(50466002)(48376002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:jerin.domain.name;\n\tFPR:; SPF:None; MLV:sfv; LANG:en; ",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "03 Jul 2017 19:15:10.8868\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1716",
        "Subject": "[dpdk-dev] [PATCH v2 09/34] app/testeventdev: update options\n\tthrough the command line",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Guduri Prathyusha <gprathyusha@caviumnetworks.com>\n\nAdd an infrastructure for updating the options through\napplication specific command line arguments.\n\nSigned-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>\nSigned-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nAcked-by: Harry van Haaren <harry.van.haaren@intel.com>\n---\n app/test-eventdev/evt_options.c | 260 ++++++++++++++++++++++++++++++++++++++++\n app/test-eventdev/evt_options.h |  18 +++\n 2 files changed, 278 insertions(+)",
    "diff": "diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c\nindex 200e594e9..209abc225 100644\n--- a/app/test-eventdev/evt_options.c\n+++ b/app/test-eventdev/evt_options.c\n@@ -57,6 +57,266 @@ evt_options_default(struct evt_options *opt)\n \topt->nb_pkts = (1ULL << 26); /* do ~64M packets */\n }\n \n+typedef int (*option_parser_t)(struct evt_options *opt,\n+\t\tconst char *arg);\n+\n+struct long_opt_parser {\n+\tconst char *lgopt_name;\n+\toption_parser_t parser_fn;\n+};\n+\n+static int\n+evt_parse_nb_flows(struct evt_options *opt, const char *arg)\n+{\n+\tint ret;\n+\n+\tret = parser_read_uint32(&(opt->nb_flows), arg);\n+\n+\treturn ret;\n+}\n+\n+static int\n+evt_parse_dev_id(struct evt_options *opt, const char *arg)\n+{\n+\tint ret;\n+\n+\tret = parser_read_uint8(&(opt->dev_id), arg);\n+\n+\treturn ret;\n+}\n+\n+static int\n+evt_parse_verbose(struct evt_options *opt, const char *arg __rte_unused)\n+{\n+\topt->verbose_level = atoi(arg);\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_fwd_latency(struct evt_options *opt, const char *arg __rte_unused)\n+{\n+\topt->fwd_latency = 1;\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_queue_priority(struct evt_options *opt, const char *arg __rte_unused)\n+{\n+\topt->q_priority = 1;\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_test_name(struct evt_options *opt, const char *arg)\n+{\n+\tstrcpy(opt->test_name, arg);\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_slcore(struct evt_options *opt, const char *arg)\n+{\n+\topt->slcore = atoi(arg);\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_socket_id(struct evt_options *opt, const char *arg)\n+{\n+\topt->socket_id = atoi(arg);\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_wkr_deq_dep(struct evt_options *opt, const char *arg)\n+{\n+\tint ret;\n+\n+\tret = parser_read_uint16(&(opt->wkr_deq_dep), arg);\n+\treturn ret;\n+}\n+\n+static int\n+evt_parse_nb_pkts(struct evt_options *opt, const char *arg)\n+{\n+\tint ret;\n+\n+\tret = parser_read_uint64(&(opt->nb_pkts), arg);\n+\n+\treturn ret;\n+}\n+\n+static int\n+evt_parse_pool_sz(struct evt_options *opt, const char *arg)\n+{\n+\topt->pool_sz = atoi(arg);\n+\n+\treturn 0;\n+}\n+\n+static int\n+evt_parse_plcores(struct evt_options *opt, const char *corelist)\n+{\n+\tint ret;\n+\n+\tret = parse_lcores_list(opt->plcores, corelist);\n+\tif (ret == -E2BIG)\n+\t\tevt_err(\"duplicate lcores in plcores\");\n+\n+\treturn ret;\n+}\n+\n+static int\n+evt_parse_work_lcores(struct evt_options *opt, const char *corelist)\n+{\n+\tint ret;\n+\n+\tret = parse_lcores_list(opt->wlcores, corelist);\n+\tif (ret == -E2BIG)\n+\t\tevt_err(\"duplicate lcores in wlcores\");\n+\n+\treturn ret;\n+}\n+\n+static void\n+usage(char *program)\n+{\n+\tprintf(\"usage : %s [EAL options] -- [application options]\\n\", program);\n+\tprintf(\"application options:\\n\");\n+\tprintf(\"\\t--verbose          : verbose level\\n\"\n+\t\t\"\\t--dev              : device id of the event device\\n\"\n+\t\t\"\\t--test             : name of the test application to run\\n\"\n+\t\t\"\\t--socket_id        : socket_id of application resources\\n\"\n+\t\t\"\\t--pool_sz          : pool size of the mempool\\n\"\n+\t\t\"\\t--slcore           : lcore id of the scheduler\\n\"\n+\t\t\"\\t--plcores          : list of lcore ids for producers\\n\"\n+\t\t\"\\t--wlcores          : list of lcore ids for workers\\n\"\n+\t\t\"\\t--stlist           : list of scheduled types of the stages\\n\"\n+\t\t\"\\t--nb_flows         : number of flows to produce\\n\"\n+\t\t\"\\t--nb_pkts          : number of packets to produce\\n\"\n+\t\t\"\\t--worker_deq_depth : dequeue depth of the worker\\n\"\n+\t\t\"\\t--fwd_latency      : perform fwd_latency measurement\\n\"\n+\t\t\"\\t--queue_priority   : enable queue priority\\n\"\n+\t\t);\n+\tprintf(\"available tests:\\n\");\n+\tevt_test_dump_names();\n+}\n+\n+static int\n+evt_parse_sched_type_list(struct evt_options *opt, const char *arg)\n+{\n+\tchar c;\n+\tint i = 0, j = -1;\n+\n+\tfor (i = 0; i < EVT_MAX_STAGES; i++)\n+\t\topt->sched_type_list[i] = (uint8_t)-1;\n+\n+\ti = 0;\n+\n+\tdo {\n+\t\tc = arg[++j];\n+\n+\t\tswitch (c) {\n+\t\tcase 'o':\n+\t\tcase 'O':\n+\t\t\topt->sched_type_list[i++] = RTE_SCHED_TYPE_ORDERED;\n+\t\t\tbreak;\n+\t\tcase 'a':\n+\t\tcase 'A':\n+\t\t\topt->sched_type_list[i++] = RTE_SCHED_TYPE_ATOMIC;\n+\t\t\tbreak;\n+\t\tcase 'p':\n+\t\tcase 'P':\n+\t\t\topt->sched_type_list[i++] = RTE_SCHED_TYPE_PARALLEL;\n+\t\t\tbreak;\n+\t\tcase ',':\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tif (c != '\\0') {\n+\t\t\t\tevt_err(\"invalid sched_type %c\", c);\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n+\t\t}\n+\t} while (c != '\\0');\n+\n+\topt->nb_stages = i;\n+\treturn 0;\n+}\n+\n+static struct option lgopts[] = {\n+\t{ EVT_NB_FLOWS,         1, 0, 0 },\n+\t{ EVT_DEVICE,           1, 0, 0 },\n+\t{ EVT_VERBOSE,          1, 0, 0 },\n+\t{ EVT_TEST,             1, 0, 0 },\n+\t{ EVT_PROD_LCORES,      1, 0, 0 },\n+\t{ EVT_WORK_LCORES,      1, 0, 0 },\n+\t{ EVT_SOCKET_ID,        1, 0, 0 },\n+\t{ EVT_POOL_SZ,          1, 0, 0 },\n+\t{ EVT_NB_PKTS,          1, 0, 0 },\n+\t{ EVT_WKR_DEQ_DEP,      1, 0, 0 },\n+\t{ EVT_SCHED_LCORE,      1, 0, 0 },\n+\t{ EVT_SCHED_TYPE_LIST,  1, 0, 0 },\n+\t{ EVT_FWD_LATENCY,      0, 0, 0 },\n+\t{ EVT_QUEUE_PRIORITY,   0, 0, 0 },\n+\t{ EVT_HELP,             0, 0, 0 },\n+\t{ NULL,                 0, 0, 0 }\n+};\n+\n+static int\n+evt_opts_parse_long(int opt_idx, struct evt_options *opt)\n+{\n+\tunsigned int i;\n+\n+\tstruct long_opt_parser parsermap[] = {\n+\t\t{ EVT_NB_FLOWS, evt_parse_nb_flows},\n+\t\t{ EVT_DEVICE, evt_parse_dev_id},\n+\t\t{ EVT_VERBOSE, evt_parse_verbose},\n+\t\t{ EVT_TEST, evt_parse_test_name},\n+\t\t{ EVT_PROD_LCORES, evt_parse_plcores},\n+\t\t{ EVT_WORK_LCORES, evt_parse_work_lcores},\n+\t\t{ EVT_SOCKET_ID, evt_parse_socket_id},\n+\t\t{ EVT_POOL_SZ, evt_parse_pool_sz},\n+\t\t{ EVT_NB_PKTS, evt_parse_nb_pkts},\n+\t\t{ EVT_WKR_DEQ_DEP, evt_parse_wkr_deq_dep},\n+\t\t{ EVT_SCHED_LCORE, evt_parse_slcore},\n+\t\t{ EVT_SCHED_TYPE_LIST, evt_parse_sched_type_list},\n+\t\t{ EVT_FWD_LATENCY, evt_parse_fwd_latency},\n+\t\t{ EVT_QUEUE_PRIORITY, evt_parse_queue_priority},\n+\t};\n+\n+\tfor (i = 0; i < RTE_DIM(parsermap); i++) {\n+\t\tif (strncmp(lgopts[opt_idx].name, parsermap[i].lgopt_name,\n+\t\t\t\tstrlen(parsermap[i].lgopt_name)) == 0)\n+\t\t\treturn parsermap[i].parser_fn(opt, optarg);\n+\t}\n+\n+\treturn -EINVAL;\n+}\n+\n+int\n+evt_options_parse(struct evt_options *opt, int argc, char **argv)\n+{\n+\tint opts, retval, opt_idx;\n+\n+\twhile ((opts = getopt_long(argc, argv, \"\", lgopts, &opt_idx)) != EOF) {\n+\t\tswitch (opts) {\n+\t\tcase 0: /* long options */\n+\t\t\tif (!strcmp(lgopts[opt_idx].name, \"help\")) {\n+\t\t\t\tusage(argv[0]);\n+\t\t\t\texit(EXIT_SUCCESS);\n+\t\t\t}\n+\n+\t\t\tretval = evt_opts_parse_long(opt_idx, opt);\n+\t\t\tif (retval != 0)\n+\t\t\t\treturn retval;\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t}\n+\treturn 0;\n+}\n+\n void\n evt_options_dump(struct evt_options *opt)\n {\ndiff --git a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h\nindex 75f129ebe..ce279dda2 100644\n--- a/app/test-eventdev/evt_options.h\n+++ b/app/test-eventdev/evt_options.h\n@@ -44,6 +44,23 @@\n \n #define EVT_BOOL_FMT(x)          ((x) ? \"true\" : \"false\")\n \n+#define EVT_VERBOSE              (\"verbose\")\n+#define EVT_DEVICE               (\"dev\")\n+#define EVT_TEST                 (\"test\")\n+#define EVT_SCHED_LCORE          (\"slcore\")\n+#define EVT_PROD_LCORES          (\"plcores\")\n+#define EVT_WORK_LCORES          (\"wlcores\")\n+#define EVT_NB_FLOWS             (\"nb_flows\")\n+#define EVT_SOCKET_ID            (\"socket_id\")\n+#define EVT_POOL_SZ              (\"pool_sz\")\n+#define EVT_WKR_DEQ_DEP          (\"worker_deq_depth\")\n+#define EVT_NB_PKTS              (\"nb_pkts\")\n+#define EVT_NB_STAGES            (\"nb_stages\")\n+#define EVT_SCHED_TYPE_LIST      (\"stlist\")\n+#define EVT_FWD_LATENCY          (\"fwd_latency\")\n+#define EVT_QUEUE_PRIORITY       (\"queue_priority\")\n+#define EVT_HELP                 (\"help\")\n+\n struct evt_options {\n #define EVT_TEST_NAME_MAX_LEN     32\n \tchar test_name[EVT_TEST_NAME_MAX_LEN];\n@@ -64,6 +81,7 @@ struct evt_options {\n };\n \n void evt_options_default(struct evt_options *opt);\n+int evt_options_parse(struct evt_options *opt, int argc, char **argv);\n void evt_options_dump(struct evt_options *opt);\n \n /* options check helpers */\n",
    "prefixes": [
        "dpdk-dev",
        "v2",
        "09/34"
    ]
}