mprotect関数は,マップされたファイルまたは共用メモリ・リージョンのアクセス保護を変更します。
addr および len 引数は,変更しようとしているリージョンのアドレスとバイト長を指定します。 len 引数は,
sysconf(_SC_PAGE_SIZE)から返されるページ・サイズの倍数でなくてはなりません。
len が
sysconf(_SC_PAGE_SIZE)から返されるページ・サイズの倍数でなかった場合,リージョンの長さは,ページ・サイズの次の倍数に切り上げられます。
prot 引数は,マップされたリージョンのアクセス許可を指定します。以下のいずれかを指定します。
| PROT_NONE
|
アクセスなし
|
| PROT_READ
|
読み込み専用
|
| PROT_WRITE
|
読み書きアクセス
|
mprotect関数は,指定されたリージョンの外に位置するリージョンのアクセス許可を変更しません。ただし,リージョンの終端と,リージョンの終端を含んでいるページの終端の間のアドレスに対する効果は定められていません。
mprotect関数が, EINVAL で指定される条件以外の条件で実行に失敗した場合,範囲 [addr, addr + len] にある一部のページのアクセス保護は変更される可能性があります。たとえば,addr2 にある何らかのページでエラーが起こった場合,
mprotectは範囲 [addr, addr2] にあるすべてのページの保護を変更する可能性があります。
sysconfも参照してください。