VSLOCK(9) | FreeBSD Kernel Developer's Manual | VSLOCK(9) |
名称
vslock, vsunlock — メモリ中のユーザ空間のアドレスをロック/アンロックする書式
#include < sys/param.h>#include < sys/proc.h>
#include < vm/vm.h>
#include < vm/vm_extern.h>
int
vslock( void *addr, size_t len);
void
vsunlock( void *addr, size_t len);
解説
vslock() と vsunlock() 関数は、現在実行しているプロセスに属するアドレスの範囲をメモリにそれぞれロックして、アンロックします。ロックされる実際のメモリ量は、マシンのページサイズの倍数です。開始ページ番号は、最も近い前のページ境界に addr を切り詰めることによって、そして次のページ境界に addr + len を丸めることによって計算されます。この操作のために使用するプロセスのコンテキストは、グローバル変数 curproc から取られます。戻り値
vslock() 関数は、成功すれば、0 を返し、そうでなければ、以下にリストされたエラーの 1 つを返します。エラー
vslock() 関数は、次の場合に失敗します:- [ EINVAL]
- addr と len パラメータが、マシンのアドレス空間の終りを包み込むメモリ範囲を指定しています。
- [ ENOMEM]
- 指定されたアドレス範囲のサイズが、ロックされたメモリのシステム制限を越えています。
- [ EFAULT]
- 指示されたアドレス範囲のいくつかの部分が、割り付けられていません。ページの誤り/マッピングのエラーがありました。
August 29, 2012 | FreeBSD |