aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/filesystem/inode.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/filesystem/inode.hpp')
-rw-r--r--kernel/kernel/filesystem/inode.hpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/kernel/filesystem/inode.hpp b/kernel/kernel/filesystem/inode.hpp
index 005dc57b..25e5df31 100644
--- a/kernel/kernel/filesystem/inode.hpp
+++ b/kernel/kernel/filesystem/inode.hpp
@@ -1,9 +1,13 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
+#include <kapi/filesystem.hpp>
+
#include <kstd/result.hpp>
#include <kstd/units.hpp>
+#include <optional>
+
namespace kernel::filesystem
{
//! Represents an inode in the filesystem.
@@ -62,6 +66,16 @@ namespace kernel::filesystem
//!
//! @return true iff. this inode is a symbolic link, false otherwise.
[[nodiscard]] virtual auto is_symbolic_link() const -> bool;
+
+ //! Get POSIX status information for this inode.
+ //!
+ //! @return a populated status information object, or an error or failure.
+ [[nodiscard]] virtual auto status() const -> kstd::result<kapi::filesystem::file_status>;
+
+ //! Get the raw device, if any, this inode refers to.
+ //!
+ //! @return a device number if this inode refers to a device, an empty optional otherwise.
+ [[nodiscard]] virtual auto raw_device() const -> std::optional<kapi::filesystem::device_number>;
};
} // namespace kernel::filesystem