diff options
| author | Miguel <m.i@gmx.at> | 2018-08-17 21:41:21 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-08-17 21:41:21 +0200 |
| commit | c15925a24efe14f437d8a2699500241a58fdc8f9 (patch) | |
| tree | c0db3a7d2a4f857324735df35e9cc1f0539c5f24 /kernel/spinlock.c | |
| parent | 6fd78c2ff950310d8372ec0353553cc4a5a43e72 (diff) | |
cleanup and working on fifo pipes
Diffstat (limited to 'kernel/spinlock.c')
| -rw-r--r-- | kernel/spinlock.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/kernel/spinlock.c b/kernel/spinlock.c index a8bcc85..68e64a9 100644 --- a/kernel/spinlock.c +++ b/kernel/spinlock.c @@ -1,13 +1,14 @@ #define FOOLOS_MODULE_NAME "spinlock" +#include "spinlock.h" + +#include "config.h" #include "lib/logger/log.h" -#include "spinlock.h" #include "x86.h" // https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html -#define NUMBER_SPINLOCKS 16 -static spinlock spinlocks[NUMBER_SPINLOCKS]; +static volatile uint32_t spinlocks[NUMBER_SPINLOCKS]; void check_spinlocks() { @@ -16,18 +17,17 @@ void check_spinlocks() log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d",spinlocks[i]); } -void lock_spin(spinlock i) +void lock_spin(uint32_t i) { - spinlock *addr=spinlocks+i; -// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"locking %d (0x%08X)",i,addr); - + uint32_t *addr=spinlocks+i; +// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"locking %d (0x%08X)",i,addr); while(x86_xchg(addr,1)); } -void lock_release(spinlock i) +void lock_release(uint32_t i) { -// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"unlocking %d",i); - spinlock *addr=spinlocks+i; +// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"unlocking %d",i); + uint32_t *addr=spinlocks+i; asm("movb $0,%0"::"m"(*addr)); } |
