diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-19 22:58:31 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:17:23 +0100 |
| commit | 09e3d0cb2272e7eabd79a320c17c58124515d427 (patch) | |
| tree | b48f75b2a2852af3abca953bb3d6320a4f97418c /kernel/include | |
| parent | 8d3471f1d160d301f9d990455bd8c63450df1cf3 (diff) | |
| download | teachos-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.hpp | 2 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/device_inode.hpp | 8 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/ext2_file.hpp | 17 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/ext2_inode.hpp | 10 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/file.hpp | 2 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/inode.hpp | 7 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/inode_file.hpp | 27 |
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 |
