aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/devices.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kapi/devices.cpp')
-rw-r--r--kernel/kapi/devices.cpp65
1 files changed, 4 insertions, 61 deletions
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp
index 64e549f3..b0f384ab 100644
--- a/kernel/kapi/devices.cpp
+++ b/kernel/kapi/devices.cpp
@@ -8,12 +8,9 @@
#include <kstd/flat_map.hpp>
#include <kstd/memory.hpp>
-#include <kstd/print.hpp>
#include <kstd/string.hpp>
-#include <kstd/vector.hpp>
#include <string_view>
-#include <utility>
namespace kapi::devices
{
@@ -30,11 +27,12 @@ namespace kapi::devices
kapi::system::panic("[OS:DEV] The device subsystem has already been initialized");
}
+ device_registry::init();
interface_registry::init();
kernel::drivers::init();
root_bus = kstd::make_shared<kernel::devices::root_bus>();
- register_device(root_bus);
+ device_registry::get().add(root_bus);
}
auto get_root_bus() -> kstd::shared_ptr<bus>
@@ -46,70 +44,15 @@ namespace kapi::devices
return root_bus;
}
- auto register_device(kstd::shared_ptr<device> device) -> bool
- {
- if (!device)
- {
- return false;
- }
-
- kstd::println("[OS:DEV] Registering device {}", device->name());
-
- auto found = device_tree.find(device->name());
- if (found != device_tree.end())
- {
- if (!found->second.expired())
- {
- return false;
- }
-
- found->second = device;
- return true;
- }
-
- return device_tree.emplace(device->name(), device).second;
- }
-
- auto unregister_device(device &) -> bool
- {
- kstd::println("[OS:DEV] TODO: implement device deregistration");
- return false;
- }
-
- auto find_device(std::string_view name) -> kstd::shared_ptr<device>
- {
- auto found = device_tree.find(kstd::string{name});
- if (found == device_tree.end())
- {
- return nullptr;
- }
-
- 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
{
auto deinit() -> void
{
- deinit_interface_registry();
deinit_driver_registry();
+ deinit_interface_registry();
+ deinit_device_registry();
kapi::devices::root_bus.reset();
}