diff options
| author | marcel.braun <marcel.braun@ost.ch> | 2026-03-23 09:49:32 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:18:49 +0100 |
| commit | bcb4f8a76dea2443c1597716e27b7c2d268bfc44 (patch) | |
| tree | 7e54a13ae440d52baed8ff7ff828a3b8b61b14a4 | |
| parent | d70e2df0885a844d47b6498bf2c710fb9730b364 (diff) | |
| download | teachos-bcb4f8a76dea2443c1597716e27b7c2d268bfc44.tar.xz teachos-bcb4f8a76dea2443c1597716e27b7c2d268bfc44.zip | |
Refactor filesystem
| -rw-r--r-- | kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp | 1 | ||||
| -rw-r--r-- | kernel/include/kernel/filesystem/filesystem.hpp | 5 | ||||
| -rw-r--r-- | kernel/src/filesystem/ext2/ext2_filesystem.cpp | 8 | ||||
| -rw-r--r-- | kernel/src/filesystem/filesystem.cpp | 11 |
4 files changed, 17 insertions, 8 deletions
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp b/kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp index d6f69c8..92e05c8 100644 --- a/kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp +++ b/kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp @@ -17,7 +17,6 @@ namespace filesystem::ext2 auto lookup(inode const & parent, std::string_view name) -> inode * override; private: - kstd::shared_ptr<devices::device> m_device{}; }; } // namespace filesystem::ext2 diff --git a/kernel/include/kernel/filesystem/filesystem.hpp b/kernel/include/kernel/filesystem/filesystem.hpp index 035f49d..733c51a 100644 --- a/kernel/include/kernel/filesystem/filesystem.hpp +++ b/kernel/include/kernel/filesystem/filesystem.hpp @@ -5,6 +5,7 @@ #include "kernel/filesystem/inode.hpp" #include <kstd/memory> +#include <kstd/vector> #include <string_view> @@ -14,13 +15,15 @@ namespace filesystem { virtual ~filesystem() = default; - virtual auto mount(kstd::shared_ptr<devices::device> const & device) -> int = 0; + virtual auto mount(kstd::shared_ptr<devices::device> const & device) -> int; virtual auto lookup(inode const & parent, std::string_view name) -> inode * = 0; [[nodiscard]] auto root_inode() const -> kstd::shared_ptr<inode> const &; protected: kstd::shared_ptr<inode> m_root_inode{}; + kstd::shared_ptr<devices::device> m_device{}; + kstd::vector<kstd::shared_ptr<inode>> m_inodes{}; }; } // namespace filesystem diff --git a/kernel/src/filesystem/ext2/ext2_filesystem.cpp b/kernel/src/filesystem/ext2/ext2_filesystem.cpp index 87845d5..ea692ee 100644 --- a/kernel/src/filesystem/ext2/ext2_filesystem.cpp +++ b/kernel/src/filesystem/ext2/ext2_filesystem.cpp @@ -1,6 +1,7 @@ #include "kernel/filesystem/ext2/ext2_filesystem.hpp" #include "kernel/devices/device.hpp" +#include "kernel/filesystem/filesystem.hpp" #include "kernel/filesystem/inode.hpp" #include <kstd/memory> @@ -11,12 +12,7 @@ namespace filesystem::ext2 { auto ext2_filesystem::mount(kstd::shared_ptr<devices::device> const & device) -> int { - if (!device) - { - return -1; // TODO BA-FS26 panic or errorcode? - } - - m_device = device; + filesystem::mount(device); // TODO BA-FS26 error handling? // TODO BA-FS26 load proper root inode from ext2 metadata // m_root_inode = inode{inode_kind::directory}; diff --git a/kernel/src/filesystem/filesystem.cpp b/kernel/src/filesystem/filesystem.cpp index 50b5587..0e33d95 100644 --- a/kernel/src/filesystem/filesystem.cpp +++ b/kernel/src/filesystem/filesystem.cpp @@ -1,11 +1,22 @@ #include "kernel/filesystem/filesystem.hpp" +#include "kernel/devices/device.hpp" #include "kernel/filesystem/inode.hpp" #include <kstd/memory> namespace filesystem { + auto filesystem::mount(kstd::shared_ptr<devices::device> const & device) -> int + { + if (!device) + { + return -1; // TODO BA-FS26 panic or errorcode? + } + m_device = device; + return 0; + } + auto filesystem::root_inode() const -> kstd::shared_ptr<inode> const & { return m_root_inode; |
