[OpenBSD]

Manual Page Search Parameters

MPROTECT(2) System Calls Manual MPROTECT(2)

NAME

mprotectcontrol the protection of pages

SYNOPSIS

#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.
The protections (region accessibility) are specified in the prot argument. It should either be PROT_NONE (no permissions) or the bitwise OR of one or more of the following values:
PROT_EXEC
Pages may be executed.
PROT_READ
Pages may be read.
PROT_WRITE
Pages may be written.
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. However, if PROT_WRITE was not specified then the page will not be writable.

RETURN VALUES

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

ERRORS

mprotect() will fail if:
 
 
[EACCES]
The process does not have sufficient access to the underlying memory object to provide the requested protection.
 
 
[ENOMEM]
The process has locked future pages with mlockall(MCL_FUTURE), a page being protected is not currently accessible, and making it accessible and locked would exceed process or system limits.
 
 
[ENOTSUP]
The accesses requested in the prot argument are not allowed. In particular, PROT_WRITE | PROT_EXEC mappings are not permitted in most binaries (see kern.wxabort in sysctl(3) for more information).
 
 
[EINVAL]
The prot argument is invalid or the specified address range would wrap around.

SEE ALSO

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

STANDARDS

The mprotect() function conforms to IEEE Std 1003.1-2008 (“POSIX.1”).

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.
March 11, 2017 OpenBSD-current