From mboxrd@z Thu Jan 1 00:00:00 1970 From: Natanael Copa Subject: [PATCH 15/15] eal/linux: use gettid(2) for debug message in sigbus_handler Date: Mon, 11 Mar 2019 18:37:02 +0100 Message-ID: <20190311173702.24471-16-ncopa@alpinelinux.org> References: <20190311173702.24471-1-ncopa@alpinelinux.org> Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Cc: Natanael Copa To: dev@dpdk.org Return-path: Received: from mx1.tetrasec.net (mx1.tetrasec.net [74.117.190.25]) by dpdk.org (Postfix) with ESMTP id 73FD358C6 for ; Mon, 11 Mar 2019 18:37:46 +0100 (CET) In-Reply-To: <20190311173702.24471-1-ncopa@alpinelinux.org> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" There is no guarantee that pthread_self() returns the thread id or that pthread_t is an integer. Use gettid(2) to get the kernel thread id instead. This fixes the following warning when building with musl libc: ../lib/librte_eal/linuxapp/eal/eal_dev.c: In function 'sigbus_handler': ../lib/librte_eal/linuxapp/eal/eal_dev.c:70:3: warning: cast from pointer= to integer of different size [-Wpointer-to-int-cast] (int)pthread_self(), info->si_addr); ^ Signed-off-by: Natanael Copa --- This is not reallly a compile error, but the warning looked a bit scary, = and code looked wrong, so I fixed it. lib/librte_eal/linuxapp/eal/eal_dev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/linuxapp/eal/eal_dev.c b/lib/librte_eal/linux= app/eal/eal_dev.c index 2830c8687..9ad6650cf 100644 --- a/lib/librte_eal/linuxapp/eal/eal_dev.c +++ b/lib/librte_eal/linuxapp/eal/eal_dev.c @@ -7,6 +7,7 @@ #include #include #include +#include #include =20 #include @@ -30,6 +31,11 @@ static bool hotplug_handle; #define EAL_UEV_MSG_LEN 4096 #define EAL_UEV_MSG_ELEM_LEN 128 =20 +#if !defined(__GLIBC__) +#include +#define gettid() syscall(SYS_gettid) +#endif + /* * spinlock for device hot-unplug failure handling. If it try to access = bus or * device, such as handle sigbus on bus or handle memory failure for dev= ice @@ -67,7 +73,7 @@ static void sigbus_handler(int signum, siginfo_t *info, int ret; =20 RTE_LOG(DEBUG, EAL, "Thread[%d] catch SIGBUS, fault address:%p\n", - (int)pthread_self(), info->si_addr); + (int)gettid(), info->si_addr); =20 rte_spinlock_lock(&failure_handle_lock); ret =3D rte_bus_sigbus_handler(info->si_addr); --=20 2.21.0