* 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
*/
SCLogDebug("Error setting thread name \"%s\": %s", tname, strerror(errno)); \
ret; \
})
+#else
+#define SCSetThreadName(n) (0)
#endif