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 Labathinline 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