bpo-37160: Thread native ID NetBSD support (GH-13835)

(cherry picked from commit 5287022eee)

Co-authored-by: David Carlier <dcarlier@afilias.info>
This commit is contained in:
Miss Islington (bot) 2019-06-12 09:03:04 -07:00 committed by GitHub
parent b2fd32b2f0
commit c9ca96dd96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 3 deletions

View file

@ -106,7 +106,7 @@ This module defines the following constants and functions:
Its value may be used to uniquely identify this particular thread system-wide Its value may be used to uniquely identify this particular thread system-wide
(until the thread terminates, after which the value may be recycled by the OS). (until the thread terminates, after which the value may be recycled by the OS).
.. availability:: Windows, FreeBSD, Linux, macOS, OpenBSD. .. availability:: Windows, FreeBSD, Linux, macOS, OpenBSD, NetBSD.
.. versionadded:: 3.8 .. versionadded:: 3.8

View file

@ -82,7 +82,7 @@ This module defines the following functions:
Its value may be used to uniquely identify this particular thread system-wide Its value may be used to uniquely identify this particular thread system-wide
(until the thread terminates, after which the value may be recycled by the OS). (until the thread terminates, after which the value may be recycled by the OS).
.. availability:: Windows, FreeBSD, Linux, macOS, OpenBSD. .. availability:: Windows, FreeBSD, Linux, macOS, OpenBSD, NetBSD.
.. versionadded:: 3.8 .. versionadded:: 3.8

View file

@ -26,7 +26,7 @@ PyAPI_FUNC(unsigned long) PyThread_start_new_thread(void (*)(void *), void *);
PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void); PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void);
PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void); PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void);
#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(_WIN32) #if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(_WIN32)
#define PY_HAVE_THREAD_NATIVE_ID #define PY_HAVE_THREAD_NATIVE_ID
PyAPI_FUNC(unsigned long) PyThread_get_thread_native_id(void); PyAPI_FUNC(unsigned long) PyThread_get_thread_native_id(void);
#endif #endif

View file

@ -0,0 +1 @@
:func:`threading.get_native_id` now also supports NetBSD.

View file

@ -18,6 +18,8 @@
# include <pthread_np.h> /* pthread_getthreadid_np() */ # include <pthread_np.h> /* pthread_getthreadid_np() */
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
# include <unistd.h> /* getthrid() */ # include <unistd.h> /* getthrid() */
#elif defined(__NetBSD__) /* _lwp_self */
# include <lwp.h>
#endif #endif
/* The POSIX spec requires that use of pthread_attr_setstacksize /* The POSIX spec requires that use of pthread_attr_setstacksize
@ -328,6 +330,9 @@ PyThread_get_thread_native_id(void)
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
pid_t native_id; pid_t native_id;
native_id = getthrid(); native_id = getthrid();
#elif defined(__NetBSD__)
lwpid_t native_id;
native_id = _lwp_self();
#endif #endif
return (unsigned long) native_id; return (unsigned long) native_id;
} }