#ifndef LLDB_THREAD_H #define LLDB_THREAD_H #include #if defined(__APPLE__) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) int pthread_threadid_np(pthread_t, __uint64_t *); #elif defined(__linux__) #include #include #elif defined(__FreeBSD__) #include #elif defined(__NetBSD__) #include #elif defined(__OpenBSD__) #include #elif defined(_WIN32) #include #endif inline uint64_t get_thread_id() { #if defined(__APPLE__) __uint64_t tid = 0; pthread_threadid_np(pthread_self(), &tid); return tid; #elif defined(__linux__) return syscall(__NR_gettid); #elif defined(__FreeBSD__) return static_cast(pthread_getthreadid_np()); #elif defined(__NetBSD__) // Technically lwpid_t is 32-bit signed integer return static_cast(_lwp_self()); #elif defined(__OpenBSD__) return static_cast(getthrid()); #elif defined(_WIN32) return static_cast(::GetCurrentThreadId()); #else return -1; #endif } #endif // LLDB_THREAD_H