Amiga Unix — 68040 · 68060

Manual pages › System calls (2)

mprotect(2)

set protection of memory mapping

From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.

NAME

mprotect - set protection of memory mapping

SYNOPSIS

#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 protections 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 VALUE

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.

ERRORS

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  map-
       ping  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.

EINVAL The argument len has a value less than or equal to 0.

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.  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.

SEE ALSO

memcntl(2), mmap(2), plock(2), mlock(3C), mlockall(3C),
sysconf(3C).