summaryrefslogtreecommitdiffstats
path: root/osdep/semaphore.h
diff options
context:
space:
mode:
Diffstat (limited to 'osdep/semaphore.h')
-rw-r--r--osdep/semaphore.h30
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