git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: serial device interfacing
[lunaix-os.git]
/
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
index 97101ef4ce68090c086fc7d61020964a2e81659b..162186c05139b0376c552682e483c9ae0ba99e01 100644
(file)
--- a/
lunaix-os/includes/lunaix/ds/mutex.h
+++ b/
lunaix-os/includes/lunaix/ds/mutex.h
@@
-1,25
+1,25
@@
#ifndef __LUNAIX_MUTEX_H
#define __LUNAIX_MUTEX_H
#ifndef __LUNAIX_MUTEX_H
#define __LUNAIX_MUTEX_H
-#include "semaphore.h"
#include <lunaix/types.h>
#include <lunaix/types.h>
+#include <stdatomic.h>
typedef struct mutex_s
{
typedef struct mutex_s
{
-
struct sem_t sem
;
+
atomic_ulong lk
;
pid_t owner;
} mutex_t;
static inline void
mutex_init(mutex_t* mutex)
{
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)
{
}
static inline int
mutex_on_hold(mutex_t* mutex)
{
- return
!atomic_load(&mutex->sem.counter
);
+ return
atomic_load(&mutex->lk
);
}
void
}
void