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.hpp27
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