From 84d4476650b31dbfc52becf2ff65ddce9d31c9ec Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Tue, 24 Mar 2026 23:54:28 +0100 Subject: implement a rootfs to handle / mounts correctly --- kernel/src/filesystem/rootfs/rootfs_inode.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 kernel/src/filesystem/rootfs/rootfs_inode.cpp (limited to 'kernel/src/filesystem/rootfs/rootfs_inode.cpp') diff --git a/kernel/src/filesystem/rootfs/rootfs_inode.cpp b/kernel/src/filesystem/rootfs/rootfs_inode.cpp new file mode 100644 index 0000000..ed057f7 --- /dev/null +++ b/kernel/src/filesystem/rootfs/rootfs_inode.cpp @@ -0,0 +1,22 @@ +#include "kernel/filesystem/rootfs/rootfs_inode.hpp" + +#include "kernel/filesystem/inode.hpp" + +#include + +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; + } +} // namespace filesystem::rootfs -- cgit v1.2.3 From e97b668f82ad1a51e1e9352073a3ae51cedfdd34 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Thu, 26 Mar 2026 20:27:23 +0100 Subject: mount /dev in the rootfs --- kernel/src/filesystem/rootfs/rootfs_inode.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'kernel/src/filesystem/rootfs/rootfs_inode.cpp') diff --git a/kernel/src/filesystem/rootfs/rootfs_inode.cpp b/kernel/src/filesystem/rootfs/rootfs_inode.cpp index ed057f7..9bbfbce 100644 --- a/kernel/src/filesystem/rootfs/rootfs_inode.cpp +++ b/kernel/src/filesystem/rootfs/rootfs_inode.cpp @@ -2,7 +2,13 @@ #include "kernel/filesystem/inode.hpp" +#include +#include + +#include #include +#include +#include namespace filesystem::rootfs { @@ -19,4 +25,15 @@ namespace filesystem::rootfs { 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())); + } + + auto rootfs_inode::lookup_child(std::string_view name) -> kstd::shared_ptr + { + 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 -- cgit v1.2.3