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

名称

VOP_CREATE, VOP_MKNOD, VOP_MKDIR, VOP_SYMLINKファイル、ソケット、FIFO、デバイス、ディレクトリまたはシンボリックリンクを作成する

書式

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

int
VOP_CREATE( struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, struct vattr *vap);

int
VOP_MKNOD( struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, struct vattr *vap);

int
VOP_MKDIR( struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, struct vattr *vap);

int
VOP_SYMLINK( struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, struct vattr *vap, char *target);

解説

これらのエントリポイントは、与えられたディレクトリのに新しいファイル、ソケット、FIFO、デバイス、ディレクトリまたはシンボリックリンクを作成します。

引数は、次の通りです:

dvp
ディレクトリのロックされた vnode。
vpp
作成結果のロックされた vnode が格納されるべき変数のアドレス。
cnp
生成されたパス名の構成要素。
vap
新しいオブジェクトが作成されるべき属性。
target
シンボリックリンクのターゲットのパス名。

これらのエントリポイントは、オブジェクトが作成されているとき、 VOP_LOOKUP(9) の後で呼び出されます。

ロック

ディレクトリ dvp は、呼び出しの入口でロックされ、返るときにロックされたままでなければなりません。呼び出しが成功するなら、新しいオブジェクトは、ロックされて返されます。

戻り値

成功するなら、新しいオブジェクトの vnode は、 *vpp に置かれ、0 が返されます。そうでなければ、適切なエラーが返されます。

エラー

[ ENOSPC]
ファイルシステムが満杯です。
[ EDQUOT]
ユーザのファイルシステムの空間または inode のクォータが超過しました。

関連項目

vnode(9), VOP_LOOKUP(9)

歴史

関数 VOP_CREATE は、 4.3BSD で登場しました。

作者

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