VNODE

Section: Misc. Reference Manual Pages (9)
索引 jman

BSD mandoc
 

索引

名称

vnode - ファイルまたはディレクトリの内部表現  

索引

書式

In sys/param.h In sys/vnode.h  

索引

解説

vnode は UNIX でのファイル活動の中心です。 vnode は Vt struct vnode で記述されます。 個々の活動中のファイル、 個々の現在のディレクトリ、個々のマウントされたファイル、 テキストファイル、およびルートのために割当てられた一意的な vnode があります。

個々の vnode は 3 つの参照カウント、 v_usecount v_holdcnt および v_writecount を持っています。 最初のものはカーネル内でこの vnode を使用しているクライアントの数です。 このカウントは vref(9), vrele(9) および vput(9) によって管理されます。 2 番目のものはカーネル内でこの vnode の再利用を拒否しているクライアントの 数です。 このカウントは vhold(9) および vdrop(9) によって管理されます。 vnode の v_usecount および v_holdcnt の両方が 0 に達すると、それからその vnode はフリーリスト上に置かれ、 ことによっては別のファイルシステムで、 別のファイルのために再利用されるかもしれません。 フリーリストへのおよびフリーリストからの移行は、 getnewvnode(9), vfree(9) および vbusy(9) によって取り扱われます。 3 番目のものはファイルに書込み中のクライアントの数のカウントです。 これは open(2) および close(2) システムコールによって管理されます。

vnode を返すあらゆる呼び出し (例えば vget(9), VOP_LOOKUP9 など) は vnode の v_usecount を 1 ずつ増やします。 呼び出し側が vnode の利用を完了したときには、この参照は vrele(9) (または vnode がロックされていれば vput(9)) の呼び出しによって解放されるべきです。

その他の共通に使用される vnode 構造体のメンバは、 名前キャッシュでの一貫性を管理するために使用される v_id と、その vnode を所有しているファイルシステムを指す v_mount と、その vnode が表現するオブジェクトの型を含む v_type と、その vnode のファイルシステム特有のデータを保存するために ファイルシステムによって使用される v_data があります。 v_op フィールドは vnode の機能を実装するファイルシステム内の関数を呼び出すための VOP_* マクロによって使用されます。  

索引

VNODE の型

VNON
型なしです。
VREG
通常ファイルです。 VM オブジェクトの支持が有るかもしれませんし無いかもしれません。 必ず支持オブジェクトを取得したい場合には、 vfs_object_create9 を呼び出します。
VDIR
ディレクトリです。
VBLK
ブロック型デバイスです。 VM オブジェクトの支持が有るかもしれませんし無いかもしれません。 必ず支持オブジェクトを取得したい場合には、 vfs_object_create9 を呼び出します。
VCHR
文字型デバイスです。
VLNK
シンボリックリンクです。
VSOCK
ソケットです。 通知ロックは動作しないでしょう。
VFIFO
FIFO (名前付きパイプ) です。 通知ロックは動作しないでしょう。
VBAD
古い形式のバッドセクタマップです。

 

索引

実装に関する注

VFIFO は /sys/kern/sys_pipe.c の "struct fileops" を使用します。 VSOCK は /sys/kern/sys_socket.c の "struct fileops" を使用します。 その他の全ては /sys/kern/vfs_vnops.c の "struct fileops" を使用します。

VFIFO/VSOCK のコードになぜか "struct fileops" が使用されている理由は、 カーネルへの VFS コードの不完全な統合の文化遺産です。

vnode(9) インタロックを保持している時の Fn malloc または Fn free への全ての呼出しは、VM オブジェクトと vnode のもつれ合いのために、 LOR (ロック順序の逆転) を引き起こします。  

索引

関連項目

malloc(9), VFS(9)  

索引

作者

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


 

索引

Index

名称
書式
解説
VNODE の型
実装に関する注
関連項目
作者

jman



Time: 07:08:01 GMT, January 12, 2009