DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

mprotect(S)


mprotect -- set protection of memory mapping

Syntax

cc . . . -lc
#include <sys/types.h>
#include <sys/mman.h>

int mprotect(caddr_t addr, size_t len, int prot);

Description

The function mprotect changes the access protection on the mappings specified by the range [addr, addr + len] 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> 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

Return values

Upon successful completion, the function mprotect returns a value of 0; otherwise, it returns a value of -1 and sets errno to indicate an error.

Diagnostics

Under the following conditions, the function mprotect fails and sets errno to:

[EACCES]
if prot specifies a protection, that violates the access permission the process has to the underlying memory object.

[EAGAIN]
if prot specifies PROT_WRITE over a MAP_PRIVATE mapping and there are insufficient memory resources to reserve for locking the private page.

[EINVAL]
if addr is not a multiple of the page size as returned by sysconf.

[ENOMEM]
if 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.

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.

Files


/lib/libc.a
linking library

See also

mmap(S), sysconf(S)

Standards conformance

mprotect is conformant with:

AT&T Issue 3;
IEEE POSIX Std 1003.4 1992 System Application Program Interface (API) Realtime Extension [C Language] (ISO/IEC 9945-1).


© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003