diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/make/thread.h')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/make/thread.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/make/thread.h b/lldb/packages/Python/lldbsuite/test/make/thread.h new file mode 100644 index 000000000000..3cfa16b84761 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/make/thread.h @@ -0,0 +1,35 @@ +#ifndef LLDB_THREAD_H +#define LLDB_THREAD_H + +#include <stdint.h> + +#if defined(__APPLE__) +__OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2) +int pthread_threadid_np(pthread_t, __uint64_t *); +#elif defined(__linux__) +#include <sys/syscall.h> +#include <unistd.h> +#elif defined(__NetBSD__) +#include <lwp.h> +#elif defined(_WIN32) +#include <windows.h> +#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(__NetBSD__) + // Technically lwpid_t is 32-bit signed integer + return static_cast<uint64_t>(_lwp_self()); +#elif defined(_WIN32) + return static_cast<uint64_t>(::GetCurrentThreadId()); +#else + return -1; +#endif +} + +#endif // LLDB_THREAD_H |