hurd_kfreebsd_thread_native_id
authorMatthias Klose <doko@debian.org>
Sun, 1 Dec 2024 12:12:57 +0000 (14:12 +0200)
committerAdrian Bunk <bunk@debian.org>
Sun, 1 Dec 2024 12:12:57 +0000 (14:12 +0200)
Gbp-Pq: Name hurd_kfreebsd_thread_native_id.diff

Include/pythread.h
Python/thread_pthread.h

index bb9d86412218ad24b189f7b8e221e56e4491b26c..a1d6af3955f94c9ba5f21c3cb5fa1780295600ec 100644 (file)
@@ -25,7 +25,7 @@ PyAPI_FUNC(unsigned long) PyThread_start_new_thread(void (*)(void *), void *);
 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(__FreeBSD_kernel__) || 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
index e6910b3083a892042f6bc656cc69dde37fc0709f..d4f9ce986014d92ef7d82126c2437186b8349206 100644 (file)
 #   include <sys/syscall.h>     /* syscall(SYS_gettid) */
 #elif defined(__FreeBSD__)
 #   include <pthread_np.h>      /* pthread_getthreadid_np() */
+#elif defined(__FreeBSD_kernel__)
+#   include <sys/syscall.h>     /* syscall(SYS_thr_self) */
 #elif defined(__OpenBSD__)
 #   include <unistd.h>          /* getthrid() */
 #elif defined(_AIX)
 #   include <sys/thread.h>      /* thread_self() */
 #elif defined(__NetBSD__)
 #   include <lwp.h>             /* _lwp_self() */
+#elif defined(__GNU__)
+#   include <mach.h>            /* mach_thread_self(), mach_task_self(),
+                                   mach_port_deallocate() */
 #endif
 
 /* The POSIX spec requires that use of pthread_attr_setstacksize
@@ -338,6 +343,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();
@@ -347,6 +355,10 @@ PyThread_get_thread_native_id(void)
 #elif defined(__NetBSD__)
     lwpid_t native_id;
     native_id = _lwp_self();
+#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;
 }