スポンサーリンク

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

名称

VOP_GETEXTATTR − vnode からの名前付き拡張属性の取り出し

書式

#include <sys/param.h>
#include <sys/vnode.h>
#include <sys/extattr.h>

int

       VOP_GETEXTATTR(struct vnode *vp, int attrnamespace, const char *name,struct uio *uio, size_t *size, struct ucred *cred,struct thread *td);

解説

この vnode 呼び出しは、ファイルまたはディレクトリから、指定した名前付き拡 張属性を取り出すために使用することができます。

引数は以下の通りです。

       vp

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

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

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

uio
読み込むべきデータの位置。

size
NULL でない場合には、戻る時に全ての属性データを読込むため に要求されるバイト数が含まれます。殆んどの場合、 size が NULL ではない時には uio が NULL にされます。またはその逆で す。

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

td
拡張属性を要求しているスレッド。

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

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

LOCKS

この vnode は入る時にロックされ、戻る時までロックされ続けるべきです。

戻り値

成功時には 0 が返され、読み込んだデータを反映して uio 構造体が更新されま す。そうでなければ適切なエラーコードが返されます。

エラー

       [ENOATTR]

要求された属性は、この vnode のために定義されていませ ん。

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

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

[ENOMEM]
その要求を実行するための十分なメモリが利用可能ではあり ません。

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

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

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

関連項目

extattr(9), vnode(9), VOP_LISTEXTATTR(9), VOP_SETEXTATTR(9)

バグ

属性名として空の文字列を渡すことによって、いくつかのファイルシステムは、 要求された名前空間における対象 vnode の持つ定義された名前のリストを返しま す。これは悪い API ですので、明示的な VOP で置き換えられる予定です。

FreeBSD 10.0 December 23, 1999 FreeBSD 10.0

スポンサーリンク