aboutsummaryrefslogtreecommitdiff
path: root/kernel/devices/src/storage/RAMDisk
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-03 10:15:20 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:42:30 +0100
commit52a007ebee4e8ca284ec5767de01c311e9f1860e (patch)
treeca9ea7720562d04b8590e142e908f31030eee6a8 /kernel/devices/src/storage/RAMDisk
parentd2e9e3ee57918ddd4a1f81e70304dc15964555ff (diff)
downloadteachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.tar.xz
teachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.zip
implement major and minor analog to the linux kernel
Diffstat (limited to 'kernel/devices/src/storage/RAMDisk')
-rw-r--r--kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp11
-rw-r--r--kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp11
2 files changed, 20 insertions, 2 deletions
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, &current_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 <kstd/cstring>
#include <cstddef>
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