Fix iOS 5.0 issue (file descriptors for regular files can't be put in nonblocking...
[gambit-c.git] / lib / dead.h
blob521956a5313221d26589cee7a9f4aabda0ac5cbf
1 /*---------------------------------------------------------------------------*/
3 /* Threading. */
5 #ifdef USE_POSIX
7 #define ___THREAD_TYPE pthread_t
8 #define ___THREAD_RESULT_TYPE void*
9 #define ___THREAD_CREATE(thr,proc,arg) (pthread_create (&thr, NULL, proc, arg) == 0)
10 #define ___THREAD_EXIT(result) pthread_exit (result)
12 #define ___MUTEX_TYPE pthread_mutex_t
13 #define ___MUTEX_INIT(mut) (pthread_mutex_init (&mut, NULL) == 0)
14 #define ___MUTEX_DESTROY(mut) (pthread_mutex_destroy (&mut) == 0)
15 #define ___MUTEX_LOCK(mut) (pthread_mutex_lock (&mut) == 0)
16 #define ___MUTEX_UNLOCK(mut) (pthread_mutex_unlock (&mut) == 0)
18 #define ___CONDVAR_TYPE pthread_cond_t
19 #define ___CONDVAR_INIT(cv) (pthread_cond_init (&cv, NULL) == 0)
20 #define ___CONDVAR_DESTROY(cv) (pthread_cond_destroy (&cv) == 0)
21 #define ___CONDVAR_WAIT(cv,mut) (pthread_cond_wait (&cv, &mut) == 0)
22 #define ___CONDVAR_SIGNAL(cv) (pthread_cond_signal (&cv) == 0)
24 #endif
26 #ifdef USE_WIN32
28 #define ___THREAD_TYPE HANDLE
29 #define ___THREAD_RESULT_TYPE DWORD
30 #define ___THREAD_CREATE(thr,proc,arg) ((thr = CreateThread (NULL, 0, proc, arg, 0, NULL)) != NULL)
31 #define ___THREAD_EXIT(result) ExitThread (result)
33 #define ___MUTEX_TYPE HANDLE
34 #define ___MUTEX_INIT(mut) ((mut = CreateMutex (NULL, FALSE, NULL)) != NULL)
35 #define ___MUTEX_DESTROY(mut) CloseHandle (mut)
36 #define ___MUTEX_LOCK(mut) (WaitForSingleObject (mut, INFINITE) != WAIT_FAILED)
37 #define ___MUTEX_UNLOCK(mut) ReleaseMutex (mut)
39 #define ___CONDVAR_TYPE HANDLE
40 #define ___CONDVAR_INIT(cv) ((cv = CreateEvent (NULL, FALSE, FALSE, NULL)) != NULL)
41 #define ___CONDVAR_DESTROY(cv) CloseHandle (cv)
42 #define ___CONDVAR_WAIT(cv,mut) (WaitForSingleObject (cv, INFINITE) != WAIT_FAILED)
43 #define ___CONDVAR_SIGNAL(cv) SetEvent (cv)
45 #endif