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.hpp47
1 files changed, 46 insertions, 1 deletions
diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp
index d97b5ab1..5208be2b 100644
--- a/kernel/include/kernel/filesystem/inode.hpp
+++ b/kernel/include/kernel/filesystem/inode.hpp
@@ -5,8 +5,14 @@
namespace kernel::filesystem
{
+ /**
+ @brief Represents an inode in the filesystem.
+ */
struct inode
{
+ /**
+ @brief Represents the kind of an inode.
+ */
enum class inode_kind
{
regular,
@@ -14,18 +20,57 @@ namespace kernel::filesystem
device
};
+ /**
+ @brief Create an inode with the given @p kind.
+ @param kind The kind of the inode.
+ */
explicit inode(inode_kind kind);
+ /**
+ @brief Virtual destructor for the inode.
+ */
virtual ~inode() = default;
+ /**
+ @brief Reads from the inode into a @p buffer, starting at the specified @p offset and for a given @p size. This
+ method must be implemented by concrete inode subclasses.
+ @param buffer Destination buffer.
+ @param offset Read offset in bytes.
+ @param size Number of bytes requested.
+ @return Number of bytes read.
+ */
virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
+
+ /**
+ @brief Writes to the inode into a @p buffer, starting at the specified @p offset and for a given @p size. This
+ method must be implemented by concrete inode subclasses.
+ @param buffer Source buffer.
+ @param offset Write offset in bytes.
+ @param size Number of bytes to write.
+ @return Number of bytes written.
+ */
virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
+ /**
+ @brief Returns whether the inode is a directory.
+ @return true if the inode is a directory, false otherwise.
+ */
[[nodiscard]] auto is_directory() const -> bool;
+
+ /**
+ @brief Returns whether the inode is a regular file.
+ @return true if the inode is a regular file, false otherwise.
+ */
[[nodiscard]] auto is_regular() const -> bool;
+
+ /**
+ @brief Returns whether the inode is a device.
+ @return true if the inode is a device, false otherwise.
+ */
[[nodiscard]] auto is_device() const -> bool;
- private:
+ // TODO BA-FS26 avoid public member
+ public:
inode_kind m_kind{inode_kind::regular};
};
} // namespace kernel::filesystem