|
SimpleKernel 1.17.0
|
ramfs 文件系统实现 More...
#include <ramfs.hpp>


Classes | |
| struct | RamDirEntry |
| 目录项结构(存储在目录的 data 中) More... | |
| class | RamFsFileOps |
| File 操作实现类 More... | |
| class | RamFsInodeOps |
| Inode 操作实现类 More... | |
| struct | RamInode |
| ramfs 内部 inode 数据 More... | |
Public Member Functions | |
| auto | GetName () const -> const char *override |
| 获取文件系统类型名 | |
| auto | Mount (vfs::BlockDevice *device) -> Expected< vfs::Inode * > override |
| 挂载 ramfs | |
| auto | Unmount () -> Expected< void > override |
| 卸载 ramfs | |
| auto | Sync () -> Expected< void > override |
| 同步数据到磁盘(ramfs 无操作) | |
| auto | AllocateInode () -> Expected< vfs::Inode * > override |
| 分配新 inode | |
| auto | FreeInode (vfs::Inode *inode) -> Expected< void > override |
| 释放 inode | |
| auto | GetRootInode () const -> vfs::Inode * |
| 获取根 inode | |
| auto | GetFileOps () -> vfs::FileOps * |
| 获取文件操作实例 | |
构造/析构函数 | |
| RamFs () | |
| 构造函数 | |
| ~RamFs () override | |
| 析构函数 | |
| RamFs (const RamFs &)=delete | |
| RamFs (RamFs &&)=delete | |
| auto | operator= (const RamFs &) -> RamFs &=delete |
| auto | operator= (RamFs &&) -> RamFs &=delete |
Public Member Functions inherited from vfs::FileSystem | |
| virtual | ~FileSystem ()=default |
Private Member Functions | |
| auto | FindInDirectory (RamInode *dir, const char *name) -> RamDirEntry * |
| auto | AddToDirectory (RamInode *dir, const char *name, vfs::Inode *inode) -> Expected< void > |
| auto | RemoveFromDirectory (RamInode *dir, const char *name) -> Expected< void > |
| auto | IsDirectoryEmpty (RamInode *dir) -> bool |
| auto | ExpandFile (RamInode *inode, size_t new_size) -> Expected< void > |
| auto | AllocateFileData (size_t size) -> void * |
Bump-allocate size bytes from the file data pool. | |
| auto | AllocateDirEntries (size_t count) -> RamDirEntry * |
Bump-allocate space for count RamDirEntry from the dir pool. | |
Private Attributes | |
| RamInode | inodes_ [kMaxInodes] |
| RamInode * | free_list_ {nullptr} |
| 空闲 inode 链表头 | |
| vfs::Inode * | root_inode_ {nullptr} |
| 根目录 inode | |
| size_t | used_inodes_ {0} |
| 已使用的 inode 数量 | |
| bool | mounted_ {false} |
| 是否已挂载 | |
| uint8_t | file_data_pool_ [kFileDataPoolSize] |
| size_t | file_data_pool_used_ {0} |
| uint8_t | dir_data_pool_ [kDirDataPoolSize] |
| size_t | dir_data_pool_used_ {0} |
| RamFsInodeOps | inode_ops_ |
| RamFsFileOps | file_ops_ |
Static Private Attributes | |
| static constexpr size_t | kMaxInodes = 1024 |
| static constexpr size_t | kInitialCapacity = 256 |
| 初始文件容量 | |
| static constexpr size_t | kFileDataPoolSize = 1024UL * 1024UL |
| File data pool: 1 MB for regular file content. | |
| static constexpr size_t | kDirDataPoolSize = 256UL * 1024UL |
| Dir data pool: 256 KB for directory entry arrays. | |
Friends | |
| class | RamFsInodeOps |
| class | RamFsFileOps |
| ramfs::RamFs::RamFs | ( | ) |
构造函数
Definition at line 15 of file ramfs.cpp.
|
override |
|
delete |
|
delete |
|
private |
Definition at line 497 of file ramfs.cpp.
|
private |
Bump-allocate space for count RamDirEntry from the dir pool.
Definition at line 620 of file ramfs.cpp.
|
private |
Bump-allocate size bytes from the file data pool.
Definition at line 609 of file ramfs.cpp.
|
overridevirtual |
分配新 inode
Implements vfs::FileSystem.
Definition at line 109 of file ramfs.cpp.
Definition at line 580 of file ramfs.cpp.
|
private |
Definition at line 481 of file ramfs.cpp.
|
overridevirtual |
释放 inode
| inode | 要释放的 inode |
Implements vfs::FileSystem.
Definition at line 136 of file ramfs.cpp.
|
virtual |
获取文件操作实例
Implements vfs::FileSystem.
Definition at line 167 of file ramfs.cpp.
|
overridevirtual |
获取文件系统类型名
Implements vfs::FileSystem.
Definition at line 34 of file ramfs.cpp.
| auto ramfs::RamFs::GetRootInode | ( | ) | const -> vfs::Inode* |
|
private |
|
overridevirtual |
挂载 ramfs
| device | 必须为 nullptr(ramfs 不需要块设备) |
Implements vfs::FileSystem.
Definition at line 36 of file ramfs.cpp.


|
private |
Definition at line 544 of file ramfs.cpp.
|
overridevirtual |
同步数据到磁盘(ramfs 无操作)
Implements vfs::FileSystem.
Definition at line 104 of file ramfs.cpp.
|
overridevirtual |
卸载 ramfs
Implements vfs::FileSystem.
Definition at line 77 of file ramfs.cpp.


|
friend |
|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
private |
|
private |
|
private |