diff --git a/Include/pythread.h b/Include/pythread.h index 0784f6b2e5391fb..9a6711e90c23ed3 100644 --- a/Include/pythread.h +++ b/Include/pythread.h @@ -21,8 +21,9 @@ PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void); PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void); #if (defined(__APPLE__) || defined(__linux__) || defined(_WIN32) \ - || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \ - || defined(__DragonFly__) || defined(_AIX)) + || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \ + || defined(__OpenBSD__) || defined(__NetBSD__) \ + || defined(__DragonFly__) || defined(_AIX)) || defined(__GNU__) #define PY_HAVE_THREAD_NATIVE_ID PyAPI_FUNC(unsigned long) PyThread_get_thread_native_id(void); #endif diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index a8df5449714a814..524afb8e16512d7 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -20,6 +20,8 @@ # include /* syscall(SYS_gettid) */ #elif defined(__FreeBSD__) # include /* pthread_getthreadid_np() */ +#elif defined(__FreeBSD_kernel__) +# include /* syscall(SYS_thr_self) */ #elif defined(__OpenBSD__) # include /* getthrid() */ #elif defined(_AIX) @@ -28,6 +30,9 @@ # include /* _lwp_self() */ #elif defined(__DragonFly__) # include /* lwp_gettid() */ +#elif defined(__GNU__) +# include /* mach_thread_self(), mach_task_self(), + mach_port_deallocate() */ #endif /* The POSIX spec requires that use of pthread_attr_setstacksize @@ -384,6 +389,9 @@ PyThread_get_thread_native_id(void) #elif defined(__FreeBSD__) int native_id; native_id = pthread_getthreadid_np(); +#elif defined(__FreeBSD_kernel__) + long native_id; + syscall(SYS_thr_self, &native_id); #elif defined(__OpenBSD__) pid_t native_id; native_id = getthrid(); @@ -396,6 +404,10 @@ PyThread_get_thread_native_id(void) #elif defined(__DragonFly__) lwpid_t native_id; native_id = lwp_gettid(); +#elif defined(__GNU__) + mach_port_t native_id; + native_id = mach_thread_self(); + mach_port_deallocate(mach_task_self(), mach_thread_self()); #endif return (unsigned long) native_id; }