aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-04-02 15:03:06 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-04-11 07:58:20 +0200
commitbaf63039d5430c0b3b1e6235b561c12f60e97f49 (patch)
tree3cf91955c4d1b9fdab8b729ce7944d3d7ed7e8f8 /kernel/include
parent91db623189133cb14693ae60ee54ac293cec3b54 (diff)
downloadteachos-baf63039d5430c0b3b1e6235b561c12f60e97f49.tar.xz
teachos-baf63039d5430c0b3b1e6235b561c12f60e97f49.zip
implement read_inode
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/ext2/block_group_descriptor.hpp2
-rw-r--r--kernel/include/kernel/filesystem/ext2/filesystem.hpp4
-rw-r--r--kernel/include/kernel/filesystem/ext2/inode.hpp19
-rw-r--r--kernel/include/kernel/filesystem/ext2/linked_directory_entry.hpp2
-rw-r--r--kernel/include/kernel/filesystem/ext2/superblock.hpp2
5 files changed, 18 insertions, 11 deletions
diff --git a/kernel/include/kernel/filesystem/ext2/block_group_descriptor.hpp b/kernel/include/kernel/filesystem/ext2/block_group_descriptor.hpp
index a23c045..2ff91d9 100644
--- a/kernel/include/kernel/filesystem/ext2/block_group_descriptor.hpp
+++ b/kernel/include/kernel/filesystem/ext2/block_group_descriptor.hpp
@@ -6,7 +6,7 @@
namespace kernel::filesystem::ext2
{
- struct block_group_descriptor
+ struct [[gnu::packed]] block_group_descriptor
{
uint32_t block_bitmap;
uint32_t inode_bitmap;
diff --git a/kernel/include/kernel/filesystem/ext2/filesystem.hpp b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
index 59b9cba..ccee172 100644
--- a/kernel/include/kernel/filesystem/ext2/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
@@ -4,6 +4,7 @@
#include "kapi/devices/device.hpp"
#include "kernel/filesystem/ext2/block_group_descriptor.hpp"
+#include "kernel/filesystem/ext2/inode.hpp"
#include "kernel/filesystem/ext2/superblock.hpp"
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/inode.hpp"
@@ -12,6 +13,7 @@
#include <kstd/vector>
#include <cstddef>
+#include <cstdint>
#include <string_view>
namespace kernel::filesystem::ext2
@@ -23,6 +25,8 @@ namespace kernel::filesystem::ext2
-> kstd::shared_ptr<kernel::filesystem::inode> override;
private:
+ auto read_inode(uint32_t inode_number) -> kstd::shared_ptr<kernel::filesystem::ext2::inode>;
+
auto get_block_size() -> size_t;
auto get_inode_size() -> size_t;
diff --git a/kernel/include/kernel/filesystem/ext2/inode.hpp b/kernel/include/kernel/filesystem/ext2/inode.hpp
index 2c27c17..4284e6f 100644
--- a/kernel/include/kernel/filesystem/ext2/inode.hpp
+++ b/kernel/include/kernel/filesystem/ext2/inode.hpp
@@ -11,13 +11,8 @@
namespace kernel::filesystem::ext2
{
- struct inode : kernel::filesystem::inode
+ struct [[gnu::packed]] inode_data
{
- inode();
-
- 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;
@@ -30,15 +25,23 @@ namespace kernel::filesystem::ext2
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)
};
+
+ struct inode : kernel::filesystem::inode
+ {
+ inode();
+
+ 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;
+
+ inode_data m_data{};
+ };
} // namespace kernel::filesystem::ext2
#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/ext2/linked_directory_entry.hpp b/kernel/include/kernel/filesystem/ext2/linked_directory_entry.hpp
index 8dd42a1..f44255a 100644
--- a/kernel/include/kernel/filesystem/ext2/linked_directory_entry.hpp
+++ b/kernel/include/kernel/filesystem/ext2/linked_directory_entry.hpp
@@ -6,7 +6,7 @@
namespace kernel::filesystem::ext2
{
- struct linked_directory_entry
+ struct [[gnu::packed]] linked_directory_entry
{
uint32_t inode;
uint16_t rec_len;
diff --git a/kernel/include/kernel/filesystem/ext2/superblock.hpp b/kernel/include/kernel/filesystem/ext2/superblock.hpp
index e7e15f2..8e57ae7 100644
--- a/kernel/include/kernel/filesystem/ext2/superblock.hpp
+++ b/kernel/include/kernel/filesystem/ext2/superblock.hpp
@@ -6,7 +6,7 @@
namespace kernel::filesystem::ext2
{
- struct superblock
+ struct [[gnu::packed]] superblock
{
uint32_t inodes_count;
uint32_t blocks_count;