aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-19 22:58:31 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-26 21:17:23 +0100
commit09e3d0cb2272e7eabd79a320c17c58124515d427 (patch)
treeb48f75b2a2852af3abca953bb3d6320a4f97418c /kernel/include
parent8d3471f1d160d301f9d990455bd8c63450df1cf3 (diff)
downloadteachos-09e3d0cb2272e7eabd79a320c17c58124515d427.tar.xz
teachos-09e3d0cb2272e7eabd79a320c17c58124515d427.zip
first try to simplify the architecture (remove redundant inode_file and open() methods), add ext2_file placeholder struct
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/device_file.hpp2
-rw-r--r--kernel/include/kernel/filesystem/device_inode.hpp8
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_file.hpp17
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_inode.hpp10
-rw-r--r--kernel/include/kernel/filesystem/file.hpp2
-rw-r--r--kernel/include/kernel/filesystem/inode.hpp7
-rw-r--r--kernel/include/kernel/filesystem/inode_file.hpp27
7 files changed, 31 insertions, 42 deletions
diff --git a/kernel/include/kernel/filesystem/device_file.hpp b/kernel/include/kernel/filesystem/device_file.hpp
index 06aa9b2..ff803f8 100644
--- a/kernel/include/kernel/filesystem/device_file.hpp
+++ b/kernel/include/kernel/filesystem/device_file.hpp
@@ -15,8 +15,6 @@ namespace filesystem
{
explicit device_file(kstd::shared_ptr<devices::device> const & device);
- auto open() -> void override;
-
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;
diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp
index 0287875..c38c75b 100644
--- a/kernel/include/kernel/filesystem/device_inode.hpp
+++ b/kernel/include/kernel/filesystem/device_inode.hpp
@@ -2,22 +2,18 @@
#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
#include "kernel/devices/device.hpp"
+#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
-#include <cstddef>
-
namespace filesystem
{
struct device_inode : inode
{
explicit device_inode(kstd::shared_ptr<devices::device> const & device);
- [[nodiscard]] auto backing_device() const -> kstd::shared_ptr<devices::device> const &;
-
- 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;
+ [[nodiscard]] auto open_file() const -> kstd::shared_ptr<file> override;
private:
kstd::shared_ptr<devices::device> m_device{};
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_file.hpp b/kernel/include/kernel/filesystem/ext2/ext2_file.hpp
new file mode 100644
index 0000000..b5708d8
--- /dev/null
+++ b/kernel/include/kernel/filesystem/ext2/ext2_file.hpp
@@ -0,0 +1,17 @@
+#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILE_HPP
+#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILE_HPP
+
+#include "kernel/filesystem/file.hpp"
+
+#include <cstddef>
+
+namespace filesystem::ext2
+{
+ struct ext2_file : file
+ {
+ 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;
+ };
+} // namespace filesystem::ext2
+
+#endif \ 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 7cd6f8f..f103877 100644
--- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
+++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
@@ -1,13 +1,21 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_INODE_HPP
+#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
+#include <kstd/memory>
+
namespace filesystem::ext2
{
struct ext2_inode : inode
{
- // TODO BA-FS26
+ ext2_inode();
+
+ [[nodiscard]] auto open_file() const -> kstd::shared_ptr<file> override;
+
+ private:
+ // TODO BA-FS26 add ext2-specific inode metadata here (e.g. block pointers, size, permissions, etc.)
};
} // namespace filesystem::ext2
diff --git a/kernel/include/kernel/filesystem/file.hpp b/kernel/include/kernel/filesystem/file.hpp
index e7e1b12..5a41fab 100644
--- a/kernel/include/kernel/filesystem/file.hpp
+++ b/kernel/include/kernel/filesystem/file.hpp
@@ -9,8 +9,6 @@ namespace filesystem
{
virtual ~file() = default;
- virtual auto open() -> void = 0;
-
virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
};
diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp
index dcf83b9..79cbcf9 100644
--- a/kernel/include/kernel/filesystem/inode.hpp
+++ b/kernel/include/kernel/filesystem/inode.hpp
@@ -1,9 +1,9 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
-#include <kstd/memory>
+#include "kernel/filesystem/file.hpp"
-#include <cstddef>
+#include <kstd/memory>
namespace filesystem
{
@@ -24,8 +24,7 @@ namespace filesystem
[[nodiscard]] auto is_regular() const -> bool;
[[nodiscard]] auto is_device() const -> bool;
- virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
- virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
+ [[nodiscard]] virtual auto open_file() const -> kstd::shared_ptr<file> = 0;
private:
inode_kind m_kind{inode_kind::regular};
diff --git a/kernel/include/kernel/filesystem/inode_file.hpp b/kernel/include/kernel/filesystem/inode_file.hpp
deleted file mode 100644
index ee84eee..0000000
--- a/kernel/include/kernel/filesystem/inode_file.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-
-#include "kernel/filesystem/file.hpp"
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode_file : file
- {
- explicit inode_file(kstd::shared_ptr<inode> const & inode);
-
- auto open() -> void override;
-
- 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;
-
- private:
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file