1
0
mirror of https://github.com/gabime/spdlog.git synced 2025-04-29 03:53:54 +00:00

Implement _thread_id() on more Unices

This commit is contained in:
Jan Beich 2019-09-20 12:47:59 +00:00
parent c368500efd
commit 53b2308011

View File

@ -50,8 +50,17 @@
#ifdef __linux__ #ifdef __linux__
#include <sys/syscall.h> //Use gettid() syscall under linux to get thread id #include <sys/syscall.h> //Use gettid() syscall under linux to get thread id
#elif defined(__FreeBSD__) #elif defined(_AIX)
#include <sys/thr.h> //Use thr_self() syscall under FreeBSD to get thread id #include <pthread.h> // for pthread_getthreadid_np
#elif defined(__DragonFly__) || defined(__FreeBSD__)
#include <pthread_np.h> // for pthread_getthreadid_np
#elif defined(__NetBSD__)
#include <lwp.h> // for _lwp_self
#elif defined(__sun)
#include <thread.h> // for thr_self
#endif #endif
#endif // unix #endif // unix
@ -316,10 +325,14 @@ SPDLOG_INLINE size_t _thread_id() SPDLOG_NOEXCEPT
#define SYS_gettid __NR_gettid #define SYS_gettid __NR_gettid
#endif #endif
return static_cast<size_t>(syscall(SYS_gettid)); return static_cast<size_t>(syscall(SYS_gettid));
#elif defined(__FreeBSD__) #elif defined(_AIX) || defined(__DragonFly__) || defined(__FreeBSD__)
long tid; return static_cast<size_t>(pthread_getthreadid_np());
thr_self(&tid); #elif defined(__NetBSD__)
return static_cast<size_t>(tid); return static_cast<size_t>(_lwp_self());
#elif defined(__OpenBSD__)
return static_cast<size_t>(getthrid());
#elif defined(__sun)
return static_cast<size_t>(thr_self());
#elif __APPLE__ #elif __APPLE__
uint64_t tid; uint64_t tid;
pthread_threadid_np(nullptr, &tid); pthread_threadid_np(nullptr, &tid);