From c15925a24efe14f437d8a2699500241a58fdc8f9 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 17 Aug 2018 21:41:21 +0200 Subject: cleanup and working on fifo pipes --- kernel/spinlock.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'kernel/spinlock.c') 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)); } -- cgit v1.2.3