EN JA
VOP_SETEXTATTR(9)
VOP_SETEXTATTR(9) FreeBSD Kernel Developer's Manual VOP_SETEXTATTR(9)

名称

VOP_SETEXTATTRvnode のために名前付き拡張属性を設定する

書式

#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]
ファイルシステムが読み込み専用です。

作者

このマニュアルページは、 Robert Watson によって書かれました。
December 23, 1999 FreeBSD