aboutsummaryrefslogtreecommitdiff
path: root/include/apos/lock.h
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2021-12-29 18:47:16 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2021-12-29 18:49:28 +0200
commit4e5595a089c815febd7a0d42ab62940bf13f73ac (patch)
tree322f35d9315e9966de8a66052811858df0144085 /include/apos/lock.h
parenta12e50e5a7dae52ed8bd5a24cc6576371e20985b (diff)
downloadkmi-4e5595a089c815febd7a0d42ab62940bf13f73ac.tar.gz
kmi-4e5595a089c815febd7a0d42ab62940bf13f73ac.zip
Preparations for refactoring
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 */