get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40903,
    "url": "http://patches.dpdk.org/api/patches/40903/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1528478659-15859-4-git-send-email-anoob.joseph@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": "<1528478659-15859-4-git-send-email-anoob.joseph@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528478659-15859-4-git-send-email-anoob.joseph@caviumnetworks.com",
    "date": "2018-06-08T17:24:02",
    "name": "[dpdk-dev,03/20] eventdev: add eventmode CL options framework",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "ab96eac23a4da642fb60c283e059afd0ddfb5a35",
    "submitter": {
        "id": 893,
        "url": "http://patches.dpdk.org/api/people/893/?format=api",
        "name": "Anoob Joseph",
        "email": "anoob.joseph@caviumnetworks.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1528478659-15859-4-git-send-email-anoob.joseph@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 61,
            "url": "http://patches.dpdk.org/api/series/61/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=61",
            "date": "2018-06-08T17:23:59",
            "name": "add eventmode helper functions",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/61/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/40903/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/40903/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id E3A391BB4D;\n\tFri,  8 Jun 2018 19:25:12 +0200 (CEST)",
            "from NAM03-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam03on0079.outbound.protection.outlook.com [104.47.42.79])\n\tby dpdk.org (Postfix) with ESMTP id 7B8A51BB0E\n\tfor <dev@dpdk.org>; Fri,  8 Jun 2018 19:25:11 +0200 (CEST)",
            "from ajoseph83.caveonetworks.com.caveonetworks.com (115.113.156.2)\n\tby DM6PR07MB4906.namprd07.prod.outlook.com (2603:10b6:5:a3::11)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.17;\n\tFri, 8 Jun 2018 17:25:07 +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:X-MS-Exchange-SenderADCheck;\n\tbh=xOSHeKyS7XdVLRlN8b5wKhbklwIbuvxXXO2Vvfc44Zc=;\n\tb=UbSlGODZ+MnrUKt+jhilxGede0FfP+FAfyMbm4Pbxu0X0eqT8DpFBY5epUYunoL6nmw2kGQeJqV+WPCTNUO1KxrsrtaRk7sYSeoN5gri0CvNWh9NE6BMmxI0a0MUjIIC3xdiaokDAJ5A+fr+jlvWBZORx4uABoFBUUTK3npnnTU=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Anoob.Joseph@cavium.com; ",
        "From": "Anoob Joseph <anoob.joseph@caviumnetworks.com>",
        "To": "Bruce Richardson <bruce.richardson@intel.com>,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tPablo de Lara <pablo.de.lara.guarch@intel.com>",
        "Cc": "Anoob Joseph <anoob.joseph@caviumnetworks.com>,\n\tHemant Agrawal <hemant.agrawal@nxp.com>,\n\tNarayana Prasad <narayanaprasad.athreya@caviumnetworks.com>,\n\tNikhil Rao <nikhil.rao@intel.com>,\n\tPavan Nikhilesh <pbhagavatula@caviumnetworks.com>,\n\tSunil Kumar Kori <sunil.kori@nxp.com>, dev@dpdk.org",
        "Date": "Fri,  8 Jun 2018 22:54:02 +0530",
        "Message-Id": "<1528478659-15859-4-git-send-email-anoob.joseph@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1528478659-15859-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "References": "<1528478659-15859-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "BM1PR0101CA0050.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:19::12) To DM6PR07MB4906.namprd07.prod.outlook.com\n\t(2603:10b6:5:a3::11)",
        "X-MS-PublicTrafficType": "Email",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:DM6PR07MB4906; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM6PR07MB4906;\n\t3:lsed3pLz0RJPwzz6Lf5AINScoQRayGwLSZOksbMwjiAtP+Y/eRnVQlXKN6Ntc7UJJly2yFMkPnzPZiThV1RmwGhO0V88OUS9pqtK1dyEVYw40igBJX4LWCHnT/rXrD9NoVCISSEShnwqsNtndVHsyPqaqb2uqJF9psaQogj8CGquklXQqkQ5Q0M0njQ/NLGgsN2aRBBJ6CgkJtfTt4vPm7+gc4I3a+DmTSXOdxazgBkB2BK3yqZrGhYurOL2/l6S;\n\t25:UQLY/gyw6E5f1fxWWGWcFhztnlTVmre20Cri119cprxWRMo25b/j6CtC3hFjH6+pTCQDYBkCehq/7bFWFx5z8Y6aN+G/mLnHMSvzBuxwmKoEMTJn2IUVUCLm7UeRD9i4AQeYrn/dbx5U7qYrUcmV5mmDgZzYNRX7RDNU/yVRl1cfW2IFwphxdln2XXHw7NBKdk4rc12xAXPODuucoSxhMzxsqWAHv+EiJhrj2qlt57jJEnoWUTbZA/6GXWN+3fiCusH30D5N9PCJZrsI0ZSzjhbf/0IwZO8gIwuekDb8uVl7LnTHKbQf6LKTg3SwBzY+nET+Baio9T66Hs/9S8Mm9A==;\n\t31:5vYkc156KHUnrxpJFlLvkVH2pAKSImYLh3Q5lsBJkLDoOtfLPWAvqbXzNv5taZhck53H/oKyA1W0XhqloZORjhj2w942tfddwJAt9r3yTPpsHmpXujpSzoSIm4dKj3tFqAmCj5N2XYezFK7JgzKzUAmPTskumVZmFZjyYuBzekzNCmXBaen5QcO7lVvXCnX1TCYfmpGDFI2BdTjoTdrn5Obi03I1kwcvtBVF9Wk0ZEY=",
            "1; DM6PR07MB4906;\n\t20:muTxdZ/2LFecLU1Xt3ZJOLRYUFHKMaZBt464ijM2vun1fh4jLa8KGAA+QsB/eBm0hk+XC6ufSQBgjSE7+gOv0ur/QXBmKNT3P0lv+E6S7AKdVnvyicyCyh8Jh1GOVSc6w6kfrU2CfsNTTjHiE0NwgG3LKyoCh1pXQX3jhbwdMzLLdqa9xv7NkDD9BWAYY5PlnFWFKi3KIyauOfXmrUqoHpV5FV25IWIKEKoNHIv4BbG6CzG6+1tls+XlAck1CRiu21qTNfIeZZOzJy/wEsBoXsUwFg5qLsFjG0b0KFU7zgZD/AheLG8ZTCcVSe8SWWftrNiRnBSxWW6y3TowVMnR3K5irUixq+xN458kcPnJ43WZt9nZse6aGoAy88+hpAYq8dDdhD6tIDlPTXkGjWmamBUDQWydy7K3qVT7vtVmmjrh0AHEZRfGf8GKhuwIL3gilEhwvjCbh880voF1Oio4GHSKxkd0/7JHtlWc5cRpyEPIlsISoXuwn77POdpHIvE0FhjBtZ9hY9AOjAnRrnmoABL7LmhHxWLmvtW5YnSj40Eue50xVsXrePaRy3B9Q0T3VQk6w39PDegri4/PSq178Rd5mpri52a5xN0bBwqO+OI=;\n\t4:Fd0iCkji2Yd+UzdlBwHMXdbz3ZomUgT5rQ+4GhqDgSetp1Lvjg8OojgaNl0VEQs0s5g4USfD2ThIMFMwghmLAMX+KalJ9OV2SNV59aN/U+KB1bNbAxGcTp/hjnjTlCtYU+7+riA8X6Ws+QLp6eSUyNzKBMYpxqFY0LfMiDkco/U4OPZlJksxoviwgNqA0+vMogpIrknA9kg6l8uzweFqcmXxDz5BiXCG01nk+UD6wC9yu8pzPBn4GzR02mhUfUT7ih6xjVLvlgk4qIchDRF/eQ==",
            "=?us-ascii?Q?1; DM6PR07MB4906;\n\t23:4xgg/b1wGq7kFv+Bb60RaonK+GAiMxLfbK+5D5COS?=\n\tBQtq21g/ObZWFKLKsVfsJfNUFoMjOb8YVkVR0K4uvUlzLh0k/n/uzsCyPDn/Uip7q1dk3R26VQG5bYYdvWMey/XjWb1PYe4IGfXldXMdXT/gGsZwGOzxwcIBWTiQA7VFeivwDa4tGgrC87NS6VHJo3wzeHKG61QY49kLHpf9NDOgAg1HcLo2SBDCuiOiiGPXisw30cAp/DGsXVrfDA9ZqzjLbvHNlZzCCPSzr7e03PZHjZoWoZ3kPib9DTT87wKQWllBBO3R3ykUSGtc8Q0yhCMuulJ+OTHMyWDxqxshM+98QiqkZfjpa6fJh0lT0+lSfBvebG/zKukZbonZMbla8zH5AN4yUgeXZ10JkH7U2QBZSel+435iD7E5+wTkfkBYYzyHLuA+so72Pg996G7gX1pXjN+seF9sw1qo3ek3RcEGfYWkHX3ccUVjjaK/SiKETgo55PnJ74HHzbippOHEh1518XXo3cr3ks6pTjSeJAonu8BffwDkVo7hLz6fiO65wrME8JToiON0zRUtw/MQDCP8r5ZItYc27q+kR84AwYpgCRgdiX9K8MHeHBsZkPMEOh8eJBtHfiBCWwy8ld+PJTBWDRWbxC3qetYzLDg70+k1TSd447p3X/AxdxSTf8uaNVQLjQ/XplHo0i6uwoOhPqJy3u6b5c9wpHVAf/qQbs+CcVb93T3ZDSic232p0w1bnuIGlYyuZv5yMm0neEdn6pZBIMb3m+WjoCmxLPu6W3/iABS2hMLhDk2cUNodsvrHuVXVGQutCglKXxBXIjG2i/6Ain8i9vWNFawqubKkjI1N4iT+Y2zZb4eMClDRfJuNMques7mMpwsk1OL63lHcxq00WxacvpHAUodott4eWmEVYWe/4sImktuk0sQm6UhgFS7i45M2+RaZcaR/GJ1qRGfbmkTXYO8yzZmSrpdbQ3QMA0xYgIwu808Dwt+kjiTfAVMU1IOq3ZgFnhAaaOaDfMxlsU+LNnD/KAoCiMB9vLRfZ0dSIEAs+iPr+qsDQnvQN2TqIw8estLup8NKwfMDECB1xNdss7O/u2K6yLKsPLxyXv7NsuUTITurfyBVgZear3af2gQO2ycoxn8MjzUE2yQwIwnHKXJapa4Fyc3QhWcRWVuka8/YolmWbEnIuuXg+W5rnTvBkrNi3rSvfzbYn/THknejstRrjrn1SNdv15PSHPCAbcZCMpq6CUYp2iOwXsR3VIOJeMcRMhx65Uozzccw7lMRZ0RkjNqU67KT+P5Bw==",
            "1; DM6PR07MB4906;\n\t6:1KVF+JUwNolb9mLQ+fgf7anidkY7sBQKn2iTvaJatFDtQ6wNRpJSHL2icHYihMMsq9pVjyg+tVq+FUuNS0O5GWXMhLOq4M9uXv5C2GuDH8NgJ1xdb+kD3wVv8bUG7BSLELjdy0ctbAcpcq1RlIRI6rP5lHnRewX4sf0N8c46oNXKCk/cxNHnib+7cihTLqgWRrlGNoBo/4JKBg5EfXjDHq3sl8rC0inAFl8FGCBaGOAZsSPSSEBymq69pxJxUkigbjpD4tDW/ZwGKUicJqDRov2ucgaqrSLxo0t9GJOHCyOHkhkSOfZrZo3+UV6Rvb7WJ8K3mMfuLpuTmMKzDpEErpm0SKOTqhbvIyfBAQrZonFsuXQlcnT+BR+wsBF1k1SfITiMTcum1LQv7qyivg2FbRdMhK9axkpI5er1578P7b7Lrt7NXyUL7//Oi9LQ3HA2mgq/z/6IHKQ3I2qlHk6JPQ==;\n\t5:laIAOvAMSgFjxTHjsu8LO3t3nZWHmCDdmpw8uwHfCljLtYeYSHzdpoQDD+i56MX3LrkCX879DEjjL29qeDjNHXTQd17BrXseraeZX1ajXvlNAEjZtJH8Ey/KD0E7apqzrVm086ksErM09nYgJn5BQMRmFX1xLZMSFP6yMXtDz50=;\n\t24:92jaFLXiPF52wr5mccXBVi77MYRgM0r+ER869tkA43XV7b8nrukkdXUZwyGSM2FEvLPjJz+K/Ge0txSRb3WAFawB+CcMrJQsEiHie3m8hdE=",
            "1; DM6PR07MB4906;\n\t7:vCUhmijPDTm9EcD7J9zjOCz876/1jW3TnvaT9rhtIC9K5/fnkTLPmzUHO/sdPj8YrNGtMDAOP4djh/2OeayuOAk5WCZldpBbkaGIQKR/umzJWxB6TVxZofk2bFfPsdH6pgYpsbq1m9McW1fu/ZdEE418haXujSeRlzw6uOlDOQ+/ZLxGef0ubydELSH+mkO33nCX/vy+cl02afAKopyyzAoFQlRF/4eNyFYPPdzKzNpWd9ew2OgXmFJmNDkp7QkB"
        ],
        "X-MS-TrafficTypeDiagnostic": "DM6PR07MB4906:",
        "X-Microsoft-Antispam-PRVS": "<DM6PR07MB49068045858CCB3847C64E03F87B0@DM6PR07MB4906.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3231254)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016);\n\tSRVR:DM6PR07MB4906; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4906; ",
        "X-Forefront-PRVS": "06973FFAD3",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(39860400002)(346002)(366004)(376002)(396003)(39380400002)(189003)(199004)(186003)(16526019)(5660300001)(26005)(42882007)(55236004)(66066001)(47776003)(68736007)(6666003)(305945005)(2906002)(8676002)(7736002)(8936002)(36756003)(52116002)(2616005)(956004)(476003)(446003)(50226002)(81166006)(11346002)(44832011)(6506007)(386003)(486006)(76176011)(51416003)(48376002)(50466002)(97736004)(316002)(6512007)(25786009)(53936002)(6486002)(81156014)(4326008)(3846002)(6116002)(16586007)(54906003)(110136005)(105586002)(106356001)(72206003)(478600001)(8656006);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4906;\n\tH:ajoseph83.caveonetworks.com.caveonetworks.com; FPR:; SPF:None;\n\tLANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "hEHN8eEBRaEkGJ75HfIN3QRjH8mBMyZhO8o0aLh/leIZ5hHSvVq/8ldeo4Y5Z/rL1opsCeDQczC35IgeH+j6ul10+AlE+DyVVNq/gPf2c6HTc5WASrKIfhQU9WHhd3aXbMnQ8ZBeFkgDqwEhYOysV8YmAwEI318kC+jADt/mCSWnOQsulRsZtKnWv0ef0u3h",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Office365-Filtering-Correlation-Id": "7e562e18-4062-431e-32d5-08d5cd64c970",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 Jun 2018 17:25:07.4821\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "7e562e18-4062-431e-32d5-08d5cd64c970",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR07MB4906",
        "Subject": "[dpdk-dev] [PATCH 03/20] eventdev: add eventmode CL options\n\tframework",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://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": "<https://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": "Adding usage prints and CL parsing routines for eventmode. Option to\nselect packet transfer mode is also added.\n\nSigned-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>\n---\n lib/librte_eventdev/rte_eventmode_helper.c | 128 +++++++++++++++++++++++++++++\n lib/librte_eventdev/rte_eventmode_helper.h |  50 +++++++++++\n 2 files changed, 178 insertions(+)",
    "diff": "diff --git a/lib/librte_eventdev/rte_eventmode_helper.c b/lib/librte_eventdev/rte_eventmode_helper.c\nindex b7ff056..14ea493 100644\n--- a/lib/librte_eventdev/rte_eventmode_helper.c\n+++ b/lib/librte_eventdev/rte_eventmode_helper.c\n@@ -1,7 +1,135 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  * Copyright(c) 2018 Cavium, Inc\n  */\n+#include <getopt.h>\n \n #include <rte_eventmode_helper.h>\n+#include <rte_malloc.h>\n \n #include \"rte_eventmode_helper_internal.h\"\n+\n+#define CMD_LINE_OPT_TRANSFER_MODE\t\"transfer-mode\"\n+\n+static const char short_options[] =\n+\t\"\"\n+\t;\n+\n+enum {\n+\t/* long options mapped to a short option */\n+\n+\t/* first long only option value must be >= 256, so that we won't\n+\t * conflict with short options\n+\t */\n+\tCMD_LINE_OPT_MIN_NUM = 256,\n+\tCMD_LINE_OPT_TRANSFER_MODE_NUM,\n+};\n+\n+static const struct option lgopts[] = {\n+\t{CMD_LINE_OPT_TRANSFER_MODE, 1, 0, CMD_LINE_OPT_TRANSFER_MODE_NUM},\n+\t{NULL, 0, 0, 0}\n+};\n+\n+/* Internal functions */\n+\n+static int32_t\n+internal_parse_decimal(const char *str)\n+{\n+\tchar *end = NULL;\n+\tunsigned long num;\n+\n+\tnum = strtoul(str, &end, 10);\n+\tif ((str[0] == '\\0') || (end == NULL) || (*end != '\\0'))\n+\t\treturn -1;\n+\n+\treturn num;\n+}\n+\n+/* Global functions */\n+\n+void\n+rte_eventmode_helper_print_options_list(void)\n+{\n+\tfprintf(stderr, \" --\"\n+\t\t\" [--transfer-mode MODE]\"\n+\t\t);\n+}\n+\n+void\n+rte_eventmode_helper_print_options_description(void)\n+{\n+\tfprintf(stderr,\n+\t\t\"  --transfer-mode MODE\\n\"\n+\t\t\"               0: Packet transfer via polling (default)\\n\"\n+\t\t\"               1: Packet transfer via eventdev\\n\"\n+\t\t\"\\n\");\n+}\n+\n+static int\n+em_parse_transfer_mode(struct rte_eventmode_helper_conf *conf,\n+\t\tconst char *optarg)\n+{\n+\tint32_t parsed_dec;\n+\n+\tparsed_dec = internal_parse_decimal(optarg);\n+\tif (parsed_dec != RTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_POLL &&\n+\t    parsed_dec != RTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_EVENT) {\n+\t\tRTE_EM_HLPR_LOG_ERR(\"Unsupported packet transfer mode\");\n+\t\treturn -1;\n+\t}\n+\tconf->mode = parsed_dec;\n+\treturn 0;\n+}\n+\n+static void\n+em_initialize_helper_conf(struct rte_eventmode_helper_conf *conf)\n+{\n+\t/* Set default conf */\n+\n+\t/* Packet transfer mode: poll */\n+\tconf->mode = RTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_POLL;\n+}\n+\n+struct rte_eventmode_helper_conf *\n+rte_eventmode_helper_parse_args(int argc, char **argv)\n+{\n+\tint32_t opt, ret;\n+\tstruct rte_eventmode_helper_conf *conf = NULL;\n+\n+\t/* Allocate memory for conf */\n+\tconf = rte_zmalloc(\"eventmode-helper-conf\",\n+\t\t\tsizeof(struct rte_eventmode_helper_conf),\n+\t\t\tRTE_CACHE_LINE_SIZE);\n+\tif (conf == NULL) {\n+\t\tRTE_EM_HLPR_LOG_ERR(\n+\t\t\t\"Failed allocating memory for eventmode helper conf\");\n+\t\t\tgoto err;\n+\t}\n+\n+\t/* Initialize conf with default values */\n+\tem_initialize_helper_conf(conf);\n+\n+\twhile ((opt = getopt_long(argc, argv, short_options,\n+\t\t\t\tlgopts, NULL)) != EOF) {\n+\t\tswitch (opt) {\n+\n+\t\t/* Packet transfer mode */\n+\t\tcase CMD_LINE_OPT_TRANSFER_MODE_NUM:\n+\t\t\tret = em_parse_transfer_mode(conf, optarg);\n+\t\t\tif (ret < 0) {\n+\t\t\t\tRTE_EM_HLPR_LOG_ERR(\n+\t\t\t\t\t\"Invalid packet transfer mode\");\n+\t\t\t\tgoto err;\n+\t\t\t}\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tgoto err;\n+\t\t}\n+\t}\n+\treturn conf;\n+\n+err:\n+\tif (conf != NULL)\n+\t\trte_free(conf);\n+\n+\treturn NULL;\n+}\ndiff --git a/lib/librte_eventdev/rte_eventmode_helper.h b/lib/librte_eventdev/rte_eventmode_helper.h\nindex 5d39bd3..bfe4fa9 100644\n--- a/lib/librte_eventdev/rte_eventmode_helper.h\n+++ b/lib/librte_eventdev/rte_eventmode_helper.h\n@@ -3,4 +3,54 @@\n  */\n #ifndef _RTE_EVENTMODE_HELPER_H_\n #define _RTE_EVENTMODE_HELPER_H_\n+\n+/* Packet transfer mode of the application */\n+enum rte_eventmode_helper_pkt_transfer_mode {\n+\tRTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_POLL = 0,\n+\tRTE_EVENTMODE_HELPER_PKT_TRANSFER_MODE_EVENT,\n+};\n+\n+struct rte_eventmode_helper_conf {\n+\tenum rte_eventmode_helper_pkt_transfer_mode mode;\n+\t\t/**< Packet transfer mode of the application */\n+\tvoid *mode_params;\n+\t\t/**< Mode specific parameters */\n+};\n+\n+/* Common helper functions for command line parsing */\n+\n+/**\n+ * Print event mode options list\n+ *\n+ */\n+void\n+rte_eventmode_helper_print_options_list(void);\n+\n+/**\n+ * Print event mode options description\n+ *\n+ */\n+void\n+rte_eventmode_helper_print_options_description(void);\n+\n+/**\n+ * Parse event mode arguments\n+ *\n+ * The application can call this function in it's argument parsing routine to\n+ * parse the event mode specific args and create the conf accordingly. This\n+ * function is to be executed on the MASTER lcore only.\n+ *\n+ * @param argc\n+ *   A non-negative value. If it is greater than 0, the array members\n+ *   for argv[0] through argv[argc] (non-inclusive) shall contain pointers\n+ *   to strings.\n+ * @param argv\n+ *   An array of strings. The contents of the array, as well as the strings\n+ *   which are pointed to by the array, may be modified by this function.\n+ * @return\n+ *   Configuration generated by parsing the event mode args.\n+ */\n+struct rte_eventmode_helper_conf *\n+rte_eventmode_helper_parse_args(int argc, char **argv);\n+\n #endif /* _RTE_EVENTMODE_HELPER_H_ */\n",
    "prefixes": [
        "dpdk-dev",
        "03/20"
    ]
}