From 3d09b0bd2c35740b34b87c1400e0a3d93647a5d2 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 24 Jul 2026 19:27:20 +0200 Subject: kapi: extract real boot module registry singleton --- arch/x86_64/kapi/boot_modules.cpp | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) (limited to 'arch/x86_64') diff --git a/arch/x86_64/kapi/boot_modules.cpp b/arch/x86_64/kapi/boot_modules.cpp index f910bdbc..361a155a 100644 --- a/arch/x86_64/kapi/boot_modules.cpp +++ b/arch/x86_64/kapi/boot_modules.cpp @@ -5,7 +5,7 @@ #include #include -#include +#include #include #include @@ -14,40 +14,26 @@ #include #include -#include #include #include -#include namespace kapi::boot_modules { - namespace - { - auto constinit registry = std::optional{}; - } // namespace auto init() -> void { - auto static constinit is_initialized = std::atomic_flag{}; - if (is_initialized.test_and_set()) - { - system::panic("[x86_64] Boot module registry has already been initialized."); - } - - kstd::println("[x86_64:BOOT_MODULES] Initializing boot module registry."); + registry::init(); - registry.emplace(kapi::boot_modules::boot_module_registry{}); + kstd::println("[x86_64:BOOT_MODULES] Registering boot modules."); auto modules = boot::bootstrap_information.mbi->modules(); std::ranges::for_each(modules, [](auto const & module) { - registry->add_boot_module(kapi::boot_modules::boot_module{ + registry::get().add(kapi::boot_modules::boot_module{ .name = module.string(), .start_address = memory::linear_address{module.start_address + std::bit_cast(&arch::boot::TEACHOS_VMA)}, .size = module.end_address - module.start_address, }); }); - - set_boot_module_registry(*registry); } } // namespace kapi::boot_modules \ No newline at end of file -- cgit v1.2.3