aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-06-02 11:38:48 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-06-02 16:30:20 +0200
commitb34db5a8acd0639fde9a81b38e96776f7c2ef61e (patch)
treed4072d313061f92c55bed6bcda9a73040bb53127
parentd2d4fa3330a09f421b8658c077166cc493532b9e (diff)
downloadkernel-b34db5a8acd0639fde9a81b38e96776f7c2ef61e.tar.xz
kernel-b34db5a8acd0639fde9a81b38e96776f7c2ef61e.zip
kernel/vfs: add type descriptor for rootfs
-rw-r--r--kernel/src/filesystem/rootfs/filesystem.cpp25
-rw-r--r--kernel/src/main.cpp2
2 files changed, 26 insertions, 1 deletions
diff --git a/kernel/src/filesystem/rootfs/filesystem.cpp b/kernel/src/filesystem/rootfs/filesystem.cpp
index 0ba2936..7fe5c1e 100644
--- a/kernel/src/filesystem/rootfs/filesystem.cpp
+++ b/kernel/src/filesystem/rootfs/filesystem.cpp
@@ -1,8 +1,9 @@
#include <kernel/filesystem/rootfs/filesystem.hpp>
-#include "kernel/filesystem/filesystem.hpp"
+#include <kernel/filesystem/filesystem.hpp>
#include <kernel/filesystem/inode.hpp>
#include <kernel/filesystem/rootfs/inode.hpp>
+#include <kernel/filesystem/type.hpp>
#include <kstd/memory>
@@ -10,6 +11,28 @@
namespace kernel::filesystem::rootfs
{
+
+ struct type final : kernel::filesystem::type
+ {
+ [[nodiscard]] auto name() const noexcept -> std::string_view override
+ {
+ return "rootfs";
+ }
+
+ [[nodiscard]] auto requires_device() const noexcept -> bool override
+ {
+ return true;
+ }
+
+ [[nodiscard]] auto make_instance() const -> kstd::shared_ptr<kernel::filesystem::filesystem> override
+ {
+ return kstd::make_shared<filesystem>();
+ }
+ };
+
+ [[gnu::used]]
+ constexpr auto registration = type_registration<type>{};
+
auto filesystem::mount(kstd::shared_ptr<kernel::filesystem::inode> const &) -> operation_result
{
m_root_inode = kstd::make_shared<inode>();
diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp
index 5063d18..8dc1349 100644
--- a/kernel/src/main.cpp
+++ b/kernel/src/main.cpp
@@ -140,6 +140,8 @@ auto main() -> int
kstd::println("[OS] Global open file table initialized.");
kernel::filesystem::type_registry::init();
+ kstd::println("[OS] Builtin filesystems registered.");
+
kernel::filesystem::vfs::init();
kstd::println("[OS] Virtual filesystem initialized.");