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

名称

vinvalbufvnode に関連しているすべてのバッファをフラッシュして無効にする

書式

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

int
vinvalbuf( struct vnode *vp, int flags, struct ucred *cred, int slpflag, int slptimeo);

解説

vinvalbuf() 関数は、与えられた vnode に関連しているすべてのバッファを無効にします。これはクリンリストとダーティリスト上のバッファを含んでいます。 V_SAVE フラグが指定されるなら、ダーティリスト上のバッファは解放される前に、同期されます。 vnode に関連している VM Object があれば、それは取り除かれます。

その引数は次の通りです:

vp
バッファが無効にされる vnode へのポインタ。
flags
唯一サポートされるフラグは V_SAVE で、それはダーティバッファがディスクで同期されるべきであることを示します。
cred
V_SAVE が設定されるなら VOP_FSYNC(9) バッファに使用されるユーザ資格証明。
slpflag
関数における任意のスリープの優先順序に使用される slp フラグ。
slptimeo
関数における任意のスリープのためのタイムアウト。

ロック

vnode は呼び出しの前にロックされると仮定され、返り時にロックされたままで残っています。

Giant は、呼び出しの前に保持されなければならなくて、返り時にロックされたままで残っています。

戻り値

成功すれば 0 値が返されます。

疑似コード

vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); 
error = vinvalbuf(devvp, V_SAVE, cred, 0, 0); 
VOP_UNLOCK(devvp, 0); 
if (error) 
 return (error);

エラー

[ ENOSPC]
ファイルシステムが満杯です。 ( V_SAVE で)
[ EDQUOT]
ディスククォータが超過した。 ( V_SAVE で)
[ EWOULDBLOCK]
スリープ操作はタイムアウト。 ( slptimeo 参照)
[ ERESTART]
シグナルは、配信される必要があり、システムコールは再び開始されるべきです。 ( slpflagPCATCH で)
[ EINTR]
システムはシグナルによって割り込まれました。 ( slpflagPCATCH で)

関連項目

tsleep(9), VOP_FSYNC(9)

作者

このマニュアルページは、 Chad David <davidc@acns.ab.ca>によって書かれました。
October 20, 2008 FreeBSD