スポンサーリンク

VSLOCK(9) FreeBSD カーネル開発者マニュアル 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]
指定されたアドレス範囲の大きさがロックされたメモリのシ ステム制限を超過しています。

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

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

FreeBSD 10.0 August 10, 2004 FreeBSD 10.0

スポンサーリンク