]> code.delx.au - pulseaudio/commitdiff
thread-posix: Use pthread_(get|set)name_np() if available
authorDaniel Mack <zonque@gmail.com>
Fri, 22 Apr 2011 02:28:11 +0000 (04:28 +0200)
committerColin Guthrie <colin@mageia.org>
Sat, 23 Apr 2011 17:23:37 +0000 (18:23 +0100)
Newer generations of libpthread have functions to set and get the thread
names. If available, use them.

configure.ac
src/pulsecore/thread-posix.c

index e2b5a6aabf527c9c8e4182c1809f1549331ce363..6f262fb5433908024db974287c200d056ef0b8a5 100644 (file)
@@ -448,6 +448,8 @@ AC_SEARCH_LIBS([shm_open], [rt])
 AC_SEARCH_LIBS([inet_ntop], [nsl])
 AC_SEARCH_LIBS([timer_create], [rt])
 AC_SEARCH_LIBS([pthread_setaffinity_np], [pthread])
+AC_SEARCH_LIBS([pthread_getname_np], [pthread])
+AC_SEARCH_LIBS([pthread_setname_np], [pthread])
 
 # BSD
 AC_SEARCH_LIBS([connect], [socket])
@@ -489,7 +491,7 @@ AC_FUNC_SELECT_ARGTYPES
 AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \
     getpwnam_r getpwuid_r gettimeofday getuid mlock nanosleep \
     pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
-    sigaction sleep symlink sysconf uname pthread_setaffinity_np])
+    sigaction sleep symlink sysconf uname pthread_setaffinity_np pthread_getname_np pthread_setname_np])
 AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
 
 AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1")
index 7d5252d686fee60b4aa9f95735efb751705c84a8..58bcb72add5dc8e613e98a7b2c6a99f469e68256 100644 (file)
@@ -73,6 +73,8 @@ static void* internal_thread_func(void *userdata) {
 
 #ifdef __linux__
     prctl(PR_SET_NAME, t->name);
+#elif defined(HAVE_PTHREAD_SETNAME_NP) && defined(OS_IS_DARWIN)
+    pthread_setname_np(t->name);
 #endif
 
     t->id = pthread_self();
@@ -177,6 +179,8 @@ void pa_thread_set_name(pa_thread *t, const char *name) {
 
 #ifdef __linux__
     prctl(PR_SET_NAME, name);
+#elif defined(HAVE_PTHREAD_SETNAME_NP) && defined(OS_IS_DARWIN)
+    pthread_setname_np(name);
 #endif
 }
 
@@ -194,6 +198,11 @@ const char *pa_thread_get_name(pa_thread *t) {
             t->name = NULL;
         }
     }
+#elif defined(HAVE_PTHREAD_GETNAME_NP) && defined(OS_IS_DARWIN)
+    if (!t->name) {
+        t->name = pa_xmalloc0(17);
+        pthread_getname_np(t->id, t->name, 16);
+    }
 #endif
 
     return t->name;