diff options
author | Test_User <hax@andrewyu.org> | 2024-07-19 23:26:45 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-07-19 23:26:45 -0400 |
commit | 59a07e28c5ef018d0c5cecd12d52ff10f5dc5b1a (patch) | |
tree | 5ca0a30a2426d5e6ba72ae61ad3c0e2f52cdd6cd /mutex.h | |
parent | e755e8b341eea1b37ef82584cd65a05edf8fdbaa (diff) | |
download | haxircd-59a07e28c5ef018d0c5cecd12d52ff10f5dc5b1a.tar.gz haxircd-59a07e28c5ef018d0c5cecd12d52ff10f5dc5b1a.zip |
Minimal support for non-semaphore-supporting systems
Diffstat (limited to 'mutex.h')
-rw-r--r-- | mutex.h | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -26,7 +26,7 @@ #pragma once -#ifdef USE_FUTEX +#if defined(USE_FUTEX) #include <unistd.h> #include <sys/syscall.h> @@ -61,6 +61,26 @@ inline void mutex_destroy(uint32_t *futex) { return; } +#elif defined(USE_MISERABLE_SPINLOCKS) + +#define MUTEX_TYPE char + +inline void mutex_init(char *lock) { + *lock = 0; +} + +inline void mutex_lock(char *lock) { + while (__sync_lock_test_and_set(lock, 0x1)); +} + +inline void mutex_unlock(char *lock) { + __sync_lock_release(lock); +} + +inline void mutex_destroy(char *lock) { + return; +} + #else #include <semaphore.h> |