#include "devices/storage/RAMDisk/RAMDiskDevice.hpp" #include "kapi/boot_module/boot_module.hpp" #include "kapi/system.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) {} 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."); } auto const offset = block_index * block_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(m_boot_module.start_address) + offset; for (size_t i = 0; i < block_size; ++i) { kstd::println("address: {}, value: {}", source + i, std::to_integer(*(source + i))); } // std::memcpy(buffer, source, block_size); } } // namespace devices::storage::ram_disk