From 27cdaef9c79d154630b63adce6b227de370e75dd Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sun, 23 Aug 2026 09:38:06 +0200 Subject: kernel/fs: extract convenience aliases --- kernel/kernel/filesystem/devfs/filesystem.cpp | 14 ++++++-------- kernel/kernel/filesystem/devfs/filesystem.hpp | 14 ++++++-------- kernel/kernel/filesystem/ext2/filesystem.hpp | 19 ++++++++----------- kernel/kernel/filesystem/filesystem.hpp | 15 +++++++++------ kernel/kernel/filesystem/rootfs/filesystem.cpp | 15 ++++++--------- kernel/kernel/filesystem/rootfs/filesystem.hpp | 12 +++++------- 6 files changed, 40 insertions(+), 49 deletions(-) diff --git a/kernel/kernel/filesystem/devfs/filesystem.cpp b/kernel/kernel/filesystem/devfs/filesystem.cpp index 60d174fe..cc42a5bd 100644 --- a/kernel/kernel/filesystem/devfs/filesystem.cpp +++ b/kernel/kernel/filesystem/devfs/filesystem.cpp @@ -29,7 +29,7 @@ namespace kernel::filesystem::devfs return "devfs"; } - [[nodiscard]] auto probe(kstd::shared_ptr const & backing_inode) const noexcept + [[nodiscard]] auto probe(filesystem::inode_ptr const & backing_inode) const noexcept -> kstd::result override { if (backing_inode) @@ -39,7 +39,7 @@ namespace kernel::filesystem::devfs return 0; } - [[nodiscard]] auto make_instance() const -> kstd::shared_ptr override + [[nodiscard]] auto make_instance() const -> filesystem::filesystem_ptr override { return kstd::make_shared(); } @@ -48,7 +48,7 @@ namespace kernel::filesystem::devfs [[gnu::used]] constexpr auto registration = type_registration{}; - auto filesystem::mount(kstd::shared_ptr const &) -> kstd::result + auto filesystem::mount(inode_ptr const &) -> kstd::result { m_root_inode = kstd::make_shared(); @@ -64,8 +64,7 @@ namespace kernel::filesystem::devfs return mount_result{m_root_inode, nullptr}; } - auto filesystem::lookup(kstd::shared_ptr const & parent, std::string_view name) const - -> kstd::result> + auto filesystem::lookup(inode_ptr const & parent, std::string_view name) const -> kstd::result { if (!parent) { @@ -91,9 +90,8 @@ namespace kernel::filesystem::devfs return kstd::failure(vfs_errc::no_such_file_or_directory); } - auto filesystem::create_inode(kstd::shared_ptr const &, std::string_view, - kapi::filesystem::file_type, std::optional) - -> kstd::result> + auto filesystem::create_inode(inode_ptr const &, std::string_view, kapi::filesystem::file_type, + std::optional) -> kstd::result { return kstd::failure(vfs_errc::read_only_file_system); } diff --git a/kernel/kernel/filesystem/devfs/filesystem.hpp b/kernel/kernel/filesystem/devfs/filesystem.hpp index 875f3957..f176a367 100644 --- a/kernel/kernel/filesystem/devfs/filesystem.hpp +++ b/kernel/kernel/filesystem/devfs/filesystem.hpp @@ -30,24 +30,22 @@ namespace kernel::filesystem::devfs kstd::enable_shared_from_this, device_number_registry_observer { - auto mount(kstd::shared_ptr const & backing_inode) - -> kstd::result override; + auto mount(inode_ptr const & backing_inode) -> kstd::result override; - [[nodiscard]] auto lookup(kstd::shared_ptr const & parent, std::string_view name) const - -> kstd::result> override; + [[nodiscard]] auto lookup(inode_ptr const & parent, std::string_view name) const + -> kstd::result override; //! @copydoc kernel::filesystem::filesystem::create_inode //! @return Always returns an error, as creating new inodes is not supported in devfs. - [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, - kapi::filesystem::file_type type, + [[nodiscard]] auto create_inode(inode_ptr const & parent, std::string_view name, kapi::filesystem::file_type type, std::optional raw_device = std::nullopt) - -> kstd::result> override; + -> kstd::result override; private: auto on_device_numbered(device_number_registry::entry const & numbered) -> void override; auto on_device_unnumbered(device_number_registry::entry const & numbered) -> void override; - kstd::shared_ptr m_root_inode{}; + inode_ptr m_root_inode{}; kstd::flat_map> m_inodes{}; }; } // namespace kernel::filesystem::devfs diff --git a/kernel/kernel/filesystem/ext2/filesystem.hpp b/kernel/kernel/filesystem/ext2/filesystem.hpp index fd304c00..1f7fe8af 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.hpp +++ b/kernel/kernel/filesystem/ext2/filesystem.hpp @@ -75,16 +75,14 @@ namespace kernel::filesystem::ext2 //! The Second Extended Filesystem (ext2) struct filesystem final : kernel::filesystem::filesystem { - auto mount(kstd::shared_ptr const & backing_inode) - -> kstd::result override; + auto mount(inode_ptr const & backing_inode) -> kstd::result override; - [[nodiscard]] auto lookup(kstd::shared_ptr const & parent, std::string_view name) const - -> kstd::result> override; + [[nodiscard]] auto lookup(inode_ptr const & parent, std::string_view name) const + -> kstd::result override; - [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, - kapi::filesystem::file_type type, + [[nodiscard]] auto create_inode(inode_ptr const & parent, std::string_view name, kapi::filesystem::file_type type, std::optional raw_device = std::nullopt) - -> kstd::result> override; + -> kstd::result override; //! Get the size of a block in the filesystem. //! @@ -158,7 +156,7 @@ namespace kernel::filesystem::ext2 //! Get the backing inode of the file system. //! //! @return A reference to the backing inode. - [[nodiscard]] auto backing_inode() const -> kstd::shared_ptr const &; + [[nodiscard]] auto backing_inode() const -> inode_ptr const &; private: struct indirect_level @@ -172,8 +170,7 @@ namespace kernel::filesystem::ext2 auto allocate_inode() -> kstd::result; auto add_directory_entry(inode * ext2_parent, std::string_view name, uint32_t child_inode_number, uint16_t mode) -> kstd::result; - auto init_directory(kstd::shared_ptr const & new_inode, - kernel::filesystem::ext2::inode * parent_inode) -> kstd::result; + auto init_directory(kstd::shared_ptr const & new_inode, inode * parent_inode) -> kstd::result; auto write_directory_entry_to_buffer(uint8_t * block_buffer, kstd::bytes offset, uint32_t child_inode_number, std::string_view name, uint8_t file_type) -> void; @@ -197,7 +194,7 @@ namespace kernel::filesystem::ext2 superblock m_superblock{}; kstd::vector m_block_group_descriptors; - kstd::shared_ptr m_backing_inode; + inode_ptr m_backing_inode; }; } // namespace kernel::filesystem::ext2 diff --git a/kernel/kernel/filesystem/filesystem.hpp b/kernel/kernel/filesystem/filesystem.hpp index 83f9b54d..f1b39bd4 100644 --- a/kernel/kernel/filesystem/filesystem.hpp +++ b/kernel/kernel/filesystem/filesystem.hpp @@ -22,7 +22,10 @@ namespace kernel::filesystem //! Filesystem implementations must derive from this class. struct filesystem { - using mount_result = std::pair, kstd::shared_ptr>; + using filesystem_ptr = kstd::shared_ptr; + using driver_data_ptr = kstd::shared_ptr; + using inode_ptr = kstd::shared_ptr; + using mount_result = std::pair; //! Virtual destructor enabling polymorphic destruction. virtual ~filesystem() = default; @@ -31,7 +34,7 @@ namespace kernel::filesystem //! //! @param backing_inode The inode to probe and mount, if any. //! @return A pointer to the instantiated filesystem and the root of it on success, an error otherwise. - auto static probe(kstd::shared_ptr const & backing_inode) -> kstd::result>; + auto static probe(inode_ptr const & backing_inode) -> kstd::result; //! Initializes the filesystem with the given inode. //! @@ -40,7 +43,7 @@ namespace kernel::filesystem //! //! @param backing_inode The inode to use as the backing inode for the filesystem. //! @return The root inode of the mounted filesystem on success, and error otherwise. - virtual auto mount(kstd::shared_ptr const & backing_inode) -> kstd::result = 0; + virtual auto mount(inode_ptr const & backing_inode) -> kstd::result = 0; //! Find a child inode below the given parent inode with the specified name. //! @@ -50,8 +53,8 @@ namespace kernel::filesystem //! @param parent The parent inode. //! @param name The name of the child inode to look up. //! @return A pointer to the requested child inode on success, an error otherwise. - [[nodiscard]] virtual auto lookup(kstd::shared_ptr const & parent, std::string_view name) const - -> kstd::result> = 0; + [[nodiscard]] virtual auto lookup(inode_ptr const & parent, std::string_view name) const + -> kstd::result = 0; //! Create a new inode with the given name below a given parent inode. //! @@ -60,7 +63,7 @@ namespace kernel::filesystem //! @param type The file type of inode to be created. //! @param raw_device The device number the new inode should represent, if any. //! @return A pointer to the created inode on success, an error otherwise. - [[nodiscard]] virtual auto create_inode(kstd::shared_ptr const & parent, std::string_view name, + [[nodiscard]] virtual auto create_inode(inode_ptr const & parent, std::string_view name, kapi::filesystem::file_type type, std::optional raw_device = std::nullopt) -> kstd::result> = 0; diff --git a/kernel/kernel/filesystem/rootfs/filesystem.cpp b/kernel/kernel/filesystem/rootfs/filesystem.cpp index 298e8c94..147d967a 100644 --- a/kernel/kernel/filesystem/rootfs/filesystem.cpp +++ b/kernel/kernel/filesystem/rootfs/filesystem.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include @@ -25,7 +24,7 @@ namespace kernel::filesystem::rootfs return "rootfs"; } - [[nodiscard]] auto probe(kstd::shared_ptr const & backing_inode) const noexcept + [[nodiscard]] auto probe(filesystem::inode_ptr const & backing_inode) const noexcept -> kstd::result override { if (backing_inode) @@ -36,7 +35,7 @@ namespace kernel::filesystem::rootfs return 0; } - [[nodiscard]] auto make_instance() const -> kstd::shared_ptr override + [[nodiscard]] auto make_instance() const -> filesystem::filesystem_ptr override { return kstd::make_shared(); } @@ -45,21 +44,19 @@ namespace kernel::filesystem::rootfs [[gnu::used]] constexpr auto registration = type_registration{}; - auto filesystem::mount(kstd::shared_ptr const &) -> kstd::result + auto filesystem::mount(inode_ptr const &) -> kstd::result { auto root = kstd::make_shared(); return mount_result{root, nullptr}; } - auto filesystem::lookup(kstd::shared_ptr const &, std::string_view) const - -> kstd::result> + auto filesystem::lookup(inode_ptr const &, std::string_view) const -> kstd::result { return kstd::failure(vfs_errc::no_such_file_or_directory); } - auto filesystem::create_inode(kstd::shared_ptr const &, std::string_view, - kapi::filesystem::file_type, std::optional) - -> kstd::result> + auto filesystem::create_inode(inode_ptr const &, std::string_view, kapi::filesystem::file_type, + std::optional) -> kstd::result { return kstd::failure(vfs_errc::read_only_file_system); } diff --git a/kernel/kernel/filesystem/rootfs/filesystem.hpp b/kernel/kernel/filesystem/rootfs/filesystem.hpp index 9f609106..5a72ff42 100644 --- a/kernel/kernel/filesystem/rootfs/filesystem.hpp +++ b/kernel/kernel/filesystem/rootfs/filesystem.hpp @@ -25,20 +25,18 @@ namespace kernel::filesystem::rootfs struct filesystem : kernel::filesystem::filesystem { //! @copydoc kernel::filesystem::filesystem::mount - auto mount(kstd::shared_ptr const & backing_inode) - -> kstd::result override; + auto mount(inode_ptr const & backing_inode) -> kstd::result override; //! @copydoc kernel::filesystem::filesystem::lookup. //! @return Always returns an error, as rootfs is always empty. - [[nodiscard]] auto lookup(kstd::shared_ptr const & parent, std::string_view name) const - -> kstd::result> override; + [[nodiscard]] auto lookup(inode_ptr const & parent, std::string_view name) const + -> kstd::result override; //! @copydoc kernel::filesystem::filesystem::create_inode. //! @return Always returns an error, as creating new inodes is not supported in rootfs. - [[nodiscard]] auto create_inode(kstd::shared_ptr const & parent, std::string_view name, - kapi::filesystem::file_type type, + [[nodiscard]] auto create_inode(inode_ptr const & parent, std::string_view name, kapi::filesystem::file_type type, std::optional raw_device = std::nullopt) - -> kstd::result> override; + -> kstd::result override; }; } // namespace kernel::filesystem::rootfs -- cgit v1.2.3