SimpleKernel 1.17.0
Loading...
Searching...
No Matches
MockFs Class Reference
Inheritance diagram for MockFs:
Inheritance graph
Collaboration diagram for MockFs:
Collaboration graph

Public Member Functions

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

Public Attributes

bool mount_called = false
 
bool unmount_called = false
 
bool sync_called = false
 
BlockDevicelast_device = nullptr
 
MockFileOps mock_file_ops_
 
Inode root_inode
 

Detailed Description

Definition at line 37 of file vfs_test.cpp.

Constructor & Destructor Documentation

◆ MockFs()

MockFs::MockFs ( )
inline

Definition at line 47 of file vfs_test.cpp.

47 {
48 root_inode.type = FileType::kDirectory;
49 root_inode.ino = 1;
50 root_inode.ops = nullptr; // MockFs doesn't provide InodeOps
51 }
Inode root_inode
Definition vfs_test.cpp:45
FileType type
文件类型
Definition vfs.hpp:20
InodeOps * ops
文件操作接口
Definition vfs.hpp:33
uint64_t ino
inode 编号(文件系统内唯一)
Definition vfs.hpp:18

Member Function Documentation

◆ AllocateInode()

auto MockFs::AllocateInode ( ) -> Expected< Inode * >
inlineoverridevirtual

分配新 inode

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

Implements vfs::FileSystem.

Definition at line 73 of file vfs_test.cpp.

73 {
74 return std::unexpected(Error(ErrorCode::kOutOfMemory));
75 }
错误类型,用于 std::expected
Definition expected.hpp:343

◆ FreeInode()

auto MockFs::FreeInode ( Inode inode) -> Expected< void >
inlineoverridevirtual

释放 inode

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

Implements vfs::FileSystem.

Definition at line 77 of file vfs_test.cpp.

77{ return {}; }

◆ GetFileOps()

auto MockFs::GetFileOps ( ) -> FileOps *override
inlineoverridevirtual

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

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

Implements vfs::FileSystem.

Definition at line 79 of file vfs_test.cpp.

79{ return &mock_file_ops_; }
MockFileOps mock_file_ops_
Definition vfs_test.cpp:43

◆ GetName()

auto MockFs::GetName ( ) const -> const char *override
inlineoverridevirtual

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

Returns
文件系统类型名

Implements vfs::FileSystem.

Definition at line 53 of file vfs_test.cpp.

53 {
54 return "mockfs";
55 }

◆ Mount()

auto MockFs::Mount ( BlockDevice device) -> Expected< Inode * >
inlineoverridevirtual

挂载文件系统

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

Implements vfs::FileSystem.

Definition at line 57 of file vfs_test.cpp.

57 {
58 mount_called = true;
59 last_device = device;
60 return &root_inode;
61 }
BlockDevice * last_device
Definition vfs_test.cpp:42
bool mount_called
Definition vfs_test.cpp:39

◆ Sync()

auto MockFs::Sync ( ) -> Expected< void >
inlineoverridevirtual

将缓存数据刷写到磁盘

Returns
Expected<void> 成功或错误

Implements vfs::FileSystem.

Definition at line 68 of file vfs_test.cpp.

68 {
69 sync_called = true;
70 return {};
71 }
bool sync_called
Definition vfs_test.cpp:41

◆ Unmount()

auto MockFs::Unmount ( ) -> Expected< void >
inlineoverridevirtual

卸载文件系统

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

Implements vfs::FileSystem.

Definition at line 63 of file vfs_test.cpp.

63 {
64 unmount_called = true;
65 return {};
66 }
bool unmount_called
Definition vfs_test.cpp:40

Member Data Documentation

◆ last_device

BlockDevice* MockFs::last_device = nullptr
mutable

Definition at line 42 of file vfs_test.cpp.

◆ mock_file_ops_

MockFileOps MockFs::mock_file_ops_

Definition at line 43 of file vfs_test.cpp.

◆ mount_called

bool MockFs::mount_called = false
mutable

Definition at line 39 of file vfs_test.cpp.

◆ root_inode

Inode MockFs::root_inode

Definition at line 45 of file vfs_test.cpp.

◆ sync_called

bool MockFs::sync_called = false
mutable

Definition at line 41 of file vfs_test.cpp.

◆ unmount_called

bool MockFs::unmount_called = false
mutable

Definition at line 40 of file vfs_test.cpp.


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