diff options
Diffstat (limited to 'kernel/include/kernel/filesystem/inode.hpp')
| -rw-r--r-- | kernel/include/kernel/filesystem/inode.hpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp index a2955f93..6d8f0d48 100644 --- a/kernel/include/kernel/filesystem/inode.hpp +++ b/kernel/include/kernel/filesystem/inode.hpp @@ -1,37 +1,32 @@ #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 <kstd/memory> - #include <cstddef> namespace filesystem { struct inode { - inode() = default; + enum class inode_kind + { + regular, + directory, + device + }; + explicit inode(inode_kind kind); - explicit inode(kstd::shared_ptr<devices::device> const & device); - [[nodiscard]] auto metadata() const -> inode_metadata; + virtual ~inode() = 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; [[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<devices::device> 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; private: inode_kind m_kind{inode_kind::regular}; - kstd::shared_ptr<devices::device> m_device{}; }; } // namespace filesystem |
