aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-02 13:59:27 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-02 14:02:13 +0200
commitb84c4c9d8c90f3d3fd5a60de282278912fad2f04 (patch)
treeac283ed18407a8e97bcd14b2cfca3da74f60547b /kernel
parentd0c532af74d8d486d734904fd330d5dae7f49754 (diff)
downloadteachos-b84c4c9d8c90f3d3fd5a60de282278912fad2f04.tar.xz
teachos-b84c4c9d8c90f3d3fd5a60de282278912fad2f04.zip
x86_64/devices: implement ISA bus stub
Diffstat (limited to 'kernel')
-rw-r--r--kernel/include/kernel/devices/root_bus.hpp4
-rw-r--r--kernel/src/devices/root_bus.cpp4
-rw-r--r--kernel/src/main.cpp3
3 files changed, 8 insertions, 3 deletions
diff --git a/kernel/include/kernel/devices/root_bus.hpp b/kernel/include/kernel/devices/root_bus.hpp
index f7bfbfb..d92914d 100644
--- a/kernel/include/kernel/devices/root_bus.hpp
+++ b/kernel/include/kernel/devices/root_bus.hpp
@@ -8,6 +8,8 @@
#include <kstd/print>
#include <kstd/vector>
+#include <atomic>
+
namespace kernel::devices
{
@@ -24,7 +26,7 @@ namespace kernel::devices
private:
kstd::vector<kstd::unique_ptr<device>> m_children{};
kstd::vector<kstd::observer_ptr<device>> m_observers{};
- bool m_initialized{};
+ std::atomic_flag m_initialized{};
};
} // namespace kernel::devices
diff --git a/kernel/src/devices/root_bus.cpp b/kernel/src/devices/root_bus.cpp
index a7f3c1a..75b5b80 100644
--- a/kernel/src/devices/root_bus.cpp
+++ b/kernel/src/devices/root_bus.cpp
@@ -24,7 +24,7 @@ namespace kernel::devices
auto observer = m_observers.emplace_back(child.get());
m_children.push_back(std::move(child));
- if (m_initialized)
+ if (m_initialized.test())
{
kstd::println("Initializing child device '{}'", observer->name());
if (!observer->init())
@@ -41,7 +41,7 @@ namespace kernel::devices
auto root_bus::init() -> bool
{
- if (m_initialized)
+ if (m_initialized.test_and_set())
{
kapi::system::panic("[kernel:devices] Root bus already initialized!");
}
diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp
index 9d6028d..eaaf87f 100644
--- a/kernel/src/main.cpp
+++ b/kernel/src/main.cpp
@@ -183,6 +183,9 @@ auto main() -> int
kapi::devices::init();
kstd::println("[OS] System root bus initialized.");
+ kapi::devices::init_platform_devices();
+ kstd::println("[OS] Platform devices initialized.");
+
kapi::boot_modules::init();
kstd::println("[OS] Boot module registry initialized.");