aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
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.");