aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/tests/kapi/cpu.cpp16
-rw-r--r--kernel/tests/src/main.cpp4
2 files changed, 19 insertions, 1 deletions
diff --git a/kernel/tests/kapi/cpu.cpp b/kernel/tests/kapi/cpu.cpp
index f03fca0..3ecaadc 100644
--- a/kernel/tests/kapi/cpu.cpp
+++ b/kernel/tests/kapi/cpu.cpp
@@ -2,9 +2,25 @@
#include <kapi/cpu.hpp>
+#include <atomic>
+#include <stdexcept>
+
namespace kapi::cpu
{
+ auto init() -> void
+ {
+ auto static initialized = std::atomic_flag{};
+ 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
{
throw kernel::tests::cpu::halt{};
diff --git a/kernel/tests/src/main.cpp b/kernel/tests/src/main.cpp
index f1f9bb4..a21aa9d 100644
--- a/kernel/tests/src/main.cpp
+++ b/kernel/tests/src/main.cpp
@@ -1,10 +1,12 @@
#include <kapi/cio.hpp>
+#include <kapi/cpu.hpp>
#include <catch2/catch_session.hpp>
auto main(int argc, char ** argv) -> int
{
kapi::cio::init();
+ kapi::cpu::init();
return Catch::Session().run(argc, argv);
-} \ No newline at end of file
+}