aboutsummaryrefslogtreecommitdiff
path: root/kernel/devices
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/devices')
-rw-r--r--kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp6
-rw-r--r--kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp8
-rw-r--r--kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp23
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)));