mprotect(3p) - phpMan

MPROTECT(3P)               POSIX Programmer's Manual              MPROTECT(3P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the  corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.
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 shall change the access protections to be  that
       specified  by  prot  for  those  whole pages containing any part of the
       address space of the process starting at address  addr  and  continuing
       for  len bytes. The parameter prot determines whether read, write, exe-
       cute, or some combination of accesses are permitted to the  data  being
       mapped.  The  prot  argument should be either PROT_NONE or the bitwise-
       inclusive OR of one or more of PROT_READ, PROT_WRITE, and PROT_EXEC.
       If an implementation cannot support the  combination  of  access  types
       specified by prot, the call to mprotect() shall fail.
       An  implementation  may  permit  accesses other than those specified by
       prot; however, no implementation shall permit a write to succeed  where
       PROT_WRITE  has not been set or shall permit any access where PROT_NONE
       alone has been set. Implementations shall support at least the  follow-
       ing  values of prot: PROT_NONE, PROT_READ, PROT_WRITE, and the bitwise-
       inclusive OR of PROT_READ and PROT_WRITE. If PROT_WRITE  is  specified,
       the  application  shall ensure that it has opened the mapped objects in
       the specified address range with write permission,  unless  MAP_PRIVATE
       was  specified  in the original mapping, regardless of whether the file
       descriptors used to map the objects have since been closed.
       The implementation shall require that addr be a multiple  of  the  page
       size as returned by sysconf().
       The  behavior  of  this  function is unspecified if the mapping was not
       established by a call to mmap().
       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.
RETURN VALUE
       Upon successful completion, mprotect() shall return  0;  otherwise,  it
       shall return -1 and set errno to indicate the error.
ERRORS
       The mprotect() function shall fail if:
       EACCES The  prot  argument  specifies  a  protection  that violates the
              access permission the  process  has  to  the  underlying  memory
              object.
       EAGAIN The  prot  argument specifies PROT_WRITE over a MAP_PRIVATE map-
              ping and there are insufficient memory resources to reserve  for
              locking the private page.
       EINVAL The addr argument is not a multiple of the page size as returned
              by sysconf().
       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.
       ENOMEM The prot argument specifies PROT_WRITE on a MAP_PRIVATE mapping,
              and  it would require more space than the system is able to sup-
              ply for locking the private pages, if required.
       ENOTSUP
              The implementation does not support the combination of  accesses
              requested in the prot argument.

       The following sections are informative.
EXAMPLES
       None.
APPLICATION USAGE
       The  [EINVAL]  error  above  is  marked  EX because it is defined as an
       optional error in the POSIX Realtime Extension.
RATIONALE
       None.
FUTURE DIRECTIONS
       None.
SEE ALSO
       mmap(), sysconf(), the Base Definitions volume of IEEE Std 1003.1-2001,
       <sys/mman.h>
COPYRIGHT
       Portions  of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating  System  Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003  by  the  Institute  of
       Electrical  and  Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained  online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group                  2003                         MPROTECT(3P)