uclinux内核VFS的简单遍历
来源:互联网 发布:软件站排名 编辑:程序博客网 时间:2024/06/06 11:44
在内核解开rootfs.initramfs之后,VFS就在内核建立了一棵树,我们写一段简单的代码对这个树进行遍历:
static void VFSWalk(CVFSWalk* pWalk, void* pParent, dentry* pEntry)
{
// 插入所有的子节点
struct dentry* pNode;
void* pLast = NULL;
list_for_each_entry(struct dentry, pNode, &pEntry->d_subdirs, d_u.d_child)
{
pLast = pWalk->Insert((char*)pNode->d_name.name, pParent, pLast);
VFSWalk(pWalk, pLast, pNode);
}
}
void VFSWalk(CVFSWalk* pWalk)
{
// 插入所有的节点
struct dentry* pEntry = current->nsproxy->mnt_ns->root->mnt_root;
void* pRoot = pWalk->Insert("/", NULL, NULL);
VFSWalk(pWalk, pRoot, pEntry);
}
在这里CVFSWalk封装了CTreeCtrl的InsertItem函数,这样每在VFS中找到一个节点就在树控件上相应地创建一项。
遍历从根文件系统的dentry开始,只使用struct dentry结构体的d_subdirs成员。
从实验结果验证了:
1、每一个普通文件或者目录都用一个dentry结构体来表示。
2、对于链接到目录的符号文件,dentry的子节点为空。
嗯,继续内核的学习之路~~~
近日,我家6岁的小姑娘参加了第六届POP全国少儿英语风采大赛,拉票进行中(2011-6-15前)。 请帮忙点击新东方网站的链接: http://popdasai.xdf.cn/toupiao.php?do=space&uid=4237 投她一票,谢谢!
- uclinux内核VFS的简单遍历
- uclinux内核的container_of
- uclinux内核的console
- uclinux内核线程的创建
- uclinux内核的文件系统类型
- uclinux内核的任务切换
- 编译自己的uclinux内核
- uclinux内核的console(1):数据结构
- uclinux内核的console(2):early console
- uclinux内核的任务优先级及其load_weight
- uclinux第一个内核线程的运行
- uclinux内核的对象表示:kobjects
- uclinux内核驱动的初始化顺序
- uclinux内核中根文件系统的建立
- uclinux内核的console(1):数据结构
- uclinux内核的console(5):printk相关的内核参数
- uClinux内核和标准linux内核的比较
- Linux2.6内核--VFS层中和进程相关的数据结构
- 如何在SharePoint里自定义WebPart将搜索结果显示在同一个界面
- 初始化D3D
- linux-2.6.14下USB驱动移植心得
- syslog的点滴--集中处理日志
- 通过用 .NET 生成自定义窗体设计器来定制应用程序
- uclinux内核VFS的简单遍历
- vivi开发笔记【专辑】
- How to write a JMS Faban driver
- Java中字符之间的转化
- 我为什么要开通博客?
- C指针的实质
- 2010-7-1
- BMP、JPG等六种常用图形文件的结构
- 切割图片