diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-23 21:09:34 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-23 21:46:16 +0200 |
| commit | fbc31c3e385363f9eaba93238756a739e09ce873 (patch) | |
| tree | 05343a458fb1e40df5babb46bca4a217fe6d1503 /kernel/kapi/devices.cpp | |
| parent | cb87b4dd8e874d5d7b219487ca38f55756c205df (diff) | |
| download | kernel-fbc31c3e385363f9eaba93238756a739e09ce873.tar.xz kernel-fbc31c3e385363f9eaba93238756a739e09ce873.zip | |
kapi: add driver registry
Diffstat (limited to 'kernel/kapi/devices.cpp')
| -rw-r--r-- | kernel/kapi/devices.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp index 8f3011fe..5eed1b87 100644 --- a/kernel/kapi/devices.cpp +++ b/kernel/kapi/devices.cpp @@ -2,6 +2,7 @@ #include <kernel/devices/root_bus.hpp> +#include <kapi/devices/driver_registry.hpp> #include <kapi/system.hpp> #include <kapi/test_support/devices.hpp> @@ -9,6 +10,7 @@ #include <kstd/memory.hpp> #include <kstd/print.hpp> #include <kstd/string.hpp> +#include <kstd/vector.hpp> #include <string_view> #include <utility> @@ -29,6 +31,7 @@ namespace kapi::devices } interface_registry::init(); + driver_registry::init(); root_bus = kstd::make_shared<kernel::devices::root_bus>(); register_device(root_bus); @@ -85,6 +88,21 @@ namespace kapi::devices return found->second.lock(); } + auto all() -> kstd::vector<kstd::shared_ptr<device>> + { + auto result = kstd::vector<kstd::shared_ptr<device>>{}; + + for (auto const & [name, weak_device] : device_tree) + { + if (auto device = weak_device.lock()) + { + result.push_back(std::move(device)); + } + } + + return result; + } + } // namespace kapi::devices namespace kapi::test_support::devices @@ -92,6 +110,7 @@ namespace kapi::test_support::devices auto deinit() -> void { deinit_interface_registry(); + deinit_driver_registry(); kapi::devices::root_bus.reset(); } |
