diff options
Diffstat (limited to 'llvm/lib/Support/Unix/Threading.inc')
-rw-r--r-- | llvm/lib/Support/Unix/Threading.inc | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/llvm/lib/Support/Unix/Threading.inc b/llvm/lib/Support/Unix/Threading.inc index acfd4ad..43e18c3 100644 --- a/llvm/lib/Support/Unix/Threading.inc +++ b/llvm/lib/Support/Unix/Threading.inc @@ -137,13 +137,16 @@ uint64_t llvm::get_threadid() { } static constexpr uint32_t get_max_thread_name_length_impl() { -#if defined(__NetBSD__) +#if defined(PTHREAD_MAX_NAMELEN_NP) return PTHREAD_MAX_NAMELEN_NP; #elif defined(__APPLE__) return 64; +#elif defined(__sun__) && defined(__svr4__) + return 31; #elif defined(__linux__) && HAVE_PTHREAD_SETNAME_NP return 16; -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \ + defined(__DragonFly__) return 16; #elif defined(__OpenBSD__) return 24; @@ -170,15 +173,17 @@ void llvm::set_thread_name(const Twine &Name) { if (get_max_thread_name_length() > 0) NameStr = NameStr.take_back(get_max_thread_name_length() - 1); (void)NameStr; -#if defined(__linux__) && HAVE_PTHREAD_SETNAME_NP - ::pthread_setname_np(::pthread_self(), NameStr.data()); -#elif defined(__FreeBSD__) || defined(__OpenBSD__) +#if defined(HAVE_PTHREAD_SET_NAME_NP) ::pthread_set_name_np(::pthread_self(), NameStr.data()); -#elif defined(__NetBSD__) +#elif defined(HAVE_PTHREAD_SETNAME_NP) +#if defined(__NetBSD__) ::pthread_setname_np(::pthread_self(), "%s", const_cast<char *>(NameStr.data())); #elif defined(__APPLE__) ::pthread_setname_np(NameStr.data()); +#else + ::pthread_setname_np(::pthread_self(), NameStr.data()); +#endif #endif } @@ -221,23 +226,24 @@ void llvm::get_thread_name(SmallVectorImpl<char> &Name) { } free(kp); return; -#elif defined(__NetBSD__) +#elif defined(__linux__) && HAVE_PTHREAD_GETNAME_NP + constexpr uint32_t len = get_max_thread_name_length_impl(); + char Buffer[len] = {'\0'}; // FIXME: working around MSan false positive. + if (0 == ::pthread_getname_np(::pthread_self(), Buffer, len)) + Name.append(Buffer, Buffer + strlen(Buffer)); +#elif defined(HAVE_PTHREAD_GET_NAME_NP) constexpr uint32_t len = get_max_thread_name_length_impl(); char buf[len]; - ::pthread_getname_np(::pthread_self(), buf, len); + ::pthread_get_name_np(::pthread_self(), buf, len); Name.append(buf, buf + strlen(buf)); -#elif defined(__OpenBSD__) + +#elif defined(HAVE_PTHREAD_GETNAME_NP) constexpr uint32_t len = get_max_thread_name_length_impl(); char buf[len]; - ::pthread_get_name_np(::pthread_self(), buf, len); + ::pthread_getname_np(::pthread_self(), buf, len); Name.append(buf, buf + strlen(buf)); -#elif defined(__linux__) && HAVE_PTHREAD_GETNAME_NP - constexpr uint32_t len = get_max_thread_name_length_impl(); - char Buffer[len] = {'\0'}; // FIXME: working around MSan false positive. - if (0 == ::pthread_getname_np(::pthread_self(), Buffer, len)) - Name.append(Buffer, Buffer + strlen(Buffer)); #endif } |