aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-06-01 21:15:25 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-06-02 16:30:20 +0200
commitad2319188269331f4873adbeb44380d63e8e83c5 (patch)
tree92c993ebc83770799460d71ab70abbfdad2c7d82
parent6c8b068c15e28e91117f84cb8d5789f5fe6fcbd0 (diff)
downloadkernel-ad2319188269331f4873adbeb44380d63e8e83c5.tar.xz
kernel-ad2319188269331f4873adbeb44380d63e8e83c5.zip
kernel/vfs: manage filesystem registrations
-rw-r--r--kernel/include/kernel/filesystem/vfs.hpp7
-rw-r--r--kernel/src/filesystem/vfs.cpp5
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 /