tools/llvm: Do not build with symbols
[minix3.git] / lib / libc / sys / mmap.2
blob2b09be199d12af6f92ff68524b458e30108d3124
1 .\"     $NetBSD: mmap.2,v 1.47 2012/01/05 15:19:52 reinoud Exp $
2 .\"
3 .\" Copyright (c) 1991, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)mmap.2      8.4 (Berkeley) 5/11/95
31 .\"
32 .Dd December 20, 2011
33 .Dt MMAP 2
34 .Os
35 .Sh NAME
36 .Nm mmap
37 .Nd map files or devices into memory
38 .Sh LIBRARY
39 .Lb libc
40 .Sh SYNOPSIS
41 .In sys/mman.h
42 .Ft void *
43 .Fn mmap "void *addr" "size_t len" "int prot" "int flags" "int fd" "off_t offset"
44 .Sh DESCRIPTION
45 The
46 .Nm mmap
47 function causes the pages starting at
48 .Fa addr
49 and continuing for at most
50 .Fa len
51 bytes to be mapped from the object described by
52 .Fa fd ,
53 starting at byte offset
54 .Fa offset .
56 .Fa len
57 is not a multiple of the pagesize, the mapped region may extend past the
58 specified range.
59 Any such extension beyond the end of the mapped object will be zero-filled.
60 .Pp
62 .Fa addr
63 is non-zero, it is used as a hint to the system.
64 (As a convenience to the system, the actual address of the region may differ
65 from the address supplied.)
67 .Fa addr
68 is zero, an address will be selected by the system.
69 The actual starting address of the region is returned.
70 A successful
71 .Fa mmap
72 deletes any previous mapping in the allocated address range.
73 .Pp
74 The protections (region accessibility) are specified in the
75 .Fa prot
76 argument by
77 .Em OR Ns 'ing
78 the following values:
79 .Pp
80 .Bl -tag -width PROT_WRITEXX -offset indent
81 .It Dv PROT_EXEC
82 Pages may be executed.
83 .It Dv PROT_READ
84 Pages may be read.
85 .It Dv PROT_WRITE
86 Pages may be written.
87 .It Dv PROT_NONE
88 Pages may not be accessed.
89 .El
90 .Pp
91 .Bf -symbolic
92 Note that, due to hardware limitations, on some platforms
93 .Dv PROT_WRITE
94 may imply
95 .Dv PROT_READ ,
96 and
97 .Dv PROT_READ
98 may imply
99 .Dv PROT_EXEC .
100 Portable programs should not rely on these flags being separately
101 enforceable.
105 .Fa flags
106 parameter specifies the type of the mapped object, mapping options and
107 whether modifications made to the mapped copy of the page are private
108 to the process or are to be shared with other references.
109 Note that either
110 .Dv MAP_SHARED
112 .Dv MAP_PRIVATE
113 must be specified.
114 Sharing, mapping type and options are specified in the
115 .Fa flags
116 argument by
117 .Em OR Ns 'ing
118 the following values:
120 .Bl -tag -width MAP_HASSEMAPHOREXX -offset indent
121 .It Dv MAP_ALIGNED(n)
122 Request that the allocation be aligned to the given boundary.
123 The parameter
124 .Ar n
125 should be the base 2 logarithm of the desired alignment (e.g., to
126 request alignment to 16K, use 14 as the value for n).
127 The alignment must be equal to or greater than the platform's page
128 size as returned by
129 .Xr sysconf 3
130 with the
131 .Dv _SC_PAGESIZE
132 request.
133 .It Dv MAP_ANON
134 Map anonymous memory not associated with any specific file.
135 The file descriptor is not used for creating
136 .Dv MAP_ANON
137 regions, and must be specified as \-1.
138 The mapped memory will be zero filled.
139 .It Dv MAP_FILE
140 Mapped from a regular file or character-special device memory.
141 .It Dv MAP_FIXED
142 Do not permit the system to select a different address than the one
143 specified.
144 If the specified address cannot be used,
145 .Nm mmap
146 will fail.
147 If MAP_FIXED is specified,
148 .Fa addr
149 must be a multiple of the pagesize.
150 Use of this option is discouraged.
151 .It Dv MAP_HASSEMAPHORE
152 Notify the kernel that the region may contain semaphores and that special
153 handling may be necessary.
154 .It Dv MAP_INHERIT
155 Permit regions to be inherited across
156 .Xr execve 2
157 system calls.
158 .It Dv MAP_TRYFIXED
159 Attempt to use the address
160 .Fa addr
161 even if it falls within the normally protected process data or
162 text segment memory regions.
163 If the requested region of memory
164 is actually present in the memory map, a different address will
165 be selected as if
166 .Dv MAP_TRYFIXED
167 had not been specified.
169 .Fa addr
171 .Fa NULL ,
172 this flag is ignored and the system will select a mapping address.
173 .It Dv MAP_WIRED
174 Lock the mapped region into memory as with
175 .Xr mlock 2 .
176 .It Dv MAP_PRIVATE
177 Modifications made by this process are private, however modifications made by
178 other processes using
179 .Dv MAP_SHARED
180 will be seen.
181 .It Dv MAP_SHARED
182 Modifications are shared.
186 .Xr close 2
187 function does not unmap pages, see
188 .Xr munmap 2
189 for further information.
191 The current design does not allow a process to specify the location of
192 swap space.
193 In the future we may define an additional mapping type,
194 .Dv MAP_SWAP ,
195 in which
196 the file descriptor argument specifies a file or device to which swapping
197 should be done.
200 .Dv MAP_FIXED
201 is not specified, the system will attempt to place the mapping in an
202 unused portion of the address space chosen to minimize possible
203 collision between mapped regions and the heap.
204 .Sh RETURN VALUES
205 Upon successful completion,
206 .Nm mmap
207 returns a pointer to the mapped region.
208 Otherwise, a value of
209 .Dv MAP_FAILED
210 is returned and
211 .Va errno
212 is set to indicate the error.
213 The symbol
214 .Dv MAP_FAILED
215 is defined in the header
216 .Ao Pa sys/mman.h Ac .
217 No successful return from
218 .Fn mmap
219 will return the value
220 .Dv MAP_FAILED .
221 .Sh ERRORS
222 .Fn mmap
223 will fail if:
224 .Bl -tag -width Er
225 .It Bq Er EACCES
226 The flag
227 .Dv PROT_READ
228 was specified as part of the
229 .Fa prot
230 parameter and
231 .Fa fd
232 was not open for reading.
233 The flags
234 .Dv MAP_SHARED
236 .Dv PROT_WRITE
237 were specified as part of the
238 .Fa flags
240 .Fa prot
241 parameters and
242 .Fa fd
243 was not open for writing.
244 .It Bq Er EBADF
245 .Fa fd
246 is not a valid open file descriptor.
247 .It Bq Er EINVAL
248 .\"One of
249 .\".Dv MAP_ANON
250 .\"or
251 .\".Dv MAP_FILE
252 .\"was not specified as part of the
253 .\".Fa flags
254 .\"parameter.
255 .Dv MAP_FIXED
256 was specified and the
257 .Fa addr
258 parameter was not page aligned or was outside of the
259 valid address range for a process.
260 .Dv MAP_ANON was specified and
261 .Fa fd
262 was not \-1.
263 .It Bq Er ENODEV
264 .Fa fd
265 did not reference a regular or character special file.
266 .It Bq Er ENOMEM
267 .Dv MAP_FIXED
268 was specified and the
269 .Fa addr
270 parameter wasn't available.
271 .Dv MAP_ANON
272 was specified and insufficient memory was available.
273 .It Bq Er EOVERFLOW
274 .Fa fd
275 references a regular file and the value of
276 .Fa offset
277 plus
278 .Fa len
279 would exceed the offset maximum established in its open file description.
281 .Sh SEE ALSO
282 .Xr madvise 2 ,
283 .Xr mincore 2 ,
284 .Xr mlock 2 ,
285 .Xr mprotect 2 ,
286 .Xr msync 2 ,
287 .Xr munmap 2 ,
288 .Xr getpagesize 3 ,
289 .Xr sysconf 3
290 .Sh STANDARDS
292 .Fn mmap
293 function conforms to
294 .St -p1003.1b-93 .
295 .Sh HISTORY
297 .Fn mmap
298 interface was first designed in
299 .Bx 4.2 .