diff options
Diffstat (limited to 'osdep/semaphore.h')
-rw-r--r-- | osdep/semaphore.h | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/osdep/semaphore.h b/osdep/semaphore.h index cad2f7fb1f..81da12d502 100644 --- a/osdep/semaphore.h +++ b/osdep/semaphore.h @@ -4,7 +4,7 @@ #include <sys/types.h> #include <semaphore.h> -// OSX provides non-working empty stubs, so we emulate them. +// macOS provides non-working empty stubs, so we emulate them. // This should be AS-safe, but cancellation issues were ignored. // sem_getvalue() is not provided. // sem_post() won't always correctly return an error on overflow. @@ -14,13 +14,13 @@ #define MP_SEMAPHORE_EMULATION -#include <pthread.h> +#include "osdep/threads.h" #define MP_SEM_VALUE_MAX 4096 typedef struct { int wakeup_pipe[2]; - pthread_mutex_t lock; + mp_mutex lock; // protected by lock unsigned int count; } mp_sem_t; @@ -28,32 +28,10 @@ typedef struct { int mp_sem_init(mp_sem_t *sem, int pshared, unsigned int value); int mp_sem_wait(mp_sem_t *sem); int mp_sem_trywait(mp_sem_t *sem); -int mp_sem_timedwait(mp_sem_t *sem, const struct timespec *abs_timeout); +int mp_sem_timedwait(mp_sem_t *sem, int64_t until); int mp_sem_post(mp_sem_t *sem); int mp_sem_destroy(mp_sem_t *sem); -#undef sem_init -#undef sem_wait -#undef sem_trywait -#undef sem_timedwait -#undef sem_post -#undef sem_getvalue -#undef sem_destroy -#undef sem_getvalue -#undef sem_t -#undef SEM_VALUE_MAX - -#define sem_init mp_sem_init -#define sem_wait mp_sem_wait -#define sem_trywait mp_sem_trywait -#define sem_timedwait mp_sem_timedwait -#define sem_post mp_sem_post -#define sem_destroy mp_sem_destroy -#define sem_t mp_sem_t -#define SEM_VALUE_MAX MP_SEM_VALUE_MAX - -#define sem_getvalue (void) - #endif #endif |