diff options
| -rw-r--r-- | kapi/include/kapi/boot_module/boot_module_registry.hpp | 2 | ||||
| -rw-r--r-- | kapi/include/kapi/boot_modules.hpp | 6 | ||||
| -rw-r--r-- | kernel/kapi/boot_modules.cpp | 21 |
3 files changed, 24 insertions, 5 deletions
diff --git a/kapi/include/kapi/boot_module/boot_module_registry.hpp b/kapi/include/kapi/boot_module/boot_module_registry.hpp index 3732a5f..eeb01ff 100644 --- a/kapi/include/kapi/boot_module/boot_module_registry.hpp +++ b/kapi/include/kapi/boot_module/boot_module_registry.hpp @@ -15,7 +15,7 @@ namespace kapi::boot_modules // ! providing access to them for the rest of the kernel. struct boot_module_registry { - using range_type = std::array<boot_module, 32>; // TODO BA-FS26 use kstd::vector when available + using range_type = std::array<boot_module, 1>; // TODO BA-FS26 use kstd::vector when available using value_type = range_type::value_type; using const_reference = range_type::const_reference; diff --git a/kapi/include/kapi/boot_modules.hpp b/kapi/include/kapi/boot_modules.hpp index 752b070..6eee169 100644 --- a/kapi/include/kapi/boot_modules.hpp +++ b/kapi/include/kapi/boot_modules.hpp @@ -21,5 +21,11 @@ namespace kapi::boot_modules //! @param registry A new boot module registry. auto set_boot_module_registry(boot_module_registry & registry) -> void; + //! @qualifier kernel-defined + //! Get the boot module registry. + //! + //! @returns The boot module registry. + auto get_boot_module_registry() -> boot_module_registry &; + } // namespace kapi::boot_modules #endif
\ No newline at end of file diff --git a/kernel/kapi/boot_modules.cpp b/kernel/kapi/boot_modules.cpp index 3f0f044..5a0ef7f 100644 --- a/kernel/kapi/boot_modules.cpp +++ b/kernel/kapi/boot_modules.cpp @@ -7,15 +7,28 @@ namespace kapi::boot_modules { - constinit auto static registry = std::optional<kapi::boot_modules::boot_module_registry>{}; + namespace + { + constinit auto static registry = std::optional<kapi::boot_modules::boot_module_registry>{}; + } // namespace - auto set_boot_module_registry(boot_module_registry & registry) -> void + auto set_boot_module_registry(boot_module_registry & new_registry) -> void { - if (kapi::boot_modules::registry) + if (registry) { system::panic("[x86_64] Boot module registry has already been set."); } - kapi::boot_modules::registry = registry; + registry = new_registry; + } + + auto get_boot_module_registry() -> boot_module_registry & + { + if (!registry) + { + system::panic("[x86_64] Boot module registry has not been initialized."); + } + + return *registry; } } // namespace kapi::boot_modules |
