来自文件结构的linux内核完整路径

时间:2012-05-03 12:48:19

标签: linux-kernel kernel-module

美好的一天。我试图从结构文件

获取完整路径
char *buf = (char*)__get_free_page(GFP_USER);
char *buf2 = (char*)__get_free_page(GFP_USER);

char *name =  dentry_path(file->f_dentry, buf, PAGE_SIZE);
char *root = dentry_path(file->f_vfsmnt->mnt_mountpoint, buf2, PAGE_SIZE);

***some operations***

free_page((unsigned long)buf);
free_page((unsigned long)buf2);
kfree(*root);
kfree(*name);

但是我收到了一个错误 fs / read_write.c:707:错误:请求成员'mnt_mountpoint'不是结构或联合

如何从文件中获取vsfmount结构?

内核版本linux-2.6.37.6

2 个答案:

答案 0 :(得分:1)

在内核2.6中,您的代码应该可以运行。

在内核3.0中,struct vfsmount包含mnt_root类型的成员struct dentry 我认为这会给你装载点路径。

你在使用哪个?

答案 1 :(得分:1)

根据错误判断,是否可能在f_vfsmnt - struct中分配file

在这种情况下,mnt_mountpoint字段应该可以通过file->f_vfsmnt.mnt_mountpoint访问。