aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-09-29 11:30:12 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-09-29 11:30:12 +0200
commit61deb2cc5ffe086f83908ea9b980f7d8dab0198a (patch)
tree358469628c5cad81cb53b7cb82d1dc9a4950d480 /kernel
parentc35fe2ecfe1eba2911d155ad5ade41ca18a765ff (diff)
downloadkernel-61deb2cc5ffe086f83908ea9b980f7d8dab0198a.tar.xz
kernel-61deb2cc5ffe086f83908ea9b980f7d8dab0198a.zip
kapi/interrupts: tests: make IRQ state thread specific
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/test_support/kapi/interrupts.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/kernel/kernel/test_support/kapi/interrupts.cpp b/kernel/kernel/test_support/kapi/interrupts.cpp
index 79b03729..9bd3a515 100644
--- a/kernel/kernel/test_support/kapi/interrupts.cpp
+++ b/kernel/kernel/test_support/kapi/interrupts.cpp
@@ -1,23 +1,32 @@
#include <kapi/interrupts.hpp>
#include <atomic>
+#include <map>
+#include <thread>
namespace kapi::interrupts
{
namespace
{
- std::atomic_bool interrupt_state = false;
+ std::map<std::thread::id, std::atomic_flag> interrupt_state{};
}
auto enabled() -> bool
{
- return interrupt_state.load(std::memory_order::relaxed);
+ return interrupt_state[std::this_thread::get_id()].test();
}
auto enabled(bool value) -> void
{
- interrupt_state.store(value, std::memory_order::relaxed);
+ if (value)
+ {
+ interrupt_state[std::this_thread::get_id()].test_and_set(std::memory_order::relaxed);
+ }
+ else
+ {
+ interrupt_state[std::this_thread::get_id()].clear(std::memory_order::relaxed);
+ }
}
} // namespace kapi::interrupts \ No newline at end of file