KERNACC(9)

名称
kernacc, useracc - メモリ領域がアクセス可能か否かの調査

書式
<sys/param.h> <sys/proc.h> <vm/vm.h> <vm/vm_extern.h> int kernacc(void *addr, int len, int rw) int useracc(void *addr, int len, int rw)

解説
kernacc() および useracc() 関数は、 addr および len によって与えられる仮想アドレス範囲で、 rw で指定された操作のタイプが許可されるかどうかを調査します。 rw の指定可能な値は、 VM_PROT_READ, VM_PROT_WRITE および VM_PROT_EXECUTE の論理合成値です。 kernacc() はカーネルアドレス空間の中のアドレスを調べ、一方 useracc() は addr をユーザ空間のアドレス表現とみなします。 この操作に使用されるプロセスコンテキストは大域変数 curproc から得られます。

戻り値
どちらの関数も、 rw によって指定されるタイプのアクセスが許可されている場合には、 ブール値 true を返します。 そうでない場合には、ブール値 false が返されます。

バグ
useracc() への引数として、プロセスへのポインタが渡されるべきです。