aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authormarcel.braun <marcel.braun@ost.ch>2026-03-23 09:03:27 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-26 21:18:46 +0100
commitf90cbdaa91b1b7a4752db3f159ce2524696cff9f (patch)
treecdc87c4e856b593a207e7a03f9917c65943e18a8 /kernel
parent840c7fec926e7fa8a9d9b64b23167f269096b59b (diff)
downloadteachos-f90cbdaa91b1b7a4752db3f159ce2524696cff9f.tar.xz
teachos-f90cbdaa91b1b7a4752db3f159ce2524696cff9f.zip
Rename custody to dentry and add children
Diffstat (limited to 'kernel')
-rw-r--r--kernel/CMakeLists.txt2
-rw-r--r--kernel/include/kernel/filesystem/custody.hpp23
-rw-r--r--kernel/include/kernel/filesystem/dentry.hpp25
-rw-r--r--kernel/include/kernel/filesystem/vfs.hpp6
-rw-r--r--kernel/src/filesystem/custody.cpp30
-rw-r--r--kernel/src/filesystem/dentry.cpp30
-rw-r--r--kernel/src/filesystem/vfs.cpp16
7 files changed, 67 insertions, 65 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
index 16ebb8b..01fee74 100644
--- a/kernel/CMakeLists.txt
+++ b/kernel/CMakeLists.txt
@@ -24,7 +24,7 @@ add_executable("kernel"
"src/filesystem/ext2/ext2_file.cpp"
"src/filesystem/ext2/ext2_filesystem.cpp"
"src/filesystem/ext2/ext2_inode.cpp"
- "src/filesystem/custody.cpp"
+ "src/filesystem/dentry.cpp"
"src/filesystem/device_inode.cpp"
"src/filesystem/file_descriptor_table.cpp"
"src/filesystem/filesystem.cpp"
diff --git a/kernel/include/kernel/filesystem/custody.hpp b/kernel/include/kernel/filesystem/custody.hpp
deleted file mode 100644
index 8a0e09a..0000000
--- a/kernel/include/kernel/filesystem/custody.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef TEACH_OS_KERNEL_CUSTODY_HPP
-#define TEACH_OS_KERNEL_CUSTODY_HPP
-
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-namespace filesystem
-{
- struct custody
- {
- custody(kstd::shared_ptr<custody> 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<custody> const &;
-
- private:
- kstd::shared_ptr<custody> m_parent;
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/dentry.hpp b/kernel/include/kernel/filesystem/dentry.hpp
new file mode 100644
index 0000000..1532880
--- /dev/null
+++ b/kernel/include/kernel/filesystem/dentry.hpp
@@ -0,0 +1,25 @@
+#ifndef TEACH_OS_KERNEL_DENTRY_HPP
+#define TEACH_OS_KERNEL_DENTRY_HPP
+
+#include "kernel/filesystem/inode.hpp"
+
+#include <kstd/memory>
+#include <kstd/vector>
+
+namespace filesystem
+{
+ struct dentry
+ {
+ 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 &;
+
+ private:
+ kstd::shared_ptr<dentry> m_parent;
+ kstd::vector<kstd::shared_ptr<dentry>> m_children;
+ kstd::shared_ptr<inode> m_inode;
+ };
+} // namespace filesystem
+
+#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/vfs.hpp b/kernel/include/kernel/filesystem/vfs.hpp
index ca51d90..bcf06f7 100644
--- a/kernel/include/kernel/filesystem/vfs.hpp
+++ b/kernel/include/kernel/filesystem/vfs.hpp
@@ -2,7 +2,7 @@
#define TEACH_OS_KERNEL_FILESYSTEM_VFS_HPP
#include "kernel/devices/device.hpp"
-#include "kernel/filesystem/custody.hpp"
+#include "kernel/filesystem/dentry.hpp"
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/inode.hpp"
#include "kernel/filesystem/mount.hpp"
@@ -37,11 +37,11 @@ namespace filesystem
vfs() = default;
auto make_device_node(kstd::shared_ptr<devices::device> const & device) -> void;
- [[nodiscard]] auto resolve_path(std::string_view path) -> std::optional<custody>;
+ [[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::vector<mount> m_mounts;
+ kstd::vector<mount> m_mount_table;
};
} // namespace filesystem
diff --git a/kernel/src/filesystem/custody.cpp b/kernel/src/filesystem/custody.cpp
deleted file mode 100644
index a4dd12c..0000000
--- a/kernel/src/filesystem/custody.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "kernel/filesystem/custody.hpp"
-
-#include "kapi/system.hpp"
-
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-namespace filesystem
-{
- custody::custody(kstd::shared_ptr<custody> const & parent, kstd::shared_ptr<inode> const & node)
- : m_parent(parent)
- , m_inode(node)
- {
- if (!m_inode)
- {
- kapi::system::panic("[FILESYSTEM] custody constructed with null inode.");
- }
- }
-
- auto custody::get_inode() const -> kstd::shared_ptr<inode> const &
- {
- return m_inode;
- }
-
- auto custody::get_parent() const -> kstd::shared_ptr<custody> const &
- {
- return m_parent;
- }
-} // namespace filesystem \ No newline at end of file
diff --git a/kernel/src/filesystem/dentry.cpp b/kernel/src/filesystem/dentry.cpp
new file mode 100644
index 0000000..08f0b25
--- /dev/null
+++ b/kernel/src/filesystem/dentry.cpp
@@ -0,0 +1,30 @@
+#include "kernel/filesystem/dentry.hpp"
+
+#include "kapi/system.hpp"
+
+#include "kernel/filesystem/inode.hpp"
+
+#include <kstd/memory>
+
+namespace filesystem
+{
+ dentry::dentry(kstd::shared_ptr<dentry> const & parent, kstd::shared_ptr<inode> const & node)
+ : m_parent(parent)
+ , m_inode(node)
+ {
+ if (!m_inode)
+ {
+ kapi::system::panic("[FILESYSTEM] dentry constructed with null inode.");
+ }
+ }
+
+ auto dentry::get_inode() const -> kstd::shared_ptr<inode> const &
+ {
+ return m_inode;
+ }
+
+ auto dentry::get_parent() const -> kstd::shared_ptr<dentry> const &
+ {
+ return m_parent;
+ }
+} // namespace filesystem \ No newline at end of file
diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp
index 1bd6fb5..a111f23 100644
--- a/kernel/src/filesystem/vfs.cpp
+++ b/kernel/src/filesystem/vfs.cpp
@@ -4,7 +4,7 @@
#include "kernel/devices/device.hpp"
#include "kernel/devices/storage/storage_management.hpp"
-#include "kernel/filesystem/custody.hpp"
+#include "kernel/filesystem/dentry.hpp"
#include "kernel/filesystem/device_inode.hpp"
#include "kernel/filesystem/ext2/ext2_filesystem.hpp"
#include "kernel/filesystem/filesystem.hpp"
@@ -66,9 +66,9 @@ namespace filesystem
auto vfs::open(std::string_view path) -> kstd::shared_ptr<open_file_description>
{
- if (auto custody = resolve_path(path))
+ if (auto dentry = resolve_path(path))
{
- return kstd::make_shared<open_file_description>(custody->get_inode());
+ return kstd::make_shared<open_file_description>(dentry->get_inode());
}
return nullptr;
@@ -100,14 +100,14 @@ namespace filesystem
}
auto existing_mount =
- std::ranges::find_if(m_mounts, [&](auto const & existing) { return existing.path() == path; });
- if (existing_mount != m_mounts.end())
+ std::ranges::find_if(m_mount_table, [&](auto const & existing) { return existing.path() == path; });
+ if (existing_mount != m_mount_table.end())
{
*existing_mount = mount{path, filesystem};
}
else
{
- m_mounts.push_back(mount{path, filesystem});
+ m_mount_table.push_back(mount{path, filesystem});
}
return 0;
@@ -123,7 +123,7 @@ namespace filesystem
m_device_nodes.push_back(device_node_entry{device->name().view(), kstd::make_shared<device_inode>(device)});
}
- auto vfs::resolve_path(std::string_view path) -> std::optional<custody>
+ auto vfs::resolve_path(std::string_view path) -> std::optional<dentry>
{
// TODO BA-FS26 implement real path resolution with mounts and directories etc.
// For now, just support device nodes at /dev/<device_name>.
@@ -140,7 +140,7 @@ namespace filesystem
if (entry != m_device_nodes.end())
{
- return custody{nullptr, entry->value().node};
+ return dentry{nullptr, entry->value().node};
}
return std::nullopt;