VOP_RMDIR(9) FreeBSD 一般コマンドマニュアル

VOP_RMDIR

前のページ 上に戻る 次のページ

VOP_RMDIR


     #include <sys/vnode.h>

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

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


解説

     これらのエントリポイントは、それぞれファイルとディレクトリを削除します。

     引数は以下の通りです。

     dvp  ディレクトリの vnode。

     vp   削除対象ファイルの vnode。

     cnp  ファイルのパス名情報。


ロック

     dvp および vp 共に、入る時にロックされているべきで、戻り時もロックされ続
     けています。


戻り値

     成功時には 0 が返され、そうでない場合にはエラーコードが返されます。


疑似コード

     int
     vop_remove(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
     {
         int error = 0;

         if (vp is immutable) {
             error = EPERM;
             goto out;
         }

         /*
          * ディレクトリから cnp->cn_nameptr の名前を削除し、vp のリンク
          * カウントを更新します。
          */
         ...;

         /*
          * "." の削除を試みる場合は注意してください。XXX これはより
          * 上層で取り扱われるべきです。
          */
         if (dvp == vp)
             vrele(vp);
         else


作者

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

FreeBSD 4.4                      July 24, 1996                     FreeBSD 4.4

ABELNET VPSサービス