emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-27 8315084: Cater for 3-argument version of pthread_setname_np


From: Robert Pluim
Subject: emacs-27 8315084: Cater for 3-argument version of pthread_setname_np
Date: Mon, 3 Feb 2020 10:40:55 -0500 (EST)

branch: emacs-27
commit 831508422e26e6d88dd5d8960e2569c489604c85
Author: Robert Pluim <address@hidden>
Commit: Robert Pluim <address@hidden>

    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.
---
 configure.ac    | 15 +++++++++++++++
 src/systhread.c |  8 +++++---
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index 3c47da6..aa2d9ef 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.h>]],
+         [[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 c649ae8..0d600d6 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
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]