diff options
Diffstat (limited to 'kernel')
| -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 / |
