From dcf9d91a80ee76f46e162afef9bd1b2ddb53ecc3 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Wed, 31 Jul 2019 14:44:39 -0700 Subject: [PATCH] util: Handle differences in pthread_setname_np There are a lot of unfortunate differences in the implementation of this function. NetBSD and Mac OS X in particular require different arguments. https://stackoverflow.com/questions/2369738/how-to-set-the-name-of-a-thread-in-linux-pthreads/7989973#7989973 provides for a good overview of the differences. Fixes: 9c411e020d1 ("util: Drop preprocessor guards for glibc-2.12") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111264 Reviewed-by: Eric Engestrom [Eric: use DETECT_OS_* instead of PIPE_OS_*] Signed-off-by: Eric Engestrom Reviewed-by: Matt Turner --- src/util/u_thread.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/util/u_thread.h b/src/util/u_thread.h index 8c8cc803199..b240b446aa2 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -31,6 +31,7 @@ #include #include "c11/threads.h" +#include "detect_os.h" #ifdef HAVE_PTHREAD #include @@ -61,7 +62,17 @@ static inline thrd_t u_thread_create(int (*routine)(void *), void *param) static inline void u_thread_setname( const char *name ) { #if defined(HAVE_PTHREAD) +#if DETECT_OS_LINUX pthread_setname_np(pthread_self(), name); +#elif DETECT_OS_FREEBSD || DETECT_OS_OPENBSD + pthread_set_name_np(pthread_self(), name); +#elif DETECT_OS_NETBSD + pthread_setname_np(pthread_self(), "%s", name); +#elif DETECT_OS_APPLE + pthread_setname_np(name); +#else +#error Not sure how to call pthread_setname_np +#endif #endif (void)name; } -- 2.30.2