diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-06-01 21:15:25 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-06-02 16:30:20 +0200 |
| commit | ad2319188269331f4873adbeb44380d63e8e83c5 (patch) | |
| tree | 92c993ebc83770799460d71ab70abbfdad2c7d82 | |
| parent | 6c8b068c15e28e91117f84cb8d5789f5fe6fcbd0 (diff) | |
| download | kernel-ad2319188269331f4873adbeb44380d63e8e83c5.tar.xz kernel-ad2319188269331f4873adbeb44380d63e8e83c5.zip | |
kernel/vfs: manage filesystem registrations
| -rw-r--r-- | kernel/include/kernel/filesystem/vfs.hpp | 7 | ||||
| -rw-r--r-- | 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 <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/mount.hpp> #include <kernel/filesystem/mount_table.hpp> +#include <kernel/filesystem/type.hpp> +#include <kstd/flat_map> #include <kstd/memory> +#include <kstd/string> #include <string_view> #include <utility> @@ -106,7 +109,9 @@ namespace kernel::filesystem auto graft_persistent_device_fs(kstd::shared_ptr<devfs::filesystem> const & device_fs) -> void; - mount_table m_mount_table; + //! A map from filesystem names (identifiers) to filesystem type descriptors. + kstd::flat_map<kstd::string, kstd::observer_ptr<type const>> 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 / |
