From 8f07f5f7a921cd87437eb3a0fe76cf85d5258680 Mon Sep 17 00:00:00 2001 From: Richard Gale Date: Sun, 23 Aug 2015 15:08:30 -0700 Subject: [PATCH 1/2] Add function to set thread name Naming a thread is useful when debugging multi-threaded applications. --- include/bx/config.h | 12 ++++++++++++ include/bx/thread.h | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/bx/config.h b/include/bx/config.h index 9a439f9..5ded70f 100644 --- a/include/bx/config.h +++ b/include/bx/config.h @@ -43,4 +43,16 @@ # define BX_CONFIG_SUPPORTS_THREADING !(BX_PLATFORM_EMSCRIPTEN) #endif // BX_CONFIG_SUPPORTS_THREADING +#ifndef BX_CONFIG_THREAD_NAME_LENGTH +# if BX_PLATFORM_WINDOWS +# define BX_CONFIG_THREAD_NAME_LENGTH 256 +# elif BX_PLATFORM_OSX|BX_PLATFORM_IOS +# define BX_CONFIG_THREAD_NAME_LENGTH 64 +# elif BX_PLATFORM_POSIX +# define BX_CONFIG_THREAD_NAME_LENGTH 16 +# else +# define BX_CONFIG_THREAD_NAME_LENGTH 0 +# endif +#endif + #endif // BX_CONFIG_H_HEADER_GUARD diff --git a/include/bx/thread.h b/include/bx/thread.h index 331aeaf..f8cb9db 100644 --- a/include/bx/thread.h +++ b/include/bx/thread.h @@ -139,6 +139,27 @@ namespace bx return m_exitCode; } + void setThreadName(const char* name) + { + if (name != NULL) + { + strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); + } + else + { + memset(m_name, 0, BX_CONFIG_THREAD_NAME_LENGTH); + } + +#if BX_PLATFORM_WINDOWS +#elif BX_PLATFORM_OSX|BX_PLATFORM_IOS + strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); + pthread_setname_np(m_name); +#elif BX_PLATFORM_POSIX + strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); + pthread_setname_np(m_handle, m_name); +#endif // BX_PLATFORM_ + } + private: int32_t entry() { @@ -179,6 +200,7 @@ namespace bx uint32_t m_stackSize; int32_t m_exitCode; bool m_running; + char m_name[BX_CONFIG_THREAD_NAME_LENGTH]; }; #if BX_PLATFORM_WINDOWS From 669ff9483cb98b48ddb8afed6d687fbcb88fc896 Mon Sep 17 00:00:00 2001 From: Richard Gale Date: Sun, 23 Aug 2015 15:52:01 -0700 Subject: [PATCH 2/2] Removed m_name --- include/bx/config.h | 12 ------------ include/bx/thread.h | 15 ++------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/include/bx/config.h b/include/bx/config.h index 5ded70f..9a439f9 100644 --- a/include/bx/config.h +++ b/include/bx/config.h @@ -43,16 +43,4 @@ # define BX_CONFIG_SUPPORTS_THREADING !(BX_PLATFORM_EMSCRIPTEN) #endif // BX_CONFIG_SUPPORTS_THREADING -#ifndef BX_CONFIG_THREAD_NAME_LENGTH -# if BX_PLATFORM_WINDOWS -# define BX_CONFIG_THREAD_NAME_LENGTH 256 -# elif BX_PLATFORM_OSX|BX_PLATFORM_IOS -# define BX_CONFIG_THREAD_NAME_LENGTH 64 -# elif BX_PLATFORM_POSIX -# define BX_CONFIG_THREAD_NAME_LENGTH 16 -# else -# define BX_CONFIG_THREAD_NAME_LENGTH 0 -# endif -#endif - #endif // BX_CONFIG_H_HEADER_GUARD diff --git a/include/bx/thread.h b/include/bx/thread.h index f8cb9db..ba0c400 100644 --- a/include/bx/thread.h +++ b/include/bx/thread.h @@ -141,22 +141,11 @@ namespace bx void setThreadName(const char* name) { - if (name != NULL) - { - strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); - } - else - { - memset(m_name, 0, BX_CONFIG_THREAD_NAME_LENGTH); - } - #if BX_PLATFORM_WINDOWS #elif BX_PLATFORM_OSX|BX_PLATFORM_IOS - strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); - pthread_setname_np(m_name); + pthread_setname_np(name); #elif BX_PLATFORM_POSIX - strncpy(m_name, name, BX_CONFIG_THREAD_NAME_LENGTH); - pthread_setname_np(m_handle, m_name); + pthread_setname_np(m_handle, name); #endif // BX_PLATFORM_ }