スポンサーリンク

VOP_CREATEVOBJECT(9) FreeBSD カーネル開発者マニュアル VOP_CREATEVOBJECT(9)

名称

VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT, VOP_GETVOBJECT − VM オブジェクトの 相互作用

書式

#include <sys/param.h>
#include <sys/vnode.h>

int

VOP_CREATEVOBJECT(struct vnode *vp, struct ucred *cred, struct thread *td);

int

VOP_DESTROYVOBJECT(struct vnode *vp);

int

VOP_GETVOBJECT(struct vnode *vp, struct vm_object **objpp);

解説

これらの呼び出しは、VM オブジェクトと特有の vnode の連係を制御するために 使用されます。

これらの関数で指定する引数は以下の通りです。

       vp

そのファイルの vnode です。

objpp
返される VM オブジェクト、または呼び出し側がその VM オブジェクトの 存在のテストをする場合には NULL です。

与えられた vnode(9) のために VM オブジェクトを作成する必要がある時には、 VFS(9)VOP_CREATEVOBJECT() を実行します。ファイルシステムのコードはこ の呼び出しを下層のファイルシステムに渡すことができます。この VOP は何度も 呼び出されることが可能で、ファイルシステムのコードは追加の全ての呼び出し を無視し、0 を返すコードで終了するべきです。

vnode(9) が再利用された時には、 VOP_DESTROYVOBJECT() が呼び出されます。

VM オブジェクトを取得するために全てのカーネルのコードで、 VOP_GETVOBJECT() が使用されるべきです。返された VM オブジェクトは、重ねら れたマウントの場合には異なったファイルシステムに属するかもしれません。

VFS(9) は VM オブジェクトの作成および破壊の標準の操作を実行する、 3 つの 関数を持っています。これらの関数は vop_stdcreatevobject(), vop_stddestroyvobject() および vop_stdgetvobject() です。

注意: vnode(9) は入る時にロックされているべきで、終了時までロックされ続け ていなければなりません。

戻り値

VOP_CREATEVOBJECT(), VOP_DESTROYVOBJECT() および VOP_GETVOBJECT() 関数は 成功時には 0 を返し、失敗時には 0 ではない値を返します。成功時には 0 が返 され、そうでなければエラーが返されます。

使用例

デフォルトでは、ファイルシステムは vop_std*() 関数に VM オブジェクトの取 り扱いを委ねます。

関連項目

vnode(9), VOP_GETPAGES(9), VOP_PUTPAGES(9)

作者

このマニュアルページは Boris Popov が書きました。

FreeBSD 10.0 September 10, 2000 FreeBSD 10.0

スポンサーリンク