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