EN JA
VOP_CREATEVOBJECT(9)
VOP_CREATEVOBJECT(9) FreeBSD Kernel Developer's Manual VOP_CREATEVOBJECT(9)

名称

VOP_CREATEVOBJECT, VOP_DESTROYVOBJECT, VOP_GETVOBJECTVM オブジェクトの相互作用

書式

#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

VFS(9) は、与えられた vnode(9) のための VM オブジェクトを作成する必要があるとき、 VOP_CREATEVOBJECT() を起動します。ファイルシステムのコードは、この呼び出しを基本的なファイルシステムに伝えます。この VOP は、複数回呼び出すことができ、ファイルシステムのコードは、あらゆる追加の呼び出しを無視し、0 の返りコードで終了するべきです。

VOP_DESTROYVOBJECT() は、 vnode(9) が再利用されるとき、呼び出されます。

VOP_GETVOBJECT() は、VM オブジェクトを取得するために、すべてのカーネルコードによって使用されるべきです。返された 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 オブジェクト取り扱いを任せます。

作者

このマニュアルページは、 Boris Popov によって書かれました。
September 10, 2000 FreeBSD