5 #ifndef __MONO_COOP_SEMAPHORE_H__
6 #define __MONO_COOP_SEMAPHORE_H__
11 #include "mono-os-semaphore.h"
12 #include "mono-threads-api.h"
16 /* We put the OS sync primitives in struct, so the compiler will warn us if
17 * we use mono_os_(mutex|cond|sem)_... on MonoCoop(Mutex|Cond|Sem) structures */
19 typedef struct _MonoCoopSem MonoCoopSem
;
25 mono_coop_sem_init (MonoCoopSem
*sem
, int value
)
27 mono_os_sem_init (&sem
->s
, value
);
31 mono_coop_sem_destroy (MonoCoopSem
*sem
)
33 mono_os_sem_destroy (&sem
->s
);
37 mono_coop_sem_wait (MonoCoopSem
*sem
, MonoSemFlags flags
)
43 res
= mono_os_sem_wait (&sem
->s
, flags
);
50 static inline MonoSemTimedwaitRet
51 mono_coop_sem_timedwait (MonoCoopSem
*sem
, guint timeout_ms
, MonoSemFlags flags
)
53 MonoSemTimedwaitRet res
;
57 res
= mono_os_sem_timedwait (&sem
->s
, timeout_ms
, flags
);
65 mono_coop_sem_post (MonoCoopSem
*sem
)
67 mono_os_sem_post (&sem
->s
);
72 #endif /* __MONO_COOP_SEMAPHORE_H__ */