mprotect(2)
NAME
mprotect - set protection of memory mapping
SYNOPSIS
#include <sys/mman.h>
int mprotect(void *addr, size_t len, int prot);
DESCRIPTION
The mprotect() function changes the access protections on
the mappings specified by the range [addr, addr + len),
rounding len up to the next multiple of the page size as
returned by sysconf(3C), to be that specified by prot. Legi-
timate values for prot are the same as those permitted for
mmap(2) and are defined in <sys/mman.h> as:
PROT_READ
/* page can be read */
PROT_WRITE
/* page can be written */
PROT_EXEC
/* page can be executed */
PROT_NONE
/* page can not be accessed */
When mprotect() fails for reasons other than EINVAL, the
protections on some of the pages in the range [addr, addr +
len) may have been changed. If the error occurs on some page
at addr2, then the protections of all whole pages in the
range [addr, addr2] will have been modified.
RETURN VALUES
Upon successful completion, mprotect() returns 0. Otherwise,
it returns -1 and sets errno to indicate the error.
ERRORS
The mprotect() function will fail if:
EACCES
The prot argument specifies a protection that violates
the access permission the process has to the underly-
ing memory object.
EINVAL
The len argument has a value equal to 0, or addr is
not a multiple of the page size as returned by
sysconf(3C).
ENOMEM
Addresses in the range [addr, addr + len) are invalid
for the address space of a process, or specify one or
more pages which are not mapped.
The mprotect() function may fail if:
EAGAIN
The address range [addr, addr + len) includes one or
more pages that have been locked in memory and that
were mapped MAP_PRIVATE; prot includes PROT_WRITE; and
the system has insufficient resources to reserve
memory for the private pages that may be created.
These private pages may be created by store operations
in the now-writable address range.
SEE ALSO
mmap(2), plock(3C), mlock(3C), mlockall(3C), sysconf(3C)
Man(1) output converted with
man2html