diff options
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/kernel/filesystem/dentry.hpp | 14 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/vfs.hpp | 2 |
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 |
