From 85cf698aae2a2a2aaa2a8e401ed4a8584eb93a58 Mon Sep 17 00:00:00 2001 From: Marvin Friedrich Date: Sun, 11 Oct 2026 02:00:55 +0200 Subject: [PATCH] lock irqs in spinlock --- core/spin.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/spin.c b/core/spin.c index 1da5ea8..6b18418 100644 --- a/core/spin.c +++ b/core/spin.c @@ -1,3 +1,4 @@ +#include #include #include @@ -7,6 +8,7 @@ void spin_init(struct spinlock* spin) { } void spin_lock(struct spinlock* spin) { + irq_lock(); uint32_t my = atomic_fetch_add_explicit(&spin->next, 1, memory_order_relaxed); while (atomic_load_explicit(&spin->owner, memory_order_acquire) != my) { @@ -17,4 +19,5 @@ void spin_lock(struct spinlock* spin) { void spin_unlock(struct spinlock* spin) { uint32_t val = atomic_load_explicit(&spin->owner, memory_order_relaxed); atomic_store_explicit(&spin->owner, val + 1, memory_order_release); + irq_unlock(); }