manpages.info - online man pages   

SunOS man pages : mprotect (2)

System Calls                                          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 SunOS 5.8 Last change: 12 Jan 1998 1 System Calls mprotect(2) 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) SunOS 5.8 Last change: 12 Jan 1998 2