aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcel.braun <marcel.braun@ost.ch>2026-03-23 09:49:32 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-26 21:18:49 +0100
commitbcb4f8a76dea2443c1597716e27b7c2d268bfc44 (patch)
tree7e54a13ae440d52baed8ff7ff828a3b8b61b14a4
parentd70e2df0885a844d47b6498bf2c710fb9730b364 (diff)
downloadteachos-bcb4f8a76dea2443c1597716e27b7c2d268bfc44.tar.xz
teachos-bcb4f8a76dea2443c1597716e27b7c2d268bfc44.zip
Refactor filesystem
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_filesystem.hpp1
-rw-r--r--kernel/include/kernel/filesystem/filesystem.hpp5
-rw-r--r--kernel/src/filesystem/ext2/ext2_filesystem.cpp8
-rw-r--r--kernel/src/filesystem/filesystem.cpp11
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;