5 #ifndef __MONO_COOP_SEMAPHORE_H__
6 #define __MONO_COOP_SEMAPHORE_H__
11 #include "mono-os-semaphore.h"
12 #include "mono-threads-api.h"
14 /* We put the OS sync primitives in struct, so the compiler will warn us if
15 * we use mono_os_(mutex|cond|sem)_... on MonoCoop(Mutex|Cond|Sem) structures */
17 typedef struct _MonoCoopSem MonoCoopSem
;
23 mono_coop_sem_init (MonoCoopSem
*sem
, int value
)
25 mono_os_sem_init (&sem
->s
, value
);
29 mono_coop_sem_destroy (MonoCoopSem
*sem
)
31 mono_os_sem_destroy (&sem
->s
);
35 mono_coop_sem_wait (MonoCoopSem
*sem
, MonoSemFlags flags
)
41 res
= mono_os_sem_wait (&sem
->s
, flags
);
48 static inline MonoSemTimedwaitRet
49 mono_coop_sem_timedwait (MonoCoopSem
*sem
, guint timeout_ms
, MonoSemFlags flags
)
51 MonoSemTimedwaitRet res
;
55 res
= mono_os_sem_timedwait (&sem
->s
, timeout_ms
, flags
);
63 mono_coop_sem_post (MonoCoopSem
*sem
)
65 mono_os_sem_post (&sem
->s
);
68 #endif /* __MONO_COOP_SEMAPHORE_H__ */