OSDN Git Service

(split) Import translated manuals from JM CVS Repository.
[linuxjm/LDP_man-pages.git] / release / man2 / mmap.2
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" Copyright (C) 1996 Andries Brouwer <aeb@cwi.nl>
4 .\" and Copyright (C) 2006, 2007 Michael Kerrisk <mtk.manpages@gmail.com>
5 .\"
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.
9 .\"
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.
14 .\"
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
21 .\" professionally.
22 .\"
23 .\" Formatted or processed versions of this manual, if unaccompanied by
24 .\" the source, must acknowledge the copyright and authors of this work.
25 .\"
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@gmail.com>
31 .\"     MAP_LOCKED works from 2.5.37
32 .\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
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
37 .\" 2007-07-10, mtk, Added an example program.
38 .\" 2008-11-18, mtk, document MAP_STACK
39 .\"
40 .\" Japanese Version Copyright (c) 1997-2000 SUTO, Mitsuaki and NAKANO Takeo
41 .\"         all rights reserved.
42 .\" Translated 1997-06-26, SUTO, Mitsuaki <suto@av.crl.sony.co.jp>
43 .\" Updated & Modified 1999-03-01, NAKANO Takeo <nakano@apm.seikei.ac.jp>
44 .\" Updated 2000-10-12, Nakano Takeo
45 .\" Updated 2001-08-16, Nakano Takeo
46 .\" Updated 2001-11-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
47 .\" Updated 2002-08-13, Akihiro MOTOKI
48 .\" Updated 2003-07- 2, Akihiro MOTOKI
49 .\" Updated 2003-09-14, Akihiro MOTOKI
50 .\" Updated & Modified 2004-12-28, Yuichi SATO <ysato444@yahoo.co.jp>
51 .\" Updated 2005-09-06, Akihiro MOTOKI
52 .\" Updated 2005-10-05, Akihiro MOTOKI
53 .\" Updated 2006-07-23, Akihiro MOTOKI, LDP v2.36
54 .\" Updated 2007-01-07, Akihiro MOTOKI, LDP v2.43
55 .\" Updated 2007-05-04, Akihiro MOTOKI, LDP v2.46
56 .\" Updated 2007-09-03, Akihiro MOTOKI, LDP v2.64
57 .\" Updated 2008-08-05, Akihiro MOTOKI, LDP v3.05
58 .\" Updated 2008-09-02, Akihiro MOTOKI, LDP v3.08
59 .\" Updated 2008-12-24, Akihiro MOTOKI, LDP v3.15
60 .\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24
61 .\"
62 .\"WORD         file descriptor         ¥Õ¥¡¥¤¥ëµ­½Ò»Ò
63 .\"
64 .TH MMAP 2 2009-09-26 "Linux" "Linux Programmer's Manual"
65 .SH Ì¾Á°
66 mmap, munmap \- ¥Õ¥¡¥¤¥ë¤ä¥Ç¥Ð¥¤¥¹¤ò¥á¥â¥ê¤Ë¥Þ¥Ã¥×/¥¢¥ó¥Þ¥Ã¥×¤¹¤ë
67 .SH ½ñ¼°
68 .nf
69 .B #include <sys/mman.h>
70 .sp
71 .BI "void *mmap(void *" addr ", size_t " length \
72 ", int " prot ", int " flags ,
73 .BI "           int " fd ", off_t " offset );
74 .BI "int munmap(void *" addr ", size_t " length );
75 .fi
76 .SH ÀâÌÀ
77 .BR mmap ()
78 ¤Ï¡¢¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¤ò¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î²¾ÁÛ¥¢¥É¥ì¥¹¶õ´Ö¤ËºîÀ®¤¹¤ë¡£
79 ¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¤Î³«»Ï¥¢¥É¥ì¥¹¤Ï
80 .I addr
81 ¤Ç»ØÄꤵ¤ì¤ë¡£¥Þ¥Ã¥Ô¥ó¥°¤ÎŤµ¤Ï
82 .I length
83 °ú¤­¿ô¤Ç»ØÄꤵ¤ì¤ë¡£
84
85 .I addr
86 ¤¬ NULL ¤Î¾ì¹ç¡¢¥«¡¼¥Í¥ë¤¬¥Þ¥Ã¥Ô¥ó¥°¤òºîÀ®¤¹¤ë¥¢¥É¥ì¥¹¤òÁªÂò¤¹¤ë¡£
87 ¤³¤ÎÊýË¡¤ÏºÇ¤â°Ü¿¢À­¤Î¤¢¤ë¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¤ÎºîÀ®ÊýË¡¤Ç¤¢¤ë¡£
88 .I addr
89 ¤¬ NULL ¤Ç¤Ê¤¤¾ì¹ç¡¢¥«¡¼¥Í¥ë¤Ï¥Þ¥Ã¥Ô¥ó¥°¤ò¤É¤³¤ËÇÛÃÖ¤¹¤ë¤«¤Î¥Ò¥ó¥È¤È¤·¤Æ
90 .I addr
91 ¤ò»ÈÍѤ¹¤ë¡£Linux ¤Ç¤Ï¡¢¥Þ¥Ã¥Ô¥ó¥°¤Ï¤¹¤°¶á¤¯¤Î¥Ú¡¼¥¸¶­³¦¤ËºîÀ®¤µ¤ì¤ë¡£
92 .\" Linux 2.6.24 ¤è¤êÁ°¤Ç¤Ï¡¢¥¢¥É¥ì¥¹¤Ï (¥¢¥É¥ì¥¹¤¬Â礭¤¯¤Ê¤ëÊý¸þ¤Ç)
93 .\" ¤¹¤°¼¡¤Î¥Ú¡¼¥¸¶­³¦¤ËÀÚ¤ê¾å¤²¤é¤ì¤Æ¤¤¤¿¡£
94 .\" Linux 2.6.24 °Ê¹ß¤Ç¤Ï¡¢Àڤ겼¤²¤é¤ì¤ë!
95 ¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¤Î¥¢¥É¥ì¥¹¤Ï¡¢¸Æ¤Ó½Ð¤·¤ÎÊÖ¤êÃͤȤ·¤ÆÊÖ¤µ¤ì¤ë¡£
96
97 ¥Õ¥¡¥¤¥ë¥Þ¥Ã¥Ô¥ó¥°¤ÎÆâÍƤϡ¢
98 ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿
99 .I fd
100 ¤Ç»²¾È¤µ¤ì¤ë¥Õ¥¡¥¤¥ë (¤â¤·¤¯¤Ï¾¤Î¥ª¥Ö¥¸¥§¥¯¥È) ¤Î¥ª¥Õ¥»¥Ã¥È
101 .I offset
102 ¤«¤é³«»Ï¤µ¤ì¤ë
103 .I length
104 ¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¤Ç½é´ü²½¤µ¤ì¤ë
105 (¥Õ¥¡¥¤¥ë¥Þ¥Ã¥Ô¥ó¥°¤Ï̵̾¥Þ¥Ã¥Ô¥ó¥°¤ÎÈ¿Âиì¤Ç¤¢¤ë¡£
106 .B MAP_ANONYMOUS
107 ¤ò»²¾È)¡£
108 .I offset
109 ¤Ï
110 .I sysconf(_SC_PAGE_SIZE)
111 ¤¬ÊÖ¤¹¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
112 .LP
113 °ú¤­¿ô
114 .I prot
115 ¤Ë¤Ï¡¢¥Þ¥Ã¥Ô¥ó¥°¤Î¥á¥â¥êÊݸî¤ò¤É¤Î¤è¤¦¤Ë¹Ô¤Ê¤¦¤«¤ò»ØÄꤹ¤ë
116 (¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥×¥ó¥â¡¼¥É¤ÈÌ·½â¤·¤Æ¤Ï¤¤¤±¤Ê¤¤)¡£
117 .I prot
118 ¤Ë¤Ï¡¢
119 .B PROT_NONE
120 ¤«¡¢°Ê²¼¤Î¥Õ¥é¥°¤ò¤Ò¤È¤Ä°Ê¾å¥Ó¥Ã¥ÈËè¤ÎÏÀÍýÏ (OR) ¤ò¤È¤Ã¤¿¤â¤Î¤ò
121 »ØÄê¤Ç¤­¤ë¡£
122 .TP 1.1i
123 .B PROT_EXEC
124 ¥Ú¡¼¥¸¤Ï¼Â¹Ô²Äǽ¤Ç¤¢¤ë¡£
125 .TP
126 .B PROT_READ
127 ¥Ú¡¼¥¸¤ÏÆɤ߹þ¤ß²Äǽ¤Ç¤¢¤ë¡£
128 .TP
129 .B PROT_WRITE
130 ¥Ú¡¼¥¸¤Ë½ñ¤­¹þ¤ß²Äǽ¤Ç¤¢¤ë¡£
131 .TP
132 .B PROT_NONE
133 ¥Ú¡¼¥¸¤Ë¤Ï¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
134 .LP
135 .I flags
136 °ú¤­¿ô¤Ë¤è¤ê¡¢¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¹¹¿·¤¬Æ±¤¸Îΰè¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤Æ¤¤¤ë
137 ¾¤Î¥×¥í¥»¥¹¤Ë¸«¤¨¤ë¤«¡¢¹¹¿·¤¬¥Þ¥Ã¥Ô¥ó¥°¸µ¤Î¥Õ¥¡¥¤¥ë¤òÄ̤¸¤Æ
138 ÅÁ¤¨¤é¤ì¤ë¤«¡¢¤¬·èÄꤵ¤ì¤ë¡£¤³¤ÎÆ°ºî¤Ï¡¢°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«°ì¤Ä¤À¤±
139 (Ê£¿ô¤Ï»ØÄê¤Ç¤­¤Ê¤¤) ¤ò
140 .I flags
141 ¤Ë´Þ¤á¤ë¤³¤È¤Ç»ØÄꤹ¤ë¡£
142 .TP 1.1i
143 .B MAP_SHARED
144 ¤³¤Î¥Þ¥Ã¥Ô¥ó¥°¤ò¶¦Í­¤¹¤ë¡£
145 ¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¹¹¿·¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤Æ¤¤¤ë¾¤Î¥×¥í¥»¥¹
146 ¤«¤é¸«¤¨¤ë¡£¹¹¿·¤Ï¥Þ¥Ã¥Ô¥ó¥°¸µ¤Î¥Õ¥¡¥¤¥ë¤òÄ̤¸¤ÆÅÁ¤¨¤é¤ì¤ë¡£
147 ¤¿¤À¤·¡¢¥Õ¥¡¥¤¥ë¤Î¼ÂºÝ¤Î¹¹¿·¤Ï
148 .BR msync (2)
149 ¤Þ¤¿¤Ï
150 .BR munmap ()
151 ¤¬¸Æ¤Ð¤ì¤ë¤Þ¤Ç¹Ô¤ï¤ì¤Ê¤¤¤³¤È¤â¤¢¤ë¡£
152 .TP
153 .B MAP_PRIVATE
154 ¥×¥é¥¤¥Ù¡¼¥È¤Ê copy-on-write (½ñ¤­¹þ¤ß»þ¥³¥Ô¡¼) ¥Þ¥Ã¥×¤òÀ¸À®¤¹¤ë¡£
155 ¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¹¹¿·¤ÏƱ¤¸¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤Æ¤¤¤ë¾¤Î¥×¥í¥»¥¹
156 ¤Ë¤Ï¸«¤¨¤º¡¢¹¹¿·¤¬¥Þ¥Ã¥Ô¥ó¥°¸µ¤Î¥Õ¥¡¥¤¥ë¤òÄ̤¸¤ÆÅÁ¤¨¤é¤ì¤ë¤³¤È¤â¤Ê¤¤¡£
157 .BR mmap ()
158 ¤Î¸Æ¤Ó½Ð¤·¸å¤Ë¥Þ¥Ã¥Ô¥ó¥°¸µ¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¹Ô¤ï¤ì¤¿Êѹ¹¤¬¡¢
159 ¥Þ¥Ã¥×Îΰè¤ËÈ¿±Ç¤µ¤ì¤ë¤«¤É¤¦¤«¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
160 .LP
161 ¾åµ­¤ÎÆó¤Ä¤Î¥Õ¥é¥°¤Ï POSIX.1-2001 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£
162
163 ¤µ¤é¤Ë¡¢°Ê²¼¤ÎÃͤΤ¦¤Á 0 ¸Ä°Ê¾å¤ò¥Ó¥Ã¥ÈËè¤ÎÏÀÍýÏ (OR) ¤Ç
164 .I flags
165 ¤Ë»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
166 .TP
167 .BR MAP_32BIT " (Linux 2.4.20, 2.6 °Ê¹ß)"
168 ¥Þ¥Ã¥Ô¥ó¥°¤ò¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤ÎÀèƬ 2 ¥®¥¬¥Ð¥¤¥È°ÊÆâ¤ËÇÛÃÖ¤¹¤ë¡£
169 ¤³¤Î¥Õ¥é¥°¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï x86-64 ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¾å¤Î
170 64 ¥Ó¥Ã¥È¥×¥í¥°¥é¥à¤Î¤ß¤Ç¤¢¤ë¡£
171 ¤³¤Î¥Õ¥é¥°¤¬Äɲ䵤줿¤Î¤Ï¡¢¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¤ò¥á¥â¥ê¤ÎÀèƬ 2GB °ÊÆâ¤Î
172 ¤É¤³¤«¤Ë³ä¤êÅö¤Æ¤ë¤³¤È¤Ç¡¢½é´ü¤Î¤¤¤¯¤Ä¤«¤Î 64 ¥Ó¥Ã¥È¥×¥í¥»¥Ã¥µ¤Ë¤ª¤±¤ë
173 ¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã¥Á¤ÎÀ­Ç½ÌäÂê¤ò²þÁ±¤¹¤ë¤¿¤á¤Ç¤¢¤ë¡£
174 .\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
175 ºÇ¶á¤Î x86-64 ¥×¥í¥»¥Ã¥µ¤Ç¤Ï¤³¤ÎÀ­Ç½ÌäÂê¤Ï¤â¤Ï¤ä¸ºß¤»¤º¡¢
176 ¤½¤Î¤è¤¦¤Ê¥·¥¹¥Æ¥à¤Ç¤Ï¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ëɬÍפϤʤ¤¡£
177 .B MAP_FIXED
178 ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢
179 .B MAP_32BIT
180 ¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë¡£
181 .TP
182 .B MAP_ANON
183 .B MAP_ANONYMOUS
184 ¤ÎƱµÁ¸ì¡£Èó¿ä¾©¡£
185 .TP
186 .B MAP_ANONYMOUS
187 ¥Þ¥Ã¥Ô¥ó¥°¤Ï¤É¤Î¥Õ¥¡¥¤¥ë¤È¤â´ØÏ¢ÉÕ¤±¤µ¤ì¤Ê¤¤¡£
188 ¥Þ¥Ã¥Ô¥ó¥°¤ÎÆâÍƤϠ0 ¤Ç½é´ü²½¤µ¤ì¤ë¡£
189 °ú¤­¿ô
190 .I fd
191 ¤È
192 .I offset
193 ¤Ï̵»ë¤µ¤ì¤ë¡£
194 ¤¿¤À¤·¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ¤Ï
195 .B MAP_ANONYMOUS
196 (¤â¤·¤¯¤Ï
197 .BR MAP_ANON )
198 ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢
199 .I fd
200 ¤ò \-1 ¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¡¢
201 °Ü¿¢À­¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ïɬ¤º
202 .I fd
203 ¤ò \-1 ¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£
204 .B MAP_ANONYMOUS
205 ¤È
206 .B MAP_SHARED
207 ¤òÁȤ߹ç¤ï¤»¤Æ¤ÎÍøÍѤÏ
208 ¥«¡¼¥Í¥ë 2.4 °Ê¹ß¤Î Linux ¤Ç¤Î¤ß¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
209 .TP
210 .B MAP_DENYWRITE
211 ¤³¤Î¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë
212 .\" 1.1.36 ¤ÇƳÆþ¤µ¤ì¡¢1.3.24 ¤Çºï½ü¤µ¤ì¤¿¡£
213 (¤º¤Ã¤ÈÁ°¤Ï¡¢¥Þ¥Ã¥×¸µ¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤ª¤¦¤È¤¹¤ë¤È¡¢¥¨¥é¡¼
214 .B ETXTBUSY
215 ¤Ç¼ºÇÔ¤¹¤ë¤è¤¦¤Ë¥·¥°¥Ê¥ë¤¬ÀßÄꤵ¤ì¤Æ¤¤¤¿¤¬¡¢¤³¤ì¤Ï denial-of-service
216 (¥µ¡¼¥Ó¥¹µñÈÝ) ¹¶·â¤Î¸¶°ø¤È¤Ê¤Ã¤¿)¡£
217 .TP
218 .B MAP_EXECUTABLE
219 ¤³¤Î¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë¡£
220 .\" 1.1.38 ¤ÇƳÆþ¤µ¤ì¡¢1.3.24 ¤Çºï½ü¤µ¤ì¤¿¡£
221 .\" proc_follow_link ¤Ç¥Æ¥¹¥È¤µ¤ì¤ë¥Õ¥é¥°¤Ç¤¢¤ë¡£(¤º¤Ã¤ÈÁ°¤Ï¡¢
222 .\" ¥Þ¥Ã¥×¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¼Â¹Ô²Äǽ¤Ç¤¢¤ë¤³¤È¤òÃΤ餻¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¡£
223 .\" ¤·¤«¤·¡¢¤½¤Î¾ðÊó¤Ï¼ÂºÝ¤Ë¤Ï¤É¤³¤Ç¤â»È¤ï¤ì¤Ê¤«¤Ã¤¿¡£)
224 .\" Linus ¤Ï MAP_EXECUTABLE ¤Ë´ØÏ¢¤·¤Æ DoS ¤ÎÏäò¤·¤¿¤¬¡¢
225 .\" MAP_DENYWRITE ¤Î¤³¤È¤ò¹Í¤¨¤Æ¤¤¤¿¤Î¤«¤Ê¡©
226 .TP
227 .B MAP_FILE
228 ¸ß´¹À­¤Î¤¿¤á¤Î¥Õ¥é¥°¡£Ìµ»ë¤µ¤ì¤ë¡£
229 .\" On some systems, this was required as the opposite of
230 .\" MAP_ANONYMOUS -- mtk, 1 May 2007
231 .TP
232 .B MAP_FIXED
233 .I addr
234 ¤ò¥¢¥É¥ì¥¹¤Î¥Ò¥ó¥È¤È¤·¤Æ»ÈÍѤ¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢
235 .I addr
236 ¤Ç»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤ò¤½¤Î¤Þ¤Þ»ÈÍѤ·¤Æ¥Þ¥Ã¥Ô¥ó¥°¤òÇÛÃÖ¤¹¤ë¡£
237 .I addr
238 ¤Ï¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
239 .I addr
240 ¤È
241 .I len
242 ¤Ç»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰ褬´û¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Î¥Ú¡¼¥¸¤È½Å¤Ê¤ë¾ì¹ç¡¢
243 ´û¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Î½Å¤Ê¤Ã¤¿Éôʬ¤Ï¼Î¤Æ¤é¤ì¤ë¡£
244 ¤â¤·»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤¬»ÈÍѤǤ­¤Ê¤¤¾ì¹ç¡¢
245 .BR mmap ()
246 ¤Ï¼ºÇÔ¤¹¤ë¡£
247 ¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ·¤Æ¸ÇÄꥢ¥É¥ì¥¹¤òÍ׵᤹¤ë¤Î¤Ï°Ü¿¢À­¤ÎÌ̤ÇÎô¤ë¤Î¤Ç¡¢
248 ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï»ÈÍѤ·¤Ê¤¤¤³¤È¤ò¿ä¾©¤¹¤ë¡£
249 .TP
250 .B MAP_GROWSDOWN
251 ¥¹¥¿¥Ã¥¯ÍѤ˻ÈÍѤµ¤ì¤ë¡£¥Þ¥Ã¥Ô¥ó¥°¤ò¥á¥â¥êÆâ¤ÇµÕ¸þ¤­¤Ë¹Ô¤¦¤³¤È¤ò
252 ¥«¡¼¥Í¥ë²¾ÁÛ¥á¥â¥ê¥·¥¹¥Æ¥à¤Ë»Ø¼¨¤¹¤ë¡£
253 (ÌõÃí¡§¥Þ¥Ã¥Ô¥ó¥°¤ÏÄ̾ï¤Ï¥á¥â¥ê¡¦¥¢¥É¥ì¥¹¤¬Áý²Ã¤¹¤ë¸þ¤­¤Ë¹Ô¤¦¤¬¡¢
254 ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤ÈµÕ¸þ¤­¤Ë¥Þ¥Ã¥Ô¥ó¥°¤ò¹Ô¤¦)
255 .TP
256 .BR MAP_HUGETLB " (Linux 2.6.32 °Ê¹ß)"
257 "huge page" ¤ò»È¤Ã¤Æ¥Þ¥Ã¥Ô¥ó¥°¤ò³ä¤êÅö¤Æ¤ë¡£
258 ¾Ü¤·¤¤¾ðÊó¤Ï¡¢¥«¡¼¥Í¥ë¡¦¥½¡¼¥¹¤Î
259 .I Documentation/vm/hugetlbpage.txt
260 ¤ò»²¾È¡£
261 .TP
262 .BR MAP_LOCKED " (Linux 2.5.37 °Ê¹ß)"
263 ¥Þ¥Ã¥×¤µ¤ì¤¿Îΰè¤Î¥Ú¡¼¥¸¤ò
264 .BR mlock (2)
265 ¤ÎÊýË¡¤Ç¥á¥â¥êÆâ¤Ë¥í¥Ã¥¯¤¹¤ë¡£
266 ¤½¤ì°ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë¡£
267 .\" ¤³¤Î¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¡¢¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤¿¥Ú¡¼¥¸¤Ï¥¹¥ï¥Ã¥×¥¢¥¦¥È
268 .\" ¤µ¤ì¤Ê¤¤¡£
269 .TP
270 .BR MAP_NONBLOCK " (Linux 2.5.46 °Ê¹ß)"
271 .B MAP_POPULATE
272 ¤ÈÁȤ߹ç¤ï¤»¤¿¾ì¹ç¤Î¤ß°ÕÌ£¤ò»ý¤Ä¡£
273 read-ahead (Á°¤â¤Ã¤ÆÆɤ߹þ¤à¤³¤È) ¤ò¼Â¹Ô¤·¤Ê¤¤¡£
274 ñ¤Ë¡¢¤¹¤Ç¤Ë RAM ¾å¤Ë¸ºß¤¹¤ë¥Ú¡¼¥¸¤ËÂФ·¤Æ
275 ¥Ú¡¼¥¸¥Æ¡¼¥Ö¥ë¥¨¥ó¥È¥ê¤òºîÀ®¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£
276 Linux 2.6.23 °Ê¹ß¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤Ï
277 .B MAP_POPULATE
278 ¤Ë²¿¤Î±Æ¶Á¤âÍ¿¤¨¤Ê¤¤¡£
279 ¤¤¤Ä¤«
280 .B MAP_POPULATE
281 ¤È
282 .B MAP_NONBLOCK
283 ¤òÁȤ߹ç¤ï¤»¤¿¾ì¹ç¤ÎÆ°ºî¤Ï¼ÂÁõ¤·Ä¾¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
284 .TP
285 .B MAP_NORESERVE
286 ¤³¤Î¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¥¹¥ï¥Ã¥×¶õ´Ö¤ÎͽÌó¤ò¹Ô¤ï¤Ê¤¤¡£
287 ¥¹¥ï¥Ã¥×¶õ´Ö¤òͽÌó¤·¤¿¾ì¹ç¤Ï¡¢¤³¤Î¥Þ¥Ã¥Ô¥ó¥°¤ÎÊѹ¹¤¬É¬¤º²Äǽ¤Ê¤³¤È¤¬
288 Êݾڤµ¤ì¤ë¡£Í½Ìó¤ò¹Ô¤ï¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ÊªÍý¥á¥â¥ê¤Ë¶õ¤­¤¬¤Ê¤¤¤È
289 ½ñ¤­¹þ¤ß»þ¤Ë
290 .B SIGSEGV
291 ¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¤³¤È¤¬¤¢¤ë¡£
292 .BR proc (5)
293 ¤Î
294 .I /proc/sys/vm/overcommit_memory
295 ¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤ÎµÄÏÀ¤â»²¾È¡£
296 ¥Ð¡¼¥¸¥ç¥ó 2.6 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤Ï½ñ¤­¹þ¤ß²Äǽ¤Ê
297 ¥×¥é¥¤¥Ù¡¼¥È¡¦¥Þ¥Ã¥Ô¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î¤ß¸ú²Ì¤¬¤¢¤Ã¤¿¡£
298 .TP
299 .BR MAP_POPULATE " (Linux 2.5.46 °Ê¹ß)"
300 ¥Þ¥Ã¥Ô¥ó¥°ÍѤΥڡ¼¥¸¥Æ¡¼¥Ö¥ë¤òÇÛÃÖ (populate) ¤¹¤ë
301 ¥Õ¥¡¥¤¥ë¥Þ¥Ã¥Ô¥ó¥°¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤Ë¤è¤ê¥Õ¥¡¥¤¥ë¤¬ÀèÆɤߠ(read-ahead)
302 ¤¬¹Ô¤ï¤ì¤ë¡£¤³¤Î°Ê¸å¤Ï¡¢¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤¬¥Ú¡¼¥¸¥Õ¥©¡¼¥ë¥È¤Ç
303 ¥Ö¥í¥Ã¥¯¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¤Ê¤ë¡£
304 .BR MAP_POPULATE
305 ¤Ï Linux 2.6.23 °Ê¹ß¤Ç¥×¥é¥¤¥Ù¡¼¥È¡¦¥Þ¥Ã¥Ô¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î¤ß
306 ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
307 .LP
308 ¾åµ­¤Î¥Õ¥é¥°¤ÎÃæ¤Ç¤Ï¡¢
309 .B MAP_FIXED
310 ¤À¤±¤¬ POSIX.1-2001 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£
311 ¤·¤«¤·¤Ê¤¬¤é¡¢¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç
312 .B MAP_ANONYMOUS
313 (¤Þ¤¿¤Ï¤½¤ÎƱµÁ¸ì¤Ç¤¢¤ë
314 .BR MAP_ANON )
315 ¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
316 .TP
317 .BR MAP_STACK " (Linux 2.6.27 °Ê¹ß)"
318 ¥×¥í¥»¥¹¤ä¥¹¥ì¥Ã¥É¤Î¥¹¥¿¥Ã¥¯¤ËŬ¤·¤¿¥¢¥É¥ì¥¹¤Ë¥Þ¥Ã¥Ô¥ó¥°¤ò³ä¤êÅö¤Æ¤ë¡£
319 ¸½ºß¤Î¤È¤³¤í¡¢¤³¤Î¥Õ¥é¥°¤Ï²¿¤â¤·¤Ê¤¤¤¬¡¢
320 glibc ¤Î¥¹¥ì¥Ã¥É¼ÂÁõ¤Ç¤Ï»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£
321 ¤³¤ì¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤Ï¥¹¥¿¥Ã¥¯¤Î³ä¤êÅö¤Æ¤Ë´Ø¤·¤ÆÆÃÊ̤ʰ·¤¤
322 ¤¬É¬Íפʾì¹ç¤Ë¡¢glibc ¤Ë¤½¤Î¥µ¥Ý¡¼¥È¤ò¸å¤ÇÆ©²áŪ¤Ë¼ÂÁõ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë
323 ¤¿¤á¤Ç¤¢¤ë¡£
324 .\" See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
325 .\" commit cd98a04a59e2f94fa64d5bf1e26498d27427d5e7
326 .\" http://thread.gmane.org/gmane.linux.kernel/720412
327 .\" "pthread_create() slow for many threads; also time to revisit 64b
328 .\"  context switch optimization?"
329 .LP
330 ¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¾åµ­°Ê³°¤Ë¥Õ¥é¥°¤È¤·¤Æ
331 .BR MAP_AUTOGROW ,
332 .BR MAP_AUTORESRV ,
333 .BR MAP_COPY ,
334 .B MAP_LOCAL
335 ¤¬µ¬Äꤵ¤ì¤Æ¤¤¤ë¡£
336 .LP
337 .BR mmap ()
338 ¤Ë¤è¤Ã¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥á¥â¥ê¤Î°À­¤Ï
339 .BR fork (2)
340 ¤ÎºÝ¤Ë·Ñ¾µ¤µ¤ì¤ë¡£
341 .LP
342 ¥Õ¥¡¥¤¥ë¤Ï¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÀ°¿ôÇܤÎÎΰè¤Ë¥Þ¥Ã¥×¤µ¤ì¤ë¡£¥µ¥¤¥º¤¬¥Ú¡¼¥¸¥µ¥¤¥º¤Î
343 À°¿ôÇܤǤʤ¤¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢¥Þ¥Ã¥×»þ¤Ë»Ä¤ê¤ÎÎΰè¤Ï 0 ¤ÇËä¤á¤é¤ì¡¢¤³¤ÎÎΰè¤Ø
344 ½ñ¤­¤³¤ß¤ò¹Ô¤Ã¤Æ¤â¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£¥Þ¥Ã¥Ô¥ó¥°¤ò¹Ô¤Ã¤¿¸µ
345 ¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤òÊѹ¹¤·¤¿¾ì¹ç¡¢¸µ¥Õ¥¡¥¤¥ë¤ÎÄɲ䵤줿¤êºï½ü¤µ¤ì¤¿Îΰè¤ËÂбþ
346 ¤¹¤ë¥Þ¥Ã¥×¤µ¤ì¤¿¥Ú¡¼¥¸¤ËÂФ·¤Æ¤É¤Î¤è¤¦¤Ê±Æ¶Á¤¬¤¢¤ë¤«¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
347 .SS munmap()
348 ¥·¥¹¥Æ¥à¥³¡¼¥ë
349 .BR munmap ()
350 ¤Ï»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹ÈϰϤΥޥåפò¾Ãµî¤·¡¢
351 ¤³¤ì°Ê¹ß¤Î¤½¤ÎÈÏ°ÏÆâ¤Ø¤Î¥á¥â¥ê»²¾È¤ÏÉÔÀµ¤È¤Ê¤ë¡£
352 ¤³¤ÎÎΰè¤Ï¡¢¥×¥í¥»¥¹¤¬½ªÎ»¤·¤¿¤È¤­¤Ë¤â¼«Æ°Åª¤Ë¥¢¥ó¥Þ¥Ã¥×¤µ¤ì¤ë¡£
353 °ìÊý¡¢¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤ò¥¯¥í¡¼¥º¤·¤Æ¤â¡¢¤³¤ÎÎΰè¤Ï¥¢¥ó¥Þ¥Ã¥×¤µ¤ì¤Ê¤¤¡£
354 .LP
355 .I addr
356 ¥¢¥É¥ì¥¹¤Ï¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÀ°¿ôÇܤǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£»ØÄꤵ¤ì¤¿ÈϰϤΰìÉôʬ¤ò
357 ´Þ¤àÁ´¤Æ¤Î¥Ú¡¼¥¸¤Ï¥¢¥ó¥Þ¥Ã¥×¤µ¤ì¡¢¤³¤ì°Ê¹ß¤Ë¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ø¤Î»²¾È¤¬¤¢¤ë¤È
358 .B SIGSEGV
359 ¤¬È¯À¸¤¹¤ë¡£
360 »ØÄꤷ¤¿ÈÏ°ÏÆâ¤Ë¥Þ¥Ã¥×¤µ¤ì¤¿¥Ú¡¼¥¸¤¬°ì¤Ä¤â´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ç¤â
361 ¥¨¥é¡¼¤Ë¤Ê¤é¤Ê¤¤¡£
362 .SS ¥Õ¥¡¥¤¥ë¤È´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Þ¥Ã¥Ô¥ó¥°¤ËÂФ¹¤ë¥¿¥¤¥à¥¹¥¿¥ó¥×¤Î¹¹¿·
363 ¥Õ¥¡¥¤¥ë¤È´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Þ¥Ã¥Ô¥ó¥°¤Î¾ì¹ç¡¢¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î
364 .I st_atime
365 ¥Õ¥£¡¼¥ë¥É¤Ï¡¢
366 .BR mmap ()
367 ¤µ¤ì¤Æ¤«¤é¥¢¥ó¥Þ¥Ã¥× (unmap) ¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¤Ë¹¹¿·¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£
368 ¤½¤ì¤Þ¤Ç¤Ë¹¹¿·¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥Þ¥Ã¥×¤µ¤ì¤¿¥Ú¡¼¥¸¤Ø¤ÎºÇ½é¤Î»²¾È¤¬¤¢¤Ã¤¿
369 ºÝ¤Ë¹¹¿·¤µ¤ì¤ë¡£
370 .LP
371 .B PROT_WRITE
372 ¤È
373 .B MAP_SHARED
374 ¤ÎξÊý¤ò»ØÄꤷ¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢½ñ¤­¹þ¤ß¤¬¤¢¤ë¤È¡¢
375 .I st_ctime
376 ¤È
377 .I st_mtime
378 ¤Îξ¥Õ¥£¡¼¥ë¥É¤Ï¡¢¥Þ¥Ã¥×¤µ¤ì¤¿Îΰè¤Ø¤Î½ñ¤­¹þ¤ß¤è¤ê¸å¤Ç¡¢
379 .B MS_SYNC
380 ¤Þ¤¿¤Ï
381 .B MS_ASYNC
382 ¥Õ¥é¥°¤ò»ØÄꤷ¤Æ
383 .BR msync (2)
384 ¤¬¸Æ¤Ð¤ì¤ëÁ°¤Þ¤Ç¤Ë¹¹¿·¤µ¤ì¤ë¡£
385 .SH ÊÖ¤êÃÍ
386 .BR mmap ()
387 ¤ÏÀ®¸ù¤¹¤ë¤È¥Þ¥Ã¥×¤µ¤ì¤¿Îΰè¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
388 ¼ºÇÔ¤¹¤ë¤ÈÃÍ
389 .B MAP_FAILED
390 (¤Ä¤Þ¤ê
391 .IR "(void\ *)\ \-1" )
392 ¤òÊÖ¤·¡¢
393 .I errno
394 ¤¬¥¨¥é¡¼¤ÎÆâÍƤˤ·¤¿¤¬¤Ã¤Æ¥»¥Ã¥È¤µ¤ì¤ë¡£
395 .BR munmap ()
396 ¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£¼ºÇÔ¤¹¤ë¤È \-1 ¤òÊÖ¤·¡¢
397 .I errno
398 ¤¬¥»¥Ã¥È¤µ¤ì¤ë (¿¤¯¤Î¾ì¹ç
399 .B EINVAL
400 ¤Ë¤Ê¤ë¤À¤í¤¦)¡£
401 .SH ¥¨¥é¡¼
402 .TP
403 .B EACCES
404 °Ê²¼¤Î¤¤¤º¤ì¤«¤Î¾ì¹ç¡£
405 ¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Î»²¾ÈÀ褬Ä̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¤ (non-regular file) ¡£
406 .B MAP_PRIVATE
407 ¤òÍ׵ᤷ¤¿¤¬
408 .I fd
409 ¤ÏÆɤ߹þ¤ßÍѤ˥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
410 .B MAP_SHARED
411 ¤òÍ׵ᤷ¤Æ
412 .B PROT_WRITE
413 ¤ò¥»¥Ã¥È¤·¤¿¤¬
414 .I fd
415 ¤ÏÆɤ߽ñ¤­¥â¡¼¥É
416 .RB ( O_RDWR )
417 ¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢
418 .B PROT_WRITE
419 ¤ò¥»¥Ã¥È¤·¤¿¤¬¡¢¥Õ¥¡¥¤¥ë¤ÏÄɲà(append) ÀìÍѤǤ¢¤ë¡£
420 .TP
421 .B EAGAIN
422 ¥Õ¥¡¥¤¥ë¤¬¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¡£¤Þ¤¿¤Ï¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¥á¥â¥ê¤¬Â¿¤¹¤®¤ë
423 .RB ( setrlimit (2)
424 ¤ò»²¾È)¡£
425 .TP
426 .B EBADF
427 .I fd
428 ¤¬Í­¸ú¤Ê¥Õ¥¡¥¤¥ëµ­½Ò»Ò (file descriptor) ¤Ç¤Ï¤Ê¤¤
429 (¤«¤Ä
430 .B MAP_ANONYMOUS
431 ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤)¡£
432 .TP
433 .B EINVAL
434 .I addr
435 ¤«
436 .I length
437 ¤«
438 .I offset
439 ¤¬Å¬ÀڤǤʤ¤
440 (Î㤨¤Ð¡¢Â礭¤¹¤®¤ë¤È¤«¡¢¥Ú¡¼¥¸¶­³¦¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ¤¤¤Ê¤¤)¡£
441 .TP
442 .B EINVAL
443 (Linux 2.6.12 °Ê¹ß)
444 .I length
445 ¤¬ 0 ¤Ç¤¢¤Ã¤¿¡£
446 .TP
447 .B EINVAL
448 .I flags
449 ¤Ë
450 .B MAP_PRIVATE
451 ¤È
452 .B MAP_SHARED
453 ¤Î¤É¤Á¤é¤â´Þ¤Þ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¢¤â¤·¤¯¤Ï
454 ¤½¤ÎξÊý¤¬´Þ¤Þ¤ì¤Æ¤¤¤¿¡£
455 .TP
456 .B ENFILE
457 .\" ¤³¤ì¤Ï¶¦Í­Æ¿Ì¾ (anonymous) ¥»¥°¥á¥ó¥È¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£
458 .\" [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
459 ¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÁí¿ô¤¬¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ë㤷¤¿¡£
460 .\" .TP
461 .\" .B ENOEXEC
462 .\" ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ßÍѤ˥ޥåפǤ­¤Ê¤«¤Ã¤¿¡£
463 .TP
464 .B ENODEV
465 »ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¥á¥â¥ê¥Þ¥Ã¥Ô¥ó¥°¤ò¥µ¥Ý¡¼¥È
466 ¤·¤Æ¤¤¤Ê¤¤¡£
467 .TP
468 .B ENOMEM
469 ¥á¥â¥ê¤Ë¶õ¤­¤¬¤Ê¤¤¡¢¤Þ¤¿¤Ï½èÍýÃæ¤Î¥×¥í¥»¥¹¤Î¥Þ¥Ã¥Ô¥ó¥°¿ô¤¬ºÇÂç¿ô¤òĶ²á¤·¤¿¡£
470 .TP
471 .B EPERM
472 .I prot
473 °ú¤­¿ô¤Ï
474 .B PROT_EXEC
475 ¤ò¹Ô¤¦¤è¤¦¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¤¬¡¢
476 no-exec ¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Î¥Õ¥¡¥¤¥ë¤Ë
477 ¥Þ¥Ã¥×Îΰ褬Âбþ¤·¤Æ¤¤¤ë¡£
478 .\" (2.4.25 / 2.6.0 °Ê¹ß)
479 .TP
480 .B ETXTBSY
481 .B MAP_DENYWRITE
482 ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤¬
483 .I fd
484 ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï½ñ¤­¹þ¤ßÍѤ˳«¤«¤ì¤Æ¤¤¤ë¡£
485 .LP
486 ¥Þ¥Ã¥×Îΰè¤òÍøÍѤ¹¤ëºÝ¤Ë¡¢°Ê²¼¤Î¥·¥°¥Ê¥ë¤¬È¯À¸¤¹¤ë¤³¤È¤¬¤¢¤ë:
487 .TP
488 .B SIGSEGV
489 Æɤ߹þ¤ßÀìÍѤǠmmap ¤µ¤ì¤¿Îΰè¤Ø½ñ¤­¹þ¤ß¤ò¹Ô¤ª¤¦¤È¤·¤¿¡£
490 .TP
491 .B SIGBUS
492 ¥Ð¥Ã¥Õ¥¡¤Î¤¦¤Á¡¢¥Õ¥¡¥¤¥ë¤Ë´ØÏ¢¤Å¤±¤é¤ì¤Æ¤¤¤Ê¤¤Éôʬ
493 (Î㤨¤Ð¥Õ¥¡¥¤¥ëËöÈø¤ò±Û¤¨¤¿Éôʬ¤Ê¤É¡£¤³¤ì¤Ë¤Ï
494 ¾¤Î¥×¥í¥»¥¹¤¬¥Õ¥¡¥¤¥ë¤òÀÚ¤êµÍ¤á¤¿¾ì¹ç¤Ê¤É¤â´Þ¤Þ¤ì¤ë)
495 ¤Ë¥¢¥¯¥»¥¹¤·¤è¤¦¤È¤·¤¿¡£
496 .SH ½àµò
497 SVr4, 4.4BSD, POSIX.1-2001.
498 .\" SVr4 ¤Ë¤Ï¤µ¤é¤Ë ENXIO ¤È ENODEV ¤Î¥¨¥é¡¼¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤¬¤¢¤ë¡£
499 .\" SUSv2 ¤Ë¤Ï¤µ¤é¤Ë EMFILE ¤È EOVERFLOW ¤Î¥¨¥é¡¼¥³¡¼¥É¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤¬¤¢¤ë¡£
500 .SH ²ÄÍÑÀ­
501 .BR mmap (),
502 .BR msync (2)
503 .BR munmap ()
504 ¤¬ÍøÍѲÄǽ¤Ê POSIX ¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
505 .B _POSIX_MAPPED_FILES
506 ¤Ï <unistd.h> ¤Ç 0 ¤è¤êÂ礭¤ÊÃͤËÄêµÁ¤µ¤ì¤ë
507 .RB ( sysconf (3)
508 ¤â»²¾È¤Î¤³¤È)¡£
509 .\" POSIX.1-2001: _POSIX_MAPPED_FILES ¤Ï -1 ¤« 0 ¤« 200112L ¤Î
510 .\" ¤¤¤º¤ì¤«¤ËÄêµÁ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
511 .\" -1: ÍøÍÑÉԲġ¢0: sysconf() ¤ËÌ䤤¤¢¤ï¤»¤ë
512 .\" glibc ¤Ç¤Ï POSIX_MAPPED_FILES ¤Ï 1 ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
513 .SH Ãí°Õ
514 ¥«¡¼¥Í¥ë 2.4 °Ê¹ß¡¢¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
515 .BR mmap2 (2)
516 ¤Ë¼è¤Ã¤ÆÂå¤ï¤é¤ì¤¿¡£
517 ¸½ºß¤Ç¤Ï¡¢
518 .\" ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤è¤ê°Û¤Ê¤ë¤¬¡¢ glibc 2.1/2.2 ¤¢¤¿¤ê¤«¤é¡£
519 glibc ¤Î
520 .BR mmap ()
521 ¤Î¥é¥Ã¥Ñ¡¼´Ø¿ô¤Ï
522 .I offset
523 ¤òŬÀÚ¤ËÄ´À°¤·¤Æ¤«¤é
524 .BR mmap2 (2)
525 ¤òµ¯Æ°¤¹¤ë¡£
526
527 (i386 ¤Ê¤É¤Î) ¤¤¤¯¤Ä¤«¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤Ï¡¢
528 .B PROT_WRITE
529 ¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢°ÅÌۤΤ¦¤Á¤Ë
530 .B PROT_READ
531 ¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£
532 .B PROT_READ
533 ¤ò¥»¥Ã¥È¤·¤¿ºÝ¤Ë°ÅÌۤΤ¦¤Á¤Ë
534 .B PROT_EXEC
535 ¤¬¥»¥Ã¥È¤µ¤ì¤ë¤«¤É¤¦¤«¤Ï¡¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã°Í¸¤Ç¤¢¤ë¡£
536 °Ü¿¢À­¤ò¹Íθ¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¡¢
537 ¿·µ¬¤Ë¥Þ¥Ã¥×¤·¤¿Îΰè¤Ç¥³¡¼¥É¤ò¼Â¹Ô¤·¤¿¤¤¾ì¹ç¤Ï¡¢¾ï¤Ë
538 .B PROT_EXEC
539 ¤ò¥»¥Ã¥È¤¹¤Ù¤­¤Ç¤¢¤ë¡£
540
541 ¥Þ¥Ã¥Ô¥ó¥°¤òºîÀ®¤¹¤ë°Ü¿¢À­¤Î¤¢¤ëÊýË¡¤Ï¡¢
542 .I addr
543 ¤Ë 0 (NULL) ¤ò»ØÄꤷ¡¢
544 .I flags
545 ¤«¤é
546 .B MAP_FIXED
547 ¤ò³°¤¹¤³¤È¤Ç¤¢¤ë¡£
548 ¤³¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥à¤¬¥Þ¥Ã¥Ô¥ó¥°ÍѤΥ¢¥É¥ì¥¹¤ÎÁªÂò¤ò¹Ô¤¦¡£
549 ¥¢¥É¥ì¥¹¤Ï´û¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤È¾×Æͤ·¤Ê¤¤¤è¤¦¤Ë¡¢
550 ¤«¤Ä 0 ¤Ë¤Ê¤é¤Ê¤¤¤è¤¦¤ËÁªÂò¤µ¤ì¤ë¡£
551 .B MAP_FIXED
552 ¥Õ¥é¥°¤¬»ØÄꤵ¤ì¡¢¤«¤Ä
553 .I addr
554 ¤¬ 0 (NULL)
555 ¤Î¾ì¹ç¤Ë¤Ï¡¢¥Þ¥Ã¥×¤µ¤ì¤ë¥¢¥É¥ì¥¹¤¬ 0 (NULL) ¤Ë¤Ê¤ë¡£
556 .SH ¥Ð¥°
557 Linux ¤Ë¤ª¤¤¤Æ¤Ï¡¢¾åµ­¤Î
558 .B MAP_NORESERVE
559 ¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¤è¤¦¤ÊÊݾڤϤʤ¤¡£
560 ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¤¬¥á¥â¥ê¤ò»È¤¤Àڤ俾ì¹ç¤Ë¤Ï¡¢
561 ¤É¤Î¥×¥í¥»¥¹¤¬¤¤¤Ä¶¯À©½ªÎ»¤µ¤ì¤ë¤«Ê¬¤«¤é¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
562
563 2.6.7 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢
564 .I prot
565 ¤Ë
566 .B PROT_NONE
567 ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Î¤ß¡¢
568 .B MAP_POPULATE
569 ¥Õ¥é¥°¤¬¸úÎϤò»ý¤Ä¡£
570
571 SUSv3 ¤Ç¤Ï¡¢
572 .I length
573 ¤¬ 0 ¤Î¾ì¹ç¡¢
574 .BR mmap ()
575 ¤Ï¼ºÇÔ¤¹¤ë¤Èµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢2.6.12 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢
576 ¤³¤Î¾ì¹ç¤Ë
577 .BR mmap ()
578 ¤ÏÀ®¸ù¤·¤Æ¤¤¤¿ (¥Þ¥Ã¥Ô¥ó¥°¤ÏºîÀ®¤µ¤ì¤º¡¢
579 .I addr
580 ¤¬ÊÖ¤µ¤ì¤Æ¤¤¤¿)¡£
581 ¥«¡¼¥Í¥ë 2.6.12 °Ê¹ß¤Ç¤Ï¡¢
582 .BR mmap ()
583 ¤Ï¥¨¥é¡¼
584 .B EINVAL
585 ¤Ç¼ºÇÔ¤¹¤ë¡£
586 .SH Îã
587 .\" FIXME . Add an example here that uses an anonymous shared region for
588 .\" IPC between parent and child.
589 .PP
590 °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢°ìÈÖÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿
591 ¥Õ¥¡¥¤¥ë¤Î°ìÉô¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë¡£
592 ɽ¼¨¤¹¤ëÈϰϤϡ¢ÆóÈÖÌÜ¡¢»°ÈÖÌܤΥ³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤ÇÅϤµ¤ì¤ë
593 ¥ª¥Õ¥»¥Ã¥È¤ÈŤµ¤Ç»ØÄꤵ¤ì¤ë¡£
594 ¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎɬÍפʥڡ¼¥¸¤Î¥á¥â¥ê¡¦
595 ¥Þ¥Ã¥Ô¥ó¥°¤òºîÀ®¤·¡¢
596 .BR write (2)
597 ¤ò»È¤Ã¤Æ½ê˾¤Î¥Ð¥¤¥È¤ò½ÐÎϤ¹¤ë¡£
598 .nf
599
600 #include <sys/mman.h>
601 #include <sys/stat.h>
602 #include <fcntl.h>
603 #include <stdio.h>
604 #include <stdlib.h>
605 #include <unistd.h>
606
607 #define handle_error(msg) \\
608     do { perror(msg); exit(EXIT_FAILURE); } while (0)
609
610 int
611 main(int argc, char *argv[])
612 {
613     char *addr;
614     int fd;
615     struct stat sb;
616     off_t offset, pa_offset;
617     size_t length;
618     ssize_t s;
619
620     if (argc < 3 || argc > 4) {
621         fprintf(stderr, "%s file offset [length]\\n", argv[0]);
622         exit(EXIT_FAILURE);
623     }
624
625     fd = open(argv[1], O_RDONLY);
626     if (fd == \-1)
627         handle_error("open");
628
629     if (fstat(fd, &sb) == \-1)           /* To obtain file size */
630         handle_error("fstat");
631
632     offset = atoi(argv[2]);
633     pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) \- 1);
634         /* offset for mmap() must be page aligned */
635
636     if (offset >= sb.st_size) {
637         fprintf(stderr, "offset is past end of file\\n");
638         exit(EXIT_FAILURE);
639     }
640
641     if (argc == 4) {
642         length = atoi(argv[3]);
643         if (offset + length > sb.st_size)
644             length = sb.st_size \- offset;
645                 /* Can\(aqt display bytes past end of file */
646
647     } else {    /* No length arg ==> display to end of file */
648         length = sb.st_size \- offset;
649     }
650
651     addr = mmap(NULL, length + offset \- pa_offset, PROT_READ,
652                 MAP_PRIVATE, fd, pa_offset);
653     if (addr == MAP_FAILED)
654         handle_error("mmap");
655
656     s = write(STDOUT_FILENO, addr + offset \- pa_offset, length);
657     if (s != length) {
658         if (s == \-1)
659             handle_error("write");
660
661         fprintf(stderr, "partial write");
662         exit(EXIT_FAILURE);
663     }
664
665     exit(EXIT_SUCCESS);
666 } /* main */
667 .fi
668 \"O .SH "SEE ALSO"
669 .SH ´ØÏ¢¹àÌÜ
670 .BR getpagesize (2),
671 .BR mincore (2),
672 .BR mlock (2),
673 .BR mmap2 (2),
674 .BR mprotect (2),
675 .BR mremap (2),
676 .BR msync (2),
677 .BR remap_file_pages (2),
678 .BR setrlimit (2),
679 .BR shmat (2),
680 .BR shm_open (3),
681 .BR shm_overview (7)
682 .br
683 B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.
684 .\"
685 .\" »ä¤Î¸å¤Ë¤Ä¤¤¤Æ¸À¤Ã¤Æ¤ß¤Æ: ¥×¥é¥¤¥Ù¡¼¥È¤ÊÆɤ߹þ¤ßÀìÍѤΥޥåԥ󥰤Ï
686 .\" ¶¦Í­¤µ¤ì¤¿Æɤ߹þ¤ßÀìÍѤΥޥåԥ󥰤Ƞ100% Åù¤·¤¤¡£
687 .\" ¡Ö¤â¤·¡×¤â¡Ö¤·¤«¤·¡×¤â¡Ö¤¿¤Ö¤ó¡×¤â¤Ê¤¤¡£-- Linus