[glib/wip/lantw/gthread-set-thread-name-on-bsd] gthread: Set thread name on *BSD
- From: Ting-Wei Lan <lantw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/lantw/gthread-set-thread-name-on-bsd] gthread: Set thread name on *BSD
- Date: Thu, 29 Aug 2019 17:29:42 +0000 (UTC)
commit f489b6f922627a3b15adfa12cdd91114ce679452
Author: Ting-Wei Lan <lantw src gnome org>
Date: Fri Aug 30 01:24:08 2019 +0800
gthread: Set thread name on *BSD
Add support for setting thread name on FreeBSD, DragonFlyBSD, OpenBSD,
and NetBSD.
Fixes https://gitlab.gnome.org/GNOME/glib/issues/1761
glib/gthread-posix.c | 13 ++++++++++---
meson.build | 19 +++++++++++++++++++
2 files changed, 29 insertions(+), 3 deletions(-)
---
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 <sys/time.h>
#include <unistd.h>
+#ifdef HAVE_PTHREAD_SET_NAME_NP
+#include <pthread_np.h>
+#endif
#ifdef HAVE_SCHED_H
#include <sched.h>
#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 d9e0a56ad..53966d176 100644
--- a/meson.build
+++ b/meson.build
@@ -1669,6 +1669,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 <pthread_np.h>
+ 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]