スポンサーリンク

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

名称

VOP_OPEN, VOP_CLOSE − ファイルのオープンまたはクローズ

書式

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

int

VOP_OPEN(struct vnode *vp, int mode, struct ucred *cred, struct thread *td, int fdidx);

int

VOP_CLOSE(struct vnode *vp, int mode, struct ucred *cred, struct thread *td);

解説

VOP_OPEN() エントリポイントは、ファイルがプロセスによってアクセスされる前 に呼び出され、 VOP_CLOSE() エントリポイントは、ファイルに対するプロセスの 仕事の完了後に呼び出されます。

引数は以下の通りです。

       vp

ファイルの vnode。

mode
呼び出しプロセスによって要求されたアクセスモード。

td
ファイルにアクセスしているスレッド。

加えて、 VOP_OPEN() は fdidx の中のファイル記述子番号を受け入れることが可 能です。これは例えば fdesc(5) のような情報を要求するファイルシステムで有 用です。

アクセスモードは、 FREAD, FWRITE, O_NONBLOCK, O_APPEND を含むフラグの組で す。

ロック

VOP_OPEN() は、入る時に vp がロックされていることを期待し、戻り時までロッ クされたままにします。

VOP_CLOSE() は、vnode に結びつけられた参照が少なくとも 1 個は存在すること を期待し、 vnode がロックされているかどうかは気にしません。ロックおよび参 照状態は、戻る時に変更されずにそのままになります。 vn_close は、ロックさ れていない参照された vnode を期待し、戻る前に参照を手繰ることに注意してく ださい。

実装に関する注

VOP_OPEN() への fdidx 引数は現在使用されておらず、当面は ‘−1’ を使用しま す。しかしながら、これは将来変更されます。

戻り値

成功時には 0 が返され、そうでない場合にはエラーコードが返されます。

疑似コード

int
vop_open(struct vnode *vp, int mode, struct ucred *cred, struct thread *td)
{
    /*
     * ほとんどのファイルシステムは、ここでは大したことはしません。
     */
    return 0;
}

関連項目

vnode(9), VOP_LOOKUP(9)

作者

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

FreeBSD 10.0 July 24, 1996 FreeBSD 10.0

スポンサーリンク