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

名称

VOP_READDIRディレクトリ内容を読み込む

書式

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

int
VOP_READDIR( struct vnode *vp, struct uio *uio, struct ucred *cred, int *eofflag, int *ncookies, u_long **cookies);

解説

ディレクトリエントリを読み込みます。
vp
ディレクトリの vnode。
uio
ディレクトリ内容を読み込む場所。
cred
呼び出し側の資格証明です。
eofflag
ファイルの終りの状態を返します (必要でなければ、 NULL)。
ncookies
NFS のために生成されたディレクトリのクッキーの数 (必要でなければ、 NULL)。
cookies
NFS のために生成されたディレクトリのシーク (seek) クッキー (必要でなければ、 NULL)。
ディレクトリの内容は、 struct dirent 構造体に読み込まれます。ディスク上の構造体が、これと異なっているなら、それらは、変換されるべきです。

ロック

ディレクトリは、(呼び出しの) 入口でロックされるべきであり、終了時もまだロックされています。

戻り値

成功すれば、0 が返され、そうでなければ、エラーコードが返されます。

これが、NFS サーバから呼び出されるなら、追加の引数 eofflag, ncookiescookies が与えられます。 *eofflag の値は、読み込みの間にディレクトリの終りに到達したなら、 TRUE に設定されるべきです。ディレクトリのシーク (seek) クッキーは、NFS クライアントに返され、後で、ディレクトリの途中でディレクトリの読み込みを再開するために使用されます。ディレクトリエントリごとに返された 1 つのクッキーであるべきです。クッキーの値は、適切なディレクトリエントリのディスク上のバージョンが開始する、ディレクトリ内のオフセットであるべきです。クッキーのためのメモリは、次を使用して割り付けられるべきです:

 ...; 
 *ncookies = number of entries read; 
 *cookies = malloc(*ncookies * sizeof(u_long), M_TEMP, M_WAITOK);

エラー

[ EINVAL]
ディレクトリ内の不正なオフセットから読み込みを行おうとしました。
[ EIO]
ディレクトリの読み込み間に読み込みエラーが発生しました。

関連項目

vnode(9)

作者

このマニュアルページは、 Doug Rabson によって書かれました。
July 24, 1996 FreeBSD