diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-21 16:22:23 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:17:37 +0100 |
| commit | 6c172389b562a08a6540574d6fbdf6a5bdce37b8 (patch) | |
| tree | 117a54580d50a7702f88ea7ff30c9b9c8317b978 /kernel/include | |
| parent | ffb2accb09a013d8da16acd824c846bc1acfd8e4 (diff) | |
| download | teachos-6c172389b562a08a6540574d6fbdf6a5bdce37b8.tar.xz teachos-6c172389b562a08a6540574d6fbdf6a5bdce37b8.zip | |
simplify architecture again
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/kernel/filesystem/device_file.hpp | 32 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/device_inode.hpp | 14 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/ext2_inode.hpp | 6 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/file.hpp | 25 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/inode.hpp | 7 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/inode_file.hpp | 24 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/open_file_description.hpp | 6 |
7 files changed, 20 insertions, 94 deletions
diff --git a/kernel/include/kernel/filesystem/device_file.hpp b/kernel/include/kernel/filesystem/device_file.hpp deleted file mode 100644 index 22ddb49..0000000 --- a/kernel/include/kernel/filesystem/device_file.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP -#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP - -#include "kernel/devices/block_device.hpp" -#include "kernel/devices/device.hpp" -#include "kernel/filesystem/file.hpp" - -#include <kstd/memory> - -#include <cstddef> - -namespace filesystem -{ - struct inode; - - struct device_file : file - { - explicit device_file(kstd::shared_ptr<inode> const & 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; - - private: - using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device, - std::byte * scratch, void * buffer); - auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t; - - [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &; - }; -} // namespace filesystem - -#endif diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp index 10e40b3..ce0f91c 100644 --- a/kernel/include/kernel/filesystem/device_inode.hpp +++ b/kernel/include/kernel/filesystem/device_inode.hpp @@ -1,24 +1,28 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP #define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP +#include "kernel/devices/block_device.hpp" #include "kernel/devices/device.hpp" #include "kernel/filesystem/inode.hpp" #include <kstd/memory> +#include <cstddef> + namespace filesystem { - struct file; - struct device_inode : inode { explicit device_inode(kstd::shared_ptr<devices::device> const & device); - [[nodiscard]] auto open_file() -> kstd::shared_ptr<file> override; - - [[nodiscard]] auto 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; private: + using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device, + std::byte * scratch, void * buffer); + auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t; + kstd::shared_ptr<devices::device> m_device; }; } // namespace filesystem diff --git a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp index e6e8e99..5f4d16a 100644 --- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp +++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp @@ -2,18 +2,20 @@ #define TEACH_OS_KERNEL_FILESYSTEM_EXT2_INODE_HPP #include "kernel/filesystem/ext2/ext2_file.hpp" -#include "kernel/filesystem/file.hpp" #include "kernel/filesystem/inode.hpp" #include <kstd/memory> +#include <cstddef> + namespace filesystem::ext2 { struct ext2_inode : inode { explicit ext2_inode(); - [[nodiscard]] auto open_file() -> kstd::shared_ptr<filesystem::file> 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<ext2_file> m_file; diff --git a/kernel/include/kernel/filesystem/file.hpp b/kernel/include/kernel/filesystem/file.hpp deleted file mode 100644 index 522f078..0000000 --- a/kernel/include/kernel/filesystem/file.hpp +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP -#define TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP - -#include <kstd/memory> - -#include <cstddef> - -namespace filesystem -{ - struct inode; - - struct file - { - explicit file(kstd::shared_ptr<inode> const & inode); - virtual ~file() = default; - - 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; - - protected: - kstd::shared_ptr<inode> m_inode; - }; -} // namespace filesystem - -#endif
\ No newline at end of file diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp index 1083d13..94ccd89 100644 --- a/kernel/include/kernel/filesystem/inode.hpp +++ b/kernel/include/kernel/filesystem/inode.hpp @@ -3,10 +3,10 @@ #include <kstd/memory> +#include <cstddef> + namespace filesystem { - struct file; - struct inode : kstd::enable_shared_from_this<inode> { enum class inode_kind @@ -20,7 +20,8 @@ namespace filesystem virtual ~inode() = default; - [[nodiscard]] virtual auto open_file() -> kstd::shared_ptr<file> = 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; [[nodiscard]] auto is_directory() const -> bool; [[nodiscard]] auto is_regular() const -> bool; diff --git a/kernel/include/kernel/filesystem/inode_file.hpp b/kernel/include/kernel/filesystem/inode_file.hpp deleted file mode 100644 index f87b77c..0000000 --- a/kernel/include/kernel/filesystem/inode_file.hpp +++ /dev/null @@ -1,24 +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; - - struct inode_file : file - { - explicit inode_file(kstd::shared_ptr<inode> const & 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; - }; -} // namespace filesystem - -#endif
\ No newline at end of file diff --git a/kernel/include/kernel/filesystem/open_file_description.hpp b/kernel/include/kernel/filesystem/open_file_description.hpp index 5ff094d..3c97d50 100644 --- a/kernel/include/kernel/filesystem/open_file_description.hpp +++ b/kernel/include/kernel/filesystem/open_file_description.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP #define TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP -#include "file.hpp" +#include "kernel/filesystem/inode.hpp" #include <kstd/memory> @@ -11,7 +11,7 @@ namespace filesystem { struct open_file_description { - open_file_description(kstd::shared_ptr<file> const & file); + open_file_description(kstd::shared_ptr<inode> const & inode); ~open_file_description() = default; @@ -19,7 +19,7 @@ namespace filesystem auto write(void const * buffer, size_t size) -> size_t; private: - kstd::shared_ptr<file> m_file; + kstd::shared_ptr<inode> m_inode; size_t m_offset; }; |
