| #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 */ |