From patchwork Fri Jun 17 15:25:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 13994 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BA29FCD06; Fri, 17 Jun 2016 17:25:32 +0200 (CEST) Received: from mail-wm0-f53.google.com (mail-wm0-f53.google.com [74.125.82.53]) by dpdk.org (Postfix) with ESMTP id 603F2CCE4 for ; Fri, 17 Jun 2016 17:25:31 +0200 (CEST) Received: by mail-wm0-f53.google.com with SMTP id m124so4277661wme.1 for ; Fri, 17 Jun 2016 08:25:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=+zABuKTkrjdLiRcpIx3bT9wTBq4wYpfgz7+o5e9MJR4=; b=UtTQVe5wdyDHX/hnIfXEnLb1aNqr9xbgrgOlR2IVQHDmrF3pLzj9L5GbG1vMKw37Ti jKU7aJnu2NBy4Jk8SeVS/pkri9KejOJyOlt4MVICDAjqRK6yO4QXXZJZeCdF8e7BNE0S v41/hBVE190TwjREp9fFn5szL4UJK7dzDAGJUAVunTG33pyqJpEM4XrKPfKjvVJW3zCZ TXpMnCds8TY/+zFUCZpsTkcjkIsWWq6h203c4T5JuZAO99LbjtRX6qx0ttQZ6ar8v4Tj VeJ4LvZ0Y0WWig6+fwEh99t/nfM4MI60dFF0fTlql640thLvIzyEXxjNq1Otspah7QWW X6sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=+zABuKTkrjdLiRcpIx3bT9wTBq4wYpfgz7+o5e9MJR4=; b=mdBJ5T+VBrvjRBCpB2BYoA2qslvEzbMLwUAU+/J9LlyEvHwEMPer8Sf5jjQhBPn/c7 iSXOn/FyCswnfbXNqFh3q4/j7rNR8MHIHhpTXISXHRCGdgdVXCIG2vQ1ZiS5BDiFsh7n szjwPmICqUPa8Fvx1WFyc5huOzmlmXI2gdkcsWExTL+soS3YvWGGBhIQr6C2Kiw4B58G ugfa8Ocb2a/Y14HGTY0Sb8wBkO3ERg7iZTQ1FkmrTsRmDWl8E42o+fSF6hHr+brZ05LE G3MEJ6yTIj1araEBxiy8g5OblXB+BGJKuTedCWmITziY31TiREZFAAS+ylxev45ofieH 4SpA== X-Gm-Message-State: ALyK8tI+RpMEVBXHpk0kEpMksKZFAamKxqh4tkTfQjx7n4pV0cNNmFgfdXASyGmwZj76jBBp X-Received: by 10.194.246.129 with SMTP id xw1mr2943236wjc.142.1466177130882; Fri, 17 Jun 2016 08:25:30 -0700 (PDT) Received: from XPS13.localdomain (184.203.134.77.rev.sfr.net. [77.134.203.184]) by smtp.gmail.com with ESMTPSA id db6sm49272730wjb.2.2016.06.17.08.25.29 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 17 Jun 2016 08:25:30 -0700 (PDT) From: Thomas Monjalon To: david.marchand@6wind.com Cc: reshma.pattan@intel.com, dev@dpdk.org Date: Fri, 17 Jun 2016 17:25:24 +0200 Message-Id: <1466177124-31709-1-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.7.0 Subject: [dpdk-dev] [PATCH] 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" rte_thread_setname was a macro defined only for Linux. The function rte_thread_setname() can now be used on FreeBSD as well on Linux. It is required to build librte_pdump. The macro was 0 for old glibc. The function is now returning -1. The related logs are decreased from error to debug level because it is not an important failure, just a debug inconvenience. Fixes: 278f945402c5 ("pdump: add new library for packet capture") Signed-off-by: Thomas Monjalon --- examples/tep_termination/main.c | 2 +- examples/vhost/main.c | 2 +- examples/vhost_xen/main.c | 2 +- lib/librte_eal/bsdapp/eal/eal.c | 2 +- lib/librte_eal/bsdapp/eal/eal_thread.c | 7 +++++++ lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + lib/librte_eal/common/include/rte_lcore.h | 23 ++++++++-------------- lib/librte_eal/linuxapp/eal/eal.c | 2 +- lib/librte_eal/linuxapp/eal/eal_interrupts.c | 2 +- lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c | 2 +- lib/librte_eal/linuxapp/eal/eal_thread.c | 11 +++++++++++ lib/librte_eal/linuxapp/eal/eal_timer.c | 4 ++-- lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + 13 files changed, 37 insertions(+), 24 deletions(-) diff --git a/examples/tep_termination/main.c b/examples/tep_termination/main.c index b8297dd..aa67a6b 100644 --- a/examples/tep_termination/main.c +++ b/examples/tep_termination/main.c @@ -1246,7 +1246,7 @@ main(int argc, char *argv[]) snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "print-stats"); ret = rte_thread_setname(tid, thread_name); if (ret != 0) - RTE_LOG(ERR, VHOST_CONFIG, "Cannot set print-stats name\n"); + RTE_LOG(DEBUG, VHOST_CONFIG, "Cannot set print-stats name\n"); } /* Launch all data cores. */ diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 665886e..f849571 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -1474,7 +1474,7 @@ main(int argc, char *argv[]) snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "print-stats"); ret = rte_thread_setname(tid, thread_name); if (ret != 0) - RTE_LOG(ERR, VHOST_CONFIG, + RTE_LOG(DEBUG, VHOST_CONFIG, "Cannot set print-stats name\n"); } diff --git a/examples/vhost_xen/main.c b/examples/vhost_xen/main.c index 2b04c95..2e40357 100644 --- a/examples/vhost_xen/main.c +++ b/examples/vhost_xen/main.c @@ -1494,7 +1494,7 @@ main(int argc, char *argv[]) snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "print-xen-stats"); ret = rte_thread_setname(tid, thread_name); if (ret != 0) - RTE_LOG(ERR, VHOST_CONFIG, + RTE_LOG(DEBUG, VHOST_CONFIG, "Cannot set print-stats name\n"); } diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c index 06bfd4e..a0c8f8c 100644 --- a/lib/librte_eal/bsdapp/eal/eal.c +++ b/lib/librte_eal/bsdapp/eal/eal.c @@ -605,7 +605,7 @@ rte_eal_init(int argc, char **argv) /* Set thread_name for aid in debugging. */ snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "lcore-slave-%d", i); - pthread_set_name_np(lcore_config[i].thread_id, thread_name); + rte_thread_setname(lcore_config[i].thread_id, thread_name); } /* diff --git a/lib/librte_eal/bsdapp/eal/eal_thread.c b/lib/librte_eal/bsdapp/eal/eal_thread.c index 9a03437..1b8cd8a 100644 --- a/lib/librte_eal/bsdapp/eal/eal_thread.c +++ b/lib/librte_eal/bsdapp/eal/eal_thread.c @@ -199,3 +199,10 @@ int rte_sys_gettid(void) thr_self(&lwpid); return (int)lwpid; } + +int rte_thread_setname(pthread_t id, const char *name) +{ + /* this BSD function returns no error */ + pthread_set_name_np(id, name); + return 0; +} diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index 97d091b..3b4dd3b 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -157,5 +157,6 @@ DPDK_16.07 { pci_get_sysfs_path; rte_keepalive_register_relay_callback; + rte_thread_setname; } DPDK_16.04; diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index ac15130..1dcfba7 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -250,23 +250,16 @@ void rte_thread_get_affinity(rte_cpuset_t *cpusetp); /** * Set thread names. * - * Macro to wrap `pthread_setname_np()` with a glibc version check. - * Only glibc >= 2.12 supports this feature. + * @note Only glibc >= 2.12 supports this feature. * - * This macro only used for Linux, BSD does direct libc call. - * BSD libc version of function is `pthread_set_name_np()`. + * @param id + * Thread id. + * @param name + * Thread name to set. + * @return + * On success, return 0; otherwise return a negative value. */ -#if defined(__DOXYGEN__) -#define rte_thread_setname(...) pthread_setname_np(__VA_ARGS__) -#endif - -#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) -#if __GLIBC_PREREQ(2, 12) -#define rte_thread_setname(...) pthread_setname_np(__VA_ARGS__) -#else -#define rte_thread_setname(...) 0 -#endif -#endif +int rte_thread_setname(pthread_t id, const char *name); #ifdef __cplusplus } diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index bba8fea..4f22c18 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -859,7 +859,7 @@ rte_eal_init(int argc, char **argv) ret = rte_thread_setname(lcore_config[i].thread_id, thread_name); if (ret != 0) - RTE_LOG(ERR, EAL, + RTE_LOG(DEBUG, EAL, "Cannot set name for lcore thread\n"); } diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c index a9af396..47a3b20 100644 --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c @@ -887,7 +887,7 @@ rte_eal_intr_init(void) "eal-intr-thread"); ret_1 = rte_thread_setname(intr_thread, thread_name); if (ret_1 != 0) - RTE_LOG(ERR, EAL, + RTE_LOG(DEBUG, EAL, "Failed to set thread name for interrupt handling\n"); } diff --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 index 26d966e..d54ded8 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c @@ -399,7 +399,7 @@ pci_vfio_mp_sync_setup(void) snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "pci-vfio-sync"); ret = rte_thread_setname(socket_thread, thread_name); if (ret) - RTE_LOG(ERR, EAL, + RTE_LOG(DEBUG, EAL, "Failed to set thread name for secondary processes!\n"); return 0; diff --git a/lib/librte_eal/linuxapp/eal/eal_thread.c b/lib/librte_eal/linuxapp/eal/eal_thread.c index 18bd8e0..8c3bf03 100644 --- a/lib/librte_eal/linuxapp/eal/eal_thread.c +++ b/lib/librte_eal/linuxapp/eal/eal_thread.c @@ -197,3 +197,14 @@ int rte_sys_gettid(void) { return (int)syscall(SYS_gettid); } + +int rte_thread_setname(pthread_t id, const char *name) +{ + int ret = -1; +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) +#if __GLIBC_PREREQ(2, 12) + ret = pthread_setname_np(id, name); +#endif +#endif + return ret; +} diff --git a/lib/librte_eal/linuxapp/eal/eal_timer.c b/lib/librte_eal/linuxapp/eal/eal_timer.c index f2abb7b..afa32f5 100644 --- a/lib/librte_eal/linuxapp/eal/eal_timer.c +++ b/lib/librte_eal/linuxapp/eal/eal_timer.c @@ -222,8 +222,8 @@ rte_eal_hpet_init(int make_default) snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN, "hpet-msb-inc"); ret = rte_thread_setname(msb_inc_thread_id, thread_name); if (ret != 0) - RTE_LOG(ERR, EAL, - "ERROR: Cannot set HPET timer thread name!\n"); + RTE_LOG(DEBUG, EAL, + "Cannot set HPET timer thread name!\n"); if (make_default) eal_timer_source = EAL_TIMER_HPET; diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 4874c92..7330a46 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -160,5 +160,6 @@ DPDK_16.07 { pci_get_sysfs_path; rte_keepalive_register_relay_callback; + rte_thread_setname; } DPDK_16.04;