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

f_vfsmntエラーから判断すると、構造体に割り当てられている可能性はありfileますか?

その場合、mnt_mountpointフィールドは 経由でアクセスできる必要がありますfile->f_vfsmnt.mnt_mountpoint

于 2012-08-16T08:34:48.163 に答える
1

カーネル 2.6 では、コードは機能するはずです。

カーネル 3.0 では、タイプ のstruct vfsmountmember が含まれています。 これにより、マウントポイントのパスが得られると思います。mnt_rootstruct dentry

どれを使っていますか?

于 2012-05-04T05:56:34.077 に答える