aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/devices/storage/management.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-03 09:32:30 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-03 09:32:30 +0200
commit3012fa5dfe5dfed5e83baf9b40934ed8e8317627 (patch)
tree00d1c60a3d5d1cdfa55e0ff1691cd3362b6064ee /kernel/src/devices/storage/management.cpp
parent5d8a58d538515ffc57ddf82ba40ba763990a8696 (diff)
downloadkernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.tar.xz
kernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.zip
kernel: rearrange sources according to p1204
Diffstat (limited to 'kernel/src/devices/storage/management.cpp')
-rw-r--r--kernel/src/devices/storage/management.cpp95
1 files changed, 0 insertions, 95 deletions
diff --git a/kernel/src/devices/storage/management.cpp b/kernel/src/devices/storage/management.cpp
deleted file mode 100644
index 06efc27d..00000000
--- a/kernel/src/devices/storage/management.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-#include <kernel/devices/storage/management.hpp>
-
-#include <kernel/devices/storage/controller.hpp>
-#include <kernel/devices/storage/ram_disk/controller.hpp>
-
-#include <kapi/boot_modules.hpp>
-#include <kapi/devices/device.hpp>
-#include <kapi/system.hpp>
-
-#include <kstd/memory>
-#include <kstd/vector>
-
-#include <algorithm>
-#include <cstddef>
-#include <optional>
-#include <ranges>
-
-namespace
-{
- constexpr size_t static minors_per_device = 16;
- constexpr size_t static start_major = 1;
- constinit size_t static next_free_major = start_major;
-
- constinit auto static storage_management = std::optional<kernel::devices::storage::management>{};
-} // namespace
-
-namespace kernel::devices::storage
-{
- auto management::init() -> void
- {
- if (storage_management)
- {
- kapi::system::panic("[DEVICES] Storage management has already been initialized.");
- }
- storage_management.emplace(management{});
-
- auto ram_disk_controller = kstd::make_shared<ram_disk::controller>(&kapi::boot_modules::get_boot_module_registry());
- storage_management->add_controller(ram_disk_controller);
-
- std::ranges::for_each(storage_management->m_controllers, [](auto controller) { controller->probe(); });
- }
-
- auto management::get() -> management &
- {
- if (!storage_management)
- {
- kapi::system::panic("[DEVICES] Storage management has not been initialized.");
- }
-
- return *storage_management;
- }
-
- auto management::add_controller(kstd::shared_ptr<controller> const & controller) -> void
- {
- controller->set_ids(next_free_major++, minors_per_device);
- m_controllers.push_back(controller);
- }
-
- auto management::all_controllers() const -> kstd::vector<kstd::shared_ptr<controller>> const &
- {
- return m_controllers;
- }
-
- auto management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<kapi::devices::device>
- {
- auto found = std::ranges::find_if(m_controllers, [=](auto const & controller) {
- if (controller != nullptr && controller->major() == major)
- {
- return controller->device_by_minor(minor) != nullptr;
- }
- return false;
- });
-
- if (found != std::ranges::cend(m_controllers))
- {
- return found->get()->device_by_minor(minor);
- }
-
- return nullptr;
- }
-
- auto management::determine_boot_device() -> kstd::shared_ptr<kapi::devices::device>
- {
- return device_by_major_minor(start_major, 0);
- }
-} // namespace kernel::devices::storage
-
-namespace kernel::tests::devices::storage::management
-{
- auto deinit() -> void
- {
- storage_management.reset();
- next_free_major = start_major;
- }
-} // namespace kernel::tests::devices::storage::management