diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-05-10 20:07:51 +0200 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-05-11 22:34:54 +0200 |
| commit | feab4cd81f2bbc89e55353a54df2575b9c21b514 (patch) | |
| tree | 9c8767ea7c12aea5ad7f4af465317a61bd4f2a59 /kernel | |
| parent | 00aa2c8695b81944798010d81d600038e1f1ef3d (diff) | |
| download | kernel-feab4cd81f2bbc89e55353a54df2575b9c21b514.tar.xz kernel-feab4cd81f2bbc89e55353a54df2575b9c21b514.zip | |
Add method that returns the next ancestor with mount flag set
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/include/kernel/filesystem/dentry.hpp | 6 | ||||
| -rw-r--r-- | kernel/src/filesystem/dentry.cpp | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/kernel/include/kernel/filesystem/dentry.hpp b/kernel/include/kernel/filesystem/dentry.hpp index 226f2b9..1d99a25 100644 --- a/kernel/include/kernel/filesystem/dentry.hpp +++ b/kernel/include/kernel/filesystem/dentry.hpp @@ -61,6 +61,12 @@ namespace kernel::filesystem [[nodiscard]] auto get_absolute_path() const -> kstd::string; /** + @brief traverse parent dentries until dentry with mount flag is found. + @return The found dentry. + */ + [[nodiscard]] auto get_ancestor_with_mount_flag() const -> kstd::shared_ptr<dentry>; + + /** @brief Add a @p child dentry. @param child The child dentry to add. */ diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp index a77ce23..6945a27 100644 --- a/kernel/src/filesystem/dentry.cpp +++ b/kernel/src/filesystem/dentry.cpp @@ -66,6 +66,16 @@ namespace kernel::filesystem return path; } + auto dentry::get_ancestor_with_mount_flag() const -> kstd::shared_ptr<dentry> + { + auto parent = m_parent; + while (parent && !parent->has_flag(dentry_flags::mounted)) + { + parent = parent->get_parent(); + } + return parent; + } + auto dentry::add_child(kstd::shared_ptr<dentry> const & child) -> void { m_children.push_back(child); |
