Implement _thread_id() on more Unices
This commit is contained in:
		@@ -50,8 +50,17 @@
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
#include <sys/syscall.h> //Use gettid() syscall under linux to get thread id
 | 
			
		||||
 | 
			
		||||
#elif defined(__FreeBSD__)
 | 
			
		||||
#include <sys/thr.h> //Use thr_self() syscall under FreeBSD to get thread id
 | 
			
		||||
#elif defined(_AIX)
 | 
			
		||||
#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 // unix
 | 
			
		||||
@@ -316,10 +325,14 @@ SPDLOG_INLINE size_t _thread_id() SPDLOG_NOEXCEPT
 | 
			
		||||
#define SYS_gettid __NR_gettid
 | 
			
		||||
#endif
 | 
			
		||||
    return static_cast<size_t>(syscall(SYS_gettid));
 | 
			
		||||
#elif defined(__FreeBSD__)
 | 
			
		||||
    long tid;
 | 
			
		||||
    thr_self(&tid);
 | 
			
		||||
    return static_cast<size_t>(tid);
 | 
			
		||||
#elif defined(_AIX) || defined(__DragonFly__) || defined(__FreeBSD__)
 | 
			
		||||
    return static_cast<size_t>(pthread_getthreadid_np());
 | 
			
		||||
#elif defined(__NetBSD__)
 | 
			
		||||
    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__
 | 
			
		||||
    uint64_t tid;
 | 
			
		||||
    pthread_threadid_np(nullptr, &tid);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user