From: Robert Pluim Date: Fri, 31 Jan 2020 09:22:59 +0000 (+0100) Subject: Cater for 3-argument version of pthread_setname_np X-Git-Tag: emacs-27.0.90~71 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=831508422e26e6d88dd5d8960e2569c489604c85;p=emacs.git Cater for 3-argument version of pthread_setname_np Fixes Bug#39363. * configure.ac: Add check for 3-argument version of pthread_setname_np. * src/systhread.c (sys_thread_set_name) [HAVE_PTHREAD_SETNAME_NP_3ARG]: Call pthread_setname_np with 3 arguments. --- diff --git a/configure.ac b/configure.ac index 3c47da6dcb4..aa2d9ef745f 100644 --- a/configure.ac +++ b/configure.ac @@ -4197,6 +4197,21 @@ if test "$ac_cv_func_pthread_setname_np" = "yes"; then AC_DEFINE( HAVE_PTHREAD_SETNAME_NP_1ARG, 1, [Define to 1 if pthread_setname_np takes a single argument.]) + else + AC_CACHE_CHECK( + [whether pthread_setname_np takes three arguments], + [emacs_cv_pthread_setname_np_3arg], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[pthread_setname_np (0, "%s", "a");]])], + [emacs_cv_pthread_setname_np_3arg=yes], + [emacs_cv_pthread_setname_np_3arg=no])]) + if test "$emacs_cv_pthread_setname_np_3arg" = "yes"; then + AC_DEFINE( + HAVE_PTHREAD_SETNAME_NP_3ARG, 1, + [Define to 1 if pthread_setname_np takes three arguments.]) + fi fi fi diff --git a/src/systhread.c b/src/systhread.c index c649ae853a3..0d600d6895e 100644 --- a/src/systhread.c +++ b/src/systhread.c @@ -214,11 +214,13 @@ sys_thread_set_name (const char *name) char p_name[TASK_COMM_LEN]; strncpy (p_name, name, TASK_COMM_LEN - 1); p_name[TASK_COMM_LEN - 1] = '\0'; - #ifdef HAVE_PTHREAD_SETNAME_NP_1ARG +# ifdef HAVE_PTHREAD_SETNAME_NP_1ARG pthread_setname_np (p_name); - #else +# elif defined HAVE_PTHREAD_SETNAME_NP_3ARG + pthread_setname_np (pthread_self (), "%s", p_name); +# else pthread_setname_np (pthread_self (), p_name); - #endif +# endif #endif }