From 59af1e8d99d33f438b3b769a060b7d7ce8cde61f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 31 Jan 2012 03:20:19 +0000 Subject: Use Mach semaphores instead of ancient (and now deprecated) Mac semaphore API. git-svn-id: http://svn.drobilla.net/zix/trunk@48 df6676b4-ccc9-40e5-b5d6-7c4628a128e3 --- zix/sem.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/zix/sem.h b/zix/sem.h index 0830c53..88fe17c 100644 --- a/zix/sem.h +++ b/zix/sem.h @@ -20,8 +20,7 @@ #include #ifdef __APPLE__ -# include -# include +# include #else # include #endif @@ -95,38 +94,39 @@ zix_sem_try_wait(ZixSem* sem); #ifdef __APPLE__ struct ZixSemImpl { - MPSemaphoreID sem; + semaphore_t sem; }; static inline ZixStatus zix_sem_init(ZixSem* sem, unsigned initial) { - return MPCreateSemaphore(UINT_MAX, initial, &sem->sem) + return semaphore_create(mach_task_self(), &sem->sem, SYNC_POLICY_FIFO, 0) ? ZIX_STATUS_SUCCESS : ZIX_STATUS_ERROR; } static inline void zix_sem_destroy(ZixSem* sem) { - MPDeleteSemaphore(sem->sem); + semaphore_destroy(mach_task_self(), sem->sem); } static inline void zix_sem_post(ZixSem* sem) { - MPSignalSemaphore(sem->sem); + semaphore_signal(sem->sem); } static inline void zix_sem_wait(ZixSem* sem) { - MPWaitOnSemaphore(sem->sem, kDurationForever); + semaphore_wait(sem->sem); } static inline bool zix_sem_try_wait(ZixSem* sem) { - return MPWaitOnSemaphore(sem->sem, kDurationImmediate) == noErr; + const mach_timespec_t zero = { 0, 0 }; + return semaphore_timedwait(sem->sem, zero) == KERN_SUCCESS; } #else /* !defined(__APPLE__) */ -- cgit v1.2.1