#ifndef THREAD_COMPAT_H #define THREAD_COMPAT_H #ifndef NO_PTHREADS #include <pthread.h> #define HAVE_THREADS 1 #else #define HAVE_THREADS 0 /* * macros instead of typedefs because pthread definitions may have * been pulled in by some system dependencies even though the user * wants to disable pthread. */ #define pthread_t int #define pthread_mutex_t int #define pthread_cond_t int #define pthread_key_t int #define pthread_mutex_init(mutex, attr) dummy_pthread_init(mutex) #define pthread_mutex_lock(mutex) #define pthread_mutex_unlock(mutex) #define pthread_mutex_destroy(mutex) #define pthread_cond_init(cond, attr) dummy_pthread_init(cond) #define pthread_cond_wait(cond, mutex) #define pthread_cond_signal(cond) #define pthread_cond_broadcast(cond) #define pthread_cond_destroy(cond) #define pthread_key_create(key, attr) dummy_pthread_init(key) #define pthread_key_delete(key) #define pthread_create(thread, attr, fn, data) \ dummy_pthread_create(thread, attr, fn, data) #define pthread_join(thread, retval) \ dummy_pthread_join(thread, retval) #define pthread_setspecific(key, data) #define pthread_getspecific(key) NULL int dummy_pthread_create(pthread_t *pthread, const void *attr, void *(*fn)(void *), void *data); int dummy_pthread_join(pthread_t pthread, void **retval); int dummy_pthread_init(void *); #endif int online_cpus(void); int init_recursive_mutex(pthread_mutex_t*); #endif /* THREAD_COMPAT_H */