diff options
Diffstat (limited to 'kernel/filesystem/include')
| -rw-r--r-- | kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp | 18 | ||||
| -rw-r--r-- | kernel/filesystem/include/filesystem/filesystem.hpp | 23 | ||||
| -rw-r--r-- | kernel/filesystem/include/filesystem/mount.hpp | 24 |
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 |
