X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/9bccf70c0258c7cac2dcb80011b2a964d884c552..bb59bff194111743b33cc36712410b5656329d3c:/bsd/man/man2/mprotect.2?ds=sidebyside diff --git a/bsd/man/man2/mprotect.2 b/bsd/man/man2/mprotect.2 index 4870751bb..5c2df2a29 100644 --- a/bsd/man/man2/mprotect.2 +++ b/bsd/man/man2/mprotect.2 @@ -1,3 +1,26 @@ +.\" +.\" Copyright (c) 2008 Apple Inc. All rights reserved. +.\" +.\" @APPLE_LICENSE_HEADER_START@ +.\" +.\" This file contains Original Code and/or Modifications of Original Code +.\" as defined in and that are subject to the Apple Public Source License +.\" Version 2.0 (the 'License'). You may not use this file except in +.\" compliance with the License. Please obtain a copy of the License at +.\" http://www.opensource.apple.com/apsl/ and read it before using this +.\" file. +.\" +.\" The Original Code and all software distributed under the License are +.\" distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER +.\" EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, +.\" INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, +.\" FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. +.\" Please see the License for the specific language governing rights and +.\" limitations under the License. +.\" +.\" @APPLE_LICENSE_HEADER_END@ +.\" +.\" .\" $NetBSD: mprotect.2,v 1.6 1995/10/12 15:41:08 jtc Exp $ .\" .\" Copyright (c) 1991, 1993 @@ -32,37 +55,107 @@ .\" SUCH DAMAGE. .\" .\" @(#)mprotect.2 8.1 (Berkeley) 6/9/93 +.\" $FreeBSD: src/lib/libc/sys/mprotect.2,v 1.18 2007/01/09 00:28:15 imp Exp $ .\" -.Dd June 9, 1993 +.Dd October 16, 2008 .Dt MPROTECT 2 .Os .Sh NAME .Nm mprotect .Nd control the protection of pages .Sh SYNOPSIS -.Fd #include .Fd #include .Ft int -.Fn mprotect "caddr_t addr" "size_t len" "int prot" +.Fo mprotect +.Fa "void *addr" +.Fa "size_t len" +.Fa "int prot" +.Fc .Sh DESCRIPTION The .Fn mprotect system call changes the specified pages to have protection .Fa prot . -Not all implementations will guarantee protection on a page basis; -the granularity of protection changes may be as large as an entire region. +Not all implementations will guarantee protection on a page basis but Mac OS X's +current implementation does. +.Pp +When a program violates the protections of a page, it gets a SIGBUS or SIGSEGV signal. +.Pp +Currently +.Fa prot +can be one or more of the following: +.Pp +.Bl -tag -width ".Dv PROT_WRITE" -compact +.It Dv PROT_NONE +No permissions at all. +.It Dv PROT_READ +The pages can be read. +.It Dv PROT_WRITE +The pages can be written. +.It Dv PROT_EXEC +The pages can be executed. +.El .Sh RETURN VALUES Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and .Va errno is set to indicate the error. +.Sh ERRORS +.Fn mprotect +will fail if: +.Bl -tag -width Er +.\" =========== +.It Bq Er EACCES +The requested protection conflicts with +the access permissions of the process +on the specified address range. +.\" =========== +.\" .It Bq Er EAGAIN +.\" Insufficient memory resources exist to allow locking a private page +.\" under PROT_WRITE. +.\" =========== +.It Bq Er EINVAL +.Fa addr +is not a multiple of the page size (i.e. +.Fa addr +is not page-aligned). +.\" =========== +.\" .It Bq Er ENOMEM +.\" The specified address range is outside of the address range +.\" of the process or includes an unmapped page. +.\" =========== +.It Bq Er ENOTSUP +The combination of accesses requested in +.Fa prot +is not supported. +.El +.Sh LEGACY SYNOPSIS +.Fd #include +.Fd #include +.Pp +The include file +.In sys/types.h +is necessary. +.Pp +.Ft int +.br +.Fo mprotect +.Fa "caddr_t addr" +.Fa "size_t len" +.Fa "int prot" +.Fc ; +.Pp +The type of +.Fa addr +has changed. .Sh SEE ALSO .Xr madvise 2 , .Xr mincore 2 , .Xr msync 2 , -.Xr munmap 2 +.Xr munmap 2 , +.Xr compat 5 .Sh HISTORY The .Fn mprotect