1
0
mirror of https://github.com/fuse-friends/fuse-native synced 2024-09-27 21:53:40 +00:00
fuse-friends_fuse-native/semaphore.h

41 lines
822 B
C
Raw Normal View History

2019-07-24 14:52:17 +00:00
#ifdef __APPLE__
#include <semaphore.h>
#include <dispatch/dispatch.h>
typedef dispatch_semaphore_t fuse_native_semaphore_t;
static int fuse_native_semaphore_init (dispatch_semaphore_t *sem) {
*sem = dispatch_semaphore_create(0);
return *sem == NULL ? -1 : 0;
}
static void fuse_native_semaphore_wait (dispatch_semaphore_t *sem) {
dispatch_semaphore_wait(*sem, DISPATCH_TIME_FOREVER);
}
static void fuse_native_semaphore_signal (dispatch_semaphore_t *sem) {
dispatch_semaphore_signal(*sem);
}
#else
#include <semaphore.h>
typedef sem_t fuse_native_semaphore_t;
static int fuse_native_semaphore_init (sem_t *sem) {
return sem_init(sem, 0, 0);
}
static void fuse_native_semaphore_wait (sem_t *sem) {
sem_wait(sem);
}
static void fuse_native_semaphore_signal (sem_t *sem) {
sem_post(sem);
}
#endif