53 return static_cast<OpenFlags>(
static_cast<uint32_t
>(lhs) |
54 static_cast<uint32_t
>(rhs));
60 return static_cast<OpenFlags>(
static_cast<uint32_t
>(lhs) &
61 static_cast<uint32_t
>(rhs));
66 return static_cast<OpenFlags>(~static_cast<uint32_t>(flags));
84 return static_cast<uint32_t
>(flags) == val;
90 return static_cast<uint32_t
>(flags) != val;
192 virtual auto Read(
File* file,
void* buf,
size_t count)
204 virtual auto Write(
File* file,
const void* buf,
size_t count)
virtual auto Read(File *file, void *buf, size_t count) -> Expected< size_t >=0
从文件读取数据
auto operator=(const FileOps &) -> FileOps &=delete
virtual auto Seek(File *file, int64_t offset, SeekWhence whence) -> Expected< uint64_t >=0
调整文件偏移量
virtual ~FileOps()=default
virtual auto ReadDir(File *file, DirEntry *dirent, size_t count) -> Expected< size_t >=0
读取目录项
virtual auto Close(File *file) -> Expected< void >=0
关闭文件
FileOps(const FileOps &)=delete
auto operator=(FileOps &&) -> FileOps &=delete
FileOps(FileOps &&)=delete
virtual auto Write(File *file, const void *buf, size_t count) -> Expected< size_t >=0
向文件写入数据
auto operator=(InodeOps &&) -> InodeOps &=delete
virtual auto Unlink(Inode *dir, const char *name) -> Expected< void >=0
删除文件(解除链接)
InodeOps(const InodeOps &)=delete
virtual auto Create(Inode *dir, const char *name, FileType type) -> Expected< Inode * >=0
在目录中创建新文件
auto operator=(const InodeOps &) -> InodeOps &=delete
InodeOps(InodeOps &&)=delete
virtual ~InodeOps()=default
virtual auto Rmdir(Inode *dir, const char *name) -> Expected< void >=0
删除目录
virtual auto Mkdir(Inode *dir, const char *name) -> Expected< Inode * >=0
创建目录
virtual auto Lookup(Inode *dir, const char *name) -> Expected< Inode * >=0
在目录中查找指定名称的 inode
std::expected< T, Error > Expected
std::expected 别名模板
OpenFlags
文件打开标志(兼容 Linux O_* 定义)
constexpr auto operator|=(OpenFlags &lhs, OpenFlags rhs) -> OpenFlags &
按位或赋值
constexpr auto operator==(OpenFlags flags, uint32_t val) -> bool
检查 OpenFlags 是否为零(无标志位设置)
constexpr auto operator&(OpenFlags lhs, OpenFlags rhs) -> OpenFlags
按位与
constexpr auto operator!=(OpenFlags flags, uint32_t val) -> bool
检查 OpenFlags 是否不为零
constexpr auto operator&=(OpenFlags &lhs, OpenFlags rhs) -> OpenFlags &
按位与赋值
constexpr auto operator~(OpenFlags flags) -> OpenFlags
按位取反
constexpr auto operator|(OpenFlags lhs, OpenFlags rhs) -> OpenFlags
按位或
File — 打开的文件实例(每次 open 产生一个)