From 2d52fae22143ec94c3741e60fd74374f9675e742 Mon Sep 17 00:00:00 2001 From: "marcel.braun" Date: Sat, 28 Feb 2026 17:03:03 +0100 Subject: Implement RAMDiskController and instantiate it in StorageManagement --- .../src/storage/RAMDisk/RAMDiskController.cpp | 29 +++++++++++++++++++++- kernel/devices/src/storage/StorageController.cpp | 6 ----- kernel/devices/src/storage/StorageManagement.cpp | 11 ++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) delete mode 100644 kernel/devices/src/storage/StorageController.cpp (limited to 'kernel/devices/src/storage') diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp index 9c6427d..c4807b0 100644 --- a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp @@ -1,6 +1,33 @@ #include "devices/storage/RAMDisk/RAMDiskController.hpp" +#include "kapi/boot_module/boot_module.hpp" +#include "kapi/boot_module/boot_module_registry.hpp" + +#include + +#include +#include + namespace devices::storage::ram_disk { - // TODO BA-FS26 implement ram disk controller functionality + ram_disk_controller::ram_disk_controller(kapi::boot_modules::boot_module_registry const * registry) + : m_boot_module_registry(registry) + {} + + auto ram_disk_controller::probe() -> void + { + std::ranges::for_each(*m_boot_module_registry, + [this](auto const & module) { create_device_from_boot_module(module); }); + } + + auto ram_disk_controller::devices_count() -> size_t + { + return m_devices.size(); + } + + auto create_device_from_boot_module(kapi::boot_modules::boot_module const & module) -> void + { + kstd::println("[RAM DISK CONTROLLER] Found boot module: {} at address {} with size {} bytes", module.name, + module.start_address, module.size); + } } // namespace devices::storage::ram_disk \ No newline at end of file diff --git a/kernel/devices/src/storage/StorageController.cpp b/kernel/devices/src/storage/StorageController.cpp deleted file mode 100644 index fe386cf..0000000 --- a/kernel/devices/src/storage/StorageController.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "devices/storage/StorageController.hpp" - -namespace devices::storage -{ - // TODO BA-FS26 implement storage controller functionality -} // namespace devices::storage \ No newline at end of file diff --git a/kernel/devices/src/storage/StorageManagement.cpp b/kernel/devices/src/storage/StorageManagement.cpp index 14c59ac..9cc9a06 100644 --- a/kernel/devices/src/storage/StorageManagement.cpp +++ b/kernel/devices/src/storage/StorageManagement.cpp @@ -1,8 +1,10 @@ #include "devices/storage/StorageManagement.hpp" +#include "kapi/boot_modules.hpp" #include "kapi/system.hpp" #include "devices/BlockDevice.hpp" +#include "devices/storage/RAMDisk/RAMDiskController.hpp" #include "devices/storage/StorageController.hpp" #include @@ -12,6 +14,7 @@ namespace devices::storage namespace { constinit auto static active_storage_management = std::optional{}; + constinit auto static active_ram_disk_controller = std::optional{}; } // namespace auto storage_management::init() -> void @@ -21,6 +24,14 @@ namespace devices::storage kapi::system::panic("[DEVICES] Storage management has already been initialized."); } active_storage_management.emplace(storage_management{}); + + active_ram_disk_controller.emplace(&kapi::boot_modules::get_boot_module_registry()); + active_storage_management->add_controller(&active_ram_disk_controller.value()); + + for (auto controller : active_storage_management->m_controllers) + { + controller->probe(); + } } auto storage_management::get() -> storage_management & -- cgit v1.2.3