2

再会。我试图从结构文件中获取完整路径

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: error: request for member 'mnt_mountpoint' in something not a structure or union

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

内核版本 linux-2.6.37.6

4

2 回答 2

1

在内核 2.6 中,您的代码应该可以工作。

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

你用的是哪个?

于 2012-05-04T05:56:34.077 回答
1

从错误来看,是否有可能f_vfsmntfile-struct中分配?

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

于 2012-08-16T08:34:48.163 回答