From 52a007ebee4e8ca284ec5767de01c311e9f1860e Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Tue, 3 Mar 2026 10:15:20 +0100 Subject: implement major and minor analog to the linux kernel --- kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp | 11 +++++++++++ kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp | 11 +++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'kernel/devices/src/storage/RAMDisk') diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp index ec2cb97..1f70e2d 100644 --- a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp @@ -21,6 +21,17 @@ namespace devices::storage::ram_disk auto ram_disk_controller::probe() -> void { + size_t current_device_index = 0; // Starte bei 0 + + std::ranges::for_each(*m_boot_module_registry, [this, ¤t_device_index](auto const & module) { + auto const minor = current_device_index * m_minors_per_device; + + // TODO BA-FS26 use push_back from kstd::vector when available + m_devices.at(0) = ram_disk_device{module, m_major, minor}; + + current_device_index++; + }); + std::ranges::for_each(*m_boot_module_registry, [this](auto const & module) { create_device_from_boot_module(module); }); } diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp index 339e7fa..f33cf94 100644 --- a/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp @@ -3,14 +3,21 @@ #include "kapi/boot_module/boot_module.hpp" #include "kapi/system.hpp" +#include "devices/BlockDevice.hpp" + #include #include namespace devices::storage::ram_disk { - ram_disk_device::ram_disk_device(kapi::boot_modules::boot_module const & module) - : m_boot_module(module) + ram_disk_device::ram_disk_device() // TODO BA-FS26 remove when kstd::vector is available + : block_device(0, 0) + {} + + ram_disk_device::ram_disk_device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor) + : block_device(major, minor) + , m_boot_module(module) {} auto ram_disk_device::read_block(size_t block_index, void * buffer) const -> void -- cgit v1.2.3