vno
2022-12-12 11:16:57 5 举报
vno
作者其他创作
大纲/内容
nextDir
ret
被挂载目录
当前Vnode设为nextVnode
当前Vnode即所寻找的result结点
定义变量
VnodeLookupAt
VfsVnodePermissionCheck
是否具有权限
下一个结点
VnodeLookupFullpath
NameHash
否
当前Vnode
target对应的被挂载结点
ConvertVnodeIfMounted
Null
VnodeAlloc
返回
是
传入的是否是绝对路径?
flags
是否找到文件?
更新currentDir为下一级的目录
传入参数
函数调用结果
currentDir
PathCacheLookup
Nextname是否为空?
ProcessVirtualVnode
调用
currentVnode
fullpath(绝对路径)
更新当前结点的filePath
当前目录
VfsPermissionCheck
直接返回根结点
调用PathCacheLookup函数
path
遍历链表尝试找到该结点
路径查找标记
缓存是否命中?
PreProcess
调用step函数
是否是被挂载结点?
mount函数
Nextname
得到下一级目录名Nextname
是否是目录节点?
根据相对路径找到绝对路径
source
RefreshLRU
要挂载结点
NextName
mountpt_vnode
创建对应的子结点nextVnode
一级一级查找
路径
Step
绝对路径是'/'?
找到结点,放在nextVnode中
VnodeLookupAt函数变量
orgVnode
路径是否结束?
device
target
调用具体文件系实现的Lookup查找
下一级目录
下一级目录名
将startVnode设为根节点,存入path
step函数变量
vfs_normalize_path
当前结点
normalizedPath
nextVnode
转化为挂载结点
是否是虚拟结点
查找结果vnode
VnodeLookupFullpath传入
result
PathCacheAlloc
是否命中
更新哈希映射
路径结束,将currentDir置空
开始查找文件
标准路径
g_rootVnode(根节点)
结束
VnodeLookup
更新LRU链表
调用PreProcess函数
初始化结点
VnodeLookup传入
调用step一级一级查找
结束调用,返回
当前结点filePath是否为Null?
收藏
0 条评论
下一页