diff options
Diffstat (limited to 'src/kernel/spinlock.C')
-rw-r--r-- | src/kernel/spinlock.C | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/kernel/spinlock.C b/src/kernel/spinlock.C new file mode 100644 index 000000000..bfada05c4 --- /dev/null +++ b/src/kernel/spinlock.C @@ -0,0 +1,12 @@ +#include <kernel/spinlock.H> + +void Spinlock::lock() +{ + uint64_t reservation = __sync_fetch_and_add(&iv_reserve, 1); + while(iv_ready != reservation); +} + +void Spinlock::unlock() +{ + __sync_add_and_fetch(&iv_ready, 1); +} |