diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-08 15:50:48 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-08 15:50:48 +0200 |
| commit | 0e92017837490d3ce806cf511977ada06d11a2a7 (patch) | |
| tree | 72943a5de6cf20a186c56e213a41d07914618175 /kernel/kapi | |
| parent | 2ed34cc51a534171f0fe08808634834bc22cf84d (diff) | |
| download | teachos-0e92017837490d3ce806cf511977ada06d11a2a7.tar.xz teachos-0e92017837490d3ce806cf511977ada06d11a2a7.zip | |
kapi/bus: fix eager initialization
Diffstat (limited to 'kernel/kapi')
| -rw-r--r-- | kernel/kapi/devices/bus.cpp | 10 |
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 |
