Manual Page Result
0
Command: mprotect | Section: 2 | Source: OpenBSD | File: mprotect.2
MPROTECT(2) FreeBSD System Calls Manual MPROTECT(2)
NAME
mprotect - control 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(2) for more information).
[EINVAL] The prot argument is invalid or the specified address
range would wrap around.
[EPERM] The addr and len parameters specify a region which
contains at least one page marked immutable.
SEE ALSO
madvise(2), mimmutable(2), msync(2), munmap(2)
STANDARDS
The mprotect() function conforms to IEEE Std 1003.1-2008 ("POSIX.1").
HISTORY
The mprotect() function has been available since 4.3BSD-Net/2.
CAVEATS
The OpenBSD implementation of mprotect() does not require addr to be
page-aligned, although other implementations may.
FreeBSD 14.1-RELEASE-p8 January 21, 2024 FreeBSD 14.1-RELEASE-p8