VOP_CREATEVOBJECT(9)

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

書式
<sys/param.h> <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 が書きました。