aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/test_support/kapi/cpu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/test_support/kapi/cpu.cpp')
-rw-r--r--kernel/src/test_support/kapi/cpu.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/kernel/src/test_support/kapi/cpu.cpp b/kernel/src/test_support/kapi/cpu.cpp
index 3ecaadc..9b2f0b9 100644
--- a/kernel/src/test_support/kapi/cpu.cpp
+++ b/kernel/src/test_support/kapi/cpu.cpp
@@ -8,17 +8,29 @@
namespace kapi::cpu
{
- auto init() -> void
+ namespace
{
auto static initialized = std::atomic_flag{};
+ }
+
+ auto reset() -> void
+ {
+ if (!initialized.test())
+ {
+ throw std::logic_error{"kapi::cpu::reset() called before kapi::cpu::init()"};
+ }
+
+ initialized.clear();
+ }
+
+ auto init() -> void
+ {
if (initialized.test_and_set())
{
throw std::logic_error("kapi::cpu::init() called more than once");
}
// TODO: make sure that simulated interrupt can run.
-
- return;
}
auto halt() -> void