VOP_LINK(9) FreeBSD カーネル開発者マニュアル VOP_LINK(9)
名称
VOP_LINK − ファイルの新しい名前の作成 |
書式
#include <sys/param.h> int |
VOP_LINK(struct vnode *dvp, struct vnode *vp, struct componentname *cnp); |
解説 |
これは、既存のファイルに対し、指定したディレクトリ中の新しい名前をリンク します。 引数は以下の通りです。 |
dvp
ディレクトリの vnode。 vp cnp パス名情報は戻り時に開放されるべきでは ありません。なぜならば、それは呼び 出し側によって行なわれるからです。ディレクトリとファイルの vnode は戻り時 に解放されるべきでは ありません。 ロック |
VOP_LINK() はディレクトリおよびファイルの vnode は入る時にロックされ、戻 る時までロックされ続けていることを期待します。 |
戻り値
ファイルが成功裏にリンクされた場合には 0 が返され、そうでない場合にはエ ラーが返されます。 |
疑似コード
int vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp) { int error = 0; if (vp->v_mount != dvp->v_mount) |
return (EXDEV); |
if (vp would have too many links) |
return (EMLINK); |
if (vp is immutable) |
return (EPERM); |
/* if (!error) { |
/* |
|
* ディレクトリの新しい名前を追加します。 |
|
*/ |
|
...; |
} return error; |
エラー
[EMLINK]
ファイルのリンクの数が多すぎます。 [EPERM] [EXDEV] 関連項目 |
作者
このマニュアルページは Doug Rabson が初めて書きました。 FreeBSD 10.0 July 24, 1996 FreeBSD 10.0 |