SimpleKernel 1.17.0
Loading...
Searching...
No Matches
vfs::FileSystem Class Referenceabstract

文件系统类型基类 More...

#include <filesystem.hpp>

Inheritance diagram for vfs::FileSystem:
Inheritance graph
Collaboration diagram for vfs::FileSystem:
Collaboration graph

Public Member Functions

virtual ~FileSystem ()=default
 
virtual auto GetName () const -> const char *=0
 获取文件系统类型名(如 "ramfs", "fat32")
 
virtual auto Mount (BlockDevice *device) -> Expected< Inode * >=0
 挂载文件系统
 
virtual auto Unmount () -> Expected< void >=0
 卸载文件系统
 
virtual auto Sync () -> Expected< void >=0
 将缓存数据刷写到磁盘
 
virtual auto AllocateInode () -> Expected< Inode * >=0
 分配新 inode
 
virtual auto FreeInode (Inode *inode) -> Expected< void >=0
 释放 inode
 
virtual auto GetFileOps () -> FileOps *=0
 获取文件系统的文件操作接口
 

Detailed Description

文件系统类型基类

每种文件系统(ramfs/fat32/ext2 等)注册一个 FileSystem 实例。 VFS 通过此接口挂载/卸载文件系统。

Definition at line 17 of file filesystem.hpp.

Constructor & Destructor Documentation

◆ ~FileSystem()

virtual vfs::FileSystem::~FileSystem ( )
virtualdefault

Member Function Documentation

◆ AllocateInode()

virtual auto vfs::FileSystem::AllocateInode ( ) -> Expected< Inode * >
pure virtual

分配新 inode

Returns
Expected<Inode*> 新分配的 inode 或错误
Note
由具体文件系统实现 inode 分配策略

Implemented in MockFs, fatfs::FatFsFileSystem, and ramfs::RamFs.

◆ FreeInode()

virtual auto vfs::FileSystem::FreeInode ( Inode inode) -> Expected< void >
pure virtual

释放 inode

Parameters
inode要释放的 inode
Returns
Expected<void> 成功或错误
Precondition
inode != nullptr
inode->link_count == 0

Implemented in MockFs, fatfs::FatFsFileSystem, and ramfs::RamFs.

◆ GetFileOps()

virtual auto vfs::FileSystem::GetFileOps ( ) -> FileOps *
pure virtual

获取文件系统的文件操作接口

Returns
FileOps* 文件操作接口指针
Note
用于创建 File 对象时设置 ops

Implemented in MockFs, ramfs::RamFs, and fatfs::FatFsFileSystem.

Here is the caller graph for this function:

◆ GetName()

virtual auto vfs::FileSystem::GetName ( ) const -> const char *
pure virtual

获取文件系统类型名(如 "ramfs", "fat32")

Returns
文件系统类型名

Implemented in fatfs::FatFsFileSystem, ramfs::RamFs, and MockFs.

◆ Mount()

virtual auto vfs::FileSystem::Mount ( BlockDevice device) -> Expected< Inode * >
pure virtual

挂载文件系统

Parameters
device块设备指针(ramfs 等内存文件系统传 nullptr)
Returns
Expected<Inode*> 根目录 inode
Postcondition
返回的 inode->type == FileType::kDirectory

Implemented in MockFs, fatfs::FatFsFileSystem, and ramfs::RamFs.

◆ Sync()

virtual auto vfs::FileSystem::Sync ( ) -> Expected< void >
pure virtual

将缓存数据刷写到磁盘

Returns
Expected<void> 成功或错误

Implemented in fatfs::FatFsFileSystem, ramfs::RamFs, and MockFs.

◆ Unmount()

virtual auto vfs::FileSystem::Unmount ( ) -> Expected< void >
pure virtual

卸载文件系统

Returns
Expected<void> 成功或错误
Precondition
没有打开的文件引用此文件系统

Implemented in fatfs::FatFsFileSystem, ramfs::RamFs, and MockFs.

Here is the caller graph for this function:

The documentation for this class was generated from the following file: