1 #ifndef _TEST_THREAD_ID_H
2 #define _TEST_THREAD_ID_H
7 * Userspace RCU library - thread ID
9 * Copyright 2013 - Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
11 * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
12 * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
14 * Permission is hereby granted to use or copy this program
15 * for any purpose, provided the above notices are retained on all copies.
16 * Permission to modify the code and to distribute modified code is granted,
17 * provided the above notices are retained, and a notice that the code was
18 * modified is included with the above copyright notice.
22 # include <urcu/syscall-compat.h>
24 # if defined(HAVE_GETTID)
26 * Do not redefine gettid() as it is already included
27 * in bionic through <unistd.h>. Some other libc
28 * may also already contain an implementation of gettid.
30 # elif defined(_syscall0)
31 _syscall0(pid_t
, gettid
)
32 # elif defined(__NR_gettid)
33 static inline pid_t
gettid(void)
35 return syscall(__NR_gettid
);
40 unsigned long urcu_get_thread_id(void)
42 return (unsigned long) gettid();
44 #elif defined(__FreeBSD__)
45 # include <pthread_np.h>
48 unsigned long urcu_get_thread_id(void)
50 return (unsigned long) pthread_getthreadid_np();
52 #elif defined(__sun__) || defined(__APPLE__)
56 unsigned long urcu_get_thread_id(void)
58 return (unsigned long) pthread_self();
60 #elif defined(__CYGWIN__)
63 extern unsigned long pthread_getsequence_np(pthread_t
*);
66 unsigned long urcu_get_thread_id(void)
68 pthread_t thr
= pthread_self();
69 return pthread_getsequence_np(&thr
);
73 # warning "use pid as thread ID"
75 unsigned long urcu_get_thread_id(void)
77 return (unsigned long) getpid();
81 #endif /* _TEST_THREAD_ID_H */
This page took 0.036938 seconds and 4 git commands to generate.