Sync with 'maint'
[git.git] / thread-utils.h
blob4961487ed914f4fea817df26904109bb05f2a2c5
1 #ifndef THREAD_COMPAT_H
2 #define THREAD_COMPAT_H
4 #ifndef NO_PTHREADS
5 #include <pthread.h>
7 #define HAVE_THREADS 1
9 #else
11 #define HAVE_THREADS 0
14 * macros instead of typedefs because pthread definitions may have
15 * been pulled in by some system dependencies even though the user
16 * wants to disable pthread.
18 #define pthread_t int
19 #define pthread_mutex_t int
20 #define pthread_cond_t int
21 #define pthread_key_t int
23 #define pthread_mutex_init(mutex, attr) dummy_pthread_init(mutex)
24 #define pthread_mutex_lock(mutex)
25 #define pthread_mutex_unlock(mutex)
26 #define pthread_mutex_destroy(mutex)
28 #define pthread_cond_init(cond, attr) dummy_pthread_init(cond)
29 #define pthread_cond_wait(cond, mutex)
30 #define pthread_cond_signal(cond)
31 #define pthread_cond_broadcast(cond)
32 #define pthread_cond_destroy(cond)
34 #define pthread_key_create(key, attr) dummy_pthread_init(key)
35 #define pthread_key_delete(key)
37 #define pthread_create(thread, attr, fn, data) \
38 dummy_pthread_create(thread, attr, fn, data)
39 #define pthread_join(thread, retval) \
40 dummy_pthread_join(thread, retval)
42 #define pthread_setspecific(key, data)
43 #define pthread_getspecific(key) NULL
45 int dummy_pthread_create(pthread_t *pthread, const void *attr,
46 void *(*fn)(void *), void *data);
47 int dummy_pthread_join(pthread_t pthread, void **retval);
49 int dummy_pthread_init(void *);
51 #endif
53 int online_cpus(void);
54 int init_recursive_mutex(pthread_mutex_t*);
57 #endif /* THREAD_COMPAT_H */