FreeBSD Manual Pages
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 argu- ment. 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 per- missions; more permissions may be granted than requested by prot. How- ever, 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 un- derlying memory object to provide the requested pro- tection. [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 map- pings 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. SEE ALSO madvise(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 13.0 December 21, 2019 FreeBSD 13.0
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY | CAVEATS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mprotect&sektion=2&manpath=OpenBSD+6.9>