aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt19
-rw-r--r--common/threads.c2
-rw-r--r--config.h.in3
3 files changed, 24 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a44371c6..7bb76f32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -623,6 +623,16 @@ int main()
}"
PTHREAD_SETNAME_NP_ONE_PARAM
)
+ CHECK_C_SOURCE_COMPILES("
+#include <pthread.h>
+#include <pthread_np.h>
+int main()
+{
+ pthread_setname_np(pthread_self(), \"%s\", \"testname\");
+ return 0;
+}"
+ PTHREAD_SETNAME_NP_THREE_PARAMS
+ )
ENDIF()
CHECK_SYMBOL_EXISTS(pthread_mutexattr_setkind_np "pthread.h;pthread_np.h" HAVE_PTHREAD_MUTEXATTR_SETKIND_NP)
ELSE()
@@ -639,6 +649,15 @@ int main()
}"
PTHREAD_SETNAME_NP_ONE_PARAM
)
+ CHECK_C_SOURCE_COMPILES("
+#include <pthread.h>
+int main()
+{
+ pthread_setname_np(pthread_self(), \"%s\", \"testname\");
+ return 0;
+}"
+ PTHREAD_SETNAME_NP_THREE_PARAMS
+ )
ENDIF()
CHECK_SYMBOL_EXISTS(pthread_mutexattr_setkind_np pthread.h HAVE_PTHREAD_MUTEXATTR_SETKIND_NP)
ENDIF()
diff --git a/common/threads.c b/common/threads.c
index 0761a324..dbd196e8 100644
--- a/common/threads.c
+++ b/common/threads.c
@@ -500,6 +500,8 @@ void althrd_setname(althrd_t thr, const char *name)
#if defined(PTHREAD_SETNAME_NP_ONE_PARAM)
if(althrd_equal(thr, althrd_current()))
pthread_setname_np(name);
+#elif defined(PTHREAD_SETNAME_NP_THREE_PARAMS)
+ pthread_setname_np(thr, "%s", (void*)name);
#else
pthread_setname_np(thr, name);
#endif
diff --git a/config.h.in b/config.h.in
index 824ea84f..22c3b1c7 100644
--- a/config.h.in
+++ b/config.h.in
@@ -197,6 +197,9 @@
/* Define if pthread_setname_np() only accepts one parameter */
#cmakedefine PTHREAD_SETNAME_NP_ONE_PARAM
+/* Define if pthread_setname_np() accepts three parameters */
+#cmakedefine PTHREAD_SETNAME_NP_THREE_PARAMS
+
/* Define if we have pthread_set_name_np() */
#cmakedefine HAVE_PTHREAD_SET_NAME_NP