Linux内核 - 刷新VFS Dentry缓存

时间:2010-04-25 00:25:09

标签: linux linux-kernel

我编写了一个系统调用,它打开一个目录并获取文件对象和dentry结构。我试图使用list_for_each()宏列出所有条目,包括子目录中的条目。问题是它只显示当前在dentry缓存中的内容。如果我用nautilus打开目录然后重新运行系统调用,则会列出所有条目。有没有办法检查确切的条目列表或刷新缓存?

f = s_open(tpath);

fle = fget(f);
d = fle->f_path.dentry;
list_for_each ( dentry ) {   
    ...
}
sys_close(f);

1 个答案:

答案 0 :(得分:3)

为什么使用系统调用来读取目录的内容?听起来你真的应该在用户区,然后你应该使用像opendir这样的东西。