This makes "top" and "ps" output more readable on FreeBSD at least, and
the names are also visible in debuggers.

Suggested-by: Ed Maste <ema...@freebsd.org>
Signed-off-by: Ben Pfaff <b...@nicira.com>
---
One reason that I didn't know about these functions was that my main
dev box runs a distro so old that its glibc doesn't even have this
function.  That means that this patch is effectively untested.

 configure.ac |    3 ++-
 lib/util.c   |    8 +++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index e4f9991..078ff4f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,7 +64,8 @@ AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>]])
 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec],
   [], [], [[#include <sys/stat.h>]])
 AC_CHECK_MEMBERS([struct ifreq.ifr_flagshigh], [], [], [[#include <net/if.h>]])
-AC_CHECK_FUNCS([mlockall strnlen getloadavg statvfs getmntent_r])
+AC_CHECK_FUNCS([mlockall strnlen getloadavg statvfs getmntent_r \
+  pthread_setname_np pthread_set_name_np])
 AC_CHECK_HEADERS([mntent.h sys/statvfs.h linux/types.h linux/if_ether.h 
stdatomic.h])
 AC_CHECK_HEADERS([net/if_mib.h], [], [], [[#include <sys/types.h>
 #include <net/if.h>]])
diff --git a/lib/util.c b/lib/util.c
index c69d7d1..6a72107 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -395,11 +395,17 @@ get_subprogram_name(void)
 }
 
 /* Sets 'name' as the name of the currently running thread or process.  (This
- * appears in log messages.) */
+ * appears in log messages and may also be visible in system process listings
+ * and debuggers.) */
 void
 set_subprogram_name(const char *name)
 {
     free(subprogram_name_set(xstrdup(name)));
+#if HAVE_PTHREAD_SETNAME_NP
+    pthread_setname_np(pthread_self(), name);
+#elif HAVE_PTHREAD_SET_NAME_NP
+    pthread_set_name_np(pthread_self(), name);
+#endif
 }
 
 /* Returns a pointer to a string describing the program version.  The
-- 
1.7.2.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to