get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 94531,
    "url": "https://patches.dpdk.org/api/patches/94531/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1624053294-31255-6-git-send-email-navasile@linux.microsoft.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1624053294-31255-6-git-send-email-navasile@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1624053294-31255-6-git-send-email-navasile@linux.microsoft.com",
    "date": "2021-06-18T21:54:53",
    "name": "[5/6] eal: set affinity and priority attributes",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e6b000f1206511b34299b3309e92504d4aa716c2",
    "submitter": {
        "id": 1668,
        "url": "https://patches.dpdk.org/api/people/1668/?format=api",
        "name": "Narcisa Ana Maria Vasile",
        "email": "navasile@linux.microsoft.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1624053294-31255-6-git-send-email-navasile@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 17403,
            "url": "https://patches.dpdk.org/api/series/17403/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=17403",
            "date": "2021-06-18T21:54:48",
            "name": "Enable the internal EAL thread API",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/17403/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/94531/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/94531/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 2F702A0A0C;\n\tFri, 18 Jun 2021 23:55:54 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5360D4113A;\n\tFri, 18 Jun 2021 23:55:39 +0200 (CEST)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id 5559D4111C\n for <dev@dpdk.org>; Fri, 18 Jun 2021 23:55:34 +0200 (CEST)",
            "by linux.microsoft.com (Postfix, from userid 1059)\n id B12D320B83F2; Fri, 18 Jun 2021 14:55:33 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com B12D320B83F2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1624053333;\n bh=iVJLXCME50zDeV7tElqOcgU5JKHY2NeyOFTlN8ALr4g=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=Gudcv+EQkkumBX5kYu8p7UlUMWToHHUl7+nuXpsJatAsfoQtOS8Z6uXw/9QNP8HTm\n 9tYKcOKoGrXQ2TjQQN31uCEWY4c+MjyW1OACkDnROE6fWlmE1m38+afxOYdGvhJC+N\n +PC8LJ6X5tr2VjI4dxTJgH8BBu1dsdVtWh+552zk=",
        "From": "Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>",
        "To": "dev@dpdk.org, thomas@monjalon.net, dmitry.kozliuk@gmail.com,\n khot@microsoft.com, navasile@microsoft.com, dmitrym@microsoft.com,\n roretzla@microsoft.com, talshn@nvidia.com, ocardona@microsoft.com",
        "Cc": "bruce.richardson@intel.com, david.marchand@redhat.com,\n pallavi.kadam@intel.com",
        "Date": "Fri, 18 Jun 2021 14:54:53 -0700",
        "Message-Id": "<1624053294-31255-6-git-send-email-navasile@linux.microsoft.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1624053294-31255-1-git-send-email-navasile@linux.microsoft.com>",
        "References": "<1624053294-31255-1-git-send-email-navasile@linux.microsoft.com>",
        "Subject": "[dpdk-dev] [PATCH 5/6] eal: set affinity and priority attributes",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Narcisa Vasile <navasile@microsoft.com>\n\nIf the user doesn't specify the priority through the command\nline arguments, initialize the thread priority to 'normal'.\nSet thread priority for eal threads.\n\nSigned-off-by: Narcisa Vasile <navasile@microsoft.com>\n---\n lib/eal/common/eal_common_thread.c | 11 ++++++++\n lib/eal/common/eal_thread.h        |  6 ++++\n lib/eal/freebsd/eal.c              | 41 +++++++++++++++++++++++-----\n lib/eal/linux/eal.c                | 39 +++++++++++++++++++++-----\n lib/eal/windows/eal.c              | 44 ++++++++++++++++++++++++++++--\n 5 files changed, 125 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/lib/eal/common/eal_common_thread.c b/lib/eal/common/eal_common_thread.c\nindex 62d28e7b28..fa537db7ac 100644\n--- a/lib/eal/common/eal_common_thread.c\n+++ b/lib/eal/common/eal_common_thread.c\n@@ -388,3 +388,14 @@ rte_thread_unregister(void)\n \t\tRTE_LOG(DEBUG, EAL, \"Unregistered non-EAL thread (was lcore %u).\\n\",\n \t\t\tlcore_id);\n }\n+\n+void rte_thread_priority_init(void)\n+{\n+\tstruct internal_config *internal_conf =\n+\t\teal_get_internal_configuration();\n+\n+\t/* If the user doesn't specify the priority through the command\n+\t * line arguments, the default 'normal' value will be used.\n+\t */\n+\tinternal_conf->thread_priority = RTE_THREAD_PRIORITY_NORMAL;\n+}\ndiff --git a/lib/eal/common/eal_thread.h b/lib/eal/common/eal_thread.h\nindex 4a49117be8..7b3b884463 100644\n--- a/lib/eal/common/eal_thread.h\n+++ b/lib/eal/common/eal_thread.h\n@@ -58,4 +58,10 @@ eal_thread_dump_affinity(rte_cpuset_t *cpuset, char *str, unsigned int size);\n int\n eal_thread_dump_current_affinity(char *str, unsigned int size);\n \n+/**\n+ * Set the initial thread priority in the internal configuration\n+ * to the default value of RTE_THREAD_PRIORITY_NORMAL.\n+ */\n+void rte_thread_priority_init(void);\n+\n #endif /* EAL_THREAD_H */\ndiff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c\nindex b5cf050697..7303d62afb 100644\n--- a/lib/eal/freebsd/eal.c\n+++ b/lib/eal/freebsd/eal.c\n@@ -676,6 +676,8 @@ rte_eal_init(int argc, char **argv)\n \tstruct internal_config *internal_conf =\n \t\teal_get_internal_configuration();\n \n+\trte_thread_priority_init();\n+\n \t/* checks if the machine is adequate */\n \tif (!rte_cpu_is_supported()) {\n \t\trte_eal_init_alert(\"unsupported cpu type.\");\n@@ -854,6 +856,14 @@ rte_eal_init(int argc, char **argv)\n \n \teal_check_mem_on_local_socket();\n \n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n \t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n \t\trte_eal_init_alert(\"Cannot set affinity\");\n@@ -869,6 +879,22 @@ rte_eal_init(int argc, char **argv)\n \t\tconfig->main_lcore, (void *)thread_id.opaque_id, cpuset,\n \t\tret == 0 ? \"\" : \"...\");\n \n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot initialize thread attributes\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority attribute\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -882,9 +908,15 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\tret = rte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t\t     &lcore_config[i].cpuset);\n+\n+\t\tif (ret != 0)\n+\t\t\trte_panic(\"Cannot set affinity\\n\");\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\t     eal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \n@@ -892,11 +924,6 @@ rte_eal_init(int argc, char **argv)\n \t\tsnprintf(thread_name, sizeof(thread_name),\n \t\t\t\t\"lcore-worker-%d\", i);\n \t\trte_thread_name_set(lcore_config[i].thread_id, thread_name);\n-\n-\t\tret = rte_thread_set_affinity_by_id(lcore_config[i].thread_id,\n-\t\t\t\t&lcore_config[i].cpuset);\n-\t\tif (ret != 0)\n-\t\t\trte_panic(\"Cannot set affinity\\n\");\n \t}\n \n \t/*\ndiff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c\nindex 7060856d84..7f3d491560 100644\n--- a/lib/eal/linux/eal.c\n+++ b/lib/eal/linux/eal.c\n@@ -975,6 +975,8 @@ rte_eal_init(int argc, char **argv)\n \tstruct internal_config *internal_conf =\n \t\teal_get_internal_configuration();\n \n+\trte_thread_priority_init();\n+\n \t/* checks if the machine is adequate */\n \tif (!rte_cpu_is_supported()) {\n \t\trte_eal_init_alert(\"unsupported cpu type.\");\n@@ -1219,6 +1221,14 @@ rte_eal_init(int argc, char **argv)\n \n \teal_check_mem_on_local_socket();\n \n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n \t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n \t\trte_eal_init_alert(\"Cannot set affinity\");\n@@ -1233,6 +1243,23 @@ rte_eal_init(int argc, char **argv)\n \t\tconfig->main_lcore, (void *)thread_id.opaque_id, cpuset,\n \t\tret == 0 ? \"\" : \"...\");\n \n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\tRTE_LOG(DEBUG, EAL, \"Cannot initialize thread attributes,\"\n+\t\t\t\"ret = %d\\n\", ret);\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\t\t\t   internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\tRTE_LOG(DEBUG, EAL, \"Cannot set thread priority attribute,\"\n+\t\t\t\"ret = %d\\n\", ret);\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -1246,9 +1273,12 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\trte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t\t     &lcore_config[i].cpuset);\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\t     eal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \n@@ -1260,11 +1290,6 @@ rte_eal_init(int argc, char **argv)\n \t\tif (ret != 0)\n \t\t\tRTE_LOG(DEBUG, EAL,\n \t\t\t\t\"Cannot set name for lcore thread\\n\");\n-\n-\t\tret = rte_thread_set_affinity_by_id(lcore_config[i].thread_id,\n-\t\t\t\t&lcore_config[i].cpuset);\n-\t\tif (ret != 0)\n-\t\t\trte_panic(\"Cannot set affinity\\n\");\n \t}\n \n \t/*\ndiff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c\nindex 65be582b99..bb9053df84 100644\n--- a/lib/eal/windows/eal.c\n+++ b/lib/eal/windows/eal.c\n@@ -274,6 +274,8 @@ rte_eal_init(int argc, char **argv)\n \t\teal_get_internal_configuration();\n \tint ret;\n \n+\trte_thread_priority_init();\n+\n \teal_log_init(NULL, 0);\n \n \teal_log_level_parse(argc, argv);\n@@ -375,6 +377,36 @@ rte_eal_init(int argc, char **argv)\n \t\treturn -1;\n \t}\n \n+\tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n+\t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n+\t\trte_eal_init_alert(\"Cannot set affinity\");\n+\t\trte_errno = EINVAL;\n+\t\treturn -1;\n+\t}\n+\n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\t\t      internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot initialize thread attributes\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\t\t\t   internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority attribute\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -390,9 +422,17 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\tret = rte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t&lcore_config[i].cpuset);\n+\t\tif (ret != 0) {\n+\t\t\trte_eal_init_alert(\"Cannot set thread affinity attribute\");\n+\t\t\trte_errno = ret;\n+\t\t\treturn -1;\n+\t\t}\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\teal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \t}\n",
    "prefixes": [
        "5/6"
    ]
}