aboutsummaryrefslogtreecommitdiff
path: root/kernel/filesystem/include
diff options
context:
space:
mode:
authormarcel.braun <marcel.braun@ost.ch>2026-03-15 15:10:49 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:43:01 +0100
commit76219d593867f6e0c86c9f65ec90c3da18877e2a (patch)
tree236afbed678c14d73d83eb110a5f50bcdbfc2f35 /kernel/filesystem/include
parent1453fbedde547d9e69cdad659df667f43a8dc750 (diff)
downloadteachos-76219d593867f6e0c86c9f65ec90c3da18877e2a.tar.xz
teachos-76219d593867f6e0c86c9f65ec90c3da18877e2a.zip
Add basic structure for ext2_filesystem, filesystem and mount
Diffstat (limited to 'kernel/filesystem/include')
-rw-r--r--kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp18
-rw-r--r--kernel/filesystem/include/filesystem/filesystem.hpp23
-rw-r--r--kernel/filesystem/include/filesystem/mount.hpp24
3 files changed, 65 insertions, 0 deletions
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 <string_view>
+
+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