|
SimpleKernel 1.17.0
|
FatFS VFS 适配器 More...
#include <fatfs.hpp>


Classes | |
| struct | FatDirHandle |
| DIR 对象池条目 More... | |
| struct | FatFileHandle |
| FIL 对象池 More... | |
| class | FatFsFileOps |
| FatFS 文件操作实现 More... | |
| class | FatFsInodeOps |
| FatFS inode 操作实现 More... | |
| struct | FatInode |
| FatFS inode 私有数据 More... | |
Public Member Functions | |
| FatFsFileSystem (uint8_t volume_id) | |
| 构造函数,绑定到指定 FatFS 卷号 | |
| auto | GetName () const -> const char *override |
| 返回 "fatfs" | |
| auto | Mount (vfs::BlockDevice *device) -> Expected< vfs::Inode * > override |
| 挂载 FatFS 卷 | |
| auto | Unmount () -> Expected< void > override |
| 卸载 FatFS 卷 | |
| auto | Sync () -> Expected< void > override |
| 刷新所有脏缓冲区 | |
| auto | AllocateInode () -> Expected< vfs::Inode * > override |
| 分配新 inode(由 FatFS FILINFO 快照支撑) | |
| auto | FreeInode (vfs::Inode *inode) -> Expected< void > override |
| 释放 inode | |
| auto | GetFileOps () -> vfs::FileOps *override |
| 返回本文件系统的 FileOps 实例 | |
| auto | OpenFil (vfs::Inode *inode, vfs::OpenFlags open_flags) -> Expected< void > |
| 为 inode 打开底层 FatFS FIL 对象 | |
构造/析构函数 | |
| ~FatFsFileSystem () override | |
| FatFsFileSystem (const FatFsFileSystem &)=delete | |
| FatFsFileSystem (FatFsFileSystem &&)=delete | |
| auto | operator= (const FatFsFileSystem &) -> FatFsFileSystem &=delete |
| auto | operator= (FatFsFileSystem &&) -> FatFsFileSystem &=delete |
Public Member Functions inherited from vfs::FileSystem | |
| virtual | ~FileSystem ()=default |
Static Public Member Functions | |
| static auto | SetBlockDevice (uint8_t pdrv, vfs::BlockDevice *device) -> void |
| 注册块设备(由 Mount 调用,供 diskio.cpp 的 C 回调使用) | |
| static auto | GetBlockDevice (uint8_t pdrv) -> vfs::BlockDevice * |
| 获取指定驱动器的块设备 | |
Static Public Attributes | |
| static constexpr uint32_t | kRootDirPermissions = 0755U |
| 根目录权限位 | |
| static constexpr uint32_t | kDefaultFilePermissions = 0644U |
| 普通文件默认权限位 | |
| static constexpr size_t | kPathBufSize = 512 |
| 路径缓冲区大小(字节) | |
| static constexpr size_t | kMaxInodes = 256 |
| inode 池容量 | |
| static constexpr size_t | kMaxOpenFiles = 16 |
| 同时打开文件数上限 | |
| static constexpr size_t | kMaxOpenDirs = 8 |
| 同时打开目录数上限 | |
Private Member Functions | |
| auto | AllocateFatInode () -> FatInode * |
| 从 inode 池中分配一个空闲槽位 | |
| auto | FreeFatInode (FatInode *fi) -> void |
| 释放 inode 池槽位 | |
| auto | AllocateFil () -> FIL * |
| 从 FIL 池中分配一个空闲 FIL 对象 | |
| auto | FreeFil (FIL *fil) -> void |
| 归还 FIL 对象到池中 | |
| auto | AllocateDir () -> DIR * |
| 从 DIR 池中分配一个空闲 DIR 对象 | |
| auto | FreeDir (DIR *dir) -> void |
| 归还 DIR 对象到池中 | |
Private Attributes | |
| uint8_t | volume_id_ |
| FatFS 逻辑驱动器号 | |
| FATFS | fatfs_obj_ |
| FatFS 文件系统对象(每卷一个) | |
| vfs::Inode * | root_inode_ = nullptr |
| 根目录 inode(Mount 时设置) | |
| bool | mounted_ {false} |
| 当前卷是否已挂载 | |
| std::array< FatInode, kMaxInodes > | inodes_ |
| std::array< FatFileHandle, kMaxOpenFiles > | fil_pool_ |
| std::array< FatDirHandle, kMaxOpenDirs > | dir_pool_ |
| FatFsInodeOps | inode_ops_ |
| inode 操作单例 | |
| FatFsFileOps | file_ops_ |
| 文件操作单例 | |
Static Private Attributes | |
| static std::array< vfs::BlockDevice *, FF_VOLUMES > | block_devices_ {} |
| 每卷块设备注册表(静态,供 diskio.cpp C 回调访问) | |
Friends | |
| class | FatFsInodeOps |
| class | FatFsFileOps |
FatFS VFS 适配器
将 FatFS (f_mount / f_open / f_read / ...) 封装在 vfs::FileSystem 接口后。每个 FatFsFileSystem 实例独占一个 FatFS 逻辑驱动器(卷)。
|
explicit |
构造函数,绑定到指定 FatFS 卷号
| volume_id | FatFS 逻辑驱动器编号 (0 .. FF_VOLUMES-1) |
Definition at line 92 of file fatfs.cpp.
|
override |
Definition at line 101 of file fatfs.cpp.

|
delete |
|
delete |
|
private |
|
private |
|
private |
|
overridevirtual |
分配新 inode(由 FatFS FILINFO 快照支撑)
Implements vfs::FileSystem.
Definition at line 185 of file fatfs.cpp.
|
private |
|
private |
|
private |
|
overridevirtual |
释放 inode
| inode | 要释放的 inode,不能为 nullptr |
Implements vfs::FileSystem.
Definition at line 196 of file fatfs.cpp.
|
static |
获取指定驱动器的块设备
| pdrv | FatFS 物理驱动器号 |
Definition at line 85 of file fatfs.cpp.

|
overridevirtual |
|
overridevirtual |
返回 "fatfs"
Implements vfs::FileSystem.
Definition at line 107 of file fatfs.cpp.
|
overridevirtual |
挂载 FatFS 卷
| device | 提供存储的块设备,不能为 nullptr |
Implements vfs::FileSystem.
Definition at line 109 of file fatfs.cpp.


| auto fatfs::FatFsFileSystem::OpenFil | ( | vfs::Inode * | inode, |
| vfs::OpenFlags | open_flags | ||
| ) | -> Expected<void> |
为 inode 打开底层 FatFS FIL 对象
| inode | 要打开的 inode(不能为 nullptr,类型必须为 kRegular) |
| open_flags | vfs OpenFlags 位掩码 |
Definition at line 264 of file fatfs.cpp.
|
delete |
|
delete |
|
static |
注册块设备(由 Mount 调用,供 diskio.cpp 的 C 回调使用)
| pdrv | FatFS 物理驱动器号(== volume_id) |
| device | 块设备指针(nullptr 表示注销) |
|
overridevirtual |
刷新所有脏缓冲区
Implements vfs::FileSystem.
Definition at line 177 of file fatfs.cpp.
|
overridevirtual |
卸载 FatFS 卷
Implements vfs::FileSystem.
Definition at line 155 of file fatfs.cpp.

|
friend |
|
friend |
|
staticprivate |
每卷块设备注册表(静态,供 diskio.cpp C 回调访问)
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
private |
|
private |
|
private |