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