diff options
| -rw-r--r-- | kernel/include/kernel/filesystem/device_inode.hpp | 4 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/ext2_inode.hpp | 5 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/inode.hpp | 4 | ||||
| -rw-r--r-- | kernel/src/filesystem/device_inode.cpp | 9 | ||||
| -rw-r--r-- | kernel/src/filesystem/ext2/ext2_inode.cpp | 11 | ||||
| -rw-r--r-- | kernel/src/filesystem/vfs.cpp | 2 |
6 files changed, 11 insertions, 24 deletions
diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp index af2a51b..10e40b3 100644 --- a/kernel/include/kernel/filesystem/device_inode.hpp +++ b/kernel/include/kernel/filesystem/device_inode.hpp @@ -14,12 +14,12 @@ namespace filesystem { explicit device_inode(kstd::shared_ptr<devices::device> const & device); - [[nodiscard]] auto open_file(kstd::shared_ptr<inode> const & self) const -> kstd::shared_ptr<file> override; + [[nodiscard]] auto open_file() -> kstd::shared_ptr<file> override; [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &; private: - kstd::shared_ptr<devices::device> m_device{}; + kstd::shared_ptr<devices::device> m_device; }; } // namespace filesystem diff --git a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp index b57d267..e6e8e99 100644 --- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp +++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp @@ -13,11 +13,10 @@ namespace filesystem::ext2 { explicit ext2_inode(); - [[nodiscard]] auto open_file(kstd::shared_ptr<inode> const & self) const - -> kstd::shared_ptr<filesystem::file> override; + [[nodiscard]] auto open_file() -> kstd::shared_ptr<filesystem::file> override; private: - kstd::shared_ptr<ext2_file> m_file{}; + kstd::shared_ptr<ext2_file> m_file; }; } // namespace filesystem::ext2 diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp index 8c9f75e..1083d13 100644 --- a/kernel/include/kernel/filesystem/inode.hpp +++ b/kernel/include/kernel/filesystem/inode.hpp @@ -7,7 +7,7 @@ namespace filesystem { struct file; - struct inode + struct inode : kstd::enable_shared_from_this<inode> { enum class inode_kind { @@ -20,7 +20,7 @@ namespace filesystem virtual ~inode() = default; - [[nodiscard]] virtual auto open_file(kstd::shared_ptr<inode> const & self) const -> kstd::shared_ptr<file> = 0; + [[nodiscard]] virtual auto open_file() -> kstd::shared_ptr<file> = 0; [[nodiscard]] auto is_directory() const -> bool; [[nodiscard]] auto is_regular() const -> bool; diff --git a/kernel/src/filesystem/device_inode.cpp b/kernel/src/filesystem/device_inode.cpp index 65dd9a3..b9ccd6d 100644 --- a/kernel/src/filesystem/device_inode.cpp +++ b/kernel/src/filesystem/device_inode.cpp @@ -21,14 +21,9 @@ namespace filesystem } } - auto device_inode::open_file(kstd::shared_ptr<inode> const & self) const -> kstd::shared_ptr<file> + auto device_inode::open_file() -> kstd::shared_ptr<file> { - if (!self) - { - kapi::system::panic("[FILESYSTEM] device_inode::open_file called with null inode."); - } - - return kstd::make_shared<device_file>(self); + return kstd::make_shared<device_file>(shared_from_this()); } auto device_inode::device() const -> kstd::shared_ptr<devices::device> const & diff --git a/kernel/src/filesystem/ext2/ext2_inode.cpp b/kernel/src/filesystem/ext2/ext2_inode.cpp index 0a1994b..0760cb1 100644 --- a/kernel/src/filesystem/ext2/ext2_inode.cpp +++ b/kernel/src/filesystem/ext2/ext2_inode.cpp @@ -1,7 +1,5 @@ #include "kernel/filesystem/ext2/ext2_inode.hpp" -#include "kapi/system.hpp" - #include "kernel/filesystem/file.hpp" #include "kernel/filesystem/inode.hpp" #include "kernel/filesystem/inode_file.hpp" @@ -14,13 +12,8 @@ namespace filesystem::ext2 : inode(inode_kind::regular) {} - auto ext2_inode::open_file(kstd::shared_ptr<inode> const & self) const -> kstd::shared_ptr<filesystem::file> + auto ext2_inode::open_file() -> kstd::shared_ptr<filesystem::file> { - if (!self) - { - kapi::system::panic("[FILESYSTEM] ext2_inode::open_file called with null inode."); - } - - return kstd::make_shared<inode_file>(self); + return kstd::make_shared<inode_file>(shared_from_this()); } } // namespace filesystem::ext2
\ No newline at end of file diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp index 5330b82..2316de0 100644 --- a/kernel/src/filesystem/vfs.cpp +++ b/kernel/src/filesystem/vfs.cpp @@ -70,7 +70,7 @@ namespace filesystem { auto node = custody->get_inode(); - if (auto opened_file = node->open_file(node)) + if (auto opened_file = node->open_file()) { return kstd::make_shared<open_file_description>(opened_file); } |
