diff options
| author | marcel.braun <marcel.braun@ost.ch> | 2026-03-23 20:22:43 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-26 21:18:51 +0100 |
| commit | 7173e5ba354dccc4b5d5fea119b946f28bc5b08f (patch) | |
| tree | 3790f8e08f02acac389b33efa77a1e67edd6cadf | |
| parent | fdcf1c7d2b47d418916e311cea8b87affaf63f90 (diff) | |
| download | teachos-7173e5ba354dccc4b5d5fea119b946f28bc5b08f.tar.xz teachos-7173e5ba354dccc4b5d5fea119b946f28bc5b08f.zip | |
Refactor move init logic into member function
| -rw-r--r-- | kernel/include/kernel/filesystem/vfs.hpp | 2 | ||||
| -rw-r--r-- | kernel/src/filesystem/vfs.cpp | 15 |
2 files changed, 13 insertions, 4 deletions
diff --git a/kernel/include/kernel/filesystem/vfs.hpp b/kernel/include/kernel/filesystem/vfs.hpp index 01cd2ea..b6d4c4c 100644 --- a/kernel/include/kernel/filesystem/vfs.hpp +++ b/kernel/include/kernel/filesystem/vfs.hpp @@ -36,6 +36,8 @@ namespace filesystem kstd::vector<std::optional<device_node_entry>> m_device_nodes; // TODO BA-FS26 remove again, use devtempfs vfs() = default; + auto init_internal() -> void; + auto make_device_node(kstd::shared_ptr<devices::device> const & device) -> void; [[nodiscard]] auto resolve_path(std::string_view path) -> std::optional<dentry>; diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp index 2c4a4d5..ece3080 100644 --- a/kernel/src/filesystem/vfs.cpp +++ b/kernel/src/filesystem/vfs.cpp @@ -32,21 +32,28 @@ namespace filesystem } active_vfs.emplace(vfs{}); + active_vfs->init_internal(); + } + auto vfs::init_internal() -> void + { auto storage_mgmt = devices::storage::storage_management::get(); // TODO BA-FS26 fix mounting boot_device if (auto boot_device = storage_mgmt.determine_boot_device()) { - active_vfs->m_root_fs = kstd::make_shared<ext2::ext2_filesystem>(); - active_vfs->m_root_dentry = kstd::make_shared<dentry>(nullptr, active_vfs->m_root_fs->root_inode()); - // if (active_vfs->do_mount("/", active_vfs->m_root_fs) != 0) + m_root_fs = kstd::make_shared<ext2::ext2_filesystem>(); + + m_root_fs->mount(boot_device); + + m_root_dentry = kstd::make_shared<dentry>(nullptr, m_root_fs->root_inode()); + // if (do_mount("/", m_root_fs) != 0) // { // kapi::system::panic("[FILESYSTEM] Failed to mount root filesystem."); // } // TODO BA-FS26 use do_mount when tempdevfs is implemented -> just call /dev/ with all devices in devtempfs std::ranges::for_each(storage_mgmt.all_controllers(), [&](auto controller) { - std::ranges::for_each(controller->all_devices(), [&](auto device) { active_vfs->make_device_node(device); }); + std::ranges::for_each(controller->all_devices(), [&](auto device) { make_device_node(device); }); }); } else |
