diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-08-24 10:59:02 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-08-26 11:16:17 +0200 |
| commit | 98fff0dc733050d8bbdfba5235de918ba15fee0e (patch) | |
| tree | b4e5a328c5c44186fc73c551f684c466b299a088 /kernel | |
| parent | a8bd597ed30f4d57bb8ec348b66f13a90c197b69 (diff) | |
| download | kernel-98fff0dc733050d8bbdfba5235de918ba15fee0e.tar.xz kernel-98fff0dc733050d8bbdfba5235de918ba15fee0e.zip | |
kernel/fs: extract module registrations
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/devfs/filesystem.cpp | 16 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/devfs/module.cpp | 28 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/ext2/filesystem.cpp | 21 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/ext2/module.cpp | 26 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/rootfs/filesystem.cpp | 17 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/rootfs/module.cpp | 28 |
7 files changed, 87 insertions, 52 deletions
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 <kernel/filesystem/devfs/inode.hpp> #include <kernel/filesystem/device_inode.hpp> #include <kernel/filesystem/device_number_registry.hpp> -#include <kernel/filesystem/driver_registry.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/inode.hpp> @@ -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<filesystem>(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module<descriptor>{}; 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 <kernel/filesystem/devfs/filesystem.hpp> +#include <kernel/filesystem/driver_registry.hpp> +#include <kernel/filesystem/filesystem.hpp> + +#include <kstd/memory.hpp> + +#include <string_view> + +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<kernel::filesystem::devfs::filesystem>(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module<descriptor>{}; + +} // 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 <kernel/filesystem/ext2/filesystem.hpp> -#include <kernel/filesystem/driver_registry.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/ext2/block_group_descriptor.hpp> #include <kernel/filesystem/ext2/error.hpp> @@ -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<filesystem>(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module<descriptor>{}; - - static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(kernel::filesystem::ext2::filesystem)); - namespace { [[nodiscard]] auto bitmap_is_set(kstd::vector<uint8_t> 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<indirect_level, 3> { 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 <kernel/filesystem/driver_registry.hpp> +#include <kernel/filesystem/ext2/filesystem.hpp> +#include <kernel/filesystem/filesystem.hpp> + +#include <kstd/memory.hpp> + +#include <string_view> + +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<kernel::filesystem::ext2::filesystem>(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module<descriptor>{}; +} // 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 <kernel/filesystem/rootfs/filesystem.hpp> -#include <kernel/filesystem/driver_registry.hpp> #include <kernel/filesystem/error.hpp> #include <kernel/filesystem/filesystem.hpp> #include <kernel/filesystem/rootfs/inode.hpp> @@ -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<filesystem>(); - } - }; - - [[gnu::used]] - constexpr auto registration = driver_module<descriptor>{}; - static_assert(sizeof(kernel::filesystem::filesystem) == sizeof(rootfs::filesystem)); auto filesystem::probe(inode_ptr const & inode) const -> kstd::result<std::uint32_t> 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 <kernel/filesystem/driver_registry.hpp> +#include <kernel/filesystem/filesystem.hpp> +#include <kernel/filesystem/rootfs/filesystem.hpp> + +#include <kstd/memory.hpp> + +#include <string_view> + +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<kernel::filesystem::rootfs::filesystem>(); + } + }; + + [[gnu::used]] + constexpr auto registration = kernel::filesystem::driver_module<descriptor>{}; + +} // namespace
\ No newline at end of file |
