diff options
Diffstat (limited to 'kernel/devices/src')
| -rw-r--r-- | kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp | 29 | ||||
| -rw-r--r-- | kernel/devices/src/storage/StorageController.cpp | 6 | ||||
| -rw-r--r-- | kernel/devices/src/storage/StorageManagement.cpp | 11 |
3 files changed, 39 insertions, 7 deletions
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 <kstd/print> + +#include <algorithm> +#include <cstddef> + 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 <optional> @@ -12,6 +14,7 @@ namespace devices::storage namespace { constinit auto static active_storage_management = std::optional<storage_management>{}; + constinit auto static active_ram_disk_controller = std::optional<ram_disk::ram_disk_controller>{}; } // 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 & |
