aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/kernel/filesystem/inode.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/kernel/filesystem/inode.hpp')
-rw-r--r--kernel/include/kernel/filesystem/inode.hpp23
1 files changed, 10 insertions, 13 deletions
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 <kstd/memory>
#include <cstddef>
@@ -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<devices::device> 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<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;
+ 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<devices::device> m_device{};
};
} // namespace filesystem