aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/rootfs/rootfs_inode.cpp
diff options
context:
space:
mode:
authorMarcel Braun <marcel.braun@ost.ch>2026-03-28 19:16:27 +0100
committerMarcel Braun <marcel.braun@ost.ch>2026-03-28 19:16:27 +0100
commit2864e0b061f923a3c73c608b9c27ca4a7116e27c (patch)
tree7175be5fcaa789e0bfd6d0aeb4e7f6ac756cabf6 /kernel/src/filesystem/rootfs/rootfs_inode.cpp
parent05269b10e50a80f557c2be475904ff15dc1bbec4 (diff)
parent8a9bf5a90b7f46d5c615b55a3fc418b419db4926 (diff)
downloadteachos-2864e0b061f923a3c73c608b9c27ca4a7116e27c.tar.xz
teachos-2864e0b061f923a3c73c608b9c27ca4a7116e27c.zip
Merge branch 'vfs' into 'develop-BA-FS26'
implement basic vfs See merge request teachos/kernel!16
Diffstat (limited to 'kernel/src/filesystem/rootfs/rootfs_inode.cpp')
-rw-r--r--kernel/src/filesystem/rootfs/rootfs_inode.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/kernel/src/filesystem/rootfs/rootfs_inode.cpp b/kernel/src/filesystem/rootfs/rootfs_inode.cpp
new file mode 100644
index 0000000..9bbfbce
--- /dev/null
+++ b/kernel/src/filesystem/rootfs/rootfs_inode.cpp
@@ -0,0 +1,39 @@
+#include "kernel/filesystem/rootfs/rootfs_inode.hpp"
+
+#include "kernel/filesystem/inode.hpp"
+
+#include <kstd/memory>
+#include <kstd/string>
+
+#include <algorithm>
+#include <cstddef>
+#include <string_view>
+#include <utility>
+
+namespace filesystem::rootfs
+{
+ rootfs_inode::rootfs_inode()
+ : inode(inode_kind::directory)
+ {}
+
+ auto rootfs_inode::read(void * /*buffer*/, size_t /*offset*/, size_t /*size*/) const -> size_t
+ {
+ return 0;
+ }
+
+ auto rootfs_inode::write(void const * /*buffer*/, size_t /*offset*/, size_t /*size*/) -> size_t
+ {
+ return 0;
+ }
+
+ auto rootfs_inode::add_child(std::string_view name) -> void
+ {
+ m_children.push_back(std::make_pair(kstd::string{name}, kstd::make_shared<rootfs_inode>()));
+ }
+
+ auto rootfs_inode::lookup_child(std::string_view name) -> kstd::shared_ptr<inode>
+ {
+ auto it = std::ranges::find_if(m_children, [&](auto const & pair) { return pair.first == name; });
+ return (it != m_children.end()) ? it->second : nullptr;
+ }
+} // namespace filesystem::rootfs