VSLOCK(9)

名称
vslock, vsunlock - ユーザ空間のアドレスのメモリへのロックとアンロック

書式
<sys/param.h> <sys/proc.h> <vm/vm.h> <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]
    指定されたアドレス範囲の大きさがロックされたメモリのシステム制限を 超過しています。

[ENOMEM]
    要求されたアドレス範囲をロックすることが、そのプロセスのプロセス毎の ロックされたメモリの制限を超過させます。

[EFAULT]
    示されたアドレス範囲の中の幾つかの部分が割り当てられていません。 ページのマッピングにエラー/失敗があります。