From 53b230801149a35613f33fc4247080bffaf5a289 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Fri, 20 Sep 2019 12:47:59 +0000 Subject: [PATCH] Implement _thread_id() on more Unices --- include/spdlog/details/os-inl.h | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h index b4f43956..57f72bd5 100644 --- a/include/spdlog/details/os-inl.h +++ b/include/spdlog/details/os-inl.h @@ -50,8 +50,17 @@ #ifdef __linux__ #include //Use gettid() syscall under linux to get thread id -#elif defined(__FreeBSD__) -#include //Use thr_self() syscall under FreeBSD to get thread id +#elif defined(_AIX) +#include // for pthread_getthreadid_np + +#elif defined(__DragonFly__) || defined(__FreeBSD__) +#include // for pthread_getthreadid_np + +#elif defined(__NetBSD__) +#include // for _lwp_self + +#elif defined(__sun) +#include // for thr_self #endif #endif // unix @@ -316,10 +325,14 @@ SPDLOG_INLINE size_t _thread_id() SPDLOG_NOEXCEPT #define SYS_gettid __NR_gettid #endif return static_cast(syscall(SYS_gettid)); -#elif defined(__FreeBSD__) - long tid; - thr_self(&tid); - return static_cast(tid); +#elif defined(_AIX) || defined(__DragonFly__) || defined(__FreeBSD__) + return static_cast(pthread_getthreadid_np()); +#elif defined(__NetBSD__) + return static_cast(_lwp_self()); +#elif defined(__OpenBSD__) + return static_cast(getthrid()); +#elif defined(__sun) + return static_cast(thr_self()); #elif __APPLE__ uint64_t tid; pthread_threadid_np(nullptr, &tid);