HP-UX Reference (11i v2 07/12) - 2 System Calls (vol 5)

m
mprotect(2) mprotect(2)
NAME
mprotect() - set or check 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(), to be that
specified by prot. Legitimate values for prot are the same as those permitted for
mmap() and are defined
in
<sys/mman.h> :
PROT_READ Page can be read.
PROT_WRITE Page can be written.
PROT_EXEC Page can be executed.
PROT_NONE Page cannot be accessed.
PROT_CHECK Check page effective permissions
If PROT_CHECK flag is specified, mprotect() checks the access protections on the mappings specified
with the rest of prot value to see if the requested permissions are set.
If the address range does not correspond to one created by a successful call to mmap(),
mprotect()
returns an error.
If the address range being modified corresponds to a mapped le that was mapped with
MAP_SHARED ,
mprotect() grants write access permission only if the file descriptor used to map the file was opened for
writing. If the address range corresponds to a mapped file that was mapped with the
MAP_PRIVATE or
the
MAP_ANONYMOUS flag, mprotect()
grants all requested access permissions.
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.
For example, if an error occurs on some page at an addr2, then
mprotect() may have modified the pro-
tections of all whole pages in the range [addr,addr2].
RETURN VALUE
Upon successful completion,
mprotect() returns 0. Otherwise, it returns -1 and sets errno to indi-
cate the error.
ERRORS
The
mprotect() function will fail if:
[EACCES] The prot argument specifies a protection that violates, or is different than (in the case
where flag PROT_CHECK is present), the access permission the process has to the
underlying memory object.
[EINVAL] prot is invalid, or addr is not a multiple of the page size as returned by
sysconf(_SC_PAGE_SIZE).
[EFAULT] The range specified by [addr, addr+len] (from, and including, addr to, but not includ-
ing, addr+len) is invalid for the address space of a process, or the range specifies one
or more unmapped pages.
[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.
[EAGAIN] The prot argument specifies PROT_WRITE over a MAP_PRIVATE mapping and
there are insufficient memory resources to reserve for locking the private page.
AUTHOR
mprotect() was developed by HP, AT&T, and OSF.
HP-UX 11i Version 2: December 2007 Update 1 Hewlett-Packard Company 209