From 4959c33d2555b89b494c678d99be81a65ee864b0 Mon Sep 17 00:00:00 2001 From: Jake Tesler Date: Sun, 12 May 2019 10:08:24 -0700 Subject: bpo-36084: Add native thread ID to threading.Thread objects (GH-11993) --- Python/thread_pthread.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'Python/thread_pthread.h') diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index 4c106d9959..87c98d3e93 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -12,6 +12,12 @@ #endif #include +#if defined(__linux__) +#include +#elif defined(__FreeBSD__) +#include +#endif + /* The POSIX spec requires that use of pthread_attr_setstacksize be conditional on _POSIX_THREAD_ATTR_STACKSIZE being defined. */ #ifdef _POSIX_THREAD_ATTR_STACKSIZE @@ -302,6 +308,27 @@ PyThread_get_thread_ident(void) return (unsigned long) threadid; } +unsigned long +PyThread_get_thread_native_id(void) +{ + if (!initialized) + PyThread_init_thread(); +#ifdef __APPLE__ + uint64_t native_id; + pthread_threadid_np(NULL, &native_id); +#elif defined(__linux__) + pid_t native_id; + native_id = syscall(__NR_gettid); +#elif defined(__FreeBSD__) + pid_t native_id; + native_id = pthread_getthreadid_np(); +#else + unsigned long native_id; + native_id = 0; +#endif + return (unsigned long) native_id; +} + void _Py_NO_RETURN PyThread_exit_thread(void) { -- cgit v1.2.1