aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcel.braun <marcel.braun@ost.ch>2026-03-29 17:22:55 +0200
committermarcel.braun <marcel.braun@ost.ch>2026-03-29 17:22:55 +0200
commitb03b6b851082d91ca374fed3e8a070d278eb93ab (patch)
tree90b877171705c6fdb463ff8cbf4182d8e546302c
parenta64b9daefeee0f91fe74d6df394944b71ecc7d80 (diff)
downloadteachos-b03b6b851082d91ca374fed3e8a070d278eb93ab.tar.xz
teachos-b03b6b851082d91ca374fed3e8a070d278eb93ab.zip
Add ext2 block_group_descriptor, inode and linked_directory_entry definitions
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_block_group_descriptor.hpp21
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_inode.hpp23
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_linked_directory_entry.hpp20
3 files changed, 64 insertions, 0 deletions
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_block_group_descriptor.hpp b/kernel/include/kernel/filesystem/ext2/ext2_block_group_descriptor.hpp
new file mode 100644
index 0000000..b0966da
--- /dev/null
+++ b/kernel/include/kernel/filesystem/ext2/ext2_block_group_descriptor.hpp
@@ -0,0 +1,21 @@
+#ifndef EXT2_BLOCK_GROUP_DESCRIPTOR_HPP
+#define EXT2_BLOCK_GROUP_DESCRIPTOR_HPP
+
+#include <array>
+#include <cstdint>
+
+namespace filesystem::ext2
+{
+ struct ext2_block_group_descriptor
+ {
+ uint32_t block_bitmap;
+ uint32_t inode_bitmap;
+ uint32_t inode_table;
+ uint16_t free_blocks_count;
+ uint16_t free_inodes_count;
+ uint16_t used_dirs_count;
+ std::array<uint8_t, 2> padding;
+ std::array<uint8_t, 12> reserved; // NOLINT(readability-magic-numbers)
+ };
+} // namespace filesystem::ext2
+#endif // EXT2_BLOCK_GROUP_DESCRIPTOR_HPP \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
index 3f6a3b0..c35f84c 100644
--- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
+++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
@@ -5,7 +5,9 @@
#include <kstd/memory>
+#include <array>
#include <cstddef>
+#include <cstdint>
namespace filesystem::ext2
{
@@ -15,6 +17,27 @@ namespace filesystem::ext2
auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
+
+ uint16_t mode;
+ uint16_t uid;
+ uint32_t size;
+ uint32_t atime;
+ uint32_t ctime;
+ uint32_t mtime;
+ uint32_t dtime;
+ uint16_t gid;
+ uint16_t links_count;
+ uint32_t blocks;
+ uint32_t flags;
+ uint32_t osd1;
+ // uint32_t block[15]; // TODO BA-FS26 really correct?
+ std::array<uint32_t, 15> block; // NOLINT(readability-magic-numbers)
+ uint32_t generation;
+ uint32_t file_acl;
+ uint32_t dir_acl;
+ uint32_t faddr;
+ // uint8_t osd2[12]; // TODO BA-FS26 really correct?
+ std::array<uint8_t, 12> osd2; // NOLINT(readability-magic-numbers)
};
} // namespace filesystem::ext2
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_linked_directory_entry.hpp b/kernel/include/kernel/filesystem/ext2/ext2_linked_directory_entry.hpp
new file mode 100644
index 0000000..2a8872b
--- /dev/null
+++ b/kernel/include/kernel/filesystem/ext2/ext2_linked_directory_entry.hpp
@@ -0,0 +1,20 @@
+#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_LINKED_DIRECTORY_ENTRY_HPP
+#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_LINKED_DIRECTORY_ENTRY_HPP
+
+#include <array>
+#include <cstdint>
+
+namespace filesystem::ext2
+{
+ struct ext2_linked_directory_entry
+ {
+ uint32_t inode;
+ uint16_t rec_len;
+ uint8_t name_len;
+ uint8_t file_type;
+ uint8_t pad;
+ std::array<uint8_t, 256> name;
+ };
+} // namespace filesystem::ext2
+
+#endif \ No newline at end of file