1 .\" Hey Emacs! This file is -*- nroff -*- source.
3 .\" Copyright (C) 1996 Andries Brouwer <aeb@cwi.nl>
4 .\" and Copyright (C) 2006 Michael Kerrisk <mtk-manpages@gmx.net>
6 .\" Permission is granted to make and distribute verbatim copies of this
7 .\" manual provided the copyright notice and this permission notice are
8 .\" preserved on all copies.
10 .\" Permission is granted to copy and distribute modified versions of this
11 .\" manual under the conditions for verbatim copying, provided that the
12 .\" entire resulting derived work is distributed under the terms of a
13 .\" permission notice identical to this one.
15 .\" Since the Linux kernel and libraries are constantly changing, this
16 .\" manual page may be incorrect or out-of-date. The author(s) assume no
17 .\" responsibility for errors or omissions, or for damages resulting from
18 .\" the use of the information contained herein. The author(s) may not
19 .\" have taken the same level of care in the production of this manual,
20 .\" which is licensed free of charge, as they might when working
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
26 .\" Modified 1997-01-31 by Eric S. Raymond <esr@thyrsus.com>
27 .\" Modified 2000-03-25 by Jim Van Zandt <jrv@vanzandt.mv.com>
28 .\" Modified 2001-10-04 by John Levon <moz@compsoc.man.ac.uk>
29 .\" Modified 2003-02-02 by Andi Kleen <ak@muc.de>
30 .\" Modified 2003-05-21 by Michael Kerrisk <mtk-manpages@gmx.net>
31 .\" MAP_LOCKED works from 2.5.37
32 .\" Modified 2004-06-17 by Michael Kerrisk <mtk-manpages@gmx.net>
33 .\" Modified 2004-09-11 by aeb
34 .\" Modified 2004-12-08, from Eric Estievenart <eric.estievenart@free.fr>
35 .\" Modified 2004-12-08, mtk, formatting tidy-ups
36 .\" Modified 2006-12-04, mtk, various parts rewritten
38 .TH MMAP 2 2006-12-04 "Linux" "Linux Programmer's Manual"
40 mmap, munmap \- map or unmap files or devices into memory
43 .B #include <sys/mman.h>
45 .BI "void *mmap(void *" start ", size_t " length \
46 ", int " prot ", int " flags ,
47 .BI " int " fd ", off_t " offset );
49 .BI "int munmap(void *" start ", size_t " length );
53 creates a new mapping in the virtual address space of
55 The starting address for the new mapping is specified in
59 argument specifies the length of the mapping.
64 then the kernel chooses the address at which to create the mapping;
65 this is the most portable method of creating a new mapping.
69 then the kernel takes it as a hint about where to place the mapping;
70 on Linux, the mapping will be created at the next higher page boundary.
71 The address of the new mapping is returned as the result of the call.
73 The contents of a file mapping (as opposed to an anonymous mapping; see
75 below), are initialized using
77 bytes starting at offset
79 in the file (or other object) referred to by the file descriptor
82 must be a multiple of the page size as returned by
83 .IR sysconf(_SC_PAGE_SIZE) .
87 argument describes the desired memory protection of the mapping
88 (and must not conflict with the open mode of the file).
91 or the bitwise OR of one or more of the following flags:
94 Pages may be executed.
100 Pages may be written.
103 Pages may not be accessed.
107 argument determines whether updates to the mapping
108 are visible to other processes mapping the same region,
109 and whether updates are caried through to the underlying file.
110 This behavior is determined by including exactly one
111 of the following values in
116 Updates to the mapping are visible to other processes that map this file,
117 and are carried through to the underlying file.
118 The file may not actually be updated until
125 Create a private copy-on-write mapping.
126 Updates to the mapping are not visible to other processes
127 mapping the same file, and are not carried through to
129 It is unspecified whether changes made to the file after the
131 call are visible in the mapped region.
133 Both of these flags are described in POSIX.1-2001.
135 In addition, zero or more of the following values can be ORed in
139 Put the mapping into the first 2GB of the process address space.
143 This flag is currently only supported on x86-64 for 64bit programs.
151 The mapping is not backed by any file;
152 its contents are initialized to zero.
157 arguments are ignored;
158 however, some implementations require
165 and portable applications should ensure this.
170 is only supported on Linux since kernel 2.4.
173 This flag is ignored.
174 .\" Introduced in 1.1.36, removed in 1.3.24.
175 (Long ago, it signaled that attempts to write to the underlying file
178 But this was a source of denial-of-service attacks.)
181 This flag is ignored.
182 .\" Introduced in 1.1.38, removed in 1.3.24. Flag tested in proc_follow_link.
183 .\" (Long ago, it signaled that the underlying file is an executable.
184 .\" However, that information was not really used anywhere.)
185 .\" Linus talked about DOS related to MAP_EXECUTABLE, but he was thinking of
191 .\" On some systems, this was required as the opposite of
192 .\" MAP_ANONYMOUS -- mtk, 1 May 2007
197 as a hint: place the mapping at exactly that address.
199 must be a multiple of the page size.
200 If the memory region specified by
204 overlaps pages of any existing mapping(s), then the overlapped
205 part of the existing mapping(s) will be discarded.
206 If the specified address cannot be used,
209 Because requiring a fixed address for a mapping is less portable,
210 the use of this option is discouraged.
214 Indicates to the kernel virtual memory system that the mapping
215 should extend downwards in memory.
217 .BR MAP_LOCKED " (since Linux 2.5.37)"
218 Lock the pages of the mapped region into memory in the manner of
220 This flag is ignored in older kernels.
221 .\" If set, the mapped pages will not be swapped out.
223 .BR MAP_NONBLOCK " (since Linux 2.5.46)"
224 Only meaningful in conjunction with
226 Don't perform read-ahead:
227 only create page tables entries for pages
228 that are already present in RAM.
231 Do not reserve swap space for this mapping.
232 When swap space is reserved, one has the guarantee
233 that it is possible to modify the mapping.
234 When swap space is not reserved one might get
237 if no physical memory is available.
238 See also the discussion of the file
239 .I /proc/sys/vm/overcommit_memory
242 In kernels before 2.6, this flag only had effect for
243 private writable mappings.
245 .BR MAP_POPULATE " (since Linux 2.5.46)"
246 Populate (prefault) page tables for a file mapping,
247 by performing read-ahead on the file.
248 Later accesses to the mapping will not be blocked by page faults.
250 Of the above flags, only
252 is specified in POSIX.1-2001.
253 However, most systems also support
258 Some systems document the additional flags MAP_AUTOGROW, MAP_AUTORESRV,
259 MAP_COPY, and MAP_LOCAL.
265 with the same attributes.
267 A file is mapped in multiples of the page size.
268 For a file that is not
269 a multiple of the page size, the remaining memory is zeroed when mapped,
270 and writes to that region are not written out to the file.
272 changing the size of the underlying file of a mapping on the pages that
273 correspond to added or removed regions of the file is unspecified.
277 system call deletes the mappings for the specified address range, and
278 causes further references to addresses within the range to generate
279 invalid memory references.
280 The region is also automatically unmapped
281 when the process is terminated.
282 On the other hand, closing the file
283 descriptor does not unmap the region.
287 must be a multiple of the page size.
288 All pages containing a part
289 of the indicated range are unmapped, and subsequent references
290 to these pages will generate
292 It is not an error if the
293 indicated range does not contain any mapped pages.
295 For file-backed mappings, the
297 field for the mapped file may be updated at any time between the
299 and the corresponding unmapping; the first reference to a mapped
300 page will update the field if it has not been already.
306 field for a file mapped with
310 will be updated after
311 a write to the mapped region, and before a subsequent
321 returns a pointer to the mapped area.
328 is set appropriately.
331 returns 0, on failure \-1, and
338 A file descriptor refers to a non-regular file.
343 is not open for reading.
350 is not open in read/write (O_RDWR) mode.
353 is set, but the file is append-only.
356 The file has been locked, or too much memory has been locked (see
361 is not a valid file descriptor (and
371 (e.g., they are too large, or not aligned on a page boundary).
374 (since Linux 2.6.12),
384 or contained both of these values.
387 .\" This is for shared anonymous segments
388 .\" [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
389 The system limit on the total number of open files has been reached.
392 .\" A file could not be mapped for reading.
395 The underlying filesystem of the specified file does not support
399 No memory is available, or the process's maximum number of mappings would
407 but the mapped area belongs to a file on a filesystem that
409 .\" (Since 2.4.25 / 2.6.0.)
413 was set but the object specified by
417 Use of a mapped region can result in these signals:
420 Attempted write into a region mapped as read-only.
423 Attempted access to a portion of the buffer that does not correspond
424 to the file (for example, beyond the end of the file, including the
425 case where another process has truncated the file).
427 SVr4, 4.4BSD, POSIX.1-2001.
428 .\" SVr4 documents additional error codes ENXIO and ENODEV.
429 .\" SUSv2 documents additional error codes EMFILE and EOVERFLOW.
431 On POSIX systems on which
437 .B _POSIX_MAPPED_FILES
438 is defined in \fI<unistd.h>\fP to a value greater than 0. (See also
440 .\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
441 .\" -1: unavailable, 0: ask using sysconf().
442 .\" glibc defines it to 1.
444 It is architecture dependent whether
449 Portable programs should always set
451 if they intend to execute code in the new mapping.
453 On Linux there are no guarantees like those suggested above under
455 By default, any process can be killed
456 at any moment when the system runs out of memory.
458 In kernels before 2.6.7, the
460 flag only has effect if
470 However, in kernels before 2.6.12,
472 succeeded in this case: no mapping was created and the call returned
486 .BR remap_file_pages (2),
490 B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
492 .\" Repeat after me: private read-only mappings are 100% equivalent to
493 .\" shared read-only mappings. No ifs, buts, or maybes. -- Linus