]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: Cleanup thread name setting to happen at start
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 9 Jan 2019 19:32:44 +0000 (14:32 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 9 Jan 2019 19:38:07 +0000 (14:38 -0500)
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>
lib/frr_pthread.c

index 52b85f46d29bab6ea22fc81271b2edcd07cd55a3..c5aec8ca72437284e9015e502fd2cd9e70a0ba8e 100644 (file)
@@ -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);