aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/make/thread.h')
-rw-r--r--lldb/packages/Python/lldbsuite/test/make/thread.h35
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