From fa37a2136c59a16e3112a957ccdb8197ecf2a302 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 3 May 2025 20:15:26 +1000 Subject: [PATCH] Apple: use mutexes instead of spinlocks on apple Apple do not support spinlocks so we must remap to the much slower mutexes instead if we think we are compiling for apple. Signed-off-by: Ronnie Sahlberg --- include/iscsi-multithreading.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/include/iscsi-multithreading.h b/include/iscsi-multithreading.h index a9e3809..4c691c4 100644 --- a/include/iscsi-multithreading.h +++ b/include/iscsi-multithreading.h @@ -123,8 +123,18 @@ static inline int iscsi_mt_mutex_unlock(libiscsi_mutex_t *mutex) return pthread_mutex_unlock(mutex); } +#ifdef __APPLE__ +/* Apple do not have spinlocks so we have to use the much slower + * mutexes instead. + */ +#define libiscsi_spinlock_t libiscsi_mutex_t +#define iscsi_mt_spin_init(x, y) iscsi_mt_mutex_init(x) +#define iscsi_mt_spin_destroy iscsi_mt_mutex_destroy +#define iscsi_mt_spin_lock iscsi_mt_mutex_lock +#define iscsi_mt_spin_unlock iscsi_mt_mutex_unlock +#else /* __APPLE__ */ typedef pthread_spinlock_t libiscsi_spinlock_t; - static inline int iscsi_mt_spin_init(libiscsi_spinlock_t *spinlock, int shared) +static inline int iscsi_mt_spin_init(libiscsi_spinlock_t *spinlock, int shared) { return pthread_spin_init(spinlock, shared); } @@ -140,7 +150,8 @@ static inline int iscsi_mt_spin_unlock(libiscsi_spinlock_t *spinlock) { return pthread_spin_unlock(spinlock); } - +#endif /* __APPLE__ */ + #elif defined(WIN32) typedef HANDLE libiscsi_mutex_t; static inline int iscsi_mt_mutex_init(libiscsi_mutex_t* mutex)