aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-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 /