MADVISE(2) FreeBSD システムコールマニュアル MADVISE(2)
名称
madvise, posix_madvise − メモリの使用法について助言を与える |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/mman.h> int |
madvise(void *addr, size_t len, int behav); int |
posix_madvise(void *addr, size_t len, int behav); |
解説 |
madvise() システムコールによって、自身のメモリ利用の習性の知識があるプロ セスは、それをシステムに説明できます。 posix_madvise() インタフェースは同 等で規格に適合するために提供されます。 知られた習性は以下のとおりです: |
MADV_NORMAL
デフォルトのページング動作に戻るようにシステムに指示しま す。 MADV_RANDOM MADV_SEQUENTIAL MADV_WILLNEED MADV_DONTNEED MADV_FREE MADV_NOSYNC この機能を使用する典型的な場合とは、ファイルを裏に持つ共 有メモリ領域をプロセス (IPC) 間通信で使いたいとき、特 に、その領域に格納されるデータを物理的ディスクに書き込む 必要がない場合です。この機能は、SysV 共有メモリ呼び出し で得られる mmap 性能と同等の性能を与えてくれますし、か つ、SysV 共有メモリ呼び出しを使うより、きめ細かい制御が 可能でより制約が少ない方法でもあります。しかしこの機能は UNIX プラットホーム間で移植性がないことに注意してくださ い (いくつかのプラットホームではデフォルトで正しく振る舞 うかも知れませんが)。詳しい情報に関しては、 mmap(2) の MAP_NOSYNC セクションを参照してください。 MADV_AUTOSYNC MADV_NOCORE MADV_CORE MADV_PROTECT posix_madvise() インタフェースを呼び出す移植可能なプログラムは、上記のフ ラグではなく別名の POSIX_MADV_NORMAL, POSIX_MADV_SEQUENTIAL, POSIX_MADV_RANDOM, POSIX_MADV_WILLNEED および POSIX_MADV_DONTNEED を使用 するべきです。 戻り値 |
関数 madvise() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。 |
エラー
madvise() システムコールは次の場合に失敗します: |
[EINVAL]
behav 引数が有効ではありません。 [ENOMEM] [EPERM] 関連項目 |
規格
posix_madvise() インタフェースは IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に適 合しています。 |
歴史
madvise() システムコールは 4.4BSD ではじめて登場しました。 FreeBSD 10.0 July 19, 1996 FreeBSD 10.0 |