get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 13996,
    "url": "https://patches.dpdk.org/api/patches/13996/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1466179340-7513-1-git-send-email-thomas.monjalon@6wind.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": "<1466179340-7513-1-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1466179340-7513-1-git-send-email-thomas.monjalon@6wind.com",
    "date": "2016-06-17T16:02:20",
    "name": "[dpdk-dev,v2] eal: fix thread naming on FreeBSD",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "5f3a28845a5c1ec9cd1393461756ae02a8bd3f2c",
    "submitter": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/people/1/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas.monjalon@6wind.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1466179340-7513-1-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/13996/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/13996/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 46162CF17;\n\tFri, 17 Jun 2016 18:02:26 +0200 (CEST)",
            "from mail-wm0-f41.google.com (mail-wm0-f41.google.com\n\t[74.125.82.41]) by dpdk.org (Postfix) with ESMTP id 95F25CF15\n\tfor <dev@dpdk.org>; Fri, 17 Jun 2016 18:02:24 +0200 (CEST)",
            "by mail-wm0-f41.google.com with SMTP id m124so5654160wme.1\n\tfor <dev@dpdk.org>; Fri, 17 Jun 2016 09:02:24 -0700 (PDT)",
            "from XPS13.localdomain (184.203.134.77.rev.sfr.net.\n\t[77.134.203.184]) by smtp.gmail.com with ESMTPSA id\n\ta129sm84044wma.2.2016.06.17.09.02.22\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 17 Jun 2016 09:02:23 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=3l2pGLNy1syOjcF/M0OOPgBNYHnRnVXVj5dhzNhJtRg=;\n\tb=yoSaGh+FgZYGCzEGRsicJDIVjC4Na4NxEKeqYuswL9vPCpaYCOquoiM53woSasO9gr\n\tSjbzmQLIuSy33hUFTKDtYYwVx+JJYin7uquowMGiwXw2+rHg/W/bej12SZtGosVazZ6/\n\tUn7GifiKnS6rcGKH0yX3Pc2Ex8FHmZZ8ck03+BxbzdolsovRcFXf+KUIXAs/yirZsOBi\n\t7tuQ5hmsa03qdA8iNgpcQVHfdc0fIJ3h4bJphawhK4oBimje1fJ1AEZK7bErGOs5EfDc\n\to7ymbiwmojWOAnbuScVF18rKIy1FDMskqKZ/6znVAWkfzZfnDNoCKmlWjEP0Pw1F5U4v\n\t5tLQ==",
        "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:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=3l2pGLNy1syOjcF/M0OOPgBNYHnRnVXVj5dhzNhJtRg=;\n\tb=e7VNlLbsH7Jwx0EN8XvFZA5EnpaRTbhepnIRCMXx4gyLutOiA1fzEzKLIpwm1lAKg2\n\tDAnhERB2NYgqgz9aDGpISX9lpaQz0BDVlQ3GOQ3wi3HzJ+cFuTk7XMnVcGI4agRr/lYP\n\tTrxvZ9kFCTcCrj1Ma8psaQJgrUEIeyQLxF7jgw4wo6i+nQNm7dE9NjEbFCAsgXlx923B\n\tlapoRZl54NNTC3FppL/75M4W9o6ECN53NE9qMVaIWWgbyQZEeV49wbFKEpH1kUNcbEDr\n\tKL3EJTOiwIgFwBBZYEntFL1SsKChlHnmcTpUVjHyVAy9oOWfP0XuPinUAVDi5/WJF8Qh\n\tSMug==",
        "X-Gm-Message-State": "ALyK8tKXceGAQf0iejr+9Y05G26V6RQLeKrr/R7SDwfU64PUk36VHF14m7yrA5PdRoigBom+",
        "X-Received": "by 10.28.27.8 with SMTP id b8mr431354wmb.40.1466179344290;\n\tFri, 17 Jun 2016 09:02:24 -0700 (PDT)",
        "From": "Thomas Monjalon <thomas.monjalon@6wind.com>",
        "To": "david.marchand@6wind.com",
        "Cc": "dev@dpdk.org",
        "Date": "Fri, 17 Jun 2016 18:02:20 +0200",
        "Message-Id": "<1466179340-7513-1-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.7.0",
        "In-Reply-To": "<CALwxeUsmP5b91z2xM6CyQHQe7tPN4yjQf21s6ry_2Owqxkd+eA@mail.gmail.com>",
        "References": "<CALwxeUsmP5b91z2xM6CyQHQe7tPN4yjQf21s6ry_2Owqxkd+eA@mail.gmail.com>",
        "Subject": "[dpdk-dev] [PATCH v2] eal: fix thread naming on FreeBSD",
        "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": "rte_thread_setname was a macro defined only for Linux.\nThe function rte_thread_setname() can now be used on FreeBSD\nas well on Linux.\nIt is required to build librte_pdump.\n\nThe macro was 0 for old glibc. The function is now returning -1.\nThe related logs are decreased from error to debug level because\nit is not an important failure, just a debug inconvenience.\n\nFixes: 278f945402c5 (\"pdump: add new library for packet capture\")\n\nSigned-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>\n---\nv2: fix doxygen comment\n---\n examples/tep_termination/main.c                    |  2 +-\n examples/vhost/main.c                              |  2 +-\n examples/vhost_xen/main.c                          |  2 +-\n lib/librte_eal/bsdapp/eal/eal.c                    |  2 +-\n lib/librte_eal/bsdapp/eal/eal_thread.c             |  7 +++++++\n lib/librte_eal/bsdapp/eal/rte_eal_version.map      |  1 +\n lib/librte_eal/common/include/rte_lcore.h          | 23 ++++++++--------------\n lib/librte_eal/linuxapp/eal/eal.c                  |  2 +-\n lib/librte_eal/linuxapp/eal/eal_interrupts.c       |  2 +-\n lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c |  2 +-\n lib/librte_eal/linuxapp/eal/eal_thread.c           | 11 +++++++++++\n lib/librte_eal/linuxapp/eal/eal_timer.c            |  4 ++--\n lib/librte_eal/linuxapp/eal/rte_eal_version.map    |  1 +\n 13 files changed, 37 insertions(+), 24 deletions(-)",
    "diff": "diff --git a/examples/tep_termination/main.c b/examples/tep_termination/main.c\nindex b8297dd..aa67a6b 100644\n--- a/examples/tep_termination/main.c\n+++ b/examples/tep_termination/main.c\n@@ -1246,7 +1246,7 @@ main(int argc, char *argv[])\n \t\tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, \"print-stats\");\n \t\tret = rte_thread_setname(tid, thread_name);\n \t\tif (ret != 0)\n-\t\t\tRTE_LOG(ERR, VHOST_CONFIG, \"Cannot set print-stats name\\n\");\n+\t\t\tRTE_LOG(DEBUG, VHOST_CONFIG, \"Cannot set print-stats name\\n\");\n \t}\n \n \t/* Launch all data cores. */\ndiff --git a/examples/vhost/main.c b/examples/vhost/main.c\nindex 665886e..f849571 100644\n--- a/examples/vhost/main.c\n+++ b/examples/vhost/main.c\n@@ -1474,7 +1474,7 @@ main(int argc, char *argv[])\n \t\tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, \"print-stats\");\n \t\tret = rte_thread_setname(tid, thread_name);\n \t\tif (ret != 0)\n-\t\t\tRTE_LOG(ERR, VHOST_CONFIG,\n+\t\t\tRTE_LOG(DEBUG, VHOST_CONFIG,\n \t\t\t\t\"Cannot set print-stats name\\n\");\n \t}\n \ndiff --git a/examples/vhost_xen/main.c b/examples/vhost_xen/main.c\nindex 2b04c95..2e40357 100644\n--- a/examples/vhost_xen/main.c\n+++ b/examples/vhost_xen/main.c\n@@ -1494,7 +1494,7 @@ main(int argc, char *argv[])\n \t\tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, \"print-xen-stats\");\n \t\tret = rte_thread_setname(tid, thread_name);\n \t\tif (ret != 0)\n-\t\t\tRTE_LOG(ERR, VHOST_CONFIG,\n+\t\t\tRTE_LOG(DEBUG, VHOST_CONFIG,\n \t\t\t\t\"Cannot set print-stats name\\n\");\n \t}\n \ndiff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c\nindex 06bfd4e..a0c8f8c 100644\n--- a/lib/librte_eal/bsdapp/eal/eal.c\n+++ b/lib/librte_eal/bsdapp/eal/eal.c\n@@ -605,7 +605,7 @@ rte_eal_init(int argc, char **argv)\n \t\t/* Set thread_name for aid in debugging. */\n \t\tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN,\n \t\t\t\t\"lcore-slave-%d\", i);\n-\t\tpthread_set_name_np(lcore_config[i].thread_id, thread_name);\n+\t\trte_thread_setname(lcore_config[i].thread_id, thread_name);\n \t}\n \n \t/*\ndiff --git a/lib/librte_eal/bsdapp/eal/eal_thread.c b/lib/librte_eal/bsdapp/eal/eal_thread.c\nindex 9a03437..1b8cd8a 100644\n--- a/lib/librte_eal/bsdapp/eal/eal_thread.c\n+++ b/lib/librte_eal/bsdapp/eal/eal_thread.c\n@@ -199,3 +199,10 @@ int rte_sys_gettid(void)\n \tthr_self(&lwpid);\n \treturn (int)lwpid;\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/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\nindex 97d091b..3b4dd3b 100644\n--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map\n@@ -157,5 +157,6 @@ DPDK_16.07 {\n \n \tpci_get_sysfs_path;\n \trte_keepalive_register_relay_callback;\n+\trte_thread_setname;\n \n } DPDK_16.04;\ndiff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h\nindex ac15130..fe7b586 100644\n--- a/lib/librte_eal/common/include/rte_lcore.h\n+++ b/lib/librte_eal/common/include/rte_lcore.h\n@@ -250,23 +250,16 @@ void rte_thread_get_affinity(rte_cpuset_t *cpusetp);\n /**\n  * Set thread names.\n  *\n- * Macro to wrap `pthread_setname_np()` with a glibc version check.\n- * Only glibc >= 2.12 supports this feature.\n+ * @note It fails with glibc < 2.12.\n  *\n- * This macro only used for Linux, BSD does direct libc call.\n- * BSD libc version of function is `pthread_set_name_np()`.\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-#if defined(__DOXYGEN__)\n-#define rte_thread_setname(...) pthread_setname_np(__VA_ARGS__)\n-#endif\n-\n-#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)\n-#if __GLIBC_PREREQ(2, 12)\n-#define rte_thread_setname(...) pthread_setname_np(__VA_ARGS__)\n-#else\n-#define rte_thread_setname(...) 0\n-#endif\n-#endif\n+int rte_thread_setname(pthread_t id, const char *name);\n \n #ifdef __cplusplus\n }\ndiff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c\nindex bba8fea..4f22c18 100644\n--- a/lib/librte_eal/linuxapp/eal/eal.c\n+++ b/lib/librte_eal/linuxapp/eal/eal.c\n@@ -859,7 +859,7 @@ rte_eal_init(int argc, char **argv)\n \t\tret = rte_thread_setname(lcore_config[i].thread_id,\n \t\t\t\t\t\tthread_name);\n \t\tif (ret != 0)\n-\t\t\tRTE_LOG(ERR, EAL,\n+\t\t\tRTE_LOG(DEBUG, EAL,\n \t\t\t\t\"Cannot set name for lcore thread\\n\");\n \t}\n \ndiff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\nindex a9af396..47a3b20 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n@@ -887,7 +887,7 @@ rte_eal_intr_init(void)\n \t\t\t\"eal-intr-thread\");\n \t\tret_1 = rte_thread_setname(intr_thread, thread_name);\n \t\tif (ret_1 != 0)\n-\t\t\tRTE_LOG(ERR, EAL,\n+\t\t\tRTE_LOG(DEBUG, EAL,\n \t\t\t\"Failed to set thread name for interrupt handling\\n\");\n \t}\n \ndiff --git a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c\nindex 26d966e..d54ded8 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c\n@@ -399,7 +399,7 @@ pci_vfio_mp_sync_setup(void)\n \tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, \"pci-vfio-sync\");\n \tret = rte_thread_setname(socket_thread, thread_name);\n \tif (ret)\n-\t\tRTE_LOG(ERR, EAL,\n+\t\tRTE_LOG(DEBUG, EAL,\n \t\t\t\"Failed to set thread name for secondary processes!\\n\");\n \n \treturn 0;\ndiff --git a/lib/librte_eal/linuxapp/eal/eal_thread.c b/lib/librte_eal/linuxapp/eal/eal_thread.c\nindex 18bd8e0..8c3bf03 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_thread.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_thread.c\n@@ -197,3 +197,14 @@ int rte_sys_gettid(void)\n {\n \treturn (int)syscall(SYS_gettid);\n }\n+\n+int rte_thread_setname(pthread_t id, const char *name)\n+{\n+\tint ret = -1;\n+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)\n+#if __GLIBC_PREREQ(2, 12)\n+\tret = pthread_setname_np(id, name);\n+#endif\n+#endif\n+\treturn ret;\n+}\ndiff --git a/lib/librte_eal/linuxapp/eal/eal_timer.c b/lib/librte_eal/linuxapp/eal/eal_timer.c\nindex f2abb7b..afa32f5 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_timer.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_timer.c\n@@ -222,8 +222,8 @@ rte_eal_hpet_init(int make_default)\n \tsnprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, \"hpet-msb-inc\");\n \tret = rte_thread_setname(msb_inc_thread_id, thread_name);\n \tif (ret != 0)\n-\t\tRTE_LOG(ERR, EAL,\n-\t\t\t\"ERROR: Cannot set HPET timer thread name!\\n\");\n+\t\tRTE_LOG(DEBUG, EAL,\n+\t\t\t\"Cannot set HPET timer thread name!\\n\");\n \n \tif (make_default)\n \t\teal_timer_source = EAL_TIMER_HPET;\ndiff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\nindex 4874c92..7330a46 100644\n--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map\n@@ -160,5 +160,6 @@ DPDK_16.07 {\n \n \tpci_get_sysfs_path;\n \trte_keepalive_register_relay_callback;\n+\trte_thread_setname;\n \n } DPDK_16.04;\n",
    "prefixes": [
        "dpdk-dev",
        "v2"
    ]
}