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 |