diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index c76f4433f..5a30b6d80 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -57,6 +57,9 @@ #include #include +#ifdef HAVE_PTHREAD_SET_NAME_NP +#include +#endif #ifdef HAVE_SCHED_H #include #endif @@ -1245,10 +1248,14 @@ g_system_thread_exit (void) void g_system_thread_set_name (const gchar *name) { -#if defined(HAVE_PTHREAD_SETNAME_NP_WITH_TID) - pthread_setname_np (pthread_self(), name); /* on Linux and Solaris */ -#elif defined(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID) +#if defined(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID) pthread_setname_np (name); /* on OS X and iOS */ +#elif defined(HAVE_PTHREAD_SETNAME_NP_WITH_TID) + pthread_setname_np (pthread_self (), name); /* on Linux and Solaris */ +#elif defined(HAVE_PTHREAD_SETNAME_NP_WITH_TID_AND_ARG) + pthread_setname_np (pthread_self (), "%s", (gchar *) name); /* on NetBSD */ +#elif defined(HAVE_PTHREAD_SET_NAME_NP) + pthread_set_name_np (pthread_self (), name); /* on FreeBSD, DragonFlyBSD, OpenBSD */ #endif } diff --git a/meson.build b/meson.build index 26b3fd229..0d6b11965 100644 --- a/meson.build +++ b/meson.build @@ -1691,6 +1691,25 @@ else dependencies : thread_dep) # Linux, Solaris, etc. glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1) + elif cc.links(pthread_prefix + ''' + int main() { + pthread_setname_np(pthread_self(), "%s", "example"); + return 0; + }''', + name : 'pthread_setname_np(pthread_t, const char*, void*)', + dependencies : thread_dep) + # NetBSD + glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID_AND_ARG', 1) + elif cc.links(pthread_prefix + ''' + #include + int main() { + pthread_set_name_np(pthread_self(), "example"); + return 0; + }''', + name : 'pthread_set_name_np(pthread_t, const char*)', + dependencies : thread_dep) + # FreeBSD, DragonFlyBSD, OpenBSD, etc. + glib_conf.set('HAVE_PTHREAD_SET_NAME_NP', 1) endif endif