aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-15 18:49:34 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:43:12 +0100
commitf52f4eb4aff3f8346c9ba73bcc57db4ca6fc6cb2 (patch)
treea80f6311268f1388037c54dd47f1522f85c68424
parente355d5e6aa84b1ea4de70820159b5f1af13bc6f8 (diff)
downloadteachos-f52f4eb4aff3f8346c9ba73bcc57db4ca6fc6cb2.tar.xz
teachos-f52f4eb4aff3f8346c9ba73bcc57db4ca6fc6cb2.zip
implement first draft of custody
-rw-r--r--kernel/filesystem/CMakeLists.txt6
-rw-r--r--kernel/filesystem/include/filesystem/custody.hpp21
-rw-r--r--kernel/filesystem/src/custody.cpp28
3 files changed, 53 insertions, 2 deletions
diff --git a/kernel/filesystem/CMakeLists.txt b/kernel/filesystem/CMakeLists.txt
index a6b4e49..19f1be1 100644
--- a/kernel/filesystem/CMakeLists.txt
+++ b/kernel/filesystem/CMakeLists.txt
@@ -2,8 +2,9 @@ add_library("kernel_filesystem" STATIC)
add_library("kernel::filesystem" ALIAS "kernel_filesystem")
target_sources("kernel_filesystem" PRIVATE
- "src/device_file.cpp"
"src/ext2/ext2_filesystem.cpp"
+ "src/custody.cpp"
+ "src/device_file.cpp"
"src/file_descriptor_table.cpp"
"src/filesystem.cpp"
"src/inode_file.cpp"
@@ -17,8 +18,9 @@ target_sources("kernel_filesystem" PUBLIC
FILE_SET HEADERS
BASE_DIRS "include"
FILES
- "include/filesystem/device_file.hpp"
"include/filesystem/ext2/ext2_filesystem.hpp"
+ "include/filesystem/custody.hpp"
+ "include/filesystem/device_file.hpp"
"include/filesystem/file_descriptor_table.hpp"
"include/filesystem/file.hpp"
"include/filesystem/filesystem.hpp"
diff --git a/kernel/filesystem/include/filesystem/custody.hpp b/kernel/filesystem/include/filesystem/custody.hpp
new file mode 100644
index 0000000..9ee984d
--- /dev/null
+++ b/kernel/filesystem/include/filesystem/custody.hpp
@@ -0,0 +1,21 @@
+#ifndef TEACH_OS_KERNEL_CUSTODY_HPP
+#define TEACH_OS_KERNEL_CUSTODY_HPP
+
+#include "filesystem/inode.hpp"
+
+namespace filesystem
+{
+ struct custody
+ {
+ custody(custody * parent, inode * node);
+
+ [[nodiscard]] auto get_inode() const -> inode *;
+ [[nodiscard]] auto get_parent() const -> custody *;
+
+ private:
+ custody * m_parent;
+ inode * m_inode;
+ };
+} // namespace filesystem
+
+#endif \ No newline at end of file
diff --git a/kernel/filesystem/src/custody.cpp b/kernel/filesystem/src/custody.cpp
new file mode 100644
index 0000000..614e63b
--- /dev/null
+++ b/kernel/filesystem/src/custody.cpp
@@ -0,0 +1,28 @@
+#include "filesystem/custody.hpp"
+
+#include "kapi/system.hpp"
+
+#include "filesystem/inode.hpp"
+
+namespace filesystem
+{
+ custody::custody(custody * parent, inode * node)
+ : m_parent(parent)
+ , m_inode(node)
+ {
+ if (!m_inode)
+ {
+ kapi::system::panic("[FILESYSTEM] custody constructed with null inode.");
+ }
+ }
+
+ auto custody::get_inode() const -> inode *
+ {
+ return m_inode;
+ }
+
+ auto custody::get_parent() const -> custody *
+ {
+ return m_parent;
+ }
+} // namespace filesystem \ No newline at end of file