From ad2319188269331f4873adbeb44380d63e8e83c5 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 1 Jun 2026 21:15:25 +0200 Subject: kernel/vfs: manage filesystem registrations --- kernel/include/kernel/filesystem/vfs.hpp | 7 ++++++- kernel/src/filesystem/vfs.cpp | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/kernel/include/kernel/filesystem/vfs.hpp b/kernel/include/kernel/filesystem/vfs.hpp index bbafa4f..c8aae5c 100644 --- a/kernel/include/kernel/filesystem/vfs.hpp +++ b/kernel/include/kernel/filesystem/vfs.hpp @@ -6,8 +6,11 @@ #include #include #include +#include +#include #include +#include #include #include @@ -106,7 +109,9 @@ namespace kernel::filesystem auto graft_persistent_device_fs(kstd::shared_ptr const & device_fs) -> void; - mount_table m_mount_table; + //! A map from filesystem names (identifiers) to filesystem type descriptors. + kstd::flat_map> m_filesystems{}; + mount_table m_mount_table{}; }; } // namespace kernel::filesystem diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp index b0d63a2..8dcae2c 100644 --- a/kernel/src/filesystem/vfs.cpp +++ b/kernel/src/filesystem/vfs.cpp @@ -53,8 +53,9 @@ namespace kernel::filesystem // Register all compiled-in filesystems auto type_descriptors = std::span{&__start_vfs_type_descriptors, &__stop_vfs_type_descriptors} | std::views::filter([](auto p) { return p != nullptr; }); - std::ranges::for_each(type_descriptors, [](auto descriptor) { - kstd::println("[OS] registering filesystem '{}'", descriptor->name()); + std::ranges::for_each(type_descriptors, [this](auto descriptor) { + kstd::println("[FILESYSTEM] registering '{}'", descriptor->name()); + m_filesystems.emplace(descriptor->name(), descriptor); }); // mount rootfs at / -- cgit v1.2.3