xref: /llvm-project/lldb/packages/Python/lldbsuite/test/make/thread.h (revision 9ba5b52c135c2fd2e6dd5f5e228d0742aa0cf3e4)
104b766daSPavel Labath #ifndef LLDB_THREAD_H
204b766daSPavel Labath #define LLDB_THREAD_H
304b766daSPavel Labath 
404b766daSPavel Labath #include <stdint.h>
504b766daSPavel Labath 
604b766daSPavel Labath #if defined(__APPLE__)
704b766daSPavel Labath __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2)
804b766daSPavel Labath int pthread_threadid_np(pthread_t, __uint64_t *);
904b766daSPavel Labath #elif defined(__linux__)
1004b766daSPavel Labath #include <sys/syscall.h>
1104b766daSPavel Labath #include <unistd.h>
12df948771SMichał Górny #elif defined(__FreeBSD__)
13df948771SMichał Górny #include <pthread_np.h>
1404b766daSPavel Labath #elif defined(__NetBSD__)
1504b766daSPavel Labath #include <lwp.h>
16*9ba5b52cSBrad Smith #elif defined(__OpenBSD__)
17*9ba5b52cSBrad Smith #include <unistd.h>
1804b766daSPavel Labath #elif defined(_WIN32)
1904b766daSPavel Labath #include <windows.h>
2004b766daSPavel Labath #endif
2104b766daSPavel Labath 
get_thread_id()2204b766daSPavel Labath inline uint64_t get_thread_id() {
2304b766daSPavel Labath #if defined(__APPLE__)
2404b766daSPavel Labath   __uint64_t tid = 0;
2504b766daSPavel Labath   pthread_threadid_np(pthread_self(), &tid);
2604b766daSPavel Labath   return tid;
2704b766daSPavel Labath #elif defined(__linux__)
2804b766daSPavel Labath   return syscall(__NR_gettid);
29df948771SMichał Górny #elif defined(__FreeBSD__)
30df948771SMichał Górny   return static_cast<uint64_t>(pthread_getthreadid_np());
3104b766daSPavel Labath #elif defined(__NetBSD__)
3204b766daSPavel Labath   // Technically lwpid_t is 32-bit signed integer
3304b766daSPavel Labath   return static_cast<uint64_t>(_lwp_self());
34*9ba5b52cSBrad Smith #elif defined(__OpenBSD__)
35*9ba5b52cSBrad Smith   return static_cast<uint64_t>(getthrid());
3604b766daSPavel Labath #elif defined(_WIN32)
3704b766daSPavel Labath   return static_cast<uint64_t>(::GetCurrentThreadId());
3804b766daSPavel Labath #else
3904b766daSPavel Labath   return -1;
4004b766daSPavel Labath #endif
4104b766daSPavel Labath }
4204b766daSPavel Labath 
4304b766daSPavel Labath #endif // LLDB_THREAD_H
44