Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2922/?format=api
http://patchwork.dpdk.org/api/patches/2922/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1422899093-20207-2-git-send-email-thomas.monjalon@6wind.com/", "project": { "id": 1, "url": "http://patchwork.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": "<1422899093-20207-2-git-send-email-thomas.monjalon@6wind.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1422899093-20207-2-git-send-email-thomas.monjalon@6wind.com", "date": "2015-02-02T17:44:52", "name": "[dpdk-dev,v2,1/2] eal: sort and align options lists", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "b5472a50d537f947b56c7f7123c365ba466598d0", "submitter": { "id": 1, "url": "http://patchwork.dpdk.org/api/people/1/?format=api", "name": "Thomas Monjalon", "email": "thomas.monjalon@6wind.com" }, "delegate": null, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1422899093-20207-2-git-send-email-thomas.monjalon@6wind.com/mbox/", "series": [], "comments": "http://patchwork.dpdk.org/api/patches/2922/comments/", "check": "pending", "checks": "http://patchwork.dpdk.org/api/patches/2922/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 573723792;\n\tTue, 3 Feb 2015 00:01:15 +0100 (CET)", "from mail-wg0-f47.google.com (mail-wg0-f47.google.com\n\t[74.125.82.47]) by dpdk.org (Postfix) with ESMTP id A6D2D378E\n\tfor <dev@dpdk.org>; Tue, 3 Feb 2015 00:01:13 +0100 (CET)", "by mail-wg0-f47.google.com with SMTP id n12so41564474wgh.6\n\tfor <dev@dpdk.org>; Mon, 02 Feb 2015 15:01:13 -0800 (PST)", "from localhost.localdomain (136-92-190-109.dsl.ovh.fr.\n\t[109.190.92.136]) by mx.google.com with ESMTPSA id\n\ta20sm20813428wic.16.2015.02.02.09.45.26 for <dev@dpdk.org>\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 02 Feb 2015 09:45:27 -0800 (PST)" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=m6nvSpEw6fkfGrqcNwBb03sUOUqt04sn3gcxK3eb0MA=;\n\tb=KJe49vPNTU7nJJdavZKrIswJLgYmBhzK15C+ZUSTSfQMWfoJicfqBZp6Lg0+lGmWeu\n\twjxYvjno0QpntMWW3C1hS2eN3f3FS2nXZ6Mrw5RLF13iqK4BszN4v/Zqsp0HGheS8znO\n\tnbJjAJt+GzpZ495eQaLaE+cg8Zf4ZSg/uTtKDmRzNBcRP4JADl5nmEO90MNJryfNRGM/\n\tg1CoglAF+MrRt69kU+LPrjM7DuMTSCd2NyDqt+k04fjpptgYzJN6bd02sUkQyO9gLJmC\n\t7XtGKp/nN36/bgsuJh2kGNR2NwpnR98PTax34vmRMr/GMLDz4JuASigsKz+tYoDR1ow8\n\tiK9g==", "X-Gm-Message-State": "ALoCoQkRPhBXh3bEMfDOispczjVZbS7Cl5OmGSuML5zYyEeW7azhIiHI88F3U0prh4nHhap4UjVU", "X-Received": "by 10.180.182.8 with SMTP id ea8mr26506768wic.48.1422899128433; \n\tMon, 02 Feb 2015 09:45:28 -0800 (PST)", "From": "Thomas Monjalon <thomas.monjalon@6wind.com>", "To": "dev@dpdk.org", "Date": "Mon, 2 Feb 2015 18:44:52 +0100", "Message-Id": "<1422899093-20207-2-git-send-email-thomas.monjalon@6wind.com>", "X-Mailer": "git-send-email 2.2.2", "In-Reply-To": "<1422899093-20207-1-git-send-email-thomas.monjalon@6wind.com>", "References": "<1422554832-30093-1-git-send-email-thomas.monjalon@6wind.com>\n\t<1422899093-20207-1-git-send-email-thomas.monjalon@6wind.com>", "Subject": "[dpdk-dev] [PATCH v2 1/2] eal: sort and align options lists", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "patches and discussions about DPDK <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": "Options listing in usage help was a mess.\nThe main usage line is fixed and shorter.\nThe options in usage output are logically sorted (cpu/mem/dev/proc),\naligned and lightly reworded.\nThe options in declarations are alphabetically sorted.\nCode in swith statement is not moved.\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\nchanges in v2:\n- sort and align options enum in .h\n---\n lib/librte_eal/common/eal_common_options.c | 112 ++++++++++++++---------------\n lib/librte_eal/common/eal_options.h | 62 ++++++++--------\n lib/librte_eal/linuxapp/eal/eal.c | 19 +++--\n 3 files changed, 95 insertions(+), 98 deletions(-)", "diff": "diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c\nindex 67e02dc..4890e78 100644\n--- a/lib/librte_eal/common/eal_common_options.c\n+++ b/lib/librte_eal/common/eal_common_options.c\n@@ -55,37 +55,38 @@\n const char\n eal_short_options[] =\n \t\"b:\" /* pci-blacklist */\n-\t\"w:\" /* pci-whitelist */\n \t\"c:\" /* coremask */\n-\t\"d:\"\n+\t\"d:\" /* driver */\n \t\"l:\" /* corelist */\n-\t\"m:\"\n-\t\"n:\"\n-\t\"r:\"\n-\t\"v\";\n+\t\"m:\" /* memory size */\n+\t\"n:\" /* memory channels */\n+\t\"r:\" /* memory ranks */\n+\t\"v\" /* version */\n+\t\"w:\" /* pci-whitelist */\n+\t;\n \n const struct option\n eal_long_options[] = {\n-\t{OPT_HUGE_DIR, 1, 0, OPT_HUGE_DIR_NUM},\n-\t{OPT_MASTER_LCORE, 1, 0, OPT_MASTER_LCORE_NUM},\n-\t{OPT_PROC_TYPE, 1, 0, OPT_PROC_TYPE_NUM},\n-\t{OPT_NO_SHCONF, 0, 0, OPT_NO_SHCONF_NUM},\n-\t{OPT_NO_HPET, 0, 0, OPT_NO_HPET_NUM},\n-\t{OPT_VMWARE_TSC_MAP, 0, 0, OPT_VMWARE_TSC_MAP_NUM},\n-\t{OPT_NO_PCI, 0, 0, OPT_NO_PCI_NUM},\n-\t{OPT_NO_HUGE, 0, 0, OPT_NO_HUGE_NUM},\n-\t{OPT_FILE_PREFIX, 1, 0, OPT_FILE_PREFIX_NUM},\n-\t{OPT_SOCKET_MEM, 1, 0, OPT_SOCKET_MEM_NUM},\n-\t{OPT_PCI_WHITELIST, 1, 0, OPT_PCI_WHITELIST_NUM},\n-\t{OPT_PCI_BLACKLIST, 1, 0, OPT_PCI_BLACKLIST_NUM},\n-\t{OPT_VDEV, 1, 0, OPT_VDEV_NUM},\n-\t{OPT_SYSLOG, 1, NULL, OPT_SYSLOG_NUM},\n-\t{OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM},\n-\t{OPT_BASE_VIRTADDR, 1, 0, OPT_BASE_VIRTADDR_NUM},\n-\t{OPT_XEN_DOM0, 0, 0, OPT_XEN_DOM0_NUM},\n-\t{OPT_CREATE_UIO_DEV, 1, NULL, OPT_CREATE_UIO_DEV_NUM},\n-\t{OPT_VFIO_INTR, 1, NULL, OPT_VFIO_INTR_NUM},\n-\t{0, 0, 0, 0}\n+\t{OPT_BASE_VIRTADDR, 1, NULL, OPT_BASE_VIRTADDR_NUM },\n+\t{OPT_CREATE_UIO_DEV, 1, NULL, OPT_CREATE_UIO_DEV_NUM },\n+\t{OPT_FILE_PREFIX, 1, NULL, OPT_FILE_PREFIX_NUM },\n+\t{OPT_HUGE_DIR, 1, NULL, OPT_HUGE_DIR_NUM },\n+\t{OPT_LOG_LEVEL, 1, NULL, OPT_LOG_LEVEL_NUM },\n+\t{OPT_MASTER_LCORE, 1, NULL, OPT_MASTER_LCORE_NUM },\n+\t{OPT_NO_HPET, 0, NULL, OPT_NO_HPET_NUM },\n+\t{OPT_NO_HUGE, 0, NULL, OPT_NO_HUGE_NUM },\n+\t{OPT_NO_PCI, 0, NULL, OPT_NO_PCI_NUM },\n+\t{OPT_NO_SHCONF, 0, NULL, OPT_NO_SHCONF_NUM },\n+\t{OPT_PCI_BLACKLIST, 1, NULL, OPT_PCI_BLACKLIST_NUM },\n+\t{OPT_PCI_WHITELIST, 1, NULL, OPT_PCI_WHITELIST_NUM },\n+\t{OPT_PROC_TYPE, 1, NULL, OPT_PROC_TYPE_NUM },\n+\t{OPT_SOCKET_MEM, 1, NULL, OPT_SOCKET_MEM_NUM },\n+\t{OPT_SYSLOG, 1, NULL, OPT_SYSLOG_NUM },\n+\t{OPT_VDEV, 1, NULL, OPT_VDEV_NUM },\n+\t{OPT_VFIO_INTR, 1, NULL, OPT_VFIO_INTR_NUM },\n+\t{OPT_VMWARE_TSC_MAP, 0, NULL, OPT_VMWARE_TSC_MAP_NUM },\n+\t{OPT_XEN_DOM0, 0, NULL, OPT_XEN_DOM0_NUM },\n+\t{0, 0, NULL, 0 }\n };\n \n static int lcores_parsed;\n@@ -578,37 +579,36 @@ eal_check_common_options(struct internal_config *internal_cfg)\n void\n eal_common_usage(void)\n {\n-\tprintf(\"-c COREMASK -n NUM [-m NB] [-r NUM] [-b <domain:bus:devid.func>]\"\n-\t \"[--proc-type primary|secondary|auto]\\n\\n\"\n+\tprintf(\"-c COREMASK|-l CORELIST -n CHANNELS [options]\\n\\n\"\n \t \"EAL common options:\\n\"\n-\t \" -c COREMASK : A hexadecimal bitmask of cores to run on\\n\"\n-\t \" -l CORELIST : List of cores to run on\\n\"\n-\t \" The argument format is <c1>[-c2][,c3[-c4],...]\\n\"\n-\t \" where c1, c2, etc are core indexes between 0 and %d\\n\"\n-\t \" --\"OPT_MASTER_LCORE\" ID: Core ID that is used as master\\n\"\n-\t \" -n NUM : Number of memory channels\\n\"\n-\t \" -v : Display version information on startup\\n\"\n-\t \" -m MB : memory to allocate (see also --\"OPT_SOCKET_MEM\")\\n\"\n-\t \" -r NUM : force number of memory ranks (don't detect)\\n\"\n-\t \" --\"OPT_SYSLOG\" : set syslog facility\\n\"\n-\t \" --\"OPT_LOG_LEVEL\" : set default log level\\n\"\n-\t \" --\"OPT_PROC_TYPE\" : type of this process\\n\"\n-\t \" --\"OPT_PCI_BLACKLIST\", -b: add a PCI device in black list.\\n\"\n-\t \" Prevent EAL from using this PCI device. The argument\\n\"\n-\t \" format is <domain:bus:devid.func>.\\n\"\n-\t \" --\"OPT_PCI_WHITELIST\", -w: add a PCI device in white list.\\n\"\n-\t \" Only use the specified PCI devices. The argument format\\n\"\n-\t \" is <[domain:]bus:devid.func>. This option can be present\\n\"\n-\t \" several times (once per device).\\n\"\n-\t \" [NOTE: PCI whitelist cannot be used with -b option]\\n\"\n-\t \" --\"OPT_VDEV\": add a virtual device.\\n\"\n-\t \" The argument format is <driver><id>[,key=val,...]\\n\"\n-\t \" (ex: --vdev=eth_pcap0,iface=eth2).\\n\"\n-\t \" --\"OPT_VMWARE_TSC_MAP\": use VMware TSC map instead of native RDTSC\\n\"\n+\t \" -c COREMASK Hexadecimal bitmask of cores to run on\\n\"\n+\t \" -l CORELIST List of cores to run on\\n\"\n+\t \" The argument format is <c1>[-c2][,c3[-c4],...]\\n\"\n+\t \" where c1, c2, etc are core indexes between 0 and %d\\n\"\n+\t \" --\"OPT_MASTER_LCORE\" ID Core ID that is used as master\\n\"\n+\t \" -n NUM Number of memory channels\\n\"\n+\t \" -m MB Memory to allocate (see also --\"OPT_SOCKET_MEM\")\\n\"\n+\t \" -r NUM Force number of memory ranks (don't detect)\\n\"\n+\t \" -b, --\"OPT_PCI_BLACKLIST\" Add a PCI device in black list.\\n\"\n+\t \" Prevent EAL from using this PCI device. The argument\\n\"\n+\t \" format is <domain:bus:devid.func>.\\n\"\n+\t \" -w, --\"OPT_PCI_WHITELIST\" Add a PCI device in white list.\\n\"\n+\t \" Only use the specified PCI devices. The argument format\\n\"\n+\t \" is <[domain:]bus:devid.func>. This option can be present\\n\"\n+\t \" several times (once per device).\\n\"\n+\t \" [NOTE: PCI whitelist cannot be used with -b option]\\n\"\n+\t \" --\"OPT_VDEV\" Add a virtual device.\\n\"\n+\t \" The argument format is <driver><id>[,key=val,...]\\n\"\n+\t \" (ex: --vdev=eth_pcap0,iface=eth2).\\n\"\n+\t \" --\"OPT_VMWARE_TSC_MAP\" Use VMware TSC map instead of native RDTSC\\n\"\n+\t \" --\"OPT_PROC_TYPE\" Type of this process (primary|secondary|auto)\\n\"\n+\t \" --\"OPT_SYSLOG\" Set syslog facility\\n\"\n+\t \" --\"OPT_LOG_LEVEL\" Set default log level\\n\"\n+\t \" -v Display version information on startup\\n\"\n \t \"\\nEAL options for DEBUG use only:\\n\"\n-\t \" --\"OPT_NO_HUGE\" : use malloc instead of hugetlbfs\\n\"\n-\t \" --\"OPT_NO_PCI\" : disable pci\\n\"\n-\t \" --\"OPT_NO_HPET\" : disable hpet\\n\"\n-\t \" --\"OPT_NO_SHCONF\": no shared config (mmap'd files)\\n\"\n+\t \" --\"OPT_NO_HUGE\" Use malloc instead of hugetlbfs\\n\"\n+\t \" --\"OPT_NO_PCI\" Disable PCI\\n\"\n+\t \" --\"OPT_NO_HPET\" Disable HPET\\n\"\n+\t \" --\"OPT_NO_SHCONF\" No shared config (mmap'd files)\\n\"\n \t \"\\n\", RTE_MAX_LCORE);\n }\ndiff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h\nindex e476f8d..fe1c85d 100644\n--- a/lib/librte_eal/common/eal_options.h\n+++ b/lib/librte_eal/common/eal_options.h\n@@ -35,48 +35,48 @@\n \n enum {\n \t/* long options mapped to a short option */\n-#define OPT_PCI_WHITELIST \"pci-whitelist\"\n-\tOPT_PCI_WHITELIST_NUM = 'w',\n-#define OPT_PCI_BLACKLIST \"pci-blacklist\"\n-\tOPT_PCI_BLACKLIST_NUM = 'b',\n+#define OPT_PCI_BLACKLIST \"pci-blacklist\"\n+\tOPT_PCI_BLACKLIST_NUM = 'b',\n+#define OPT_PCI_WHITELIST \"pci-whitelist\"\n+\tOPT_PCI_WHITELIST_NUM = 'w',\n \n \t/* first long only option value must be >= 256, so that we won't\n \t * conflict with short options */\n \tOPT_LONG_MIN_NUM = 256,\n-#define OPT_HUGE_DIR \"huge-dir\"\n-\tOPT_HUGE_DIR_NUM = OPT_LONG_MIN_NUM,\n-#define OPT_MASTER_LCORE \"master-lcore\"\n+#define OPT_BASE_VIRTADDR \"base-virtaddr\"\n+\tOPT_BASE_VIRTADDR_NUM,\n+#define OPT_CREATE_UIO_DEV \"create-uio-dev\"\n+\tOPT_CREATE_UIO_DEV_NUM,\n+#define OPT_FILE_PREFIX \"file-prefix\"\n+\tOPT_FILE_PREFIX_NUM,\n+#define OPT_HUGE_DIR \"huge-dir\"\n+\tOPT_HUGE_DIR_NUM,\n+#define OPT_LOG_LEVEL \"log-level\"\n+\tOPT_LOG_LEVEL_NUM,\n+#define OPT_MASTER_LCORE \"master-lcore\"\n \tOPT_MASTER_LCORE_NUM,\n-#define OPT_PROC_TYPE \"proc-type\"\n+#define OPT_PROC_TYPE \"proc-type\"\n \tOPT_PROC_TYPE_NUM,\n-#define OPT_NO_SHCONF \"no-shconf\"\n-\tOPT_NO_SHCONF_NUM,\n-#define OPT_NO_HPET \"no-hpet\"\n+#define OPT_NO_HPET \"no-hpet\"\n \tOPT_NO_HPET_NUM,\n-#define OPT_VMWARE_TSC_MAP \"vmware-tsc-map\"\n-\tOPT_VMWARE_TSC_MAP_NUM,\n-#define OPT_NO_PCI \"no-pci\"\n-\tOPT_NO_PCI_NUM,\n-#define OPT_NO_HUGE \"no-huge\"\n+#define OPT_NO_HUGE \"no-huge\"\n \tOPT_NO_HUGE_NUM,\n-#define OPT_FILE_PREFIX \"file-prefix\"\n-\tOPT_FILE_PREFIX_NUM,\n-#define OPT_SOCKET_MEM \"socket-mem\"\n+#define OPT_NO_PCI \"no-pci\"\n+\tOPT_NO_PCI_NUM,\n+#define OPT_NO_SHCONF \"no-shconf\"\n+\tOPT_NO_SHCONF_NUM,\n+#define OPT_SOCKET_MEM \"socket-mem\"\n \tOPT_SOCKET_MEM_NUM,\n-#define OPT_VDEV \"vdev\"\n-\tOPT_VDEV_NUM,\n-#define OPT_SYSLOG \"syslog\"\n+#define OPT_SYSLOG \"syslog\"\n \tOPT_SYSLOG_NUM,\n-#define OPT_LOG_LEVEL \"log-level\"\n-\tOPT_LOG_LEVEL_NUM,\n-#define OPT_BASE_VIRTADDR \"base-virtaddr\"\n-\tOPT_BASE_VIRTADDR_NUM,\n-#define OPT_XEN_DOM0 \"xen-dom0\"\n-\tOPT_XEN_DOM0_NUM,\n-#define OPT_CREATE_UIO_DEV \"create-uio-dev\"\n-\tOPT_CREATE_UIO_DEV_NUM,\n-#define OPT_VFIO_INTR \"vfio-intr\"\n+#define OPT_VDEV \"vdev\"\n+\tOPT_VDEV_NUM,\n+#define OPT_VFIO_INTR \"vfio-intr\"\n \tOPT_VFIO_INTR_NUM,\n+#define OPT_VMWARE_TSC_MAP \"vmware-tsc-map\"\n+\tOPT_VMWARE_TSC_MAP_NUM,\n+#define OPT_XEN_DOM0 \"xen-dom0\"\n+\tOPT_XEN_DOM0_NUM,\n \tOPT_LONG_MAX_NUM\n };\n \ndiff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c\nindex f99e158..e3955e7 100644\n--- a/lib/librte_eal/linuxapp/eal/eal.c\n+++ b/lib/librte_eal/linuxapp/eal/eal.c\n@@ -352,17 +352,14 @@ eal_usage(const char *prgname)\n \tprintf(\"\\nUsage: %s \", prgname);\n \teal_common_usage();\n \tprintf(\"EAL Linux options:\\n\"\n-\t \" -d LIB.so : add driver (can be used multiple times)\\n\"\n-\t \" --\"OPT_XEN_DOM0\" : support application running on Xen Domain0 \"\n-\t\t\t \"without hugetlbfs\\n\"\n-\t \" --\"OPT_SOCKET_MEM\" : memory to allocate on specific\\n\"\n-\t\t \" sockets (use comma separated values)\\n\"\n-\t \" --\"OPT_HUGE_DIR\" : directory where hugetlbfs is mounted\\n\"\n-\t \" --\"OPT_FILE_PREFIX\": prefix for hugepage filenames\\n\"\n-\t \" --\"OPT_BASE_VIRTADDR\": specify base virtual address\\n\"\n-\t \" --\"OPT_VFIO_INTR\": specify desired interrupt mode for VFIO \"\n-\t\t\t \"(legacy|msi|msix)\\n\"\n-\t \" --\"OPT_CREATE_UIO_DEV\": create /dev/uioX (usually done by hotplug)\\n\"\n+\t \" -d LIB.so Add driver (can be used multiple times)\\n\"\n+\t \" --\"OPT_SOCKET_MEM\" Memory to allocate on sockets (comma separated values)\\n\"\n+\t \" --\"OPT_HUGE_DIR\" Directory where hugetlbfs is mounted\\n\"\n+\t \" --\"OPT_FILE_PREFIX\" Prefix for hugepage filenames\\n\"\n+\t \" --\"OPT_BASE_VIRTADDR\" Base virtual address\\n\"\n+\t \" --\"OPT_CREATE_UIO_DEV\" Create /dev/uioX (usually done by hotplug)\\n\"\n+\t \" --\"OPT_VFIO_INTR\" Interrupt mode for VFIO (legacy|msi|msix)\\n\"\n+\t \" --\"OPT_XEN_DOM0\" Support running on Xen dom0 without hugetlbfs\\n\"\n \t \"\\n\");\n \t/* Allow the application to print its usage message too if hook is set */\n \tif ( rte_application_usage_hook ) {\n", "prefixes": [ "dpdk-dev", "v2", "1/2" ] }{ "id": 2922, "url": "