aboutsummaryrefslogtreecommitdiff
path: root/include/apos/lock.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/apos/lock.h')
-rw-r--r--include/apos/lock.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/apos/lock.h b/include/apos/lock.h
index b8983fa..178140b 100644
--- a/include/apos/lock.h
+++ b/include/apos/lock.h
@@ -2,12 +2,14 @@
#define LOCK_H
#include <apos/atomic.h>
+#include <apos/irq.h>
typedef atomic_int spinlock_t;
#include <lock.h>
static inline void spin_lock(spinlock_t *lck)
{
+ disable_irq();
do {
while (atomic_load_explicit(lck, memory_order_acquire))
optional_pause();
@@ -18,6 +20,7 @@ static inline void spin_lock(spinlock_t *lck)
static inline void spin_unlock(spinlock_t *lck)
{
atomic_store_explicit(lck, 0, memory_order_release);
+ enable_irq();
}
#endif /* LOCK_H */