更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
Mount结构体 参考

举例: mount /dev/mmcblk0p0 /bin1/vs/sd vfat 将/dev/mmcblk0p0 挂载到/bin1/vs/sd目录 更多...

#include <mount.h>

成员变量

LIST_ENTRY mountList
 
const struct MountOpsops
 
struct VnodevnodeBeCovered
 
struct VnodevnodeCovered
 
struct VnodevnodeDev
 
LIST_HEAD vnodeList
 
int vnodeSize
 
LIST_HEAD activeVnodeList
 
int activeVnodeSize
 
voiddata
 
uint32_t hashseed
 
unsigned long mountFlags
 
char pathName [PATH_MAX]
 
char devName [PATH_MAX]
 

详细描述

举例: mount /dev/mmcblk0p0 /bin1/vs/sd vfat 将/dev/mmcblk0p0 挂载到/bin1/vs/sd目录

将一个设备(通常是存储设备)挂接到一个已存在的目录上,操作系统将所有的设备都看作文件,
它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,
然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,
了解这个存储设备的可读写特性之类的过程。

linux下面所有的文件、目录、设备都有一个路径,这个路径永远以/开头,用/分隔,如果一个路径是另一个路径的前缀,
则这两个路径有逻辑上的父子关系。但是并不是所有逻辑上的父子关系都必须要是同一个设备,决定不同路径对应到哪个设备的机制就叫做mount(挂载)。
通过mount,可以设置当前的路径与设备的对应关系。每个设备会设置一个挂载点,挂载点是一个空目录。一般来说必须有一个设备挂载在/这个根路径下面,
叫做rootfs。其他挂载点可以是/tmp,/boot,/dev等等,通过在rootfs上面创建一个空目录然后用mount命令就可以将设备挂载到这个目录上。挂载之后,
这个目录下的子路径,就会映射到被挂载的设备里面。当访问一个路径时,会选择一个能最大匹配当前路径前缀的挂载点。
比如说,有/var的挂载点,也有/var/run的挂载点的情况下,访问/var/run/test.pid,就会匹配到/var/run挂载点设备下面的/test.pid。
同一个设备可以有多个挂载点,同一个挂载点同时只能加载一个设备。访问非挂载点的路径的时候,按照前面所说,其实是访问最接近的一个挂载点,
如果没有其他挂载点那么就是rootfs上的目录或者文件了。

https://www.zhihu.com/question/266907637/answer/315386532
 * 
注意
注意: 同时可以 mount /dev/mmcblk0p0 /home/vs vfat 也就是说一个文件系统可以有多个挂载点

在文件 mount.h68 行定义.

结构体成员变量说明

◆ activeVnodeList

LIST_HEAD Mount::activeVnodeList

size of vnode list | 节点数量

在文件 mount.h76 行定义.

◆ activeVnodeSize

int Mount::activeVnodeSize

list of active vnodes | 激活的节点链表

在文件 mount.h77 行定义.

◆ data

void* Mount::data

szie of active vnodes list | 激活的节点数量

在文件 mount.h78 行定义.

◆ devName

char Mount::devName[PATH_MAX]

path name of mount point | 挂载点路径名称 /bin1/vs/sd

在文件 mount.h82 行定义.

◆ hashseed

uint32_t Mount::hashseed

private data | 私有数据,可使用这个成员作为一个指向它们自己内部数据的指针

在文件 mount.h79 行定义.

◆ mountFlags

unsigned long Mount::mountFlags

Random seed for vfs hash | vfs 哈希随机种子

在文件 mount.h80 行定义.

◆ mountList

LIST_ENTRY Mount::mountList

在文件 mount.h69 行定义.

◆ ops

const struct MountOps* Mount::ops

mount list | 通过本节点将Mount挂到全局Mount链表上

在文件 mount.h70 行定义.

◆ pathName

char Mount::pathName[PATH_MAX]

Flags for mount | 挂载标签

在文件 mount.h81 行定义.

◆ vnodeBeCovered

struct Vnode* Mount::vnodeBeCovered

operations of mount | 挂载操作函数

在文件 mount.h71 行定义.

◆ vnodeCovered

struct Vnode* Mount::vnodeCovered

vnode we mounted on | 要被挂载的节点 即 /bin1/vs/sd 对应的 vnode节点

在文件 mount.h72 行定义.

◆ vnodeDev

struct Vnode* Mount::vnodeDev

syncer vnode | 要挂载的节点 即/dev/mmcblk0p0 对应的 vnode节点

在文件 mount.h73 行定义.

◆ vnodeList

LIST_HEAD Mount::vnodeList

dev vnode

在文件 mount.h74 行定义.

◆ vnodeSize

int Mount::vnodeSize

list of vnodes | 链表表头

在文件 mount.h75 行定义.


该结构体的文档由以下文件生成: