diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 20:27:23 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:19:34 +0100 |
| commit | e97b668f82ad1a51e1e9352073a3ae51cedfdd34 (patch) | |
| tree | 3f298a7ee717440eb9c0fce7bb3e6ce616d30177 /kernel/src | |
| parent | 31ac3e6ffff00b7ac3b3dbb3db38c44409251b34 (diff) | |
| download | teachos-e97b668f82ad1a51e1e9352073a3ae51cedfdd34.tar.xz teachos-e97b668f82ad1a51e1e9352073a3ae51cedfdd34.zip | |
mount /dev in the rootfs
Diffstat (limited to 'kernel/src')
| -rw-r--r-- | kernel/src/filesystem/rootfs/rootfs_filesystem.cpp | 9 | ||||
| -rw-r--r-- | kernel/src/filesystem/rootfs/rootfs_inode.cpp | 17 |
2 files changed, 24 insertions, 2 deletions
diff --git a/kernel/src/filesystem/rootfs/rootfs_filesystem.cpp b/kernel/src/filesystem/rootfs/rootfs_filesystem.cpp index 22b1962..e819fc7 100644 --- a/kernel/src/filesystem/rootfs/rootfs_filesystem.cpp +++ b/kernel/src/filesystem/rootfs/rootfs_filesystem.cpp @@ -12,13 +12,18 @@ namespace filesystem::rootfs { auto rootfs_filesystem::mount(kstd::shared_ptr<devices::device> const & /*device*/) -> int { - m_root_inode = kstd::make_shared<rootfs_inode>(); + auto rfs_inode = kstd::make_shared<rootfs_inode>(); + rfs_inode->add_child("dev"); + m_root_inode = rfs_inode; + return 0; } - auto rootfs_filesystem::lookup(kstd::shared_ptr<inode> const & /*parent*/, std::string_view /*name*/) + auto rootfs_filesystem::lookup(kstd::shared_ptr<inode> const & parent, std::string_view name) -> kstd::shared_ptr<inode> { + if (auto * rfs_inode = static_cast<rootfs_inode *>(parent.get())) + return rfs_inode->lookup_child(name); return nullptr; } } // namespace filesystem::rootfs 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 <kstd/memory> +#include <kstd/string> + +#include <algorithm> #include <cstddef> +#include <string_view> +#include <utility> 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<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 |
