VOP_LISTEXTATTR(9) | FreeBSD Kernel Developer's Manual | VOP_LISTEXTATTR(9) |
名称
VOP_LISTEXTATTR — vnode から指定された拡張属性のリストを検索する書式
#include < sys/param.h>#include < sys/vnode.h>
#include < sys/extattr.h>
int
VOP_LISTEXTATTR( struct vnode *vp, int attrnamespace, struct uio *uio, size_t *size, struct ucred *cred, struct thread *td);
解説
この vnode 呼び出しは、ファイルかディレクトリ上で指定された名前空間から指定された拡張属性のリストを検索するために使用されます。引数は次の通りです:
- vp
- ファイルまたはディレクトリの vnode。
- attrnamespace
- 属性名が存在している属性の拡張された名前空間を示す整数定数。
- uio
- 読み込まれるデータの位置。結果のデータは属性名のリストとなります。各リストエントリは、属性名が後に続く属性名の長さを含む 1 バイトから成ります。属性名は ASCII NUL (ヌル文字) で終了しません。
- size
- NULL でないなら、返り時に、リストを読み込むために必要なバイト数を含みます。ほとんどの場合、 uio は size がないとき、 NULL となり、逆もまた同様です。
- cred
- 要求を承認するときに使用するユーザ資格証明
- td
- 拡張属性を要求するスレッド
cred ポインタは、できれば、アクセス制御チェックが実行されないことを示すために NULL であるかもしれません。この cred 設定は、カーネルが、アクティブなプロセスが行うことが許可されないかもしれない拡張属性の検索ができるようにするために使用されるかもしれません。
拡張属性のセマンティクスは呼び出しを実装するファイルシステムで異なるかもしれません。拡張属性に関する詳しい情報は extattr(9) で見つけられます。
ロック
vnode は入力時にロックされ、返り時にロックされたままで残っているべきです。戻り値
成功すれば、0 が返され、 uio 構造体は読み込まれたリストを反映するためにを更新されます。そうでなければ、適切なエラーコードが返されます。エラー
- [ EACCES]
- 呼び出し側には、適切な特権がありません。
- [ ENXIO]
- 要求で指定された vnode と属性名はこのファイルシステムで有効ではありませんでした。
- [ ENOMEM]
- 要求を実現させるために十分なメモリが利用可能ではありません。
- [ EFAULT]
- uio 構造体は無効のユーザ空間アドレスを参照します。
- [ EINVAL]
- namespace か uio 引数が無効です。
- [ EOPNOTSUPP]
- ファイルシステムは VOP_LISTEXTATTR() をサポートしません。
August 19, 2005 | FreeBSD |