函数 | |
int | VnodesInit (void) |
static struct Vnode * | GetFromFreeList (void) |
获取空闲节点链表,分配的节点从空闲链表里出 更多... | |
struct Vnode * | VnodeReclaimLru (void) |
节点批量回收, LRU是Least Recently Used的缩写,即最近最少使用, 更多... | |
int | VnodeAlloc (struct VnodeOps *vop, struct Vnode **newVnode) |
申请分配一个 vnode 节点,vop为操作节点的驱动程序 更多... | |
int | VnodeFree (struct Vnode *vnode) |
是否 vnode 节点 更多... | |
int | VnodeFreeAll (const struct Mount *mount) |
释放mount下所有的索引节点 更多... | |
BOOL | VnodeInUseIter (const struct Mount *mount) |
mount是否正在被某个索引节点使用 更多... | |
int | VnodeHold () |
拿锁,封装互斥量 更多... | |
int | VnodeDrop () |
归还锁 更多... | |
static char * | NextName (char *pos, uint8_t *len) |
static int | PreProcess (const char *originPath, struct Vnode **startVnode, char **path) |
处理前的准备 更多... | |
static struct Vnode * | ConvertVnodeIfMounted (struct Vnode *vnode) |
static void | RefreshLRU (struct Vnode *vnode) |
刷新虚拟节点 更多... | |
static int | ProcessVirtualVnode (struct Vnode *parent, uint32_t flags, struct Vnode **vnode) |
static int | Step (char **currentDir, struct Vnode **currentVnode, uint32_t flags) |
一级一级向下找 更多... | |
int | VnodeLookupAt (const char *path, struct Vnode **result, uint32_t flags, struct Vnode *orgVnode) |
通过路径 查找索引节点.路径和节点是 N:1的关系, 硬链接 更多... | |
int | VnodeLookup (const char *path, struct Vnode **vnode, uint32_t flags) |
通过路径查询vnode节点 更多... | |
int | VnodeLookupFullpath (const char *fullpath, struct Vnode **vnode, uint32_t flags) |
根节点内部改变 更多... | |
static void | ChangeRootInternal (struct Vnode *rootOld, char *dirname) |
void | ChangeRoot (struct Vnode *rootNew) |
改变根节点 更多... | |
static int | VnodeReaddir (struct Vnode *vp, struct fs_dirent_s *dir) |
int | VnodeOpendir (struct Vnode *vnode, struct fs_dirent_s *dir) |
int | VnodeClosedir (struct Vnode *vnode, struct fs_dirent_s *dir) |
int | VnodeCreate (struct Vnode *parent, const char *name, int mode, struct Vnode **vnode) |
创建节点 更多... | |
int | VnodeDevInit () |
设备初始化,设备结点:/dev目录下,对应一个设备,如/dev/mmcblk0 更多... | |
int | VnodeGetattr (struct Vnode *vnode, struct stat *buf) |
buf 接走 vnode 属性 更多... | |
struct Vnode * | VnodeGetRoot () |
static int | VnodeChattr (struct Vnode *vnode, struct IATTR *attr) |
int | VnodeDevLookup (struct Vnode *parentVnode, const char *path, int len, struct Vnode **vnode) |
void | VnodeMemoryDump (void) |
LIST_HEAD * | GetVnodeFreeList () |
LIST_HEAD * | GetVnodeVirtualList () |
LIST_HEAD * | GetVnodeActiveList () |
int | VnodeClearCache () |
变量 | |
LIST_HEAD | g_vnodeFreeList |
@ver 更多... | |
LIST_HEAD | g_vnodeVirtualList |
LIST_HEAD | g_vnodeActiveList |
static int | g_freeVnodeSize = 0 |
static int | g_totalVnodeSize = 0 |
static LosMux | g_vnodeMux |
操作链表互斥量 更多... | |
static struct Vnode * | g_rootVnode = NULL |
根节点 更多... | |
static struct VnodeOps | g_devfsOps |
设备文件节点操作 更多... | |
改变根节点
获取空闲节点链表,分配的节点从空闲链表里出
|
static |
处理前的准备
|
static |
刷新虚拟节点
一级一级向下找
申请分配一个 vnode 节点,vop为操作节点的驱动程序
设备初始化,设备结点:/dev目录下,对应一个设备,如/dev/mmcblk0
归还锁
是否 vnode 节点
释放mount下所有的索引节点
拿锁,封装互斥量
mount是否正在被某个索引节点使用
通过路径查询vnode节点
int VnodeLookupAt | ( | const char * | path, |
struct Vnode ** | result, | ||
uint32_t | flags, | ||
struct Vnode * | orgVnode | ||
) |
通过路径 查找索引节点.路径和节点是 N:1的关系, 硬链接
根节点内部改变
节点批量回收, LRU是Least Recently Used的缩写,即最近最少使用,
#ifndef S_IRUSR #define S_ISUID 04000 #define S_ISGID 02000 #define S_ISVTX 01000 #define S_IRUSR 0400 #define S_IWUSR 0200 #define S_IXUSR 0100 #define S_IRWXU 0700 #define S_IRGRP 0040 #define S_IWGRP 0020 #define S_IXGRP 0010 #define S_IRWXG 0070 #define S_IROTH 0004 #define S_IWOTH 0002 #define S_IXOTH 0001 #define S_IRWXO 0007 #endif
|
static |
设备文件节点操作
设备文件系统节点操作