From 98fff0dc733050d8bbdfba5235de918ba15fee0e Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 10:59:02 +0200 Subject: kernel/fs: extract module registrations --- kernel/CMakeLists.txt | 3 +++ kernel/kernel/filesystem/devfs/filesystem.cpp | 16 --------------- kernel/kernel/filesystem/devfs/module.cpp | 28 ++++++++++++++++++++++++++ kernel/kernel/filesystem/ext2/filesystem.cpp | 21 ++----------------- kernel/kernel/filesystem/ext2/module.cpp | 26 ++++++++++++++++++++++++ kernel/kernel/filesystem/rootfs/filesystem.cpp | 17 ---------------- kernel/kernel/filesystem/rootfs/module.cpp | 28 ++++++++++++++++++++++++++ 7 files changed, 87 insertions(+), 52 deletions(-) create mode 100644 kernel/kernel/filesystem/devfs/module.cpp create mode 100644 kernel/kernel/filesystem/ext2/module.cpp create mode 100644 kernel/kernel/filesystem/rootfs/module.cpp diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 2cca2dda..6f998084 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -72,15 +72,18 @@ target_sources("kernel_lib" PRIVATE # DevFS Filesystem "kernel/filesystem/devfs/filesystem.cpp" "kernel/filesystem/devfs/inode.cpp" + "kernel/filesystem/devfs/module.cpp" # ext2 Filesystem "kernel/filesystem/ext2/error.cpp" "kernel/filesystem/ext2/filesystem.cpp" "kernel/filesystem/ext2/inode.cpp" + "kernel/filesystem/ext2/module.cpp" # Rootfs Filesystem "kernel/filesystem/rootfs/filesystem.cpp" "kernel/filesystem/rootfs/inode.cpp" + "kernel/filesystem/rootfs/module.cpp" ) file(GLOB_RECURSE KERNEL_HEADERS diff --git a/kernel/kernel/filesystem/devfs/filesystem.cpp b/kernel/kernel/filesystem/devfs/filesystem.cpp index a7c8e50c..0de513a7 100644 --- a/kernel/kernel/filesystem/devfs/filesystem.cpp +++ b/kernel/kernel/filesystem/devfs/filesystem.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -21,21 +20,6 @@ namespace kernel::filesystem::devfs { - struct descriptor final : kernel::filesystem::driver_descriptor - { - [[nodiscard]] auto name() const noexcept -> std::string_view override - { - return "devfs"; - } - - [[nodiscard]] auto make_instance() const -> filesystem::filesystem_ptr override - { - return kstd::make_shared(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module{}; static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(devfs::filesystem)); diff --git a/kernel/kernel/filesystem/devfs/module.cpp b/kernel/kernel/filesystem/devfs/module.cpp new file mode 100644 index 00000000..a7a1aca9 --- /dev/null +++ b/kernel/kernel/filesystem/devfs/module.cpp @@ -0,0 +1,28 @@ +#include +#include +#include + +#include + +#include + +namespace +{ + + struct descriptor final : kernel::filesystem::driver_descriptor + { + [[nodiscard]] auto name() const noexcept -> std::string_view override + { + return "devfs"; + } + + [[nodiscard]] auto make_instance() const -> kernel::filesystem::filesystem::filesystem_ptr override + { + return kstd::make_shared(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module{}; + +} // namespace \ No newline at end of file diff --git a/kernel/kernel/filesystem/ext2/filesystem.cpp b/kernel/kernel/filesystem/ext2/filesystem.cpp index 579094e0..92945eb2 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.cpp +++ b/kernel/kernel/filesystem/ext2/filesystem.cpp @@ -1,6 +1,5 @@ #include -#include #include #include #include @@ -35,24 +34,6 @@ using namespace kstd::units_literals; namespace kernel::filesystem::ext2 { - struct descriptor final : kernel::filesystem::driver_descriptor - { - [[nodiscard]] auto name() const noexcept -> std::string_view override - { - return "ext2"; - } - - [[nodiscard]] auto make_instance() const -> filesystem::filesystem_ptr override - { - return kstd::make_shared(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module{}; - - static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(kernel::filesystem::ext2::filesystem)); - namespace { [[nodiscard]] auto bitmap_is_set(kstd::vector const & bitmap, size_t index) -> bool @@ -74,6 +55,8 @@ namespace kernel::filesystem::ext2 read_only_compatible_features::large_file_support; } // namespace + static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(kernel::filesystem::ext2::filesystem)); + auto filesystem::indirect_levels(mount_state const & state) const -> std::array { return { diff --git a/kernel/kernel/filesystem/ext2/module.cpp b/kernel/kernel/filesystem/ext2/module.cpp new file mode 100644 index 00000000..e6b14307 --- /dev/null +++ b/kernel/kernel/filesystem/ext2/module.cpp @@ -0,0 +1,26 @@ +#include +#include +#include + +#include + +#include + +namespace +{ + struct descriptor final : kernel::filesystem::driver_descriptor + { + [[nodiscard]] auto name() const noexcept -> std::string_view override + { + return "ext2"; + } + + [[nodiscard]] auto make_instance() const -> kernel::filesystem::filesystem::filesystem_ptr override + { + return kstd::make_shared(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module{}; +} // namespace diff --git a/kernel/kernel/filesystem/rootfs/filesystem.cpp b/kernel/kernel/filesystem/rootfs/filesystem.cpp index a14addba..4618fd69 100644 --- a/kernel/kernel/filesystem/rootfs/filesystem.cpp +++ b/kernel/kernel/filesystem/rootfs/filesystem.cpp @@ -1,6 +1,5 @@ #include -#include #include #include #include @@ -17,22 +16,6 @@ namespace kernel::filesystem::rootfs { - struct descriptor final : kernel::filesystem::driver_descriptor - { - [[nodiscard]] auto name() const noexcept -> std::string_view override - { - return "rootfs"; - } - - [[nodiscard]] auto make_instance() const -> filesystem::filesystem_ptr override - { - return kstd::make_shared(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module{}; - static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(rootfs::filesystem)); auto filesystem::probe(inode_ptr const & inode) const -> kstd::result diff --git a/kernel/kernel/filesystem/rootfs/module.cpp b/kernel/kernel/filesystem/rootfs/module.cpp new file mode 100644 index 00000000..464120b2 --- /dev/null +++ b/kernel/kernel/filesystem/rootfs/module.cpp @@ -0,0 +1,28 @@ +#include +#include +#include + +#include + +#include + +namespace +{ + + struct descriptor final : kernel::filesystem::driver_descriptor + { + [[nodiscard]] auto name() const noexcept -> std::string_view override + { + return "rootfs"; + } + + [[nodiscard]] auto make_instance() const -> kernel::filesystem::filesystem::filesystem_ptr override + { + return kstd::make_shared(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module{}; + +} // namespace \ No newline at end of file -- cgit v1.2.3