feat: serial device interfacing
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / mutex.h
index 97101ef4ce68090c086fc7d61020964a2e81659b..162186c05139b0376c552682e483c9ae0ba99e01 100644 (file)
@@ -1,25 +1,25 @@
 #ifndef __LUNAIX_MUTEX_H
 #define __LUNAIX_MUTEX_H
 
-#include "semaphore.h"
 #include <lunaix/types.h>
+#include <stdatomic.h>
 
 typedef struct mutex_s
 {
-    struct sem_t sem;
+    atomic_ulong lk;
     pid_t owner;
 } mutex_t;
 
 static inline void
 mutex_init(mutex_t* mutex)
 {
-    sem_init(&mutex->sem, 1);
+    mutex->lk = ATOMIC_VAR_INIT(0);
 }
 
 static inline int
 mutex_on_hold(mutex_t* mutex)
 {
-    return !atomic_load(&mutex->sem.counter);
+    return atomic_load(&mutex->lk);
 }
 
 void