X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=tests%2Fcommon%2Fthread-id.h;h=df94360624a8ae6c326515c71762962b874f2779;hb=a90fc0aa575c71e1e5fb4dc8adc1f2d9001e536d;hp=47a74570efa23c1868ac7a6d426878de05ff3ce2;hpb=9ba261bd496f2dfac38a16e341259553335dd165;p=userspace-rcu.git diff --git a/tests/common/thread-id.h b/tests/common/thread-id.h index 47a7457..df94360 100644 --- a/tests/common/thread-id.h +++ b/tests/common/thread-id.h @@ -17,10 +17,18 @@ * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. */ +#include + #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 +50,26 @@ 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); +} + #else # warning "use pid as thread ID" static inline