aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/CMakeLists.txt3
-rw-r--r--kernel/kernel/filesystem/devfs/filesystem.cpp16
-rw-r--r--kernel/kernel/filesystem/devfs/module.cpp28
-rw-r--r--kernel/kernel/filesystem/ext2/filesystem.cpp21
-rw-r--r--kernel/kernel/filesystem/ext2/module.cpp26
-rw-r--r--kernel/kernel/filesystem/rootfs/filesystem.cpp17
-rw-r--r--kernel/kernel/filesystem/rootfs/module.cpp28
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