X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9440be3a5115a91dcdf8dff05a361cac4b6cea29..a0655e5d30f3cdc73b1aaaa4825d8fae9f92ce4a:/lunaix-os/includes/lunaix/ds/mutex.h diff --git a/lunaix-os/includes/lunaix/ds/mutex.h b/lunaix-os/includes/lunaix/ds/mutex.h new file mode 100644 index 0000000..5e166e5 --- /dev/null +++ b/lunaix-os/includes/lunaix/ds/mutex.h @@ -0,0 +1,26 @@ +#ifndef __LUNAIX_MUTEX_H +#define __LUNAIX_MUTEX_H + +#include "semaphore.h" + +// TODO: implement mutex lock + +typedef struct sem_t mutex_t; + +static inline void mutex_init(mutex_t *mutex) { + sem_init(mutex, 1); +} + +static inline unsigned int mutex_on_hold(mutex_t *mutex) { + return !atomic_load(&mutex->counter); +} + +static inline void mutex_lock(mutex_t *mutex) { + sem_wait(mutex); +} + +static inline void mutex_unlock(mutex_t *mutex) { + sem_post(mutex); +} + +#endif /* __LUNAIX_MUTEX_H */