diff options
author | Nobuyoshi Nakada <[email protected]> | 2022-05-23 11:04:42 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2022-05-23 11:04:43 +0900 |
commit | 9134e761407eed2cc10893d53291f81b8270dee3 (patch) | |
tree | 4580dc3372e94fb08409e125d4a2195dd7db217b /thread_pthread.c | |
parent | 218e8bdcb0f52e83ef295eb1661d9b1494fbbbf4 (diff) |
Support old Mac OS X
`pthread_threadid_np` is available since Mac OS X 10.6, use
`pthread_mach_thread_np` on older systems.
Diffstat (limited to 'thread_pthread.c')
-rw-r--r-- | thread_pthread.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/thread_pthread.c b/thread_pthread.c index b52efe6db9..c825b731a6 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -40,6 +40,10 @@ #include <time.h> #include <signal.h> +#if defined __APPLE__ +# include <AvailabilityMacros.h> +#endif + #if defined(HAVE_SYS_EVENTFD_H) && defined(HAVE_EVENTFD) # define USE_EVENTFD (1) # include <sys/eventfd.h> @@ -1766,6 +1770,10 @@ native_thread_native_thread_id(rb_thread_t *target_th) return INT2FIX(tid); #elif defined(__APPLE__) uint64_t tid; + if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 || + !&pthread_threadid_np /* check weakly linked symbol */) { + return ULL2NUM(pthread_mach_thread_np(pthread_self())); + } int e = pthread_threadid_np(target_th->nt->thread_id, &tid); if (e != 0) rb_syserr_fail(e, "pthread_threadid_np"); return ULL2NUM((unsigned long long)tid); |