aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-06 19:04:16 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-06 19:04:16 +0200
commitd5c2e101d62f6b4b69c45c127e7a729d246da566 (patch)
tree0f26687fb172fc1852e9c4d58c351a76e9ceb50c /kernel
parent6f9f070db1c4af517be93cf07c452e65d8cea8cf (diff)
downloadteachos-d5c2e101d62f6b4b69c45c127e7a729d246da566.tar.xz
teachos-d5c2e101d62f6b4b69c45c127e7a729d246da566.zip
kapi/platform: invert discovery dependencies
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kapi/platform.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/kernel/kapi/platform.cpp b/kernel/kapi/platform.cpp
index deb72de..7638cf9 100644
--- a/kernel/kapi/platform.cpp
+++ b/kernel/kapi/platform.cpp
@@ -6,26 +6,21 @@
#include <kstd/memory>
+#include <cstddef>
#include <cstdint>
#include <utility>
namespace kapi::platform
{
- auto cpu_detected(kapi::devices::bus & bus, std::uint64_t hardware_id, bool is_bsp) -> bool
+ auto cpu_detected(kapi::devices::bus & bus, std::size_t major, std::size_t minor, std::uint64_t hardware_id,
+ bool is_bsp, kstd::unique_ptr<devices::device> core_interrupt_controller) -> bool
{
- auto static const core_major = kapi::devices::allocate_major_number();
- auto static const interrupt_controller_major = kapi::devices::allocate_major_number();
- auto static core_index = 0uz;
+ auto core = kstd::make_unique<kernel::devices::cpu::core>(major, minor, hardware_id, is_bsp);
- auto core = kstd::make_unique<kernel::devices::cpu::core>(core_major, core_index, hardware_id, is_bsp);
- auto lapic = kapi::platform::create_core_interrupt_controller(interrupt_controller_major, core_index, hardware_id);
-
- core->add_child(std::move(lapic));
+ core->add_child(std::move(core_interrupt_controller));
bus.add_child(std::move(core));
- ++core_index;
-
return true;
}