diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-06-02 15:02:01 +0200 |
|---|---|---|
| committer | Marcel Braun <marcel.braun@ost.ch> | 2026-06-02 15:02:01 +0200 |
| commit | e92df52c599f78f36a278508a2b6be5f3a15f3db (patch) | |
| tree | 64823890d38038cdc207cfc3323d96d00843442f /kernel/include | |
| parent | 0ab7525951b0116241f393090987bedc07a18c33 (diff) | |
| parent | f26569c6a4e5f0ed61b7efa81ebdddd532d542c5 (diff) | |
| download | kernel-e92df52c599f78f36a278508a2b6be5f3a15f3db.tar.xz kernel-e92df52c599f78f36a278508a2b6be5f3a15f3db.zip | |
Merge branch 'refactor-map-inode-block-to-global-block-number' into 'develop-BA-FS26'
refactor and simplify mapping logic
See merge request teachos/kernel!45
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/filesystem.hpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/include/kernel/filesystem/ext2/filesystem.hpp b/kernel/include/kernel/filesystem/ext2/filesystem.hpp index d5e5b8b..2284d7b 100644 --- a/kernel/include/kernel/filesystem/ext2/filesystem.hpp +++ b/kernel/include/kernel/filesystem/ext2/filesystem.hpp @@ -11,6 +11,7 @@ #include <kstd/unikstd.h> #include <kstd/vector> +#include <array> #include <cstddef> #include <cstdint> #include <string_view> @@ -86,16 +87,17 @@ namespace kernel::filesystem::ext2 -> kstd::ssize_t; private: + struct indirect_level + { + uint32_t slot_index; + size_t capacity; + }; + + [[nodiscard]] auto indirect_levels() const -> std::array<indirect_level, 3>; + [[nodiscard]] auto read_inode(uint32_t inode_number) const -> kstd::shared_ptr<kernel::filesystem::ext2::inode>; [[nodiscard]] auto read_block_number_at_index(uint32_t block_number, size_t index) const -> uint32_t; - [[nodiscard]] auto read_singly_indirect_block_number(uint32_t singly_indirect_block_number, - size_t block_index_in_singly_indirect_block) const -> size_t; - [[nodiscard]] auto read_doubly_indirect_block_number(uint32_t doubly_indirect_block_number, - size_t block_index_in_doubly_indirect_block) const -> size_t; - [[nodiscard]] auto read_triply_indirect_block_number(uint32_t triply_indirect_block_number, - size_t block_index_in_triply_indirect_block) const -> size_t; - [[nodiscard]] auto inode_size() const -> uint16_t; [[nodiscard]] auto inode_block_count(inode_data const & data) const -> uint32_t; [[nodiscard]] auto block_group_descriptor_table_offset() const -> size_t; |
