スポンサーリンク

VOP_SETEXTATTR(9) FreeBSD カーネル開発者マニュアル VOP_SETEXTATTR(9)

名称

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

書式

#include <sys/param.h>
#include <sys/vnode.h>
#include <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 が書きました。

FreeBSD 10.0 December 23, 1999 FreeBSD 10.0

スポンサーリンク