get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 123198,
    "url": "http://patchwork.dpdk.org/api/patches/123198/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230207063254.401538-2-adwivedi@marvell.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": "<20230207063254.401538-2-adwivedi@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230207063254.401538-2-adwivedi@marvell.com",
    "date": "2023-02-07T06:32:49",
    "name": "[v9,1/6] eal: trace: add trace point emit for blob",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2234f63e4fe23d09e2045d04578a55829ad3512e",
    "submitter": {
        "id": 1561,
        "url": "http://patchwork.dpdk.org/api/people/1561/?format=api",
        "name": "Ankur Dwivedi",
        "email": "adwivedi@marvell.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230207063254.401538-2-adwivedi@marvell.com/mbox/",
    "series": [
        {
            "id": 26834,
            "url": "http://patchwork.dpdk.org/api/series/26834/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=26834",
            "date": "2023-02-07T06:32:48",
            "name": "add trace points in ethdev library",
            "version": 9,
            "mbox": "http://patchwork.dpdk.org/series/26834/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/123198/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/123198/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 9436241C2A;\n\tTue,  7 Feb 2023 07:36:14 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 75A874282D;\n\tTue,  7 Feb 2023 07:36:14 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id 72DD6427F2\n for <dev@dpdk.org>; Tue,  7 Feb 2023 07:36:13 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 3174UsZO005847; Mon, 6 Feb 2023 22:33:51 -0800",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrth9gb-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Mon, 06 Feb 2023 22:33:51 -0800",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42;\n Mon, 6 Feb 2023 22:33:48 -0800",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend\n Transport; Mon, 6 Feb 2023 22:33:48 -0800",
            "from localhost.localdomain (unknown [10.28.36.185])\n by maili.marvell.com (Postfix) with ESMTP id D21EB3F7043;\n Mon,  6 Feb 2023 22:33:26 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-type : content-transfer-encoding; s=pfpt0220;\n bh=OOmru3ckS18joS39nLiBcBUMHToAWYd7r3gpHqzk//I=;\n b=GBk3WMbkuZ1dqQjJT/YZsskpis5i5yNHkZUn0kr8u6sC3Rh8xRVpBGJZqUgeMf7eTbAR\n UhdLpeNwsAjl+vAsVLPELVajDfmukxopCvtBZSbmkiX9YpcTS5HPweYN1ixz6G1ximal\n lxvpvCFTolV89SQReMViZ/9oqIB1Orjnv8FVxj1KxF/kX+8zSbCPyoX+rT/GjeWKT1Y8\n Gq8C5YGEYJRBZRFBgkfpyWC1sEkYsXewhuAa0mDAYMA4uxanSkowZmlc0loYD+mMTeb9\n CJBWvq/i+CrxypB/yNTEUOpngBa/x9FqZBzYYyn7dAag0dqTuuXDUWZmj75p0lJPcNw5 kw==",
        "From": "Ankur Dwivedi <adwivedi@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas@monjalon.net>, <david.marchand@redhat.com>, <mdr@ashroe.eu>,\n <orika@nvidia.com>, <ferruh.yigit@amd.com>, <chas3@att.com>,\n <humin29@huawei.com>, <linville@tuxdriver.com>,\n <ciara.loftus@intel.com>, <qi.z.zhang@intel.com>, <mw@semihalf.com>,\n <mk@semihalf.com>, <shaibran@amazon.com>, <evgenys@amazon.com>,\n <igorch@amazon.com>, <chandu@amd.com>, <irusskikh@marvell.com>,\n <shepard.siegel@atomicrules.com>, <ed.czeck@atomicrules.com>,\n <john.miller@atomicrules.com>, <ajit.khaparde@broadcom.com>,\n <somnath.kotur@broadcom.com>, <jerinj@marvell.com>,\n <mczekaj@marvell.com>, <sthotton@marvell.com>,\n <srinivasan@marvell.com>, <hkalra@marvell.com>,\n <rahul.lakkireddy@chelsio.com>, <johndale@cisco.com>,\n <hyonkim@cisco.com>, <liudongdong3@huawei.com>,\n <yisen.zhuang@huawei.com>, <xuanziyang2@huawei.com>,\n <cloud.wangxiaoyun@huawei.com>, <zhouguoyang@huawei.com>,\n <simei.su@intel.com>, <wenjun1.wu@intel.com>, <qiming.yang@intel.com>,\n <Yuying.Zhang@intel.com>, <beilei.xing@intel.com>,\n <xiao.w.wang@intel.com>, <jingjing.wu@intel.com>,\n <junfeng.guo@intel.com>, <rosen.xu@intel.com>,\n <ndabilpuram@marvell.com>, <kirankumark@marvell.com>,\n <skori@marvell.com>, <skoteshwar@marvell.com>, <lironh@marvell.com>,\n <zr@semihalf.com>, <radhac@marvell.com>, <vburru@marvell.com>,\n <sedara@marvell.com>, <matan@nvidia.com>, <viacheslavo@nvidia.com>,\n <longli@microsoft.com>, <spinler@cesnet.cz>,\n <chaoyong.he@corigine.com>, <niklas.soderlund@corigine.com>,\n <hemant.agrawal@nxp.com>, <sachin.saxena@oss.nxp.com>,\n <g.singh@nxp.com>, <apeksha.gupta@nxp.com>, <sachin.saxena@nxp.com>,\n <aboyer@pensando.io>, <rmody@marvell.com>, <shshaikh@marvell.com>,\n <dsinghrawat@marvell.com>, <andrew.rybchenko@oktetlabs.ru>,\n <jiawenwu@trustnetic.com>, <jianwang@trustnetic.com>,\n <jbehrens@vmware.com>, <maxime.coquelin@redhat.com>,\n <chenbo.xia@intel.com>, <steven.webster@windriver.com>,\n <matt.peters@windriver.com>, <bruce.richardson@intel.com>,\n <mtetsuyah@gmail.com>, <grive@u256.net>, <jasvinder.singh@intel.com>,\n <cristian.dumitrescu@intel.com>, <jgrajcia@cisco.com>,\n <mb@smartsharesystems.com>, Ankur Dwivedi <adwivedi@marvell.com>",
        "Subject": "[PATCH v9 1/6] eal: trace: add trace point emit for blob",
        "Date": "Tue, 7 Feb 2023 12:02:49 +0530",
        "Message-ID": "<20230207063254.401538-2-adwivedi@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230207063254.401538-1-adwivedi@marvell.com>",
        "References": "<20230206115810.308574-1-adwivedi@marvell.com>\n <20230207063254.401538-1-adwivedi@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Proofpoint-GUID": "OpckHknhyjmXXdQt_TPAbf_f-ZR76c-X",
        "X-Proofpoint-ORIG-GUID": "OpckHknhyjmXXdQt_TPAbf_f-ZR76c-X",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1\n definitions=2023-02-06_07,2023-02-06_03,2022-06-22_01",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Adds a trace point emit function for capturing a blob. The blob\ncaptures the length passed by the application followed by the array.\n\nThe maximum blob bytes which can be captured is bounded by\nRTE_TRACE_BLOB_LEN_MAX macro. The value for max blob length macro is\n64 bytes. If the length is less than 64 the remaining trailing bytes\nare set to zero.\n\nThis patch also adds test case for emit blob tracepoint function.\n\nSigned-off-by: Ankur Dwivedi <adwivedi@marvell.com>\nAcked-by: Morten Brørup <mb@smartsharesystems.com>\nAcked-by: Sunil Kumar Kori <skori@marvell.com>\nAcked-by: Jerin Jacob <jerinj@marvell.com>\n---\n app/test/test_trace.c                      | 11 ++++++++\n doc/guides/prog_guide/trace_lib.rst        | 12 +++++++++\n lib/eal/common/eal_common_trace_points.c   |  2 ++\n lib/eal/include/rte_eal_trace.h            |  6 +++++\n lib/eal/include/rte_trace_point.h          | 31 ++++++++++++++++++++++\n lib/eal/include/rte_trace_point_register.h |  9 +++++++\n lib/eal/version.map                        |  1 +\n 7 files changed, 72 insertions(+)",
    "diff": "diff --git a/app/test/test_trace.c b/app/test/test_trace.c\nindex 6bedf14024..ad4a394a29 100644\n--- a/app/test/test_trace.c\n+++ b/app/test/test_trace.c\n@@ -4,6 +4,7 @@\n \n #include <rte_eal_trace.h>\n #include <rte_lcore.h>\n+#include <rte_random.h>\n #include <rte_trace.h>\n \n #include \"test.h\"\n@@ -177,7 +178,12 @@ test_fp_trace_points(void)\n static int\n test_generic_trace_points(void)\n {\n+\tuint8_t arr[RTE_TRACE_BLOB_LEN_MAX];\n \tint tmp;\n+\tint i;\n+\n+\tfor (i = 0; i < RTE_TRACE_BLOB_LEN_MAX; i++)\n+\t\tarr[i] = i;\n \n \trte_eal_trace_generic_void();\n \trte_eal_trace_generic_u64(0x10000000000000);\n@@ -195,6 +201,11 @@ test_generic_trace_points(void)\n \trte_eal_trace_generic_ptr(&tmp);\n \trte_eal_trace_generic_str(\"my string\");\n \trte_eal_trace_generic_size_t(sizeof(void *));\n+\trte_eal_trace_generic_blob(arr, 0);\n+\trte_eal_trace_generic_blob(arr, 17);\n+\trte_eal_trace_generic_blob(arr, RTE_TRACE_BLOB_LEN_MAX);\n+\trte_eal_trace_generic_blob(arr, rte_rand() %\n+\t\t\t\t\tRTE_TRACE_BLOB_LEN_MAX);\n \tRTE_EAL_TRACE_GENERIC_FUNC;\n \n \treturn TEST_SUCCESS;\ndiff --git a/doc/guides/prog_guide/trace_lib.rst b/doc/guides/prog_guide/trace_lib.rst\nindex 9a8f38073d..3e0ea5835c 100644\n--- a/doc/guides/prog_guide/trace_lib.rst\n+++ b/doc/guides/prog_guide/trace_lib.rst\n@@ -352,3 +352,15 @@ event ID.\n The ``packet.header`` and ``packet.context`` will be written in the slow path\n at the time of trace memory creation. The ``trace.header`` and trace payload\n will be emitted when the tracepoint function is invoked.\n+\n+Limitations\n+-----------\n+\n+- The ``rte_trace_point_emit_blob()`` function can capture a maximum blob of\n+  length ``RTE_TRACE_BLOB_LEN_MAX`` bytes. The application can call\n+  ``rte_trace_point_emit_blob()`` multiple times with length less than or equal to\n+  ``RTE_TRACE_BLOB_LEN_MAX``, if it needs to capture more than ``RTE_TRACE_BLOB_LEN_MAX``\n+  bytes.\n+- If the length passed to the ``rte_trace_point_emit_blob()`` is less than\n+  ``RTE_TRACE_BLOB_LEN_MAX``, then the trailing ``(RTE_TRACE_BLOB_LEN_MAX - len)``\n+  bytes in the trace are set to zero.\ndiff --git a/lib/eal/common/eal_common_trace_points.c b/lib/eal/common/eal_common_trace_points.c\nindex 0b0b254615..051f89809c 100644\n--- a/lib/eal/common/eal_common_trace_points.c\n+++ b/lib/eal/common/eal_common_trace_points.c\n@@ -40,6 +40,8 @@ RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_size_t,\n \tlib.eal.generic.size_t)\n RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_func,\n \tlib.eal.generic.func)\n+RTE_TRACE_POINT_REGISTER(rte_eal_trace_generic_blob,\n+\tlib.eal.generic.blob)\n \n RTE_TRACE_POINT_REGISTER(rte_eal_trace_alarm_set,\n \tlib.eal.alarm.set)\ndiff --git a/lib/eal/include/rte_eal_trace.h b/lib/eal/include/rte_eal_trace.h\nindex 5ef4398230..6f5c022558 100644\n--- a/lib/eal/include/rte_eal_trace.h\n+++ b/lib/eal/include/rte_eal_trace.h\n@@ -143,6 +143,12 @@ RTE_TRACE_POINT(\n \trte_trace_point_emit_string(func);\n )\n \n+RTE_TRACE_POINT(\n+\trte_eal_trace_generic_blob,\n+\tRTE_TRACE_POINT_ARGS(const void *in, uint8_t len),\n+\trte_trace_point_emit_blob(in, len);\n+)\n+\n #define RTE_EAL_TRACE_GENERIC_FUNC rte_eal_trace_generic_func(__func__)\n \n /* Interrupt */\ndiff --git a/lib/eal/include/rte_trace_point.h b/lib/eal/include/rte_trace_point.h\nindex 0f8700974f..4d6b5700dd 100644\n--- a/lib/eal/include/rte_trace_point.h\n+++ b/lib/eal/include/rte_trace_point.h\n@@ -144,6 +144,16 @@ _tp _args \\\n #define rte_trace_point_emit_ptr(val)\n /** Tracepoint function payload for string datatype */\n #define rte_trace_point_emit_string(val)\n+/**\n+ * Tracepoint function to capture a blob.\n+ *\n+ * @param val\n+ *   Pointer to the array to be captured.\n+ * @param len\n+ *   Length to be captured. The maximum supported length is\n+ *   RTE_TRACE_BLOB_LEN_MAX bytes.\n+ */\n+#define rte_trace_point_emit_blob(val, len)\n \n #endif /* __DOXYGEN__ */\n \n@@ -152,6 +162,9 @@ _tp _args \\\n /** @internal Macro to define event header size. */\n #define __RTE_TRACE_EVENT_HEADER_SZ sizeof(uint64_t)\n \n+/** Macro to define maximum emit length of blob. */\n+#define RTE_TRACE_BLOB_LEN_MAX 64\n+\n /**\n  * Enable recording events of the given tracepoint in the trace buffer.\n  *\n@@ -374,12 +387,30 @@ do { \\\n \tmem = RTE_PTR_ADD(mem, __RTE_TRACE_EMIT_STRING_LEN_MAX); \\\n } while (0)\n \n+#define rte_trace_point_emit_blob(in, len) \\\n+do { \\\n+\tif (unlikely(in == NULL)) \\\n+\t\treturn; \\\n+\tif (len > RTE_TRACE_BLOB_LEN_MAX) \\\n+\t\tlen = RTE_TRACE_BLOB_LEN_MAX; \\\n+\t__rte_trace_point_emit(len, uint8_t); \\\n+\tmemcpy(mem, in, len); \\\n+\tmemset(RTE_PTR_ADD(mem, len), 0, RTE_TRACE_BLOB_LEN_MAX - len); \\\n+\tmem = RTE_PTR_ADD(mem, RTE_TRACE_BLOB_LEN_MAX); \\\n+} while (0)\n+\n #else\n \n #define __rte_trace_point_emit_header_generic(t) RTE_SET_USED(t)\n #define __rte_trace_point_emit_header_fp(t) RTE_SET_USED(t)\n #define __rte_trace_point_emit(in, type) RTE_SET_USED(in)\n #define rte_trace_point_emit_string(in) RTE_SET_USED(in)\n+#define rte_trace_point_emit_blob(in, len) \\\n+do { \\\n+\tRTE_SET_USED(in); \\\n+\tRTE_SET_USED(len); \\\n+} while (0)\n+\n \n #endif /* ALLOW_EXPERIMENTAL_API */\n #endif /* _RTE_TRACE_POINT_REGISTER_H_ */\ndiff --git a/lib/eal/include/rte_trace_point_register.h b/lib/eal/include/rte_trace_point_register.h\nindex a32f4d731b..a9682d3f22 100644\n--- a/lib/eal/include/rte_trace_point_register.h\n+++ b/lib/eal/include/rte_trace_point_register.h\n@@ -47,6 +47,15 @@ do { \\\n \t\tRTE_STR(in)\"[32]\", \"string_bounded_t\"); \\\n } while (0)\n \n+#define rte_trace_point_emit_blob(in, len) \\\n+do { \\\n+\tRTE_SET_USED(in); \\\n+\t__rte_trace_point_emit(len, uint8_t); \\\n+\t__rte_trace_point_emit_field(RTE_TRACE_BLOB_LEN_MAX, \\\n+\t\tRTE_STR(in)\"[\" RTE_STR(RTE_TRACE_BLOB_LEN_MAX)\"]\", \\\n+\t\tRTE_STR(uint8_t)); \\\n+} while (0)\n+\n #ifdef __cplusplus\n }\n #endif\ndiff --git a/lib/eal/version.map b/lib/eal/version.map\nindex 6523102157..21aa1b8ce3 100644\n--- a/lib/eal/version.map\n+++ b/lib/eal/version.map\n@@ -442,6 +442,7 @@ EXPERIMENTAL {\n \n \t# added in 23.03\n \trte_thread_set_name;\n+\t__rte_eal_trace_generic_blob;\n };\n \n INTERNAL {\n",
    "prefixes": [
        "v9",
        "1/6"
    ]
}