diff options
Diffstat (limited to 'kernel')
3 files changed, 15 insertions, 22 deletions
diff --git a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp index aa736a4..eb88f86 100644 --- a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp +++ b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_DEVICE_HPP #define TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_DEVICE_HPP -#include "kapi/memory.hpp" +#include "kapi/boot_module/boot_module.hpp" #include "devices/BlockDevice.hpp" @@ -14,12 +14,12 @@ namespace devices::storage::ram_disk constexpr size_t static block_size = 512uz; // TODO BA-FS26 really correct / good?? ram_disk_device() = default; - ram_disk_device(kapi::memory::linear_address data_start, size_t data_size); + ram_disk_device(kapi::boot_modules::boot_module const & module); auto read_block(size_t block_index, void * buffer) const -> void override; private: - kapi::memory::linear_address m_data_start{}; + kapi::boot_modules::boot_module m_boot_module{}; size_t m_data_size{}; }; } // namespace devices::storage::ram_disk diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp index 48b9116..90a7c0f 100644 --- a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp @@ -20,17 +20,11 @@ namespace devices::storage::ram_disk { std::ranges::for_each(*m_boot_module_registry, [this](auto const & module) { create_device_from_boot_module(module); }); - - // TODO BA-FS26 just for testing, remove again - std::ranges::for_each(m_devices, [](auto const & device) { device.read_block(0, nullptr); }); } auto ram_disk_controller::create_device_from_boot_module(kapi::boot_modules::boot_module const & module) -> void { - m_devices.at(0) = ram_disk_device{module.start_address, module.size}; - - kstd::println("[RAM DISK CONTROLLER] Found boot module: {} at address {} with size {} bytes", module.name, - module.start_address, module.size); + m_devices.at(0) = ram_disk_device{module}; } auto ram_disk_controller::devices_count() -> size_t diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp index 1e650d8..82a3cdf 100644 --- a/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp @@ -1,6 +1,6 @@ #include "devices/storage/RAMDisk/RAMDiskDevice.hpp" -#include "kapi/memory.hpp" +#include "kapi/boot_module/boot_module.hpp" #include "kapi/system.hpp" #include <kstd/print> @@ -9,26 +9,25 @@ namespace devices::storage::ram_disk { - ram_disk_device::ram_disk_device(kapi::memory::linear_address data_start, size_t data_size) - : m_data_start(data_start) - , m_data_size(data_size) + ram_disk_device::ram_disk_device(kapi::boot_modules::boot_module const & module) + : m_boot_module(module) {} - auto ram_disk_device::read_block(size_t block_index, void * /*buffer*/) const -> void + auto ram_disk_device::read_block(size_t block_index, void * buffer) const -> void { - // if (buffer == nullptr) - // { - // kapi::system::panic("[RAM DISK DEVICE] read_block called with null buffer."); - // } + if (buffer == nullptr) + { + kapi::system::panic("[RAM DISK DEVICE] read_block called with null buffer."); + } auto const offset = block_index * block_size; - if (offset + block_size > - m_data_size) // TODO BA-FS26 really correct, what if block_size doesn't divide m_data_size? + // TODO BA-FS26 really correct, what if block_size doesn't divide m_boot_module.size? + if (offset + block_size > m_boot_module.size) { kapi::system::panic("[RAM DISK DEVICE] read_block out of bounds."); } - auto const source = static_cast<std::byte *>(m_data_start) + offset; + auto const source = static_cast<std::byte *>(m_boot_module.start_address) + offset; for (size_t i = 0; i < block_size; ++i) { kstd::println("address: {}, value: {}", source + i, std::to_integer<unsigned int>(*(source + i))); |
