tail head cat sleep
QR code linking to this page

manページ  — VOP_LINK

名称

VOP_LINK – ファイルの新しい名前の作成

内容

書式

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

int
VOP_LINK(struct vnode *dvp, struct vnode *vp, struct componentname *cnp);

解説

これは、既存のファイルに対し、 指定したディレクトリ中の新しい名前をリンクします。

引数は以下の通りです。
dvp
  ディレクトリの vnode。
vp
  リンクされるファイルの vnode。
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);

/* * vp のリンクカウントをインクリメントし、ディスクに書き戻します。 */ ...;

if (!error) {         /*          * ディレクトリの新しい名前を追加します。          */         ...; }

return error; }

エラー

[EMLINK]
  ファイルのリンクの数が多すぎます。
[EPERM]
  ファイルが変更不可能です。
[EXDEV]
  異なるファイルシステム間ではハードリンクは利用できません。

関連項目

vn_lock(9), vnode(9)

作者

このマニュアルページは Doug Rabson が初めて書きました。

VOP_LINK (9) July 24, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.