From 035c8d6e38fd901e6769a81f67b8d9e1e3fcea20 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Thu, 26 Feb 2026 11:24:27 +0100 Subject: implemented boot_modules and boot_module_registry, init boot_modules in kernel main --- kernel/CMakeLists.txt | 1 + kernel/kapi/boot_modules.cpp | 21 +++++++++++++++++++++ kernel/src/main.cpp | 4 ++++ 3 files changed, 26 insertions(+) create mode 100644 kernel/kapi/boot_modules.cpp (limited to 'kernel') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 02e517c..b7b7c71 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,5 +1,6 @@ add_executable("kernel" # Platform-independent KAPI implementation + "kapi/boot_modules.cpp" "kapi/cio.cpp" "kapi/memory.cpp" "kapi/system.cpp" diff --git a/kernel/kapi/boot_modules.cpp b/kernel/kapi/boot_modules.cpp new file mode 100644 index 0000000..3f0f044 --- /dev/null +++ b/kernel/kapi/boot_modules.cpp @@ -0,0 +1,21 @@ +#include "kapi/boot_modules.hpp" + +#include "kapi/system.hpp" + +#include + +namespace kapi::boot_modules +{ + + constinit auto static registry = std::optional{}; + + auto set_boot_module_registry(boot_module_registry & registry) -> void + { + if (kapi::boot_modules::registry) + { + system::panic("[x86_64] Boot module registry has already been set."); + } + + kapi::boot_modules::registry = registry; + } +} // namespace kapi::boot_modules diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 01bcbb0..117a1d8 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -1,3 +1,4 @@ +#include "kapi/boot_modules.hpp" #include "kapi/cio.hpp" #include "kapi/memory.hpp" #include "kapi/system.hpp" @@ -16,5 +17,8 @@ auto main() -> int kstd::println("[OS] Memory subsystem initialized."); kapi::system::memory_initialized(); + kapi::boot_modules::init(); + kstd::println("[OS] Boot module registry initialized."); + kapi::system::panic("Returning from kernel main!"); } -- cgit v1.2.3