From 5488e3e5c0e152796e271cb4420069aed1b9a463 Mon Sep 17 00:00:00 2001 From: Yan_yan Date: Wed, 4 Nov 2020 16:02:19 +0800 Subject: [PATCH] insert component/fs.md --- docs/doc/component/fs.md | 269 +++++++++++++++++++++++++++++ docs/doc/component/imagesrc/fs.png | Bin 0 -> 41275 bytes 2 files changed, 269 insertions(+) create mode 100644 docs/doc/component/imagesrc/fs.png diff --git a/docs/doc/component/fs.md b/docs/doc/component/fs.md index 984c68f..81a1870 100644 --- a/docs/doc/component/fs.md +++ b/docs/doc/component/fs.md @@ -1 +1,270 @@ # 文件系统 + +## 简介 +当前,Linux和其他RTOS支持Ext2,Ext3,Ext4,XFS,BtrFS,F2FS,RAMFS等多种文件系统,因存储设备的硬件特征及其不同的应用场合,用户可以选择不同的文件系统。虚拟文件系统VFS的引入,使得这些不同的文件系统可以向外提供统一的编程接口和操作界面。 + +在物联网领域,主要使用的存储设备为FLASH,所以可以选择Jffs2等适合FLASH特性的日志型文件系统;FATFS由于其同时兼容Linux和Windows,选择其作为文件系统便于在“端”、“边”、“云”之间以统一的格式交互和保存数据。Ext4作为业内用户使用较多的文件系统,也可以将其轻量级的版本应用于物联网领域。 + +XiUOS研发计划支持FATFS,Jffs2,LWext4三种文件系统.XiUOS 1.0版本只支持FATFS。为了增强兼容性和支持VFS的特性,XiUOS通过设计IoT-VFS的构件,为用户提供了树形的文件组织结构。当前版本的IoT-VFS在功能上保证了FATFS的VFS特性,同时允许用户使用统一的VFS的接口来操作设备。IoT-VFS具有以下特性: +* 统一采用UNIX风格路径格式,目录与文件层级清晰分明; +* 面向用户提供POSIX文件接口,降低应用程序移植难度; +* 可以在任意路径挂载不同文件系统,并且可以便捷地添加对新的文件系统的支持。 + +在IoT-VFS的支持下,应用程序开发者无须了解底层文件系统的接口细节,只需使用标准POSIX文件接口进行应用开发。对于已有的POSIX应用程序,也可以直接进行源代码级别的移植。使用IoT-VFS的应用程序架构如下图所示。 + +
+ +![fs](./imagesrc/fs.png) + +
+ +## 文件系统接口 + +```c +int xs_MountFilesystem(const char *device_name, + enum xs_FilesystemType fs_type, const char *path); +``` + +该函数用于将指定设备上的物理文件系统挂载到指定路径。若挂载成功则返回0;若失败则返回对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| device_name | 待挂载的设备名 | +| fs_type | 设备上的物理文件系统类型,目前只支持FSTYPE_FATFS | +| path | 挂载路径 | + +```c +int xs_UnmountFileSystem(const char *path); +``` + +该函数用于卸载指定路径上挂载的文件系统。若卸载成功则返回0;若失败则返回对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 待卸载的路径 | + +## POSIX文件接口 + +```c +int open(const char *path, int flags, ...); +``` + +该函数用于打开一个文件。若文件打开成功则返回该文件的描述符(非负),后续读写该文件由该描述符标识;若不成功则返回-1,此时errno会被置为对应错误码。在打开文件时可以指定打开选项,即flags参数。可选的选项有打开时截断文件(O_TRUNC)和向末尾写入(O_APPEND)。 + +| 参数 | 描述 | +| --- | --- | +| path | 打开文件的路径 | +| flags | 打开选项 | + +```c +int close(int fd); +``` + +该函数用于关闭一个已打开的文件。若文件关闭成功则返回0;若不成功则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待关闭文件描述符 | + +```c +int read(int fd, void *buf, size_t len); +``` + +该函数用于从文件读取数据。若读取成功则返回读取到的字节数;若不成功则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待读取文件描述符 | +| buf | 存放读取数据的缓冲区首地址 | +| len | 缓冲区长度,单位为字节 | + +```c +int write(int fd, const void *buf, size_t len); +``` + +该函数用于向文件写入数据。若写入成功则返回读取到的字节数;若不成功则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待写入文件描述符 | +| buf | 存放写入数据的缓冲区首地址 | +| len | 缓冲区长度,单位为字节 | + +```c +off_t lseek(int fd, off_t offset, int whence); +``` + +该函数用于重定位文件读写指针。若重定位成功则返回新的读写指针位置,即距离文件起始处的字节数;若不成功则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待重定位的文件描述符 | +| offset | 新的文件读写指针位置 | +| whence | offset参数的参照位置,可以为文件起始(SEEK_SET)、当前位置(SEEK_CUR)、文件末尾(SEEK_END) | + +```c +int rename(const char *from, const char *to); +``` + +该函数用于重命名文件。若重命名成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| from | 原文件路径 | +| to | 新文件路径,若与原路径属于不同目录则文件会被移动 | + +```c +int unlink(const char *path); +``` + +该函数用于删除一个文件。若删除成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 待删除文件路径 | + +```c +int stat(const char *path, struct stat *buf); +``` + +该函数用于获取文件的元数据。stat结构与POSIX定义相同。若获取成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 待获取元数据的文件路径 | +| buf | 一个stat结构实例指针,用于存储元数据 | + +```c +int fstat(int fd, struct stat *buf); +``` + +该函数用于获取文件的元数据。stat结构与POSIX定义相同。若获取成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待获取元数据的文件描述符 | +| buf | 一个stat结构实例指针,用于存储元数据 | + +```c +int fsync(int fd); +``` + +该函数用于将指定文件数据写回存储设备,从而防止系统掉电数据丢失。若写回成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待写回文件描述符 | + +```c +int ftruncate(int fd, off_t length); +``` + +该函数用于将文件截断至指定长度。若截断成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| fd | 待截断文件描述符 | +| length | 截断后的长度 | + +```c +int mkdir(const char *path, mode_t mode); +``` + +该函数用于创建一个目录。若创建成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 待创建目录的路径 | +| mode | 目前该参数无用 | + +```c +DIR *opendir(const char *path); +``` + +该函数用于打开一个目录。若打开成功则返回一个目录句柄;若失败则返回XS_NULL。 + +| 参数 | 描述 | +| --- | --- | +| path | 待打开目录的路径 | + +```c +int closedir(DIR *dirp); +``` + +该函数用于关闭一个已打开的目录。若关闭成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| dirp | 待关闭目录句柄 | + +```c +struct dirent *readdir(DIR *dirp); +``` + +该函数用于读取目录的目录项。目录项由dirent结构表示,目前该结构仅包含文件或目录的类型(d_kind)与名称(d_name)。若读取成功则返回一个dirent指针;若读取失败则返回XS_NULL,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| dirp | 待读取目录句柄 | + +```c +int rmdir(const char *path); +``` + +该函数用于删除一个目录。若删除成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 待删除目录的路径 | + +```c +int chdir(const char *path); +``` + +该函数用于切换当前工作目录。若切换成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| path | 新的工作目录路径 | + +```c +char *getcwd(char *buf, size_t size); +``` + +该函数用于获取当前的工作目录。若获取成功则返回工作目录字符串(与buf参数相同);若失败则返回XS_NULL,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| buf | 用于存储工作目录字符串的缓冲区首地址 | +| size | 缓冲区大小 | + +```c +void rewinddir(DIR *dirp); +``` + +该函数用于重置目录的读取位置,即下一次readdir将返回目录的第一个目录项。 + +| 参数 | 描述 | +| --- | --- | +| dirp | 待重置读取位置的目录句柄 | + +```c +long telldir(DIR *dirp); +``` + +该函数用于获取目录的读取位置,即下一个readdir返回目录项的位置。若获取成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| dirp | 待获取读取位置的目录句柄 | + +```c +void seekdir(DIR *dirp, off_t offset); +``` + +该函数用于设置目录的读取位置,即下一个readdir返回目录项的位置。若设置成功则返回0;若失败则返回-1,此时errno会被置为对应错误码。 + +| 参数 | 描述 | +| --- | --- | +| dirp | 待设置读取位置的目录句柄 | +| offset | 新的读取位置,应为某次telldir的返回值 | \ No newline at end of file diff --git a/docs/doc/component/imagesrc/fs.png b/docs/doc/component/imagesrc/fs.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d120806d0afe9130a325851eccf812eb586a34 GIT binary patch literal 41275 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 OuUlHTH9x684*3tUmt~0n literal 0 HcmV?d00001