From 2500120f64db83fc682f38a83f7f9e03ed8a5123 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Mon, 17 Mar 2014 16:50:15 +0100 Subject: add spin-locks --- kernel/task/include/task/lock.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'kernel/task/include/task/lock.h') diff --git a/kernel/task/include/task/lock.h b/kernel/task/include/task/lock.h index eaa661c..47246b2 100644 --- a/kernel/task/include/task/lock.h +++ b/kernel/task/include/task/lock.h @@ -1,20 +1,21 @@ #ifndef LOCK_H #define LOCK_H -#include "task/shed.h" +#include "task/sched.h" -typedef char spin_lock_t; +typedef volatile char spin_lock_t; #define SPIN_LOCK_UNLOCKED 0 +#define SPIN_LOCK_LOCKED 0 -static inline void spin_lock(struct spin_lock_t* lock) { +static inline void spin_lock(spin_lock_t* lock) { while(*lock != SPIN_LOCK_UNLOCKED) {yield();}; cli(); - *lock = 1; + *lock = SPIN_LOCK_LOCKED; sei(); } -static inline void spin_unlock(struct spin_lock_t* lock) { +static inline void spin_unlock(spin_lock_t* lock) { cli(); *lock = SPIN_LOCK_UNLOCKED; sei(); -- cgit v1.2.3