aboutsummaryrefslogtreecommitdiff
path: root/kernel/devices/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/devices/include')
-rw-r--r--kernel/devices/include/devices/BlockDevice.hpp15
-rw-r--r--kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp4
2 files changed, 16 insertions, 3 deletions
diff --git a/kernel/devices/include/devices/BlockDevice.hpp b/kernel/devices/include/devices/BlockDevice.hpp
index 65d765b..56e26d0 100644
--- a/kernel/devices/include/devices/BlockDevice.hpp
+++ b/kernel/devices/include/devices/BlockDevice.hpp
@@ -9,11 +9,24 @@ namespace devices
{
struct block_device : device
{
- block_device(size_t major, size_t minor);
+ block_device(size_t major, size_t minor, size_t block_size);
virtual ~block_device() = default;
virtual auto read_block(size_t block_index, void * buffer) const -> void = 0;
virtual auto write_block(size_t block_index, void const * buffer) -> void = 0;
+
+ protected:
+ struct transfer_info
+ {
+ size_t offset;
+ size_t to_transfer;
+ size_t remainder;
+ };
+
+ virtual auto size() const -> size_t = 0;
+ auto calculate_transfer(size_t block_index) const -> transfer_info;
+
+ size_t m_block_size;
};
} // namespace devices
diff --git a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp
index b3838e4..5971970 100644
--- a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp
+++ b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp
@@ -11,8 +11,6 @@ namespace devices::storage::ram_disk
{
struct ram_disk_device : block_device
{
- constexpr size_t static block_size = 512uz; // TODO BA-FS26 really correct / good??
-
ram_disk_device(); // TODO BA-FS26 remove when kstd::vector is available
ram_disk_device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor);
@@ -20,6 +18,8 @@ namespace devices::storage::ram_disk
auto write_block(size_t block_index, void const * buffer) -> void override;
private:
+ auto size() const -> size_t override;
+
kapi::boot_modules::boot_module m_boot_module{};
};
} // namespace devices::storage::ram_disk