| 総合手引 | セクション 9 | English | オプション |
#include <sys/param.h>
#include <sys/vnode.h>
#include <sys/namei.h>
引数は以下の通りです。
| dvp | |
| ディレクトリのロックされた vnode。 | |
| vpp | |
| 作成結果のロックされた vnode が格納されるべき、変数のアドレス。 | |
| cnp | |
| 生成された要素のパス名。 | |
| vap | |
| 新しいオブジェクトの作成時に使用されるべき属性。 | |
| target | |
| シンボリックリンクの対象のパス名。 | |
これらのエントリポイントは、オブジェクトの生成中に VOP_LOOKUP(9) の後に呼び出されます。
int
vop_create(struct vnode *dvp,
struct vnode **vpp,
struct componentname *cnp
struct vattr *vap)
{
int mode = MAKEIMODE(vap->va_type, vap->va_mode);
struct vnode *vp;
int error;
*vpp = NULL;
if ((mode & IFMT) == 0)
mode |= IFREG;
error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred, &vp);
if (error)
return error;
/*
* 新しい vnode のパーミッションを更新します。
* これには、ディレクトリからのグループのコピーを含みます。
*/
...;
#ifdef QUOTA
/*
* できる限りクォータ情報をチェックします。
*/
...;
#endif
/*
* ディレクトリに新しい vnode を入れ、ディレクトリ内容が変更される
* 前に vnode がディスクをアクセスしない様に注意します。
*/
error = ...;
if (error)
goto bad;
*vpp = vp;
return 0;
bad:
/*
* inode またはディレクトリの更新の試みで書き込みエラーが
* 発生したため inode の割り当てを解放しなければなりません。
*/
vput(vp);
/*
* vp のためのファイルシステム資源を解放。
*/
...;
return error;
}
| [ENOSPC] | |
| ファイルシステムが一杯です。 | |
| [EDQUOT] | |
| そのユーザのファイルシステム空間または inode のクォータを超過しました。 | |
| VOP_CREATE (9) | July 24, 1996 |
| 総合手引 | セクション 9 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
| “ | What is this horrible fascination with Unix? The operating system of the 1960s, still gaining in popularity in the 1990s. | ” |
| — Donald A. Norman | ||