xref: /openbsd-src/lib/libc/sys/mprotect.2 (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1.\"	$OpenBSD: mprotect.2,v 1.15 2010/02/12 21:49:10 jmc Exp $
2.\"	$NetBSD: mprotect.2,v 1.6 1995/10/12 15:41:08 jtc Exp $
3.\"
4.\" Copyright (c) 1991, 1993
5.\"	The Regents of the University of California.  All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\" 3. Neither the name of the University nor the names of its contributors
16.\"    may be used to endorse or promote products derived from this software
17.\"    without specific prior written permission.
18.\"
19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29.\" SUCH DAMAGE.
30.\"
31.\"	@(#)mprotect.2	8.1 (Berkeley) 6/9/93
32.\"
33.Dd $Mdocdate: February 12 2010 $
34.Dt MPROTECT 2
35.Os
36.Sh NAME
37.Nm mprotect
38.Nd control the protection of pages
39.Sh SYNOPSIS
40.Fd #include <sys/types.h>
41.Fd #include <sys/mman.h>
42.Ft int
43.Fn mprotect "void *addr" "size_t len" "int prot"
44.Sh DESCRIPTION
45The
46.Fn mprotect
47system call sets the access protections for the pages that contain
48the address range
49.Fa addr
50through
51.Fa addr
52\&+
53.Fa len
54\- 1
55(inclusive).
56If
57.Fa len
58is 0, no action is taken on the page that contains
59.Fa addr .
60.Pp
61Not all implementations will guarantee protection on a page basis;
62the granularity of protection changes may be as large as an entire region.
63Nor will all implementations guarantee to give exactly the requested
64permissions; more permissions may be granted than requested by
65.Fa prot .
66.Pp
67The protections (region accessibility) are specified in the
68.Fa prot
69argument by
70.Tn OR Ns 'ing
71the following values:
72.Pp
73.Bl -tag -width "PROT_WRITEXX" -offset indent -compact
74.It Dv PROT_EXEC
75Pages may be executed.
76.It Dv PROT_READ
77Pages may be read.
78.It Dv PROT_WRITE
79Pages may be written.
80.It Dv PROT_NONE
81No permissions.
82.El
83.Sh RETURN VALUES
84Upon successful completion,
85a value of 0 is returned.
86Otherwise, a value of \-1 is returned and
87.Va errno
88is set to indicate the error.
89.Sh SEE ALSO
90.Xr madvise 2 ,
91.Xr mincore 2 ,
92.Xr msync 2 ,
93.Xr munmap 2
94.Sh HISTORY
95The
96.Fn mprotect
97function first appeared in
98.Bx 4.4 .
99.Sh CAVEATS
100The
101.Ox
102implementation of
103.Fn mprotect
104does not require
105.Fa addr
106to be page-aligned,
107although other implementations may.
108