aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-02-27 23:23:18 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:42:15 +0100
commit296d58550e8e1202d83e66034c24e9454a1b67dc (patch)
tree655d63a267a4c05acf4c5add5e44541983f200ab
parente84c7fbf336847d3ff62aac10ed8f6d04a06cbe8 (diff)
downloadteachos-296d58550e8e1202d83e66034c24e9454a1b67dc.tar.xz
teachos-296d58550e8e1202d83e66034c24e9454a1b67dc.zip
- add boot_module_registry getter
-rw-r--r--kapi/include/kapi/boot_module/boot_module_registry.hpp2
-rw-r--r--kapi/include/kapi/boot_modules.hpp6
-rw-r--r--kernel/kapi/boot_modules.cpp21
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