diff options
author | Alex Auvolat <alex.auvolat@ens.fr> | 2014-12-06 23:15:06 +0100 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ens.fr> | 2014-12-06 23:15:06 +0100 |
commit | acc786cb5805d057932ada3e7c571bb8e901cd67 (patch) | |
tree | fe6a9da99a9c5492f1004363a2a1a7aa8bfc8fed /kernel/include/mutex.h | |
parent | 0b5d6568c468075b6c1a2de065332b270345611b (diff) | |
download | kogata-acc786cb5805d057932ada3e7c571bb8e901cd67.tar.gz kogata-acc786cb5805d057932ada3e7c571bb8e901cd67.zip |
Begin review of taking model : making things thread safe.
Diffstat (limited to 'kernel/include/mutex.h')
-rw-r--r-- | kernel/include/mutex.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/include/mutex.h b/kernel/include/mutex.h new file mode 100644 index 0000000..6814adf --- /dev/null +++ b/kernel/include/mutex.h @@ -0,0 +1,21 @@ +#pragma once + +#include <stdint.h> + +#define MUTEX_LOCKED 1 +#define MUTEX_UNLOCKED 0 + + +typedef uint32_t mutex_t; + +void mutex_lock(mutex_t* mutex); //wait for mutex to be free +int mutex_try_lock(mutex_t* mutex); //lock mutex only if free, returns !0 if locked, 0 if was busy +void mutex_unlock(mutex_t* mutex); + +// the mutex code assumes a yield() function is defined somewhere +void yield(); + +#define STATIC_MUTEX(name) static mutex_t name __attribute__((section("locks"))) = MUTEX_UNLOCKED; + + +/* vim: set ts=4 sw=4 tw=0 noet :*/ |