aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/filesystem/dentry.hpp14
-rw-r--r--kernel/include/kernel/filesystem/vfs.hpp2
2 files changed, 15 insertions, 1 deletions
diff --git a/kernel/include/kernel/filesystem/dentry.hpp b/kernel/include/kernel/filesystem/dentry.hpp
index 1532880..db15b48 100644
--- a/kernel/include/kernel/filesystem/dentry.hpp
+++ b/kernel/include/kernel/filesystem/dentry.hpp
@@ -4,21 +4,35 @@
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
+#include <kstd/string>
#include <kstd/vector>
+#include <cstdint>
+
namespace filesystem
{
struct dentry
{
+ enum class dentry_flags : uint32_t
+ {
+ dcache_mounted = 1 << 15
+ };
+
dentry(kstd::shared_ptr<dentry> const & parent, kstd::shared_ptr<inode> const & node);
[[nodiscard]] auto get_inode() const -> kstd::shared_ptr<inode> const &;
[[nodiscard]] auto get_parent() const -> kstd::shared_ptr<dentry> const &;
+ auto set_flag(dentry_flags flag) -> void;
+ auto unset_flag(dentry_flags flag) -> void;
+ [[nodiscard]] auto has_flag(dentry_flags flag) const -> bool;
+
private:
+ kstd::string m_name;
kstd::shared_ptr<dentry> m_parent;
kstd::vector<kstd::shared_ptr<dentry>> m_children;
kstd::shared_ptr<inode> m_inode;
+ uint32_t m_flags{0};
};
} // namespace filesystem
diff --git a/kernel/include/kernel/filesystem/vfs.hpp b/kernel/include/kernel/filesystem/vfs.hpp
index bcf06f7..01cd2ea 100644
--- a/kernel/include/kernel/filesystem/vfs.hpp
+++ b/kernel/include/kernel/filesystem/vfs.hpp
@@ -40,7 +40,7 @@ namespace filesystem
[[nodiscard]] auto resolve_path(std::string_view path) -> std::optional<dentry>;
kstd::shared_ptr<filesystem> m_root_fs;
- std::optional<mount> m_root_mount;
+ kstd::shared_ptr<dentry> m_root_dentry;
kstd::vector<mount> m_mount_table;
};
} // namespace filesystem