From 5d08fa750c6fb4f8f2ce437448a7f993b76b0d80 Mon Sep 17 00:00:00 2001 From: Yan_yan Date: Wed, 4 Nov 2020 15:15:57 +0800 Subject: [PATCH 1/4] remove the first cmd shell of the xiuos boot banner --- docs/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index da6dbd0..0d51c5c 100755 --- a/docs/README.md +++ b/docs/README.md @@ -17,7 +17,6 @@ footer: ©2020 北京大学信息技术高等研究院泛在操作系统实验 ```shell -cmd /=) board init done ... start kernel ... ********************************************************************************************* From af3a190e18f19297d1bff456a06b880fd33c2ad5 Mon Sep 17 00:00:00 2001 From: Yan_yan Date: Wed, 4 Nov 2020 15:51:05 +0800 Subject: [PATCH 2/4] add task_status images --- docs/doc/kernel/imagesrc/task_status.png | Bin 0 -> 15516 bytes docs/doc/kernel/task.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/doc/kernel/imagesrc/task_status.png diff --git a/docs/doc/kernel/imagesrc/task_status.png b/docs/doc/kernel/imagesrc/task_status.png new file mode 100644 index 0000000000000000000000000000000000000000..cee5dbc2b656f30f3812cdb5a509e7afa608a9c3 GIT binary patch literal 15516 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 literal 0 HcmV?d00001 diff --git a/docs/doc/kernel/task.md b/docs/doc/kernel/task.md index a75b882..8b506a8 100644 --- a/docs/doc/kernel/task.md +++ b/docs/doc/kernel/task.md @@ -24,7 +24,7 @@ 系统中的任务在任意时刻都处于就绪(ready)、运行(running)、阻塞/挂起(suspend)、退出(quit)四种状态之一。状态之间的变化关系如下图所示。 -![task_status](task_status.png) + 任务在创建完成后会进入就绪状态并被加入就绪队列等待内核调度。当任务被调度开始运行时,任务会进入运行状态。若任务在运行过程中被更高优先级的任务抢占,则被强占的任务会回到就绪队列并再次进入就绪状态。当任务在运行过程中申请资源失败时,任务会被挂起并进入挂起状态,并在所申请资源能够被满足时回到就绪状态。当任务执行完成,即从入口函数返回时,会进入终止状态,并由内核回收其相关资源。 From 5488e3e5c0e152796e271cb4420069aed1b9a463 Mon Sep 17 00:00:00 2001 From: Yan_yan Date: Wed, 4 Nov 2020 16:02:19 +0800 Subject: [PATCH 3/4] 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 From a33fc4a21104b8d3a1370ea3374ff2591bafafa9 Mon Sep 17 00:00:00 2001 From: Yan_yan Date: Wed, 4 Nov 2020 16:09:42 +0800 Subject: [PATCH 4/4] modify the component name --- docs/.vuepress/config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 089c26d..8692a87 100755 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -48,7 +48,7 @@ module.exports = { link: '/doc/kernel/', }, { - text: '组件', + text: '构件', link: '/doc/component/' }, { @@ -126,7 +126,7 @@ module.exports = { children: getSidebarByCategory('kernel','en') }, { - title: '组件', + title: '构件', children: getSidebarByCategory('component','en') }, {