test_urcu_hash*: initialize TLS seeds
[userspace-rcu.git] / tests / thread-id.h
... / ...
CommitLineData
1#ifndef _TEST_THREAD_ID_H
2#define _TEST_THREAD_ID_H
3
4/*
5 * thread-id.h
6 *
7 * Userspace RCU library - thread ID
8 *
9 * Copyright 2013 - Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
10 *
11 * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
12 * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
13 *
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.
19 */
20
21#ifdef __linux__
22# include <syscall.h>
23
24# if defined(_syscall0)
25_syscall0(pid_t, gettid)
26# elif defined(__NR_gettid)
27static inline pid_t gettid(void)
28{
29 return syscall(__NR_gettid);
30}
31# endif
32
33static inline
34unsigned long urcu_get_thread_id(void)
35{
36 return (unsigned long) gettid();
37}
38#elif defined(__FreeBSD__)
39# include <pthread_np.h>
40
41static inline
42unsigned long urcu_get_thread_id(void)
43{
44 return (unsigned long) pthread_getthreadid_np();
45}
46#else
47# warning "use pid as thread ID"
48static inline
49unsigned long urcu_get_thread_id(void)
50{
51 return (unsigned long) getpid();
52}
53#endif
54
55#endif /* _TEST_THREAD_ID_H */
This page took 0.022133 seconds and 4 git commands to generate.