From 8d3471f1d160d301f9d990455bd8c63450df1cf3 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Thu, 19 Mar 2026 21:59:31 +0100 Subject: remove inode metadata --- kernel/include/kernel/filesystem/device_inode.hpp | 15 +++++++++++++- kernel/include/kernel/filesystem/filesystem.hpp | 4 ++-- kernel/include/kernel/filesystem/inode.hpp | 23 +++++++++------------ .../include/kernel/filesystem/inode_metadata.hpp | 24 ---------------------- 4 files changed, 26 insertions(+), 40 deletions(-) delete mode 100644 kernel/include/kernel/filesystem/inode_metadata.hpp (limited to 'kernel/include') diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp index a99e5d1..0287875 100644 --- a/kernel/include/kernel/filesystem/device_inode.hpp +++ b/kernel/include/kernel/filesystem/device_inode.hpp @@ -1,13 +1,26 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP #define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP +#include "kernel/devices/device.hpp" #include "kernel/filesystem/inode.hpp" +#include + +#include + namespace filesystem { struct device_inode : inode { - // TODO BA-FS26 + explicit device_inode(kstd::shared_ptr const & device); + + [[nodiscard]] auto backing_device() const -> kstd::shared_ptr 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: + kstd::shared_ptr m_device{}; }; } // namespace filesystem diff --git a/kernel/include/kernel/filesystem/filesystem.hpp b/kernel/include/kernel/filesystem/filesystem.hpp index 23924c4..035f49d 100644 --- a/kernel/include/kernel/filesystem/filesystem.hpp +++ b/kernel/include/kernel/filesystem/filesystem.hpp @@ -17,10 +17,10 @@ namespace filesystem virtual auto mount(kstd::shared_ptr const & device) -> int = 0; virtual auto lookup(inode const & parent, std::string_view name) -> inode * = 0; - [[nodiscard]] auto root_inode() const -> inode const &; + [[nodiscard]] auto root_inode() const -> kstd::shared_ptr const &; protected: - inode m_root_inode{}; // TODO BA-FS26 set during mount? + kstd::shared_ptr m_root_inode{}; }; } // namespace filesystem diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp index a2955f9..dcf83b9 100644 --- a/kernel/include/kernel/filesystem/inode.hpp +++ b/kernel/include/kernel/filesystem/inode.hpp @@ -1,9 +1,6 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP #define TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP -#include "kernel/devices/device.hpp" -#include "kernel/filesystem/inode_metadata.hpp" - #include #include @@ -12,26 +9,26 @@ namespace filesystem { struct inode { - inode() = default; + enum class inode_kind + { + regular, + directory, + device + }; + explicit inode(inode_kind kind); - explicit inode(kstd::shared_ptr const & device); - [[nodiscard]] auto metadata() const -> inode_metadata; + virtual ~inode() = default; [[nodiscard]] auto is_directory() const -> bool; [[nodiscard]] auto is_regular() const -> bool; [[nodiscard]] auto is_device() const -> bool; - [[nodiscard]] auto is_block_device() const -> bool; - [[nodiscard]] auto major_device() const -> size_t; - [[nodiscard]] auto minor_device() const -> size_t; - [[nodiscard]] auto backing_device() const -> kstd::shared_ptr const &; - auto read(void * buffer, size_t offset, size_t size) const -> size_t; - auto write(void const * buffer, size_t offset, size_t size) -> size_t; + 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; private: inode_kind m_kind{inode_kind::regular}; - kstd::shared_ptr m_device{}; }; } // namespace filesystem diff --git a/kernel/include/kernel/filesystem/inode_metadata.hpp b/kernel/include/kernel/filesystem/inode_metadata.hpp deleted file mode 100644 index ed5a09d..0000000 --- a/kernel/include/kernel/filesystem/inode_metadata.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP -#define TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP - -#include -#include - -namespace filesystem -{ - enum class inode_kind - { - regular, - directory, - device - }; - - struct inode_metadata - { - inode_kind kind{inode_kind::regular}; - std::optional major{}; - std::optional minor{}; - }; -} // namespace filesystem - -#endif // TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP \ No newline at end of file -- cgit v1.2.3