diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-16 14:16:33 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-16 14:16:33 +0200 |
| commit | a6166befa7421be233ece97e184139870bbc0af7 (patch) | |
| tree | 905c5a876911d0ec2bf7270f6ba0e75b8680eb7c /kernel/kapi/devices.cpp | |
| parent | d04cb84074b6cdb3d36f5d5e1e22dbc9294724f7 (diff) | |
| download | kernel-a6166befa7421be233ece97e184139870bbc0af7.tar.xz kernel-a6166befa7421be233ece97e184139870bbc0af7.zip | |
kapi: introduce device interfaces
Diffstat (limited to 'kernel/kapi/devices.cpp')
| -rw-r--r-- | kernel/kapi/devices.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp index de4bf9e5..ef72c667 100644 --- a/kernel/kapi/devices.cpp +++ b/kernel/kapi/devices.cpp @@ -3,6 +3,7 @@ #include <kernel/devices/root_bus.hpp> #include <kapi/system.hpp> +#include <kapi/test_support/devices.hpp> #include <kstd/flat_map.hpp> #include <kstd/memory.hpp> @@ -25,12 +26,13 @@ namespace kapi::devices auto init() -> void { - auto static is_initialized = std::atomic_flag{}; - if (is_initialized.test_and_set()) + if (root_bus.has_value()) { - return; + kapi::system::panic("[OS:DEV] The device subsystem has already been initialized"); } + interface_registry::init(); + auto & bus = root_bus.emplace(); register_device(bus); bus.init(); @@ -83,4 +85,15 @@ namespace kapi::devices return nullptr; } -} // namespace kapi::devices
\ No newline at end of file +} // namespace kapi::devices + +namespace kapi::test_support::devices +{ + auto deinit() -> void + { + deinit_interface_registry(); + + kapi::devices::root_bus.reset(); + kapi::devices::next_major_number = 1; + } +} // namespace kapi::test_support::devices
\ No newline at end of file |
