1 #ifndef THREAD_COMPAT_H 2 #define THREAD_COMPAT_H 3 4 #ifndef NO_PTHREADS 5 #include <pthread.h> 6 7 #define HAVE_THREADS 1 8 9 #else 10 11 #define HAVE_THREADS 0 12 13 /* 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. 17 */ 18 #define pthread_t int 19 #define pthread_mutex_t int 20 #define pthread_cond_t int 21 #define pthread_key_t int 22 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) 27 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) 33 34 #define pthread_key_create(key, attr) dummy_pthread_init(key) 35 #define pthread_key_delete(key) 36 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) 41 42 #define pthread_setspecific(key, data) 43 #define pthread_getspecific(key) NULL 44 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); 48 49 int dummy_pthread_init(void *); 50 51 #endif 52 53 int online_cpus(void); 54 int init_recursive_mutex(pthread_mutex_t*); 55 56 57 #endif /* THREAD_COMPAT_H */ 58