本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス > f

fadvise(2)

HP-UX 11i Version 3: February 2007
≫ 

テクニカル ドキュメント

フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

fadvise() ― ファイルアドバイザリ情報

構文

#include <sys/fcntl.h>
#include <sys/fadvise.h>


int fadvise(
int fad_fd,
off_t fad_offset,
size_t fad_len,
enum fadv_hints fad_advice,
fad_extparms_t *fad_extparms
);

パラメータ

fad_fd  

fadvise の動作が適用されるオープンファイル記述子

fad_offset  

指定する範囲の開始位置 (正のバイトオフセット)

fad_len  

指定する範囲の長さ (バイト数)

fad_advice  

範囲に適用するアドバイス (fadvise(5) を参照)

fad_extparms  

fad_extparms_t 型の配列へのポインター (fadvise(5) を参照)

説明

fadvise() 関数は、オープンファイル記述子 fad_fd に関連付けられたファイル内のデータに関して、アプリケーションに予測される動作をシステムにアドバイス (通知) します。 開始位置は fad_offset で、そこから fad_len バイト続きます。 指定した範囲は、ファイル内に現在存在していなくてもかまいません。 fad_len がゼロの場合、 fad_offset 以降の全データが指定されます。

fad_offset および fad_len パラメータの扱いは条件付きであり、 fad_extparms 引き数がヌルでない場合は無視されます。 fad_extparms 引き数は、ヌルでない場合、 fad_extparms_t 型の拡張パラメータリストへのポインターとして使用されます (fadvise(5) を参照)。

拡張パラメータリストを使用すると、アプリケーションでは 1 回の呼び出しで複数の範囲にわたるヒントをまとめて指定することができます。 fad_count 個の項目がリストされている順に処理され、範囲が重複している場合は、ヒントリストの低い位置にあるエントリーが優先されます。

指定したファイルオブジェクトに対して、すべてのヒントの効果が累積されることに注意してください。 ヒントはすべて、ファイルオブジェクトの最終クローズを処理する際に削除されます。

fad_advice パラメータは、データに適用するヒントを伝えるために使用され、以下の値のいずれかを取ります。

FADV_CCNUMA  

メモリーをファイル I/O に割り当てる際に、VM は物理メモリーのローカリティに対して cc-numa 関連のポリシーを使用します。 この属性は、ファイル全体に対してのみに適用されます。

以下のポリシーのいずれか 1 つを Either one of the following policies can be combined with the FADV_CCNUMA コマンドと組み合わせることができます (詳細については fadvise(5) を参照)。

FADV_VM_MEM_INTERLEAVED
  

ファイル用のメモリーを、インターリーブメモリーから割り当てることを指定するポリシーです。 インターリーブメモリーは、いくつかのローカリティドメインから割り当てられて ストライプ化されたメモリーで、同一コストの割り当てが必要な場合に使用します。

FADV_VM_MEM_FIRST_TOUCH
  

ファイル用のメモリーを、呼び出した CPU のローカリティから割り当てることを指定するポリシーです。 最も近いローカリティからメモリーが割り当て可能であれば高速ですが、 そうでなければ、遠くの割り当て可能なメモリーを検索します。

FADV_DONTNEED  

アプリケーションが、指定した範囲のデータに近い将来アクセスしないと予測されることを示します。

FADV_LARGEPAGE_HINT
  

ファイル I/O へのメモリー割り当てにおいて、VM がラージページを使用するのがアプリケーションに望ましいことを示します。 望ましいページサイズは、 fad_pgsize エイリアスで渡されます (fadvise(5) を参照)。 fad_pgsize エイリアスで指定したページサイズは、システムでサポートされているラージページのサイズに丸め (切り捨て) られます。 ヒントを指定していない場合には、調整パラメータ vps_pagesize に指定されているページサイズが使用されます。

FADV_NOREUSE  

アプリケーションが、指定した範囲のデータに 1 度アクセスした後、そのデータを再度使用しないと予測されることを示します。

FADV_NORMAL  

指定したデータに対して、アプリケーションの動作に関するアドバイスがないことを示します。 オープンファイルに対してアドバイスが指定されない場合、これがデフォルトの特性になります。

FADV_RANDOM  

指定した範囲のデータに、アプリケーションがランダムな順序でアクセスすると予測されることを示します。

FADV_SEQUENTIAL  

指定した範囲のデータに、アプリケーションが小さいオフセットから大きいオフセットの順にシーケンシャルにアクセスすると予測されることを示します。

FADV_SYNC_NONE  

指定した fd に関連付けられたページが VM によって sync されないことを示します。

FADV_SYNC_RDWR  

ページアウトするページを選択する際に、VM の sync 処理が fd に対して使用するページングポリシーを設定します。 このポリシーは、ファイル I/O に対応するページが、 fad_synctime エイリアスで指定された時間間隔で sync されることを示します (fadvise(5) を参照)。 これは、VM が設定した時間間隔でのデフォルト動作です。

FADV_WILLNEED  

アプリケーションが、指定した範囲のデータに近い将来アクセスすると予測されることを示します。

これらの値は、 <sys/fadvise.h> で定義されています。

戻り値

 0 

正常終了。

-1 

失敗。 エラーを示す値が errno に設定されます。

エラー

fadvise() サービスが失敗した場合、 errno に、以下の値のいずれかが設定されます。

EBADF 

fd 引き数が有効なファイル記述子ではありません。

EINVAL 

fad_advice の値、または他の入力値のいずれかが無効です。

ENOSYS 

指定されたヒントが、このファイルオブジェクトではサポートされていません。

ENOTTY 

fadvise の動作が、このファイルシステムではサポートされていません。

ESPIPE 

fd 引き数が、パイプまたは FIFO に関連付けられています。

指定した fad_advice ヒントの処理中にエラーが発生した場合、関連するエラーを示すエラー番号が返されます (errno.h を参照)。 したがって、このエラー番号の値は、上記のエラー番号とは無関係です。

int fd, ret;
struct fad_extparms *my_fad_extparms;
struct fad_parms *fad_plistp;

/*
* Advise the system that we're sequentially accessing the
* 64KB range and will not be re-using the data.
*/

fd = open (argv[1], O_RDONLY|O_CREAT, 0777);

my_fad_extparms = calloc(1, sizeof(int) + 2 * sizeof(struct fad_parms));
my_fad_extparms->fad_count = 2;

/* Initialize the two fad_parms entries. */
fad_plistp = &my_fad_extparms->fad_plist[0];

/* Hint that we're doing sequential access. */
fad_plistp->fad_advice = FADV_SEQUENTIAL;
fad_plistp->FAD_OFFSET = 0;
fad_plistp->FAD_LEN = 65536; /* first 64k range */
fad_plistp++;

/* Advise that we won't re-use the data. */
fad_plistp->fad_advice = FADV_NOREUSE;
fad_plistp->FAD_OFFSET = 0;
fad_plistp->FAD_LEN = 65536; /* first 64k range */

ret = fadvise (fd, 0, 0, 0, my_fad_extparms);

if (ret == -1)
printf ("fadvise() failure errno %d\n", errno);

著者

fadvise() は、IEEE POSIX 1003.1-2001 規格の機能を HP で実装したものです。

参照

fcntl(2), posix_fadvise(2), fadvise(5), fcntl(5)

標準準拠

fadvise(): POSIX.1 (2001)

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 2007 Hewlett-Packard Development Company, L.P.