MPROTECT(2)

名称
mprotect - ページの保護属性を制御する

ライブラリ
libc

書式
<sys/mman.h> int mprotect(const void *addr, size_t len, int prot)

解説
mprotect() システムコールは指定のページが保護属性 prot を持つように変更します。 すべての場合においてページ単位での保護属性を保証するわけではありません。 保護属性変更の細かさはリージョン全体と同じ大きさかもしれません。 リージョンは struct vm_map_entry の start (開始) と end (終了) のアドレスで定義される仮想アドレス空間です。

現在、以下の OR をとって組み合わせることが可能な保護ビットが知られています。

PROT_NONE
    全く保護しません。
PROT_READ
    ページは読取り可能です。
PROT_WRITE
    ページは書込み可能です。
PROT_EXEC
    ページは実行可能です。

戻り値

エラー
mprotect() システムコールは次の場合に処理を失敗します:

[EINVAL]
    addr 引数と len 引数で指定している仮想アドレス範囲は有効ではありません。

[EACCES]
    呼び出しプロセスは prot 引数によって指定される値に保護属性を変更することを許可されていません。

関連項目
madvise(2), mincore(2), msync(2), munmap(2)

歴史
mprotect() システムコールは 4.4BSD ではじめて登場しました。