blob: 1b02cf70cc1c60371c1e87865f69c7be560d3e1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
--- a/Include/pythread.h
+++ b/Include/pythread.h
@@ -26,7 +26,7 @@ PyAPI_FUNC(unsigned long) PyThread_start
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(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(_WIN32) || defined(_AIX)
+#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(_WIN32) || defined(_AIX) || defined(__GNU__)
#define PY_HAVE_THREAD_NATIVE_ID
PyAPI_FUNC(unsigned long) PyThread_get_thread_native_id(void);
#endif
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -22,6 +22,9 @@
# include <sys/thread.h> /* thread_self() */
#elif defined(__NetBSD__)
# include <lwp.h> /* _lwp_self() */
+#elif defined(__GNU__) || defined(__FreeBSD_kernel__)
+# include <mach.h> /* mach_thread_self(), mach_task_self(),
+ mach_port_deallocate() */
#endif
/* The POSIX spec requires that use of pthread_attr_setstacksize
@@ -343,6 +346,10 @@ PyThread_get_thread_native_id(void)
#elif defined(__NetBSD__)
lwpid_t native_id;
native_id = _lwp_self();
+#elif defined(__GNU__) || defined(__FreeBSD_kernel__)
+ 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;
}
|