aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-04-09 12:32:50 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-04-11 08:05:53 +0200
commit01d5f1b29fa04c69ac9f942a1075354ce5b25da2 (patch)
treecf16f63eb2bed52e2886481c629c60a7ebf2efbf /kernel/include
parenta03d4d9acc5115ec3f651b06f94ced9a7c0e192f (diff)
downloadteachos-01d5f1b29fa04c69ac9f942a1075354ce5b25da2.tar.xz
teachos-01d5f1b29fa04c69ac9f942a1075354ce5b25da2.zip
add ext2 inode and filesystem tests
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/ext2/filesystem.hpp21
-rw-r--r--kernel/include/kernel/test_support/filesystem/ext2.hpp17
2 files changed, 38 insertions, 0 deletions
diff --git a/kernel/include/kernel/filesystem/ext2/filesystem.hpp b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
index 65324c8..a71385f 100644
--- a/kernel/include/kernel/filesystem/ext2/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
@@ -19,6 +19,27 @@
namespace kernel::filesystem::ext2
{
/**
+ @brief Constants related to the ext2 filesystem.
+ */
+ namespace constants
+ {
+ constexpr size_t inline base_block_size = 1024;
+ constexpr size_t inline superblock_offset = base_block_size;
+ constexpr uint16_t inline magic_number = 0xEF53;
+
+ constexpr uint32_t inline root_inode_number = 2;
+
+ constexpr size_t inline direct_block_count = 12;
+ constexpr size_t inline singly_indirect_block_index = direct_block_count;
+ constexpr size_t inline doubly_indirect_block_index = singly_indirect_block_index + 1;
+ constexpr size_t inline triply_indirect_block_index = doubly_indirect_block_index + 1;
+
+ constexpr uint16_t inline mode_mask = 0xF000;
+ constexpr uint16_t inline mode_regular = 0x8000;
+ constexpr uint16_t inline mode_directory = 0x4000;
+ } // namespace constants
+
+ /**
@brief A filesystem implementation for the ext2 filesystem format. This class provides methods for mounting an ext2
filesystem, and looking up inodes.
*/
diff --git a/kernel/include/kernel/test_support/filesystem/ext2.hpp b/kernel/include/kernel/test_support/filesystem/ext2.hpp
new file mode 100644
index 0000000..edbda29
--- /dev/null
+++ b/kernel/include/kernel/test_support/filesystem/ext2.hpp
@@ -0,0 +1,17 @@
+#ifndef TEACHOS_KERNEL_TEST_SUPPORT_FILESYSTEM_EXT2_HPP
+#define TEACHOS_KERNEL_TEST_SUPPORT_FILESYSTEM_EXT2_HPP
+
+#include "kernel/test_support/devices/block_device.hpp"
+
+#include <cstddef>
+#include <cstdint>
+
+namespace kernel::tests::filesystem::ext2
+{
+ auto write_bytes(kernel::tests::devices::block_device & device, size_t offset, void const * source, size_t size)
+ -> void;
+ auto write_u32(kernel::tests::devices::block_device & device, size_t offset, uint32_t value) -> void;
+ auto setup_mock_ext2_layout(kernel::tests::devices::block_device & device) -> void;
+} // namespace kernel::tests::filesystem::ext2
+
+#endif \ No newline at end of file