MPROTECT(2)

NAME
mprotect - control the protection of pages

SYNOPSIS
#include <sys/types.h>
#include <sys/mman.h>
int
mprotect(void *addr, size_t len, int prot);

DESCRIPTION
The mprotect() system call sets the access protections for the pages that contain the address range addr through addr + len - 1 (inclusive). If len is 0, no action is taken on the page that contains addr.

Not all implementations will guarantee protection on a page basis; the granularity of protection changes may be as large as an entire region. Nor will all implementations guarantee to give exactly the requested permissions; more permissions may be granted than requested by prot.

The protections (region accessibility) are specified in the prot argument by OR'ing the following values:

PROT_EXEC
    Pages may be executed.
PROT_READ
    Pages may be read.
PROT_WRITE
    Pages may be written.
PROT_NONE
    No permissions.

RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

SEE ALSO
madvise(2), mincore(2), msync(2), munmap(2)

HISTORY
The mprotect() function first appeared in 4.4BSD.

CAVEATS
The OpenBSD implementation of mprotect() does not require addr to be page-aligned, although other implementations may.