summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2019-07-31 14:44:39 -0700
committerEric Engestrom <[email protected]>2019-08-02 18:38:52 +0100
commitdcf9d91a80ee76f46e162afef9bd1b2ddb53ecc3 (patch)
tree8a8a9fb991fecce1f5f65c57031b9a0c566ca7e3
parent55eadf971ade0189e905b5157e59cca91802fba7 (diff)
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 <[email protected]> [Eric: use DETECT_OS_* instead of PIPE_OS_*] Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/util/u_thread.h11
1 files changed, 11 insertions, 0 deletions
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 <stdbool.h>
#include "c11/threads.h"
+#include "detect_os.h"
#ifdef HAVE_PTHREAD
#include <signal.h>
@@ -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;
}