aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/ext2/filesystem.hpp16
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;