aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-08 15:50:48 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-08 15:50:48 +0200
commit0e92017837490d3ce806cf511977ada06d11a2a7 (patch)
tree72943a5de6cf20a186c56e213a41d07914618175 /kernel/kapi
parent2ed34cc51a534171f0fe08808634834bc22cf84d (diff)
downloadteachos-0e92017837490d3ce806cf511977ada06d11a2a7.tar.xz
teachos-0e92017837490d3ce806cf511977ada06d11a2a7.zip
kapi/bus: fix eager initialization
Diffstat (limited to 'kernel/kapi')
-rw-r--r--kernel/kapi/devices/bus.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/kapi/devices/bus.cpp b/kernel/kapi/devices/bus.cpp
index 68874c4..66b84d2 100644
--- a/kernel/kapi/devices/bus.cpp
+++ b/kernel/kapi/devices/bus.cpp
@@ -20,20 +20,26 @@ namespace kapi::devices
auto bus::init() -> bool
{
- if (m_initialized.test_and_set())
+ if (m_init_was_called.test_and_set())
{
+ kstd::println(kstd::print_sink::stderr, "[OS:DEV] Bus {}:{}:{} already initialized", name(), major(), minor());
return true;
}
if (!probe())
{
+ kstd::println(kstd::print_sink::stderr, "[OS:DEV] Bus {}:{}:{} probe failed", name(), major(), minor());
return false;
}
- return std::ranges::fold_left(m_devices, true, [&](bool acc, auto & child) -> bool {
+ auto child_status = std::ranges::fold_left(m_devices, true, [&](bool acc, auto & child) -> bool {
kstd::println("[OS:DEV] Initializing child device {}@{}", child->name(), name());
return child->init() && acc;
});
+
+ m_initialized.test_and_set();
+
+ return child_status;
}
auto bus::add_child(kstd::unique_ptr<device> child) -> void