MLOCKALL(2) FreeBSD システムコールマニュアル MLOCKALL(2)
名称
mlockall, munlockall − プロセスのアドレス空間のロック (アンロック) |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/mman.h> int |
mlockall(int flags); int |
munlockall(void); |
解説 |
mlockall() システムコールはプロセスのアドレス空間に関連付けられた物理ペー ジを、そのアドレス空間がアンロックされるまで、またはプロセスが終了するま で、または他のプログラムイメージを exec するまでの間、メモリ内にロックし ます。 以下のフラグは mlockall() の振舞いに影響します: |
MCL_CURRENT
プロセスのアドレス空間に現在マップされている全てのページを ロックします。 MCL_FUTURE 物理メモリは潜在的に欠乏しているリソースであるため、プロセスはどのくらい の量をロックできるのかを制限されています。 1 つのプロセスは最低でもシステ ム全体に渡る ‘‘wired pages’’ リミットをロック可能で、プロセス当たりの RLIMIT_MEMLOCK リソース制限をロック可能です。 munlockall() 呼び出しはプロセスのアドレス空間の中の全てのロックされたメモ リ領域をアンロックします。 munlockall() 呼び出し後にマップされる全ての領 域は、ロックされません。 戻り値 |
戻り値 0 は、呼び出しが成功し、その範囲内の全てのページがロックまたはアン ロックされたことを示します。戻り値 −1 は、エラーが発生し、その範囲内の全 てのページのロック状態が変更されないまま残されていることを示します。この 場合、グローバル変数 errno がそのエラーを示すために設定されます。 |
エラー
mlockall() は以下の場合に失敗します: |
[EINVAL]
flags 引数が 0 であるか、または実装されていないフラグ を含んでいます。 [ENOMEM] [EAGAIN] [EPERM] 関連項目 |
規格
mlockall() および munlockall() 関数は IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に適合していると思われます。 |
歴史
mlockall() および munlockall() 関数は FreeBSD 5.1 ではじめて登場しまし た。 FreeBSD 5.1. |
バグ
プロセス当たりのリソースの制限は、ロックされた仮想メモリの量について制限 されます。その一方、システム全体での制限はロックされた物理ページの数につ いての制限です。そのために、同一の物理ページに対する 2 つの別個のロックさ れたマッピングを持つプロセスは、プロセス当たりの制限に対しては 2 ページと してカウントし、システム制限ではただ 1 つのページとしてカウントします。 FreeBSD 10.0 June 12, 1999 FreeBSD 10.0 |