diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 13:59:27 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 14:02:13 +0200 |
| commit | b84c4c9d8c90f3d3fd5a60de282278912fad2f04 (patch) | |
| tree | ac283ed18407a8e97bcd14b2cfca3da74f60547b /kernel | |
| parent | d0c532af74d8d486d734904fd330d5dae7f49754 (diff) | |
| download | teachos-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.hpp | 4 | ||||
| -rw-r--r-- | kernel/src/devices/root_bus.cpp | 4 | ||||
| -rw-r--r-- | kernel/src/main.cpp | 3 |
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."); |
