get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 131207,
    "url": "http://patches.dpdk.org/api/patches/131207/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230906162226.1618088-11-thomas@monjalon.net/",
    "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": "<20230906162226.1618088-11-thomas@monjalon.net>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230906162226.1618088-11-thomas@monjalon.net",
    "date": "2023-09-06T16:12:27",
    "name": "[10/11] eal: remove deprecated thread functions",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "93381e824d37b6f50b60f82d508fb3439e0ebda4",
    "submitter": {
        "id": 685,
        "url": "http://patches.dpdk.org/api/people/685/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas@monjalon.net"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230906162226.1618088-11-thomas@monjalon.net/mbox/",
    "series": [
        {
            "id": 29438,
            "url": "http://patches.dpdk.org/api/series/29438/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29438",
            "date": "2023-09-06T16:12:17",
            "name": "rework thread management",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/29438/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/131207/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/131207/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 6A93F42529;\n\tWed,  6 Sep 2023 18:24:12 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D7C26402EA;\n\tWed,  6 Sep 2023 18:24:04 +0200 (CEST)",
            "from wout3-smtp.messagingengine.com (wout3-smtp.messagingengine.com\n [64.147.123.19]) by mails.dpdk.org (Postfix) with ESMTP id C5248402E3\n for <dev@dpdk.org>; Wed,  6 Sep 2023 18:24:02 +0200 (CEST)",
            "from compute3.internal (compute3.nyi.internal [10.202.2.43])\n by mailout.west.internal (Postfix) with ESMTP id 22D08320098E;\n Wed,  6 Sep 2023 12:24:01 -0400 (EDT)",
            "from mailfrontend2 ([10.202.2.163])\n by compute3.internal (MEProxy); Wed, 06 Sep 2023 12:24:02 -0400",
            "by mail.messagingengine.com (Postfix) with ESMTPA; Wed,\n 6 Sep 2023 12:23:58 -0400 (EDT)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h=\n cc:cc:content-transfer-encoding:content-type:date:date:from:from\n :in-reply-to:in-reply-to:message-id:mime-version:references\n :reply-to:sender:subject:subject:to:to; s=fm1; t=1694017440; x=\n 1694103840; bh=f0yMxo+a3ynaiFmcKMPRWqILQsKlowga946+J9ZefmM=; b=C\n HxZilOallysRDSgWw8N8zkmhaiM/iP/hyGmCdBG29/HiXtqjlc10xCzVgVBlRS7t\n /ujKDt4VaiMvHX1UOu7yF0At+1LkWZNL+L1aSXoSeLzyyzM91QdJTUM2ZxMZoHxs\n KqGbi9DU+6X04d6vEmcUVcKOgSU7EJ9oQoqqQvRanUViKxjhS15Flh/dhdGXjyvL\n AsJ6QCOWE38gYU7nBNqwHArbwwCiPQar7eunyCsAh81VUvwXeU7HGy01jQp2ubcb\n NWcBdoPWC0SeBD0vebPMG+rVPk7NcU1y5bCy4FjGkkXdgQ9QUVlQ0n2dC3x/fX/T\n cbMkRsqiLJwSovwTDSQQA==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n messagingengine.com; h=cc:cc:content-transfer-encoding\n :content-type:date:date:feedback-id:feedback-id:from:from\n :in-reply-to:in-reply-to:message-id:mime-version:references\n :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy\n :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1694017440; x=\n 1694103840; bh=f0yMxo+a3ynaiFmcKMPRWqILQsKlowga946+J9ZefmM=; b=q\n /qyvtyABSpO3UVfWSssfNXBzAGZOHRH9q5z0wUJHenktGlZeOezWKzNTdtPqmOGq\n HkNlxFshsVlbGS2G56TgYrp6jqzT8JZzr6H47mMv+pFx2ASTToaDd2u68H6eF3Al\n tHSJR9wnpGbQcQF+CmVIJ9Y/WrFozm7t5AGr7O3Cg2of8fWoWNafG8SLWcdo5rUK\n liORHhZUSrDEcxg4aqZobTjGs0bgR7IfvJB639x3MhIODk7v9YFgstQhLu7R7dWF\n P95xiewmzGhD3K1NJk+Vm7TPKCa8J8/R6B7/wg5KVWNPaxeCBbPgDg5bNh0zowwS\n RTbWR9VeG8oikdLfY1WqQ=="
        ],
        "X-ME-Sender": "<xms:oKf4ZPV-jXKqxb-m2V8ByewECt9WETVUiTH_N8ZBtUFNaHnT5TdrVA>\n <xme:oKf4ZHlIIa5fKYOildAkcjyPlVugK1XVyPR1qJaRVQHubWIMMkfU2nlIfTJ_rbly_\n ubS9bYxvWcKLtht2g>",
        "X-ME-Received": "\n <xmr:oKf4ZLbpNMDGFc-k_NSAuFTPSOBMGk2zcGk4NWpeggEIp3uCyAfwxJVksUuXoHIfUOI60feHyT4y421xZjJOWvTOw_iscJw>",
        "X-ME-Proxy-Cause": "\n gggruggvucftvghtrhhoucdtuddrgedviedrudehfedguddttdcutefuodetggdotefrod\n ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh\n necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd\n enucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefvhhho\n mhgrshcuofhonhhjrghlohhnuceothhhohhmrghssehmohhnjhgrlhhonhdrnhgvtheqne\n cuggftrfgrthhtvghrnhepvdejhfdugeehvddtieejieegteeuudfgjeeukeeiledthfet\n veekhefhieelhfdtnecuvehluhhsthgvrhfuihiivgepfeenucfrrghrrghmpehmrghilh\n hfrhhomhepthhhohhmrghssehmohhnjhgrlhhonhdrnhgvth",
        "X-ME-Proxy": "<xmx:oKf4ZKVyLO1996KlXBur5y3kIHVgbdffnhsoZ1E_q4CD-1nC8ft0FQ>\n <xmx:oKf4ZJnSTO2QWMb2SiOJeVwhPOE8qyi2IalwN6GkI-rJEKaJ3aDRFg>\n <xmx:oKf4ZHe93WLaWqiQMbmD1htBoFNQH0_SaWAv8QbnHpcGeFutfT9mPg>\n <xmx:oKf4ZL6raZW8CL7fMhBqMCSSJl7Tmqpkh5AMWwFk6p8UgiS1YSxcQg>",
        "Feedback-ID": "i47234305:Fastmail",
        "From": "Thomas Monjalon <thomas@monjalon.net>",
        "To": "dev@dpdk.org",
        "Cc": "Tyler Retzlaff <roretzla@linux.microsoft.com>,\n David Marchand <david.marchand@redhat.com>,\n Ferruh Yigit <ferruh.yigit@amd.com>,\n Anatoly Burakov <anatoly.burakov@intel.com>,\n Bruce Richardson <bruce.richardson@intel.com>,\n Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>,\n Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>,\n Dmitry Malloy <dmitrym@microsoft.com>,\n Pallavi Kadam <pallavi.kadam@intel.com>",
        "Subject": "[PATCH 10/11] eal: remove deprecated thread functions",
        "Date": "Wed,  6 Sep 2023 18:12:27 +0200",
        "Message-ID": "<20230906162226.1618088-11-thomas@monjalon.net>",
        "X-Mailer": "git-send-email 2.42.0",
        "In-Reply-To": "<20230906162226.1618088-1-thomas@monjalon.net>",
        "References": "<20230906162226.1618088-1-thomas@monjalon.net>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "The deprecated functions rte_thread_setname() and rte_ctrl_thread_create()\nare replaced with the new rte_thread API:\n\n\trte_thread_setname()\ncan be replaced with\n\trte_thread_set_name()\nor\trte_thread_set_prefixed_name()\n\n\trte_ctrl_thread_create()\ncan be replaced with\n\trte_thread_create_control()\nor\trte_thread_create_internal_control()\n\nSigned-off-by: Thomas Monjalon <thomas@monjalon.net>\n---\n .../prog_guide/env_abstraction_layer.rst      |  2 +-\n doc/guides/rel_notes/deprecation.rst          |  5 --\n doc/guides/rel_notes/release_23_11.rst        |  4 +-\n lib/eal/common/eal_common_thread.c            | 66 +------------------\n lib/eal/freebsd/eal_thread.c                  |  7 --\n lib/eal/include/rte_lcore.h                   | 42 ------------\n lib/eal/linux/eal_thread.c                    | 16 -----\n lib/eal/version.map                           |  2 -\n lib/eal/windows/eal_thread.c                  |  8 ---\n 9 files changed, 6 insertions(+), 146 deletions(-)",
    "diff": "diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst\nindex 89014789de..6debf54efb 100644\n--- a/doc/guides/prog_guide/env_abstraction_layer.rst\n+++ b/doc/guides/prog_guide/env_abstraction_layer.rst\n@@ -756,7 +756,7 @@ Control Thread API\n ~~~~~~~~~~~~~~~~~~\n \n It is possible to create Control Threads using the public API\n-``rte_ctrl_thread_create()``.\n+``rte_thread_create_control()``.\n Those threads can be used for management/infrastructure tasks and are used\n internally by DPDK for multi process support and interrupt handling.\n \ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex 3e48908b51..8c8873006d 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -29,11 +29,6 @@ Deprecation Notices\n   are renamed to ``rte_tel_data_add_array_uint`` and ``rte_tel_data_add_dict_uint`` respectively.\n   As such, the old function names are deprecated and will be removed in a future release.\n \n-* eal: The functions ``rte_thread_setname`` and ``rte_ctrl_thread_create``\n-  are planned to be deprecated starting with the 23.07 release, subject to\n-  the replacement API rte_thread_set_name and rte_thread_create_control being\n-  marked as stable, and planned to be removed by the 23.11 release.\n-\n * eal: ``RTE_CPUFLAG_NUMFLAGS`` will be removed in DPDK 23.11 release.\n   This is to allow new CPU features to be added without ABI breakage.\n \ndiff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst\nindex d7562fd646..9746809a66 100644\n--- a/doc/guides/rel_notes/release_23_11.rst\n+++ b/doc/guides/rel_notes/release_23_11.rst\n@@ -115,7 +115,9 @@ API Changes\n \n * eal: The thread API has changed.\n   The function ``rte_thread_create_control()`` does not take attributes anymore.\n-  The whole thread API was promoted to stable level.\n+  The whole thread API was promoted to stable level,\n+  except ``rte_thread_setname()`` and ``rte_ctrl_thread_create()`` which are\n+  replaced with ``rte_thread_set_name()`` and ``rte_thread_create_control()``.\n \n \n ABI Changes\ndiff --git a/lib/eal/common/eal_common_thread.c b/lib/eal/common/eal_common_thread.c\nindex 31c37e3102..78f643af73 100644\n--- a/lib/eal/common/eal_common_thread.c\n+++ b/lib/eal/common/eal_common_thread.c\n@@ -248,7 +248,7 @@ struct rte_thread_ctrl_params {\n \tenum __rte_ctrl_thread_status ctrl_thread_status;\n };\n \n-static int ctrl_thread_init(void *arg)\n+static int control_thread_init(void *arg)\n {\n \tstruct internal_config *internal_conf =\n \t\teal_get_internal_configuration();\n@@ -273,80 +273,18 @@ static int ctrl_thread_init(void *arg)\n \treturn 0;\n }\n \n-static void *ctrl_thread_start(void *arg)\n-{\n-\tstruct rte_thread_ctrl_params *params = arg;\n-\tvoid *start_arg = params->arg;\n-\tvoid *(*start_routine)(void *) = params->u.ctrl_start_routine;\n-\n-\tif (ctrl_thread_init(arg) != 0)\n-\t\treturn NULL;\n-\n-\treturn start_routine(start_arg);\n-}\n-\n static uint32_t control_thread_start(void *arg)\n {\n \tstruct rte_thread_ctrl_params *params = arg;\n \tvoid *start_arg = params->arg;\n \trte_thread_func start_routine = params->u.control_start_routine;\n \n-\tif (ctrl_thread_init(arg) != 0)\n+\tif (control_thread_init(arg) != 0)\n \t\treturn 0;\n \n \treturn start_routine(start_arg);\n }\n \n-int\n-rte_ctrl_thread_create(pthread_t *thread, const char *name,\n-\t\tconst pthread_attr_t *attr,\n-\t\tvoid *(*start_routine)(void *), void *arg)\n-{\n-\tstruct rte_thread_ctrl_params *params;\n-\tenum __rte_ctrl_thread_status ctrl_thread_status;\n-\tint ret;\n-\n-\tparams = malloc(sizeof(*params));\n-\tif (!params)\n-\t\treturn -ENOMEM;\n-\n-\tparams->u.ctrl_start_routine = start_routine;\n-\tparams->arg = arg;\n-\tparams->ret = 0;\n-\tparams->ctrl_thread_status = CTRL_THREAD_LAUNCHING;\n-\n-\tret = pthread_create(thread, attr, ctrl_thread_start, (void *)params);\n-\tif (ret != 0) {\n-\t\tfree(params);\n-\t\treturn -ret;\n-\t}\n-\n-\tif (name != NULL)\n-\t\trte_thread_set_name((rte_thread_t){(uintptr_t)*thread}, name);\n-\n-\t/* Wait for the control thread to initialize successfully */\n-\twhile ((ctrl_thread_status =\n-\t\t\t__atomic_load_n(&params->ctrl_thread_status,\n-\t\t\t__ATOMIC_ACQUIRE)) == CTRL_THREAD_LAUNCHING) {\n-\t\t/* Yield the CPU. Using sched_yield call requires maintaining\n-\t\t * another implementation for Windows as sched_yield is not\n-\t\t * supported on Windows.\n-\t\t */\n-\t\trte_delay_us_sleep(1);\n-\t}\n-\n-\t/* Check if the control thread encountered an error */\n-\tif (ctrl_thread_status == CTRL_THREAD_ERROR) {\n-\t\t/* ctrl thread is exiting */\n-\t\trte_thread_join((rte_thread_t){(uintptr_t)*thread}, NULL);\n-\t}\n-\n-\tret = params->ret;\n-\tfree(params);\n-\n-\treturn -ret;\n-}\n-\n int\n rte_thread_create_control(rte_thread_t *thread, const char *name,\n \t\trte_thread_func start_routine, void *arg)\ndiff --git a/lib/eal/freebsd/eal_thread.c b/lib/eal/freebsd/eal_thread.c\nindex ba9b25c2c0..6f97a3c2c1 100644\n--- a/lib/eal/freebsd/eal_thread.c\n+++ b/lib/eal/freebsd/eal_thread.c\n@@ -42,10 +42,3 @@ void rte_thread_set_name(rte_thread_t thread_id, const char *thread_name)\n \n \tpthread_set_name_np((pthread_t)thread_id.opaque_id, truncated);\n }\n-\n-int rte_thread_setname(pthread_t id, const char *name)\n-{\n-\t/* this BSD function returns no error */\n-\tpthread_set_name_np(id, name);\n-\treturn 0;\n-}\ndiff --git a/lib/eal/include/rte_lcore.h b/lib/eal/include/rte_lcore.h\nindex 6ce810b876..7deae47af3 100644\n--- a/lib/eal/include/rte_lcore.h\n+++ b/lib/eal/include/rte_lcore.h\n@@ -385,20 +385,6 @@ void rte_lcore_register_usage_cb(rte_lcore_usage_cb cb);\n void\n rte_lcore_dump(FILE *f);\n \n-/**\n- * Set thread names.\n- *\n- * @note It fails with glibc < 2.12.\n- *\n- * @param id\n- *   Thread id.\n- * @param name\n- *   Thread name to set.\n- * @return\n- *   On success, return 0; otherwise return a negative value.\n- */\n-int rte_thread_setname(pthread_t id, const char *name);\n-\n /**\n  * Register current non-EAL thread as a lcore.\n  *\n@@ -421,34 +407,6 @@ rte_thread_register(void);\n void\n rte_thread_unregister(void);\n \n-/**\n- * Create a control thread.\n- *\n- * Creates a control thread with the given name and attributes. The\n- * affinity of the new thread is based on the CPU affinity retrieved\n- * at the time rte_eal_init() was called, the dataplane and service\n- * lcores are then excluded. If setting the name of the thread fails,\n- * the error is ignored and a debug message is logged.\n- *\n- * @param thread\n- *   Filled with the thread id of the new created thread.\n- * @param name\n- *   The name of the control thread (max 16 characters including '\\0').\n- * @param attr\n- *   Attributes for the new thread.\n- * @param start_routine\n- *   Function to be executed by the new thread.\n- * @param arg\n- *   Argument passed to start_routine.\n- * @return\n- *   On success, returns 0; on error, it returns a negative value\n- *   corresponding to the error number.\n- */\n-int\n-rte_ctrl_thread_create(pthread_t *thread, const char *name,\n-\t\tconst pthread_attr_t *attr,\n-\t\tvoid *(*start_routine)(void *), void *arg);\n-\n #ifdef __cplusplus\n }\n #endif\ndiff --git a/lib/eal/linux/eal_thread.c b/lib/eal/linux/eal_thread.c\nindex b9a126f3a8..880070c627 100644\n--- a/lib/eal/linux/eal_thread.c\n+++ b/lib/eal/linux/eal_thread.c\n@@ -39,19 +39,3 @@ void rte_thread_set_name(rte_thread_t thread_id, const char *thread_name)\n \tif (ret != 0)\n \t\tRTE_LOG(DEBUG, EAL, \"Failed to set thread name\\n\");\n }\n-\n-int rte_thread_setname(pthread_t id, const char *name)\n-{\n-\tint ret = ENOSYS;\n-#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)\n-#if __GLIBC_PREREQ(2, 12)\n-\tchar truncated[16];\n-\n-\tstrlcpy(truncated, name, sizeof(truncated));\n-\tret = pthread_setname_np(id, truncated);\n-#endif\n-#endif\n-\tRTE_SET_USED(id);\n-\tRTE_SET_USED(name);\n-\treturn -ret;\n-}\ndiff --git a/lib/eal/version.map b/lib/eal/version.map\nindex 6d32c19286..915057b325 100644\n--- a/lib/eal/version.map\n+++ b/lib/eal/version.map\n@@ -20,7 +20,6 @@ DPDK_24 {\n \trte_cpu_get_flag_enabled;\n \trte_cpu_get_flag_name;\n \trte_cpu_is_supported; # WINDOWS_NO_EXPORT\n-\trte_ctrl_thread_create;\n \trte_cycles_vmware_tsc_map; # WINDOWS_NO_EXPORT\n \trte_delay_us;\n \trte_delay_us_block;\n@@ -278,7 +277,6 @@ DPDK_24 {\n \trte_thread_set_affinity_by_id;\n \trte_thread_set_name;\n \trte_thread_set_priority;\n-\trte_thread_setname;\n \trte_thread_unregister;\n \trte_thread_value_get;\n \trte_thread_value_set;\ndiff --git a/lib/eal/windows/eal_thread.c b/lib/eal/windows/eal_thread.c\nindex 464d510838..9e3df200b9 100644\n--- a/lib/eal/windows/eal_thread.c\n+++ b/lib/eal/windows/eal_thread.c\n@@ -76,11 +76,3 @@ rte_sys_gettid(void)\n {\n \treturn GetCurrentThreadId();\n }\n-\n-int\n-rte_thread_setname(__rte_unused pthread_t id, __rte_unused const char *name)\n-{\n-\t/* TODO */\n-\t/* This is a stub, not the expected result */\n-\treturn 0;\n-}\n",
    "prefixes": [
        "10/11"
    ]
}