unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 mprotect(2)							 mprotect(2)




 NAME
      mprotect - set or check protection of memory mapping

 SYNOPSIS
      #include <&lt&lt&lt;sys/mman.h>&gt&gt&gt;

      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(), to be that
      specified by prot.  Legitimate values for prot are the same as those
      permitted for mmap() and are defined in <&lt&lt&lt;sys/mman.h>&gt&gt&gt;:

	   PROT_READ	  Page can be read.

	   PROT_WRITE	  Page can be written.

	   PROT_EXEC	  Page can be executed.

	   PROT_NONE	  Page cannot be accessed.

	   PROT_CHECK	  Check page effective permissions

      If PROT_CHECK flag is specified, mprotect() checks the access
      protections on the mappings specified with the rest of prot value to
      see if the requested permissions are set.

      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() 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, or is different than (in the case where
			  flag PROT_CHECK is present), the access permission
			  the process has to the underlying memory object.

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



 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000






 mprotect(2)							 mprotect(2)




      The mprotect() function may fail if:

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

 SEE ALSO
      mmap(2), sysconf(2), <sys/mman.h>.

 CHANGE HISTORY
      First released in Issue 4, Version 2.










































				    - 2 -	  Formatted:  August 2, 2006






 mprotect(2)							 mprotect(2)




				 HP-UX EXTENSIONS



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

 DESCRIPTION
      If the address range does not correspond to one created by a
      successful call to mmap(), mprotect() returns an error.  prot
      determines whether read, write, execute, or some combination of
      accesses are permitted to the data being mapped.

      If the address range being modified corresponds to a mapped file that
      was mapped with MAP_SHARED, mprotect() grants write access permission
      only if the file descriptor used to map the file was opened for
      writing.	If the address range corresponds to a mapped file that was
      mapped with the MAP_PRIVATE or the MAP_ANONYMOUS flag, mprotect()
      grants all requested access permissions.

      For example, suppose an error occurs on some page at an addr2;
      mprotect() may have modified the protections of all whole pages in the
      range [addr,addr2].

 ERRORS
	   [EINVAL]	  prot is invalid, or addr is not a multiple of the
			  page size as returned by sysconf(_SC_PAGE_SIZE).

	   [EFAULT]	  The range specified by [addr, addr+len] (from, and
			  including, addr to, but not including, addr+len)
			  is invalid for a process' address space, or the
			  range specifies one or more unmapped pages.

 AUTHOR
      mprotect() was developed by HP, AT&T, and OSF.

 SEE ALSO
      mmap(2), sysconf(2).

 STANDARDS CONFORMANCE
      mprotect(): AES, SVID3










 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000