summaryrefslogtreecommitdiffstats
path: root/lib/frr_pthread.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-01-09 20:32:44 +0100
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-01-09 20:38:07 +0100
commit6d0a40b5b76d62d55c68d569579b1eb5a2a3294c (patch)
treef6c1584fbf74fb90421615345fcf4ec7ebc09172 /lib/frr_pthread.c
parentlib: On frr_pthread_new save a os_name (diff)
downloadfrr-6d0a40b5b76d62d55c68d569579b1eb5a2a3294c.tar.xz
frr-6d0a40b5b76d62d55c68d569579b1eb5a2a3294c.zip
lib: Cleanup thread name setting to happen at start
When we start a thread we always call fpt_run and since the last commit we know os_name is filled with something, therefore we can just set the name on startup. This creates this output now for zebra: sharpd@donna ~/frr2> ps -L -p 25643 PID LWP TTY TIME CMD 25643 25643 ? 00:00:00 zebra 25643 25644 ? 00:00:00 Zebra dplane 25643 25684 ? 00:00:00 zebra_apic sharpd@donna ~/frr2> I removed the abstraction to frr_pthread_set_name because it was snprintf'ing into the same buffer which was the real bug here( the first character of os_name became null). In the next commit I'll remove that api because it is unneeded and was a horrible hack to get this to work for the one place it was wanted. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/frr_pthread.c')
-rw-r--r--lib/frr_pthread.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/frr_pthread.c b/lib/frr_pthread.c
index 52b85f46d..c5aec8ca7 100644
--- a/lib/frr_pthread.c
+++ b/lib/frr_pthread.c
@@ -275,8 +275,15 @@ static void *fpt_run(void *arg)
fpt->master->handle_signals = false;
- if (fpt->os_name[0])
- frr_pthread_set_name(fpt, NULL, fpt->os_name);
+#ifdef HAVE_PTHREAD_SETNAME_NP
+# ifdef GNU_LINUX
+ pthread_setname_np(fpt->thread, fpt->os_name);
+# else /* NetBSD */
+ pthread_setname_np(fpt->thread, fpt->os_name, NULL);
+# endif
+#elif defined(HAVE_PTHREAD_SET_NAME_NP)
+ pthread_set_name_np(fpt->thread, fpt->os_name);
+#endif
frr_pthread_notify_running(fpt);