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 のクォータが超過しました。
歴史
関数 VOP_CREATE は、 4.3BSD で登場しました。作者
このマニュアルページは、 によって書かれました。July 24, 1996 | FreeBSD |