aboutsummaryrefslogtreecommitdiff
path: root/src/utils/wrapthread.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/wrapthread.h')
-rw-r--r--src/utils/wrapthread.h98
1 files changed, 55 insertions, 43 deletions
diff --git a/src/utils/wrapthread.h b/src/utils/wrapthread.h
index fe9d175..fc3200d 100644
--- a/src/utils/wrapthread.h
+++ b/src/utils/wrapthread.h
@@ -1,65 +1,77 @@
1#if THREADS == 1 1#if THREADS == 1
2#define WRAPTHREADS_NOTHREADS 1
3#endif
4
5#if !WRAPTHREADS_NOTHREADS
6
7 #if defined(__unix__)
8
9 #include <threads.h>
10
11 #define wrapthread_atomic _Atomic
2 12
3#define wrapthread_atomic 13 #define wrapthread_return_t int
14 #define wrapthread_return_val 0
4 15
5#define wrapthread_return_t int 16 #define wrapthread_define_var_thread_t(x) thrd_t x
6#define wrapthread_return_val 0 17 #define wrapthread_define_var_mutex_t(x) mtx_t x
18 #define wrapthread_define_struct_thread_t(x) thrd_t x
19 #define wrapthread_define_struct_mutex_t(x) mtx_t x
7 20
8#define wrapthread_define_var_thread_t(x) unused char x 21 #define wrapthread_define_if_threads(T, x) T x
9#define wrapthread_define_var_mutex_t(x) unused char x
10#define wrapthread_define_struct_thread_t(x) char x
11#define wrapthread_define_struct_mutex_t(x) char x
12 22
13#define wrapthread_define_if_threads(T, x) T x; (void)(x) 23 #define wrapthread_create(a, f, arg) thrd_create(a, f, arg)
24 #define wrapthread_join(a) thrd_join(a, NULL)
25 #define wrapthread_mutex_init(a) mtx_init(a, mtx_plain)
26 #define wrapthread_mutex_lock(a) mtx_lock(a)
27 #define wrapthread_mutex_unlock(a) mtx_unlock(a)
14 28
15#define wrapthread_create(t, f, arg) f(arg) 29 #elif !defined(__STDC_NO_THREADS__)
16#define wrapthread_join(a)
17#define wrapthread_mutex_init(a)
18#define wrapthread_mutex_lock(a)
19#define wrapthread_mutex_unlock(a)
20 30
21#elif defined(__unix__) 31 #include <pthread.h>
22 32
23#include <threads.h> 33 #define wrapthread_atomic _Atomic
24 34
25#define wrapthread_atomic _Atomic 35 #define wrapthread_return_t void *
36 #define wrapthread_return_val NULL
26 37
27#define wrapthread_return_t int 38 #define wrapthread_define_var_thread_t(x) pthread_t x
28#define wrapthread_return_val 0 39 #define wrapthread_define_var_mutex_t(x) pthread_mutex_t x
40 #define wrapthread_define_struct_thread_t(x) pthread_t x
41 #define wrapthread_define_struct_mutex_t(x) pthread_mutex_t x
29 42
30#define wrapthread_define_var_thread_t(x) thrd_t x 43 #define wrapthread_define_if_threads(T, x) T x
31#define wrapthread_define_var_mutex_t(x) mtx_t x
32#define wrapthread_define_struct_thread_t(x) thrd_t x
33#define wrapthread_define_struct_mutex_t(x) mtx_t x
34 44
35#define wrapthread_define_if_threads(T, x) T x 45 #define wrapthread_create(a, f, arg) \
46 pthread_create(a, NULL, f, arg)
47 #define wrapthread_join(a) pthread_join(a, NULL)
48 #define wrapthread_mutex_init(a) pthread_mutex_init(a, NULL)
49 #define wrapthread_mutex_lock(a) pthread_mutex_lock(a)
50 #define wrapthread_mutex_unlock(a) pthread_mutex_unlock(a)
36 51
37#define wrapthread_create(a, f, arg) thrd_create(a, f, arg) 52 #else
38#define wrapthread_join(a) thrd_join(a, NULL) 53 #define WRAPTHREADS_NOTHREADS 1
39#define wrapthread_mutex_init(a) mtx_init(a, mtx_plain) 54 #endif
40#define wrapthread_mutex_lock(a) mtx_lock(a)
41#define wrapthread_mutex_unlock(a) mtx_unlock(a)
42 55
43#elif defined(__unix__)
44 56
45#include <pthread.h> 57#if WRAPTHREADS_NOTHREADS
46 58
47#define wrapthread_atomic _Atomic 59 #define wrapthread_atomic
48 60
49#define wrapthread_return_t void * 61 #define wrapthread_return_t int
50#define wrapthread_return_val NULL 62 #define wrapthread_return_val 0
51 63
52#define wrapthread_define_var_thread_t(x) pthread_t x 64 #define wrapthread_define_var_thread_t(x) unused char x
53#define wrapthread_define_var_mutex_t(x) pthread_mutex_t x 65 #define wrapthread_define_var_mutex_t(x) unused char x
54#define wrapthread_define_struct_thread_t(x) pthread_t x 66 #define wrapthread_define_struct_thread_t(x) char x
55#define wrapthread_define_struct_mutex_t(x) pthread_mutex_t x 67 #define wrapthread_define_struct_mutex_t(x) char x
56 68
57#define wrapthread_define_if_threads(T, x) T x 69 #define wrapthread_define_if_threads(T, x) T x; (void)(x)
58 70
59#define wrapthread_create(a, f, arg) pthread_create(a, NULL, f, arg) 71 #define wrapthread_create(t, f, arg) f(arg)
60#define wrapthread_join(a) pthread_join(a, NULL) 72 #define wrapthread_join(a)
61#define wrapthread_mutex_init(a) pthread_mutex_init(a, NULL) 73 #define wrapthread_mutex_init(a)
62#define wrapthread_mutex_lock(a) pthread_mutex_lock(a) 74 #define wrapthread_mutex_lock(a)
63#define wrapthread_mutex_unlock(a) pthread_mutex_unlock(a) 75 #define wrapthread_mutex_unlock(a)
64 76
65#endif 77#endif

Generated with cgit - Back to sebastiano.tronto.net