]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Fix SCSetThreadName() macros in threads.h Add FreeBSD thread naming implementation.
authorNikolay Denev <ndenev@gmail.com>
Mon, 2 Jul 2012 09:47:41 +0000 (11:47 +0200)
committerVictor Julien <victor@inliniac.net>
Mon, 2 Jul 2012 16:29:43 +0000 (18:29 +0200)
src/threads.h

index c4e9bba5493a64a6739053a5c92886dfd5e28d06..1b3ef04a29570b3ca4d7ef29702f2d36e1b8d4a2 100644 (file)
@@ -467,18 +467,26 @@ extern __thread uint64_t spin_lock_cnt;
  * OS specific macro's for setting the thread name. "top" can display
  * this name.
  */
-#ifndef PR_SET_NAME /*PR_SET_NAME */
-#define SCSetThreadName(n)
-#elif defined OS_FREEBSD || __OpenBSD__ /* FreeBSD or OpenBSD */
+#if defined OS_FREEBSD /* FreeBSD */
 /** \todo Add implementation for FreeBSD */
-#define SCSetThreadName(n)
-#elif OS_WIN32 /* Windows */
+#define SCSetThreadName(n) ({ \
+    char tname[16] = ""; \
+    if (strlen(n) > 16) \
+        SCLogDebug("Thread name is too long, truncating it..."); \
+    strlcpy(tname, n, 16); \
+    pthread_set_name_np(pthread_self(), tname); \
+    0; \
+})
+#elif defined __OpenBSD__ /* OpenBSD */
+/** \todo Add implementation for OpenBSD */
+#define SCSetThreadName(n) (0)
+#elif defined OS_WIN32 /* Windows */
 /** \todo Add implementation for Windows */
-#define SCSetThreadName(n)
-#elif OS_DARWIN /* Mac OS X */
+#define SCSetThreadName(n) (0)
+#elif defined OS_DARWIN /* Mac OS X */
 /** \todo Add implementation for MacOS */
-#define SCSetThreadName(n)
-#else /* Linux */
+#define SCSetThreadName(n) (0)
+#elif defined PR_SET_NAME /*PR_SET_NAME */
 /**
  * \brief Set the threads name
  */
@@ -492,6 +500,8 @@ extern __thread uint64_t spin_lock_cnt;
         SCLogDebug("Error setting thread name \"%s\": %s", tname, strerror(errno)); \
     ret; \
 })
+#else
+#define SCSetThreadName(n) (0)
 #endif