VOP_CREATE(9) FreeBSD カーネル開発者マニュアル VOP_CREATE(9)
名称
VOP_CREATE, VOP_MKNOD, VOP_MKDIR, VOP_SYMLINK − ファイル、ソケッ ト、FIFO、デバイス、ディレクトリまたはシンボリックリンクの作成 |
書式
#include <sys/param.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 cnp vap target これらのエントリポイントは、オブジェクトの生成中に VOP_LOOKUP(9) の後に呼 び出されます。 ロック |
ディレクトリ dvp は入る時にロックされ、戻る時にもロックされ続けてなければ なりません。呼び出しが成功の場合には、新しいオブジェクトがロックされて返 されます。 |
戻り値
成功時には、新しいオブジェクトの vnode が *vpp に置かれ、0 が返されます。 そうでない場合には、適切なエラーが返されます。 |
疑似コード
int vop_create(struct vnode *dvp, |
struct vnode **vpp, |
||
struct componentname *cnp |
||
struct vattr *vap) |
{ *vpp = NULL; |
mode |= IFREG; |
error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred,
&vp); |
return error; |
/* #ifdef QUOTA /* if (error) |
goto bad; |
*vpp = vp; return 0; bad: /* return error; |
エラー
[ENOSPC]
ファイルシステムが一杯です。 [EDQUOT] 関連項目 |
VOP_LOOKUP(9,) vnode(9) |
歴史
関数 VOP_CREATE は 4.3BSD で登場しました。 |
作者
このマニュアルページは Doug Rabson が書きました。 FreeBSD 10.0 July 24, 1996 FreeBSD 10.0 |