xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_vfs(虚拟文件系统)

xt-sdk 虚拟文件系统——支持多后端挂载、两级锁、静态/动态内存切换 更多...

专题

 开发者接口
 后端对接、移植接口、内部行为约束

结构体

struct  xt_vfs_stat
 文件状态信息 更多...
struct  xt_vfs_statfs
 文件系统状态信息 更多...
struct  xt_vfs_utimbuf
 文件时间信息 更多...
struct  xt_vfs_dirent
 目录项信息 更多...

宏定义

#define XT_VFS_O_RDONLY   0x01
 只读
#define XT_VFS_O_WRONLY   0x02
 只写
#define XT_VFS_O_RDWR   0x04
 读写
#define XT_VFS_O_CREAT   0x08
 创建,不存在时创建
#define XT_VFS_O_EXCL   0x10
 排他,与 O_CREAT 一起使用时文件存在则失败
#define XT_VFS_O_TRUNC   0x20
 截断,文件存在且可写时清空内容
#define XT_VFS_O_APPEND   0x40
 追加,写入定位到文件末尾
#define XT_VFS_TYPE_REG   0x01
 普通文件
#define XT_VFS_TYPE_DIR   0x02
 目录
#define XT_VFS_TYPE_UNKNOWN   0xFF
 未知类型
#define XT_VFS_F_OK   0x00
 文件存在性检查
#define XT_VFS_R_OK   0x04
 读权限检查
#define XT_VFS_W_OK   0x02
 写权限检查
#define XT_VFS_X_OK   0x01
 执行权限检查
#define XT_VFS_S_IFMT   0xF000
 文件类型掩码
#define XT_VFS_S_IFREG   0x1000
 普通文件
#define XT_VFS_S_IFDIR   0x2000
 目录
#define XT_VFS_S_IRWXU   0x01C0
 用户读/写/执行
#define XT_VFS_S_IRUSR   0x0100
 用户读
#define XT_VFS_S_IWUSR   0x0080
 用户写
#define XT_VFS_S_IXUSR   0x0040
 用户执行
#define XT_VFS_S_IRWXG   0x0038
 组读/写/执行
#define XT_VFS_S_IRGRP   0x0020
 组读
#define XT_VFS_S_IWGRP   0x0010
 组写
#define XT_VFS_S_IXGRP   0x0008
 组执行
#define XT_VFS_S_IRWXO   0x0007
 其他读/写/执行
#define XT_VFS_S_IROTH   0x0004
 其他读
#define XT_VFS_S_IWOTH   0x0002
 其他写
#define XT_VFS_S_IXOTH   0x0001
 其他执行
#define XT_VFS_S_DEFAULT_FILE   (XT_VFS_S_IFREG | XT_VFS_S_IRUSR | XT_VFS_S_IWUSR | XT_VFS_S_IRGRP | XT_VFS_S_IROTH)
 普通文件默认权限(所有者读写+组读+其他读)
#define XT_VFS_S_DEFAULT_DIR   (XT_VFS_S_IFDIR | XT_VFS_S_IRWXU | XT_VFS_S_IRGRP | XT_VFS_S_IXGRP | XT_VFS_S_IROTH | XT_VFS_S_IXOTH)
 目录默认权限(所有者全权限+组读执行+其他读执行)
#define XT_VFS_SEEK_SET   0
 从文件头开始
#define XT_VFS_SEEK_CUR   1
 从当前位置
#define XT_VFS_SEEK_END   2
 从文件末尾
#define XT_VFS_ERR_OK   0
 成功
#define XT_VFS_ERR_EOF   -1
 文件结束
#define XT_VFS_ERR_NOTFOUND   -2
 文件或目录不存在
#define XT_VFS_ERR_EXIST   -3
 文件已存在
#define XT_VFS_ERR_NOSPC   -4
 磁盘空间不足
#define XT_VFS_ERR_NOMEM   -5
 内存不足
#define XT_VFS_ERR_IO   -6
 IO 错误
#define XT_VFS_ERR_INVAL   -7
 无效参数
#define XT_VFS_ERR_DENIED   -8
 权限拒绝
#define XT_VFS_ERR_NFILE   -9
 打开文件过多
#define XT_VFS_ERR_NOTDIR   -10
 不是目录
#define XT_VFS_ERR_ISDIR   -11
 是目录
#define XT_VFS_ERR_NOTEMPTY   -12
 目录非空
#define XT_VFS_ERR_BUSY   -13
 设备忙
#define XT_VFS_ERR_NOSYS   -14
 功能未实现
#define XT_VFS_INVALID_FD   ((xt_vfs_fd_t)(-1))
 无效文件描述符

类型定义

typedef int32_t xt_vfs_err_t
 错误码类型,详细错误码见 XT_VFS_ERR_* 系列宏
typedef int32_t xt_vfs_fd_t
 文件描述符类型,内部编码 generation+index,由 VFS Core 生成,用户不应自行构造
typedef uint32_t xt_vfs_size_t
 文件大小类型(无符号)
typedef int32_t xt_vfs_ssize_t
 文件大小类型(有符号)
typedef uint32_t xt_vfs_mode_t
 文件模式类型(权限 + 类型)
typedef uint32_t xt_vfs_time_t
 时间类型(固定 32 位)
typedef int32_t xt_vfs_off_t
 偏移量类型
typedef int32_t xt_vfs_whence_t
 寻址基准类型
typedef int32_t xt_vfs_ino_t
 inode 编号类型
typedef struct xt_vfs_stat xt_vfs_stat_t
 文件状态信息
typedef struct xt_vfs_statfs xt_vfs_statfs_t
 文件系统状态信息
typedef struct xt_vfs_utimbuf xt_vfs_utimbuf_t
 文件时间信息
typedef struct xt_vfs_dir xt_vfs_dir_t
 目录句柄(opaque,内部字段不暴露)
typedef struct xt_vfs_dirent xt_vfs_dirent_t
 目录项信息
typedef struct xt_vfs_ops xt_vfs_ops_t
 后端操作接口(前向声明)
typedef struct xt_vfs xt_vfs_t
 VFS 实例(前向声明)

生命周期

注解
本库采用直接返回错误码模式(非 POSIX 的返回-1+设errno)。成功返回 0/~0,失败返回负值 XT_VFS_ERR_*。可通过 xt_vfs_errno() 获取上次错误详情。
xt_vfs_err_t xt_vfs_init (const xt_vfs_config_t *config)
 初始化 VFS 实例
xt_vfs_err_t xt_vfs_deinit (void)
 销毁 VFS 实例

挂载管理

xt_vfs_err_t xt_vfs_mount (const char *path, const xt_vfs_ops_t *ops, void *ctx)
 挂载后端文件系统
xt_vfs_err_t xt_vfs_unmount (const char *path)
 卸载后端文件系统

文件读写

xt_vfs_fd_t xt_vfs_open (const char *path, xt_vfs_mode_t flags)
 打开文件
xt_vfs_err_t xt_vfs_close (xt_vfs_fd_t fd)
 关闭文件
xt_vfs_ssize_t xt_vfs_read (xt_vfs_fd_t fd, void *buf, xt_vfs_size_t size)
 读取文件
xt_vfs_ssize_t xt_vfs_write (xt_vfs_fd_t fd, const void *buf, xt_vfs_size_t size)
 写入文件
xt_vfs_ssize_t xt_vfs_seek (xt_vfs_fd_t fd, xt_vfs_off_t offset, xt_vfs_whence_t whence)
 文件定位
xt_vfs_ssize_t xt_vfs_tell (xt_vfs_fd_t fd)
 获取当前文件位置
xt_vfs_err_t xt_vfs_fsync (xt_vfs_fd_t fd)
 同步单个文件到存储设备

文件信息与管理

xt_vfs_err_t xt_vfs_remove (const char *path)
 删除文件
xt_vfs_err_t xt_vfs_rename (const char *old_path, const char *new_path)
 重命名文件
xt_vfs_err_t xt_vfs_stat (const char *path, xt_vfs_stat_t *stat)
 获取文件状态
xt_vfs_err_t xt_vfs_fstat (xt_vfs_fd_t fd, xt_vfs_stat_t *stat)
 获取已打开文件的状态
xt_vfs_err_t xt_vfs_statfs (const char *path, xt_vfs_statfs_t *statfs)
 获取文件系统状态
xt_vfs_err_t xt_vfs_truncate (const char *path, xt_vfs_off_t length)
 截断文件到指定大小
xt_vfs_err_t xt_vfs_ftruncate (xt_vfs_fd_t fd, xt_vfs_off_t length)
 截断已打开的文件
xt_vfs_err_t xt_vfs_access (const char *path, xt_vfs_mode_t amode)
 检查文件访问权限
xt_vfs_err_t xt_vfs_utime (const char *path, const xt_vfs_utimbuf_t *buf)
 更新文件时间
xt_vfs_err_t xt_vfs_sync_all (const char *path)
 同步所有文件到存储设备

目录操作

xt_vfs_err_t xt_vfs_mkdir (const char *path)
 创建目录
xt_vfs_err_t xt_vfs_rmdir (const char *path)
 删除空目录
xt_vfs_dir_t * xt_vfs_opendir (const char *path)
 打开目录
xt_vfs_err_t xt_vfs_closedir (xt_vfs_dir_t *dir)
 关闭目录
xt_vfs_dirent_t * xt_vfs_readdir (xt_vfs_dir_t *dir)
 读取目录项
xt_vfs_err_t xt_vfs_rewinddir (xt_vfs_dir_t *dir)
 重置目录读取位置
xt_vfs_off_t xt_vfs_telldir (xt_vfs_dir_t *dir)
 获取目录读取位置
xt_vfs_err_t xt_vfs_seekdir (xt_vfs_dir_t *dir, xt_vfs_off_t loc)
 设置目录读取位置

工作目录

xt_vfs_err_t xt_vfs_chdir (const char *path)
 切换当前工作目录
char * xt_vfs_getcwd (char *buf, xt_vfs_size_t size)
 获取当前工作目录

错误与状态

xt_vfs_err_t xt_vfs_errno (void)
 获取当前线程的最后一个错误码
const char * xt_vfs_strerror (xt_vfs_err_t err)
 获取错误码对应的字符串描述
bool xt_vfs_is_active (void)
 检查 VFS 实例是否已激活

详细描述

xt-sdk 虚拟文件系统——支持多后端挂载、两级锁、静态/动态内存切换

宏定义说明

◆ XT_VFS_ERR_BUSY

#define XT_VFS_ERR_BUSY   -13

设备忙

在文件 xt_vfs.h 第 155 行定义.

◆ XT_VFS_ERR_DENIED

#define XT_VFS_ERR_DENIED   -8

权限拒绝

在文件 xt_vfs.h 第 145 行定义.

◆ XT_VFS_ERR_EOF

#define XT_VFS_ERR_EOF   -1

文件结束

在文件 xt_vfs.h 第 131 行定义.

◆ XT_VFS_ERR_EXIST

#define XT_VFS_ERR_EXIST   -3

文件已存在

在文件 xt_vfs.h 第 135 行定义.

◆ XT_VFS_ERR_INVAL

#define XT_VFS_ERR_INVAL   -7

无效参数

在文件 xt_vfs.h 第 143 行定义.

◆ XT_VFS_ERR_IO

#define XT_VFS_ERR_IO   -6

IO 错误

在文件 xt_vfs.h 第 141 行定义.

◆ XT_VFS_ERR_ISDIR

#define XT_VFS_ERR_ISDIR   -11

是目录

在文件 xt_vfs.h 第 151 行定义.

◆ XT_VFS_ERR_NFILE

#define XT_VFS_ERR_NFILE   -9

打开文件过多

在文件 xt_vfs.h 第 147 行定义.

◆ XT_VFS_ERR_NOMEM

#define XT_VFS_ERR_NOMEM   -5

内存不足

在文件 xt_vfs.h 第 139 行定义.

◆ XT_VFS_ERR_NOSPC

#define XT_VFS_ERR_NOSPC   -4

磁盘空间不足

在文件 xt_vfs.h 第 137 行定义.

◆ XT_VFS_ERR_NOSYS

#define XT_VFS_ERR_NOSYS   -14

功能未实现

在文件 xt_vfs.h 第 157 行定义.

◆ XT_VFS_ERR_NOTDIR

#define XT_VFS_ERR_NOTDIR   -10

不是目录

在文件 xt_vfs.h 第 149 行定义.

◆ XT_VFS_ERR_NOTEMPTY

#define XT_VFS_ERR_NOTEMPTY   -12

目录非空

在文件 xt_vfs.h 第 153 行定义.

◆ XT_VFS_ERR_NOTFOUND

#define XT_VFS_ERR_NOTFOUND   -2

文件或目录不存在

在文件 xt_vfs.h 第 133 行定义.

◆ XT_VFS_ERR_OK

#define XT_VFS_ERR_OK   0

成功

在文件 xt_vfs.h 第 129 行定义.

◆ XT_VFS_F_OK

#define XT_VFS_F_OK   0x00

文件存在性检查

在文件 xt_vfs.h 第 66 行定义.

◆ XT_VFS_INVALID_FD

#define XT_VFS_INVALID_FD   ((xt_vfs_fd_t)(-1))

无效文件描述符

在文件 xt_vfs.h 第 160 行定义.

◆ XT_VFS_O_APPEND

#define XT_VFS_O_APPEND   0x40

追加,写入定位到文件末尾

在文件 xt_vfs.h 第 52 行定义.

◆ XT_VFS_O_CREAT

#define XT_VFS_O_CREAT   0x08

创建,不存在时创建

在文件 xt_vfs.h 第 46 行定义.

◆ XT_VFS_O_EXCL

#define XT_VFS_O_EXCL   0x10

排他,与 O_CREAT 一起使用时文件存在则失败

在文件 xt_vfs.h 第 48 行定义.

◆ XT_VFS_O_RDONLY

#define XT_VFS_O_RDONLY   0x01

只读

注解
本库使用自定义 O_* 值(与 POSIX 不同),不可与系统 open() 的 flags 混用

在文件 xt_vfs.h 第 40 行定义.

◆ XT_VFS_O_RDWR

#define XT_VFS_O_RDWR   0x04

读写

在文件 xt_vfs.h 第 44 行定义.

◆ XT_VFS_O_TRUNC

#define XT_VFS_O_TRUNC   0x20

截断,文件存在且可写时清空内容

在文件 xt_vfs.h 第 50 行定义.

◆ XT_VFS_O_WRONLY

#define XT_VFS_O_WRONLY   0x02

只写

在文件 xt_vfs.h 第 42 行定义.

◆ XT_VFS_R_OK

#define XT_VFS_R_OK   0x04

读权限检查

在文件 xt_vfs.h 第 68 行定义.

◆ XT_VFS_S_DEFAULT_DIR

目录默认权限(所有者全权限+组读执行+其他读执行)

在文件 xt_vfs.h 第 115 行定义.

◆ XT_VFS_S_DEFAULT_FILE

#define XT_VFS_S_DEFAULT_FILE   (XT_VFS_S_IFREG | XT_VFS_S_IRUSR | XT_VFS_S_IWUSR | XT_VFS_S_IRGRP | XT_VFS_S_IROTH)

普通文件默认权限(所有者读写+组读+其他读)

在文件 xt_vfs.h 第 113 行定义.

◆ XT_VFS_S_IFDIR

#define XT_VFS_S_IFDIR   0x2000

目录

在文件 xt_vfs.h 第 81 行定义.

◆ XT_VFS_S_IFMT

#define XT_VFS_S_IFMT   0xF000

文件类型掩码

在文件 xt_vfs.h 第 77 行定义.

◆ XT_VFS_S_IFREG

#define XT_VFS_S_IFREG   0x1000

普通文件

在文件 xt_vfs.h 第 79 行定义.

◆ XT_VFS_S_IRGRP

#define XT_VFS_S_IRGRP   0x0020

组读

在文件 xt_vfs.h 第 96 行定义.

◆ XT_VFS_S_IROTH

#define XT_VFS_S_IROTH   0x0004

其他读

在文件 xt_vfs.h 第 104 行定义.

◆ XT_VFS_S_IRUSR

#define XT_VFS_S_IRUSR   0x0100

用户读

在文件 xt_vfs.h 第 88 行定义.

◆ XT_VFS_S_IRWXG

#define XT_VFS_S_IRWXG   0x0038

组读/写/执行

在文件 xt_vfs.h 第 94 行定义.

◆ XT_VFS_S_IRWXO

#define XT_VFS_S_IRWXO   0x0007

其他读/写/执行

在文件 xt_vfs.h 第 102 行定义.

◆ XT_VFS_S_IRWXU

#define XT_VFS_S_IRWXU   0x01C0

用户读/写/执行

在文件 xt_vfs.h 第 86 行定义.

◆ XT_VFS_S_IWGRP

#define XT_VFS_S_IWGRP   0x0010

组写

在文件 xt_vfs.h 第 98 行定义.

◆ XT_VFS_S_IWOTH

#define XT_VFS_S_IWOTH   0x0002

其他写

在文件 xt_vfs.h 第 106 行定义.

◆ XT_VFS_S_IWUSR

#define XT_VFS_S_IWUSR   0x0080

用户写

在文件 xt_vfs.h 第 90 行定义.

◆ XT_VFS_S_IXGRP

#define XT_VFS_S_IXGRP   0x0008

组执行

在文件 xt_vfs.h 第 100 行定义.

◆ XT_VFS_S_IXOTH

#define XT_VFS_S_IXOTH   0x0001

其他执行

在文件 xt_vfs.h 第 108 行定义.

◆ XT_VFS_S_IXUSR

#define XT_VFS_S_IXUSR   0x0040

用户执行

在文件 xt_vfs.h 第 92 行定义.

◆ XT_VFS_SEEK_CUR

#define XT_VFS_SEEK_CUR   1

从当前位置

在文件 xt_vfs.h 第 122 行定义.

◆ XT_VFS_SEEK_END

#define XT_VFS_SEEK_END   2

从文件末尾

在文件 xt_vfs.h 第 124 行定义.

◆ XT_VFS_SEEK_SET

#define XT_VFS_SEEK_SET   0

从文件头开始

在文件 xt_vfs.h 第 120 行定义.

◆ XT_VFS_TYPE_DIR

#define XT_VFS_TYPE_DIR   0x02

目录

在文件 xt_vfs.h 第 59 行定义.

◆ XT_VFS_TYPE_REG

#define XT_VFS_TYPE_REG   0x01

普通文件

在文件 xt_vfs.h 第 57 行定义.

◆ XT_VFS_TYPE_UNKNOWN

#define XT_VFS_TYPE_UNKNOWN   0xFF

未知类型

在文件 xt_vfs.h 第 61 行定义.

◆ XT_VFS_W_OK

#define XT_VFS_W_OK   0x02

写权限检查

在文件 xt_vfs.h 第 70 行定义.

◆ XT_VFS_X_OK

#define XT_VFS_X_OK   0x01

执行权限检查

在文件 xt_vfs.h 第 72 行定义.

类型定义说明

◆ xt_vfs_dir_t

typedef struct xt_vfs_dir xt_vfs_dir_t

目录句柄(opaque,内部字段不暴露)

在文件 xt_vfs.h 第 228 行定义.

◆ xt_vfs_dirent_t

目录项信息

包含文件节点号、文件类型和文件名。

◆ xt_vfs_err_t

typedef int32_t xt_vfs_err_t

错误码类型,详细错误码见 XT_VFS_ERR_* 系列宏

在文件 xt_vfs.h 第 165 行定义.

◆ xt_vfs_fd_t

typedef int32_t xt_vfs_fd_t

文件描述符类型,内部编码 generation+index,由 VFS Core 生成,用户不应自行构造

在文件 xt_vfs.h 第 167 行定义.

◆ xt_vfs_ino_t

typedef int32_t xt_vfs_ino_t

inode 编号类型

在文件 xt_vfs.h 第 181 行定义.

◆ xt_vfs_mode_t

typedef uint32_t xt_vfs_mode_t

文件模式类型(权限 + 类型)

在文件 xt_vfs.h 第 173 行定义.

◆ xt_vfs_off_t

typedef int32_t xt_vfs_off_t

偏移量类型

在文件 xt_vfs.h 第 177 行定义.

◆ xt_vfs_ops_t

typedef struct xt_vfs_ops xt_vfs_ops_t

后端操作接口(前向声明)

在文件 xt_vfs.h 第 246 行定义.

◆ xt_vfs_size_t

typedef uint32_t xt_vfs_size_t

文件大小类型(无符号)

在文件 xt_vfs.h 第 169 行定义.

◆ xt_vfs_ssize_t

typedef int32_t xt_vfs_ssize_t

文件大小类型(有符号)

在文件 xt_vfs.h 第 171 行定义.

◆ xt_vfs_stat_t

typedef struct xt_vfs_stat xt_vfs_stat_t

文件状态信息

包含文件大小、类型权限、时间戳。

◆ xt_vfs_statfs_t

文件系统状态信息

包含总块数、空闲块数、块大小及文件节点统计。

◆ xt_vfs_t

typedef struct xt_vfs xt_vfs_t

VFS 实例(前向声明)

在文件 xt_vfs.h 第 248 行定义.

◆ xt_vfs_time_t

typedef uint32_t xt_vfs_time_t

时间类型(固定 32 位)

在文件 xt_vfs.h 第 175 行定义.

◆ xt_vfs_utimbuf_t

文件时间信息

包含访问时间和修改时间。

◆ xt_vfs_whence_t

typedef int32_t xt_vfs_whence_t

寻址基准类型

在文件 xt_vfs.h 第 179 行定义.

函数说明

◆ xt_vfs_access()

xt_vfs_err_t xt_vfs_access ( const char * path,
xt_vfs_mode_t amode )

检查文件访问权限

参数
path文件路径
amode访问模式(XT_VFS_F_OK / XT_VFS_R_OK / XT_VFS_W_OK / XT_VFS_X_OK)
返回
XT_VFS_ERR_OK 成功(有权限)

◆ xt_vfs_chdir()

xt_vfs_err_t xt_vfs_chdir ( const char * path)

切换当前工作目录

每个线程独立维护自己的 CWD。

参数
path目录路径
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_close()

xt_vfs_err_t xt_vfs_close ( xt_vfs_fd_t fd)

关闭文件

全局锁下校验并释放 fd → mount 锁下调后端 close。

参数
fd文件描述符
返回
XT_VFS_ERR_OK 成功
XT_VFS_ERR_INVAL fd 无效

◆ xt_vfs_closedir()

xt_vfs_err_t xt_vfs_closedir ( xt_vfs_dir_t * dir)

关闭目录

参数
dir目录句柄
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_deinit()

xt_vfs_err_t xt_vfs_deinit ( void )

销毁 VFS 实例

释放所有已分配资源,卸载所有挂载点,销毁锁,重置状态。

返回
XT_VFS_ERR_OK 成功
XT_VFS_ERR_INVAL VFS 未初始化

◆ xt_vfs_errno()

xt_vfs_err_t xt_vfs_errno ( void )

获取当前线程的最后一个错误码

返回
XT_VFS_ERR_OK 或最后一次操作的错误码

◆ xt_vfs_fstat()

xt_vfs_err_t xt_vfs_fstat ( xt_vfs_fd_t fd,
xt_vfs_stat_t * stat )

获取已打开文件的状态

参数
fd文件描述符
stat输出状态结构体
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_fsync()

xt_vfs_err_t xt_vfs_fsync ( xt_vfs_fd_t fd)

同步单个文件到存储设备

参数
fd文件描述符
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_ftruncate()

xt_vfs_err_t xt_vfs_ftruncate ( xt_vfs_fd_t fd,
xt_vfs_off_t length )

截断已打开的文件

参数
fd文件描述符
length新的文件大小
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_getcwd()

char * xt_vfs_getcwd ( char * buf,
xt_vfs_size_t size )

获取当前工作目录

参数
buf输出缓冲区
size缓冲区大小
返回
buf 成功
NULL 失败(缓冲区不足等)

◆ xt_vfs_init()

xt_vfs_err_t xt_vfs_init ( const xt_vfs_config_t * config)

初始化 VFS 实例

根据配置分配挂载表、句柄表、线程上下文表等资源。 支持三种内存模式:动态(xt_malloc)、外部传入、静态数组。

参数
configVFS 配置,不可为 NULL
返回
XT_VFS_ERR_OK 成功
XT_VFS_ERR_NOMEM 内存不足
XT_VFS_ERR_INVAL 参数无效

◆ xt_vfs_is_active()

bool xt_vfs_is_active ( void )

检查 VFS 实例是否已激活

返回
true 已激活
false 未激活

◆ xt_vfs_mkdir()

xt_vfs_err_t xt_vfs_mkdir ( const char * path)

创建目录

参数
path目录路径
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_mount()

xt_vfs_err_t xt_vfs_mount ( const char * path,
const xt_vfs_ops_t * ops,
void * ctx )

挂载后端文件系统

将后端文件系统挂载到指定路径,支持多后端同时存在。 路径解析时执行最长前缀匹配。

参数
path挂载点路径
ops后端操作接口
ctx后端私有数据
返回
XT_VFS_ERR_OK 成功
XT_VFS_ERR_EXIST 挂载点已存在
XT_VFS_ERR_NOMEM 挂载槽位不足
XT_VFS_ERR_INVAL 参数无效

◆ xt_vfs_open()

xt_vfs_fd_t xt_vfs_open ( const char * path,
xt_vfs_mode_t flags )

打开文件

两级锁操作:全局锁下路由 → mount 锁下调后端 open → 全局锁下分配 fd。

参数
path文件路径
flags打开模式(XT_VFS_O_RDONLY / XT_VFS_O_WRONLY / XT_VFS_O_RDWR / O_CREAT 等)
返回
>=0 文件描述符
XT_VFS_INVALID_FD 失败(通过 xt_vfs_errno 获取错误码)

◆ xt_vfs_opendir()

xt_vfs_dir_t * xt_vfs_opendir ( const char * path)

打开目录

参数
path目录路径
返回
非 NULL 目录句柄
NULL 失败(通过 xt_vfs_errno 获取错误码)

◆ xt_vfs_read()

xt_vfs_ssize_t xt_vfs_read ( xt_vfs_fd_t fd,
void * buf,
xt_vfs_size_t size )

读取文件

参数
fd文件描述符
buf缓冲区
size要读取的字节数
返回
>=0 实际读取字节数,负数表示错误

◆ xt_vfs_readdir()

xt_vfs_dirent_t * xt_vfs_readdir ( xt_vfs_dir_t * dir)

读取目录项

参数
dir目录句柄
返回
非 NULL 目录项指针
NULL 错误或目录末尾(通过 xt_vfs_errno 区分)

◆ xt_vfs_remove()

xt_vfs_err_t xt_vfs_remove ( const char * path)

删除文件

参数
path文件路径
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_rename()

xt_vfs_err_t xt_vfs_rename ( const char * old_path,
const char * new_path )

重命名文件

要求新旧路径解析到同一挂载点。

参数
old_path原路径
new_path新路径
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_rewinddir()

xt_vfs_err_t xt_vfs_rewinddir ( xt_vfs_dir_t * dir)

重置目录读取位置

参数
dir目录句柄
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_rmdir()

xt_vfs_err_t xt_vfs_rmdir ( const char * path)

删除空目录

参数
path目录路径
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_seek()

xt_vfs_ssize_t xt_vfs_seek ( xt_vfs_fd_t fd,
xt_vfs_off_t offset,
xt_vfs_whence_t whence )

文件定位

参数
fd文件描述符
offset偏移量
whence寻址基准(XT_VFS_SEEK_SET / XT_VFS_SEEK_CUR / XT_VFS_SEEK_END)
返回
>=0 新的文件位置,负数表示错误

◆ xt_vfs_seekdir()

xt_vfs_err_t xt_vfs_seekdir ( xt_vfs_dir_t * dir,
xt_vfs_off_t loc )

设置目录读取位置

参数
dir目录句柄
loc目录读取位置
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_stat()

xt_vfs_err_t xt_vfs_stat ( const char * path,
xt_vfs_stat_t * stat )

获取文件状态

参数
path文件路径
stat输出状态结构体
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_statfs()

xt_vfs_err_t xt_vfs_statfs ( const char * path,
xt_vfs_statfs_t * statfs )

获取文件系统状态

参数
path路径
statfs输出文件系统状态
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_strerror()

const char * xt_vfs_strerror ( xt_vfs_err_t err)

获取错误码对应的字符串描述

参数
err错误码
返回
错误描述字符串(静态常量,不可释放)

◆ xt_vfs_sync_all()

xt_vfs_err_t xt_vfs_sync_all ( const char * path)

同步所有文件到存储设备

参数
path挂载点路径,NULL 表示同步所有已挂载文件系统
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_tell()

xt_vfs_ssize_t xt_vfs_tell ( xt_vfs_fd_t fd)

获取当前文件位置

参数
fd文件描述符
返回
>=0 当前位置,负数表示错误

◆ xt_vfs_telldir()

xt_vfs_off_t xt_vfs_telldir ( xt_vfs_dir_t * dir)

获取目录读取位置

参数
dir目录句柄
返回
>=0 目录读取位置,负数表示错误

◆ xt_vfs_truncate()

xt_vfs_err_t xt_vfs_truncate ( const char * path,
xt_vfs_off_t length )

截断文件到指定大小

参数
path文件路径
length新的文件大小
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_unmount()

xt_vfs_err_t xt_vfs_unmount ( const char * path)

卸载后端文件系统

参数
path挂载点路径
返回
XT_VFS_ERR_OK 成功
XT_VFS_ERR_NOTFOUND 挂载点不存在
XT_VFS_ERR_INVAL 参数无效

◆ xt_vfs_utime()

xt_vfs_err_t xt_vfs_utime ( const char * path,
const xt_vfs_utimbuf_t * buf )

更新文件时间

参数
path文件路径
buf时间结构体
返回
XT_VFS_ERR_OK 成功

◆ xt_vfs_write()

xt_vfs_ssize_t xt_vfs_write ( xt_vfs_fd_t fd,
const void * buf,
xt_vfs_size_t size )

写入文件

参数
fd文件描述符
buf数据缓冲区
size要写入的字节数
返回
>=0 实际写入字节数,负数表示错误