diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-17 11:49:13 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-17 16:44:35 +0100 |
| commit | 5801be615a50bf465a9663b7f75cafbcf0870f5c (patch) | |
| tree | e3a6df2863ba9b6b24c76219bc685975be5e69d3 /kernel/filesystem/src/device_file.cpp | |
| parent | 471888c64ed490b1f1dbaa2c2f67a1e8d315905a (diff) | |
| download | teachos-5801be615a50bf465a9663b7f75cafbcf0870f5c.tar.xz teachos-5801be615a50bf465a9663b7f75cafbcf0870f5c.zip | |
use kstd::vector instead of std::array and replace plain-pointers with kstd::shared_ptr
Diffstat (limited to 'kernel/filesystem/src/device_file.cpp')
| -rw-r--r-- | kernel/filesystem/src/device_file.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/kernel/filesystem/src/device_file.cpp b/kernel/filesystem/src/device_file.cpp index f11638e..882c9b1 100644 --- a/kernel/filesystem/src/device_file.cpp +++ b/kernel/filesystem/src/device_file.cpp @@ -6,14 +6,15 @@ #include "devices/device.hpp" #include <kstd/cstring> +#include <kstd/memory> +#include <kstd/vector> #include <algorithm> -#include <array> #include <cstddef> namespace filesystem { - device_file::device_file(devices::device * device) + device_file::device_file(kstd::shared_ptr<devices::device> device) : m_device(device) { if (!m_device) @@ -90,7 +91,13 @@ namespace filesystem return 0; } - auto * block_dev = static_cast<devices::block_device *>(m_device); + // @Felix rtti not activated why? e.g. dynamic_cast does not work, whats with std::dynamic_pointer_cast + // online: rtti overhead, bad design, ... ? + auto * block_dev = static_cast<devices::block_device *>(m_device.get()); + if (block_dev == nullptr) + { + kapi::system::panic("[FILESYSTEM] device_file: expected block_device."); + } size_t const block_size = block_dev->block_size(); size_t const capacity = block_dev->capacity(); @@ -99,8 +106,7 @@ namespace filesystem return 0; size_t const total_to_process = std::min(size, capacity - offset); - // TODO BA-FS26 use kstd::vector when available - std::array<std::byte, 512> scratch_buffer{}; // TODO BA-FS26 better solution than fixed scratch_buffer ?? + kstd::vector<std::byte> scratch_buffer{block_size}; auto processed = 0uz; while (processed < total_to_process) |
