From 76219d593867f6e0c86c9f65ec90c3da18877e2a Mon Sep 17 00:00:00 2001 From: "marcel.braun" Date: Sun, 15 Mar 2026 15:10:49 +0100 Subject: Add basic structure for ext2_filesystem, filesystem and mount --- .../include/filesystem/ext2/ext2_filesystem.hpp | 18 ++++++++++++++++ .../filesystem/include/filesystem/filesystem.hpp | 23 +++++++++++++++++++++ kernel/filesystem/include/filesystem/mount.hpp | 24 ++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp create mode 100644 kernel/filesystem/include/filesystem/filesystem.hpp create mode 100644 kernel/filesystem/include/filesystem/mount.hpp (limited to 'kernel/filesystem/include') diff --git a/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp b/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp new file mode 100644 index 0000000..0027475 --- /dev/null +++ b/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp @@ -0,0 +1,18 @@ +#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP +#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP + +#include "devices/block_device.hpp" +#include "filesystem/filesystem.hpp" + +namespace filesystem::ext2 +{ + struct ext2_filesystem : filesystem + { + auto mount(devices::block_device * block_device) -> int override; + + private: + devices::block_device * m_block_device{}; + }; +} // namespace filesystem::ext2 + +#endif diff --git a/kernel/filesystem/include/filesystem/filesystem.hpp b/kernel/filesystem/include/filesystem/filesystem.hpp new file mode 100644 index 0000000..d5704c1 --- /dev/null +++ b/kernel/filesystem/include/filesystem/filesystem.hpp @@ -0,0 +1,23 @@ +#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP +#define TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP + +#include "devices/block_device.hpp" +#include "filesystem/inode.hpp" + +namespace filesystem +{ + struct filesystem + { + virtual ~filesystem() = default; + + virtual auto mount(devices::block_device * block_device) -> int = 0; + + auto root_inode() -> inode *; + + protected: + inode * m_root_inode{}; // TODO BA-FS26 set during mount? + }; + +} // namespace filesystem + +#endif \ No newline at end of file diff --git a/kernel/filesystem/include/filesystem/mount.hpp b/kernel/filesystem/include/filesystem/mount.hpp new file mode 100644 index 0000000..793c042 --- /dev/null +++ b/kernel/filesystem/include/filesystem/mount.hpp @@ -0,0 +1,24 @@ +#ifndef TEACH_OS_KERNEL_FILESYSTEM_MOUNT_HPP +#define TEACH_OS_KERNEL_FILESYSTEM_MOUNT_HPP + +#include "filesystem/filesystem.hpp" + +#include + +namespace filesystem +{ + struct mount + { + mount() = default; // TODO BA-FS26 remove again when kstd::vector is available and used in vfs + mount(std::string_view const & path, filesystem * fs); + + auto path() const -> std::string_view; + auto get_filesystem() const -> filesystem *; + + private: + std::string_view m_path; + filesystem * m_filesystem{}; + }; +} // namespace filesystem + +#endif -- cgit v1.2.3