X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=tests%2Fcommon%2Fthread-id.h;h=df94360624a8ae6c326515c71762962b874f2779;hb=a90fc0aa575c71e1e5fb4dc8adc1f2d9001e536d;hp=9378edcf2ce9246f12f0260eaf294ad2de1ceaf2;hpb=f5ab766ee2c8300cb00ca5878b1cb464f960a66d;p=userspace-rcu.git diff --git a/tests/common/thread-id.h b/tests/common/thread-id.h index 9378edc..df94360 100644 --- a/tests/common/thread-id.h +++ b/tests/common/thread-id.h @@ -17,11 +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 +# 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) @@ -43,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