X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Fcommon%2Fthread-id.h;h=1e533966895aa1e747f45b38ed52fd123852ca52;hb=11f3d1c24e6179abf8247611c5308f41d95389a1;hp=47a74570efa23c1868ac7a6d426878de05ff3ce2;hpb=9ba261bd496f2dfac38a16e341259553335dd165;p=userspace-rcu.git diff --git a/tests/common/thread-id.h b/tests/common/thread-id.h index 47a7457..1e53396 100644 --- a/tests/common/thread-id.h +++ b/tests/common/thread-id.h @@ -17,10 +17,17 @@ * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. */ + #ifdef __linux__ # include -# if defined(_syscall0) +# if defined(HAVE_GETTID) +/* + * Do not redefine gettid() as it is already included + * in bionic through . Some other libc + * may also already contain an implementation of gettid. + */ +# elif defined(_syscall0) _syscall0(pid_t, gettid) # elif defined(__NR_gettid) static inline pid_t gettid(void) @@ -42,6 +49,33 @@ unsigned long urcu_get_thread_id(void) { return (unsigned long) pthread_getthreadid_np(); } +#elif defined(__sun__) || defined(__APPLE__) +#include + +static inline +unsigned long urcu_get_thread_id(void) +{ + return (unsigned long) pthread_self(); +} +#elif defined(__CYGWIN__) +#include + +extern unsigned long pthread_getsequence_np(pthread_t *); + +static inline +unsigned long urcu_get_thread_id(void) +{ + pthread_t thr = pthread_self(); + return pthread_getsequence_np(&thr); +} +#elif defined(__OpenBSD__) +#include + +static inline +unsigned long urcu_get_thread_id(void) +{ + return (unsigned long) getthrid(); +} #else # warning "use pid as thread ID" static inline