VOP_SETEXTATTR(9)

名称
VOP_SETEXTATTR - vnode への名前つき拡張属性の設定

書式
<sys/param.h> <sys/vnode.h> <sys/extattr.h> int VOP_SETEXTATTR(struct vnode *vp, int attrnamespace, const char *name, struct uio *uio, struct ucred *cred, struct thread *td)

解説
この vnode 呼び出しは、ファイルまたはディレクトリに対し、 特定の名前付き拡張属性を設定するために使用可能です。

引数は以下の通りです。

vp  ファイルまたはディレクトリの vnode。

attrnamespace
    どの拡張属性の名前空間に、その属性の名前が存在するのかを示す整数定数。

name
    属性の名前が入った、ヌル文字で終端された文字列へのポインタ。

uio 読み込みまたは書き込みされるデータの位置。

cred
    要求の認証で使用するユーザ証明。

td  拡張属性を設定しているスレッド。

uio 構造体は、 VOP_WRITE(9) での同じ名前の引数と同様に使用されます。しかしながら、 拡張属性が厳密な "name=value" のセマンティクスを規定しているので、 0 でないオフセットは却下されるでしょう。

uio ポインタは、 NULL であることが可能であり、 指定された拡張属性が削除されるべきであることを指示します。

cred ポインタは、 NULL を渡すことができ、 可能であるならばアクセス制御チェックが実行されないことを指示します。 この cred の設定は、アクティブプロセスに許されていない拡張属性の変更を、 カーネルが正当化することを認めるために使用可能です。

拡張属性のセマンティクスは、 呼び出しを実装しているファイルシステムに依存して異なり得ます。 拡張属性についてのより多くの情報は extattr(9) を参照してください。

ロック
vnode は、入る時にロックされ、戻り時にもロックされ続けているべきです。

戻り値
拡張属性が成功裏に設定された場合には 0 が返されます。 そうでない場合には適切なエラーコードが返されます。

エラー

[EACCES]
    呼び出し側が適切な特権を持っていません。

[ENXIO]
    指定された vnode および属性名に対する要求は、このファイルシステムでは無効です。

[ENOMEM]
    要求を実行するための十分なメモリがありません。

[EFAULT]
    uio 構造体が無効なユーザ空間アドレスを参照しています。

[EINVAL]
    name, namespace, または uio 引数が無効です。

[EOPNOTSUPP]
    ファイルシステムが VOP_SETEXTATTR() をサポートしていません。

[ENOSPC]
    ファイルシステムに空き領域がありません。

[EROFS]
    ファイルシステムが読み取り専用です。

関連項目
extattr(9), vnode(9), VOP_GETEXTATTR(9), VOP_LISTEXTATTR(9)

作者
このマニュアルページは Robert Watson が書きました。