1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2012-03-19 23:50+0900\n"
10 "PO-Revision-Date: 2012-03-22 00:22+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
19 #: build/C/man2/alloc_hugepages.2:25
21 msgid "ALLOC_HUGEPAGES"
22 msgstr "ALLOC_HUGEPAGES"
25 #: build/C/man2/alloc_hugepages.2:25
31 #: build/C/man2/alloc_hugepages.2:25 build/C/man2/cacheflush.2:24
32 #: build/C/man2/fallocate.2:7 build/C/man2/madvise.2:35
33 #: build/C/man2/mlock.2:27 build/C/man2/mmap.2:40 build/C/man2/mmap2.2:29
34 #: build/C/man2/mprotect.2:32 build/C/man2/mremap.2:31 build/C/man2/msync.2:25
35 #: build/C/man2/posix_fadvise.2:27 build/C/man2/readahead.2:28
36 #: build/C/man2/remap_file_pages.2:26 build/C/man3/shm_open.3:26
37 #: build/C/man7/shm_overview.7:27 build/C/man2/shmctl.2:43
38 #: build/C/man2/shmget.2:36 build/C/man2/shmop.2:39
39 #: build/C/man2/subpage_prot.2:28 build/C/man2/sync_file_range.2:30
45 #: build/C/man2/alloc_hugepages.2:25 build/C/man3/alloca.3:41
46 #: build/C/man2/cacheflush.2:24 build/C/man2/fallocate.2:7
47 #: build/C/man2/madvise.2:35 build/C/man3/malloc_hook.3:6
48 #: build/C/man2/mlock.2:27 build/C/man2/mmap.2:40 build/C/man2/mmap2.2:29
49 #: build/C/man2/mprotect.2:32 build/C/man2/mremap.2:31 build/C/man2/msync.2:25
50 #: build/C/man3/mtrace.3:4 build/C/man2/posix_fadvise.2:27
51 #: build/C/man3/posix_fallocate.3:23 build/C/man3/posix_memalign.3:26
52 #: build/C/man2/readahead.2:28 build/C/man2/remap_file_pages.2:26
53 #: build/C/man3/shm_open.3:26 build/C/man7/shm_overview.7:27
54 #: build/C/man2/shmctl.2:43 build/C/man2/shmget.2:36 build/C/man2/shmop.2:39
55 #: build/C/man2/subpage_prot.2:28 build/C/man2/sync_file_range.2:30
57 msgid "Linux Programmer's Manual"
58 msgstr "Linux Programmer's Manual"
61 #: build/C/man2/alloc_hugepages.2:26 build/C/man3/alloca.3:42
62 #: build/C/man2/cacheflush.2:25 build/C/man2/fallocate.2:8
63 #: build/C/man2/madvise.2:36 build/C/man3/malloc_hook.3:7
64 #: build/C/man2/mlock.2:28 build/C/man2/mmap.2:41 build/C/man2/mmap2.2:30
65 #: build/C/man2/mprotect.2:33 build/C/man2/mremap.2:32 build/C/man2/msync.2:26
66 #: build/C/man3/mtrace.3:5 build/C/man2/posix_fadvise.2:28
67 #: build/C/man3/posix_fallocate.3:24 build/C/man3/posix_memalign.3:27
68 #: build/C/man2/readahead.2:29 build/C/man2/remap_file_pages.2:27
69 #: build/C/man3/shm_open.3:27 build/C/man7/shm_overview.7:28
70 #: build/C/man2/shmctl.2:44 build/C/man2/shmget.2:37 build/C/man2/shmop.2:40
71 #: build/C/man2/subpage_prot.2:29 build/C/man2/sync_file_range.2:31
77 #: build/C/man2/alloc_hugepages.2:28
78 msgid "alloc_hugepages, free_hugepages - allocate or free huge pages"
80 "alloc_hugepages, free_hugepages - 大きなサイズのページの割り当てと解放を行う"
83 #: build/C/man2/alloc_hugepages.2:28 build/C/man3/alloca.3:44
84 #: build/C/man2/cacheflush.2:27 build/C/man2/fallocate.2:10
85 #: build/C/man2/madvise.2:38 build/C/man3/malloc_hook.3:11
86 #: build/C/man2/mlock.2:30 build/C/man2/mmap.2:43 build/C/man2/mmap2.2:32
87 #: build/C/man2/mprotect.2:35 build/C/man2/mremap.2:34 build/C/man2/msync.2:28
88 #: build/C/man3/mtrace.3:7 build/C/man2/posix_fadvise.2:30
89 #: build/C/man3/posix_fallocate.3:26 build/C/man3/posix_memalign.3:29
90 #: build/C/man2/readahead.2:31 build/C/man2/remap_file_pages.2:29
91 #: build/C/man3/shm_open.3:29 build/C/man2/shmctl.2:46
92 #: build/C/man2/shmget.2:39 build/C/man2/shmop.2:42
93 #: build/C/man2/subpage_prot.2:31 build/C/man2/sync_file_range.2:33
98 #. asmlinkage unsigned long sys_alloc_hugepages(int key, unsigned long addr,
99 #. unsigned long len, int prot, int flag);
101 #: build/C/man2/alloc_hugepages.2:34
104 "B<void *alloc_hugepages(int >I<key>B<, void *>I<addr>B<, size_t >I<len>B<,>\n"
105 "B< int >I<prot>B<, int >I<flag>B<);>\n"
107 "B<void *alloc_hugepages(int >I<key>B<, void *>I<addr>B<, size_t >I<len>B<,>\n"
108 "B< int >I<prot>B<, int >I<flag>B<);>\n"
110 #. asmlinkage int sys_free_hugepages(unsigned long addr);
112 #: build/C/man2/alloc_hugepages.2:37
114 msgid "B<int free_hugepages(void *>I<addr>B<);>\n"
115 msgstr "B<int free_hugepages(void *>I<addr>B<);>\n"
118 #: build/C/man2/alloc_hugepages.2:38 build/C/man3/alloca.3:48
119 #: build/C/man2/cacheflush.2:33 build/C/man2/fallocate.2:18
120 #: build/C/man2/madvise.2:50 build/C/man3/malloc_hook.3:29
121 #: build/C/man2/mlock.2:40 build/C/man2/mmap.2:52 build/C/man2/mmap2.2:39
122 #: build/C/man2/mprotect.2:41 build/C/man2/mremap.2:43 build/C/man2/msync.2:32
123 #: build/C/man3/mtrace.3:13 build/C/man2/posix_fadvise.2:49
124 #: build/C/man3/posix_fallocate.3:44 build/C/man3/posix_memalign.3:70
125 #: build/C/man2/readahead.2:38 build/C/man2/remap_file_pages.2:37
126 #: build/C/man3/shm_open.3:41 build/C/man7/shm_overview.7:30
127 #: build/C/man2/shmctl.2:54 build/C/man2/shmget.2:47 build/C/man2/shmop.2:51
128 #: build/C/man2/subpage_prot.2:36 build/C/man2/sync_file_range.2:41
134 #: build/C/man2/alloc_hugepages.2:49
136 "The system calls B<alloc_hugepages>() and B<free_hugepages>() were "
137 "introduced in Linux 2.5.36 and removed again in 2.5.54. They existed only "
138 "on i386 and ia64 (when built with B<CONFIG_HUGETLB_PAGE>). In Linux 2.4.20 "
139 "the syscall numbers exist, but the calls fail with the error B<ENOSYS>."
141 "システムコール B<alloc_hugepages>() と B<free_hugepages>() は Linux 2.5.36 "
142 "で導入され、2.5.54 で再び削除された。 これらのシステムコールは i386 と ia64 "
143 "のみで (かつ B<CONFIG_HUGETLB_PAGE> を指定してビルドされた場合に) 存在する。 "
144 "Linux 2.4.20 では syscall 番号が存在するが、 呼び出すとエラー B<ENOSYS> で失"
148 #: build/C/man2/alloc_hugepages.2:57
150 "On i386 the memory management hardware knows about ordinary pages (4 KiB) "
151 "and huge pages (2 or 4 MiB). Similarly ia64 knows about huge pages of "
152 "several sizes. These system calls serve to map huge pages into the "
153 "process's memory or to free them again. Huge pages are locked into memory, "
154 "and are not swapped."
156 "i386 では、メモリ管理ハードウェアは通常のページ (4 KiB) と 大きなサイズのペー"
157 "ジ (以下、ヒュージページ; 2MiB または 4 MiB) を 扱うことができる。 同様に、"
158 "ia64 もいくつかのサイズのヒュージページを扱うことができる。 これらのシステム"
159 "コールは、ヒュージページをプロセスのメモリにマップしたり、 再び解放したりす"
160 "る。 ヒュージページはメモリ内にロックされ、スワップされない。"
163 #: build/C/man2/alloc_hugepages.2:66
165 "The I<key> argument is an identifier. When zero the pages are private, and "
166 "not inherited by children. When positive the pages are shared with other "
167 "applications using the same I<key>, and inherited by child processes."
169 "I<key> 引き数は識別子である。 0 の場合、ページは非公開になり、子プロセスに継"
170 "承されない。 正の場合、ページは同じ I<key> を使う他のアプリケーションと共有さ"
174 #: build/C/man2/alloc_hugepages.2:81
176 "The I<addr> argument of B<free_hugepages>() tells which page is being "
177 "freed: it was the return value of a call to B<alloc_hugepages>(). (The "
178 "memory is first actually freed when all users have released it.) The "
179 "I<addr> argument of B<alloc_hugepages>() is a hint, that the kernel may or "
180 "may not follow. Addresses must be properly aligned."
182 "B<free_hugepages>() の I<addr> 引き数は、どのページを解放するかを指定する: "
183 "I<addr> は B<alloc_hugepages>() の呼び出しの返り値である (全てのユーザがメモ"
184 "リを解放したときに、 そのメモリは初めて実際に解放される)。 B<alloc_hugepages>"
185 "() の I<addr> 引き数はヒントであり、カーネルはそれに従うかもしれないし、 従"
186 "わないかもしれない。 アドレスは正しく配置されなければならない。"
189 #: build/C/man2/alloc_hugepages.2:86
191 "The I<len> argument is the length of the required segment. It must be a "
192 "multiple of the huge page size."
194 "I<len> 引き数は要求されたセグメントの長さである。 これはヒュージページのサイ"
198 #: build/C/man2/alloc_hugepages.2:94
200 "The I<prot> argument specifies the memory protection of the segment. It is "
201 "one of B<PROT_READ>, B<PROT_WRITE>, B<PROT_EXEC>."
203 "I<prot> 引き数はセグメントのメモリ保護を指定する。 これは B<PROT_READ>, "
204 "B<PROT_WRITE>, B<PROT_EXEC> のいずれかである。"
207 #: build/C/man2/alloc_hugepages.2:109
209 "The I<flag> argument is ignored, unless I<key> is positive. In that case, "
210 "if I<flag> is B<IPC_CREAT>, then a new huge page segment is created when "
211 "none with the given key existed. If this flag is not set, then B<ENOENT> is "
212 "returned when no segment with the given key exists."
214 "I<key> が正でない限り、 I<flag> 引き数は無視される。 I<key> が正で、かつ "
215 "I<flag> が B<IPC_CREAT> であり、かつ指定された I<key> で (セグメントが) 何も"
216 "存在しない場合、 新しいヒュージページセグメントが作成される。 I<flag> が設定"
217 "されておらず、かつ指定された I<key> のセグメントが存在しない場合、 B<ENOENT> "
221 #: build/C/man2/alloc_hugepages.2:109 build/C/man3/alloca.3:58
222 #: build/C/man2/cacheflush.2:52 build/C/man2/fallocate.2:81
223 #: build/C/man2/madvise.2:250 build/C/man2/mlock.2:117 build/C/man2/mmap.2:373
224 #: build/C/man2/mmap2.2:50 build/C/man2/mprotect.2:72
225 #: build/C/man2/mremap.2:128 build/C/man2/msync.2:68
226 #: build/C/man2/posix_fadvise.2:86 build/C/man3/posix_fallocate.3:64
227 #: build/C/man3/posix_memalign.3:111 build/C/man2/readahead.2:65
228 #: build/C/man2/remap_file_pages.2:122 build/C/man3/shm_open.3:169
229 #: build/C/man2/shmctl.2:272 build/C/man2/shmget.2:178
230 #: build/C/man2/shmop.2:169 build/C/man2/subpage_prot.2:61
231 #: build/C/man2/sync_file_range.2:141
237 #: build/C/man2/alloc_hugepages.2:118
239 "On success, B<alloc_hugepages>() returns the allocated virtual address, and "
240 "B<free_hugepages>() returns zero. On error, -1 is returned, and I<errno> "
241 "is set appropriately."
243 "成功した場合、 B<alloc_hugepages>() は割り当てられた仮想アドレスを返し、 "
244 "B<free_hugepages>() は 0 を返す。 失敗した場合、-1 を返し、 I<errno> が適切"
248 #: build/C/man2/alloc_hugepages.2:118 build/C/man2/cacheflush.2:58
249 #: build/C/man2/fallocate.2:84 build/C/man2/madvise.2:257
250 #: build/C/man2/mlock.2:123 build/C/man2/mmap.2:390 build/C/man2/mmap2.2:57
251 #: build/C/man2/mprotect.2:79 build/C/man2/mremap.2:136
252 #: build/C/man2/msync.2:73 build/C/man2/posix_fadvise.2:89
253 #: build/C/man3/posix_fallocate.3:70 build/C/man3/posix_memalign.3:123
254 #: build/C/man2/readahead.2:71 build/C/man2/remap_file_pages.2:129
255 #: build/C/man3/shm_open.3:178 build/C/man2/shmctl.2:294
256 #: build/C/man2/shmget.2:182 build/C/man2/shmop.2:183
257 #: build/C/man2/subpage_prot.2:66 build/C/man2/sync_file_range.2:147
263 #: build/C/man2/alloc_hugepages.2:119 build/C/man2/fallocate.2:117
269 #: build/C/man2/alloc_hugepages.2:122
270 msgid "The system call is not supported on this kernel."
271 msgstr "このシステムコールはカーネルでサポートされていない。"
274 #: build/C/man2/alloc_hugepages.2:122
280 #: build/C/man2/alloc_hugepages.2:126
282 "I</proc/sys/vm/nr_hugepages> Number of configured hugetlb pages. This can "
283 "be read and written."
285 "I</proc/sys/vm/nr_hugepages> 設定された hugetlb ページの数。 このファイルは読"
289 #: build/C/man2/alloc_hugepages.2:130
291 "I</proc/meminfo> Gives info on the number of configured hugetlb pages and on "
292 "their size in the three variables HugePages_Total, HugePages_Free, "
295 "I</proc/meminfo> 設定された hugetlb ページの数と、 3 つの変数 "
296 "HugePages_Total, HugePages_Free, Hugepagesize の サイズについての情報を提供す"
300 #: build/C/man2/alloc_hugepages.2:130 build/C/man3/alloca.3:63
301 #: build/C/man2/cacheflush.2:74 build/C/man2/fallocate.2:142
302 #: build/C/man2/madvise.2:307 build/C/man3/malloc_hook.3:76
303 #: build/C/man2/mlock.2:187 build/C/man2/mmap.2:483 build/C/man2/mmap2.2:73
304 #: build/C/man2/mprotect.2:107 build/C/man2/mremap.2:186
305 #: build/C/man2/msync.2:96 build/C/man3/mtrace.3:34
306 #: build/C/man2/posix_fadvise.2:111 build/C/man3/posix_fallocate.3:101
307 #: build/C/man3/posix_memalign.3:142 build/C/man2/readahead.2:87
308 #: build/C/man2/remap_file_pages.2:151 build/C/man3/shm_open.3:249
309 #: build/C/man7/shm_overview.7:101 build/C/man2/shmctl.2:366
310 #: build/C/man2/shmget.2:229 build/C/man2/shmop.2:226
311 #: build/C/man2/subpage_prot.2:91 build/C/man2/sync_file_range.2:180
313 msgid "CONFORMING TO"
317 #: build/C/man2/alloc_hugepages.2:133
319 "These calls are specific to Linux on Intel processors, and should not be "
320 "used in programs intended to be portable."
322 "このシステムコールは Intel プロセッサ上の Linux に固有のものであり、 移植性が"
326 #: build/C/man2/alloc_hugepages.2:133 build/C/man3/alloca.3:71
327 #: build/C/man2/madvise.2:328 build/C/man3/malloc_hook.3:78
328 #: build/C/man2/mlock.2:214 build/C/man2/mmap.2:501 build/C/man2/mmap2.2:75
329 #: build/C/man2/mprotect.2:116 build/C/man2/mremap.2:192
330 #: build/C/man3/mtrace.3:36 build/C/man2/posix_fadvise.2:120
331 #: build/C/man3/posix_memalign.3:179 build/C/man3/shm_open.3:255
332 #: build/C/man7/shm_overview.7:103 build/C/man2/shmctl.2:371
333 #: build/C/man2/shmget.2:235 build/C/man2/shmop.2:245
334 #: build/C/man2/subpage_prot.2:93 build/C/man2/sync_file_range.2:183
340 #: build/C/man2/alloc_hugepages.2:141
342 "These system calls are gone; they existed only in Linux 2.5.36 through to "
343 "2.5.54. Now the hugetlbfs file system can be used instead. Memory backed "
344 "by huge pages (if the CPU supports them) is obtained by using B<mmap>(2) to "
345 "map files in this virtual file system."
347 "これらのシステムコールはなくなった。 これらは Linux 2.5.36 から 2.5.54 にのみ"
348 "存在する。 代わりに今は hugetlbfs ファイルシステムを使うことができる。 (CPU "
349 "がサポートしている場合) ヒュージページを持つメモリは、 B<mmap>(2) を使ってこ"
350 "の仮想ファイルシステムでファイルをマップすることで取得できる。"
353 #: build/C/man2/alloc_hugepages.2:145
355 "The maximal number of huge pages can be specified using the B<hugepages=> "
358 "ヒュージページの最大数は、 B<hugepages=> 起動パラメータを使って指定できる。"
361 #: build/C/man2/alloc_hugepages.2:150 build/C/man3/alloca.3:153
362 #: build/C/man2/cacheflush.2:88 build/C/man2/fallocate.2:149
363 #: build/C/man2/madvise.2:360 build/C/man3/malloc_hook.3:138
364 #: build/C/man2/mlock.2:337 build/C/man2/mmap.2:667 build/C/man2/mmap2.2:94
365 #: build/C/man2/mprotect.2:223 build/C/man2/mremap.2:214
366 #: build/C/man2/msync.2:122 build/C/man3/mtrace.3:44
367 #: build/C/man2/posix_fadvise.2:188 build/C/man3/posix_fallocate.3:130
368 #: build/C/man3/posix_memalign.3:235 build/C/man2/readahead.2:98
369 #: build/C/man2/remap_file_pages.2:162 build/C/man3/shm_open.3:280
370 #: build/C/man7/shm_overview.7:127 build/C/man2/shmctl.2:410
371 #: build/C/man2/shmget.2:298 build/C/man2/shmop.2:290
372 #: build/C/man2/subpage_prot.2:126 build/C/man2/sync_file_range.2:222
378 #: build/C/man2/alloc_hugepages.2:157 build/C/man3/alloca.3:160
379 #: build/C/man2/cacheflush.2:95 build/C/man2/fallocate.2:156
380 #: build/C/man2/madvise.2:367 build/C/man3/malloc_hook.3:145
381 #: build/C/man2/mlock.2:344 build/C/man2/mmap.2:674 build/C/man2/mmap2.2:101
382 #: build/C/man2/mprotect.2:230 build/C/man2/mremap.2:221
383 #: build/C/man2/msync.2:129 build/C/man3/mtrace.3:51
384 #: build/C/man2/posix_fadvise.2:195 build/C/man3/posix_fallocate.3:137
385 #: build/C/man3/posix_memalign.3:242 build/C/man2/readahead.2:105
386 #: build/C/man2/remap_file_pages.2:169 build/C/man3/shm_open.3:287
387 #: build/C/man7/shm_overview.7:134 build/C/man2/shmctl.2:417
388 #: build/C/man2/shmget.2:305 build/C/man2/shmop.2:297
389 #: build/C/man2/subpage_prot.2:133 build/C/man2/sync_file_range.2:229
391 "This page is part of release 3.35 of the Linux I<man-pages> project. A "
392 "description of the project, and information about reporting bugs, can be "
393 "found at http://man7.org/linux/man-pages/."
397 #: build/C/man3/alloca.3:41
403 #: build/C/man3/alloca.3:41
409 #: build/C/man3/alloca.3:41 build/C/man3/malloc_hook.3:6
410 #: build/C/man3/mtrace.3:4 build/C/man3/posix_fallocate.3:23
411 #: build/C/man3/posix_memalign.3:26
417 #: build/C/man3/alloca.3:44
418 msgid "alloca - allocate memory that is automatically freed"
419 msgstr "alloca - 自動的に解放されるメモリを割り当てる"
422 #: build/C/man3/alloca.3:46
423 msgid "B<#include E<lt>alloca.hE<gt>>"
424 msgstr "B<#include E<lt>alloca.hE<gt>>"
427 #: build/C/man3/alloca.3:48
428 msgid "B<void *alloca(size_t >I<size>B<);>"
429 msgstr "B<void *alloca(size_t >I<size>B<);>"
432 #: build/C/man3/alloca.3:58
434 "The B<alloca>() function allocates I<size> bytes of space in the stack "
435 "frame of the caller. This temporary space is automatically freed when the "
436 "function that called B<alloca>() returns to its caller."
438 "B<alloca>() 関数は、 I<size> バイトの領域を呼出元のスタック・フレームに割り"
439 "付ける。 この一時的な領域は、 B<alloca>() を呼び出した関数が呼出元に返るとき"
443 #: build/C/man3/alloca.3:63
445 "The B<alloca>() function returns a pointer to the beginning of the "
446 "allocated space. If the allocation causes stack overflow, program behavior "
449 "B<alloca>() 関数は、割り付けた領域の始まりを指すポインタを返す。 割り付けに"
450 "よってスタックオーバーフローが起った場合の プログラムの動作は定義されていな"
454 #: build/C/man3/alloca.3:65
455 msgid "This function is not in POSIX.1-2001."
456 msgstr "この関数は POSIX.1-2001 にはない。"
459 #: build/C/man3/alloca.3:71
461 "There is evidence that the B<alloca>() function appeared in 32V, PWB, "
462 "PWB.2, 3BSD, and 4BSD. There is a man page for it in 4.3BSD. Linux uses "
465 "32V, PWB, PWB.2, 3BSD, 4BSD に B<alloca>() 関数が登場した証拠がある。 "
466 "4.3BSD には、マニュアルページがある。 Linux は、GNU 版を使っている。 この関数"
467 "は POSIX.1-2001 にはない。"
470 #: build/C/man3/alloca.3:86
472 "The B<alloca>() function is machine- and compiler-dependent. For certain "
473 "applications, its use can improve efficiency compared to the use of B<malloc>"
474 "(3) plus B<free>(3). In certain cases, it can also simplify memory "
475 "deallocation in applications that use B<longjmp>(3) or B<siglongjmp>(3). "
476 "Otherwise, its use is discouraged."
478 "B<alloca>() 関数は、機種とコンパイラに依存する。 特定のアプリケーションで"
479 "は、この関数を使うと B<malloc>(3) と B<free>(3) を組み合わせて使った場合に"
480 "比べて効率を改善することができる。 特定の場合では、この関数を使うことで、 "
481 "B<longjmp>(3) や B<siglongjmp>(3) を使うアプリケーションでのメモリの開放を"
482 "簡単にすることができる。 それ以外の場合では、この関数の使用は推奨されない。"
485 #: build/C/man3/alloca.3:95
487 "Because the space allocated by B<alloca>() is allocated within the stack "
488 "frame, that space is automatically freed if the function return is jumped "
489 "over by a call to B<longjmp>(3) or B<siglongjmp>(3)."
491 "B<alloca>() により割り当てられる空間はスタックフレームから割り当てらるの"
492 "で、 関数の戻り先が B<longjmp>(3) や B<siglongjmp>(3) の呼び出しによりジャ"
493 "ンプした場合には、 割り当てられた空間は自動的に解放される。"
496 #: build/C/man3/alloca.3:100
497 msgid "Do not attempt to B<free>(3) space allocated by B<alloca>()!"
499 "B<alloca>() で割り当てられた空間を B<free>(3) しようとすることのないよう"
503 #: build/C/man3/alloca.3:100
505 msgid "Notes on the GNU Version"
506 msgstr "GNU 版についての注意"
509 #: build/C/man3/alloca.3:122
511 "Normally, B<gcc>(1) translates calls to B<alloca>() with inlined code. "
512 "This is not done when either the I<-ansi>, I<-std=c89>, I<-std=c99>, or the "
513 "I<-fno-builtin> option is given (and the header I<E<lt>alloca.hE<gt>> is not "
514 "included). But beware! By default the glibc version of I<E<lt>stdlib."
515 "hE<gt>> includes I<E<lt>alloca.hE<gt>> and that contains the line:"
517 "通常 B<gcc>(1) は B<alloca>() の呼び出しをインラインコードに変換する。 I<-"
518 "ansi>, I<-std=c89>, I<-std=c99>, I<-fno-builtin> のいずれかのオプションが指定"
519 "された場合、この変換は行われない (また I<E<lt>alloca.hE<gt>> のインクルードも"
520 "行われない)。 だだし、デフォルトでは glibc 版の I<E<lt>stdlib.hE<gt>> は "
521 "I<E<lt>alloca.hE<gt>> をインクルードしており、これには以下の行が含まれている"
525 #: build/C/man3/alloca.3:125
527 msgid " #define alloca(size) __builtin_alloca (size)\n"
528 msgstr " #define alloca(size) __builtin_alloca (size)\n"
531 #: build/C/man3/alloca.3:128
532 msgid "with messy consequences if one has a private version of this function."
533 msgstr "独自版の __builtin_alloca (size) 関数があると厄介な結果になる。"
536 #: build/C/man3/alloca.3:132
538 "The fact that the code is inlined means that it is impossible to take the "
539 "address of this function, or to change its behavior by linking with a "
542 "このコードはインライン化されているので、 この関数のアドレスを取得したり、 他"
543 "のライブラリをリンクして動作を変更することはできない。"
546 #: build/C/man3/alloca.3:136
548 "The inlined code often consists of a single instruction adjusting the stack "
549 "pointer, and does not check for stack overflow. Thus, there is no NULL "
552 "通常このインラインコードはスタックポインタを移動する 1 つの命令 "
553 "(instruction) から構成されており、 スタックオーバーフローをチェックしない。 "
554 "よって NULL エラーが返されることはない。"
557 #: build/C/man3/alloca.3:136 build/C/man2/cacheflush.2:81
558 #: build/C/man2/mlock.2:305 build/C/man2/mmap.2:540
559 #: build/C/man2/posix_fadvise.2:177 build/C/man2/shmget.2:284
565 #: build/C/man3/alloca.3:141
567 "There is no error indication if the stack frame cannot be extended. "
568 "(However, after a failed allocation, the program is likely to receive a "
569 "B<SIGSEGV> signal if it attempts to access the unallocated space.)"
571 "スタックフレームが拡張できなかった場合、エラー通知は行われない。 (しかしなが"
572 "ら、割り当てに失敗した後で、プログラムが割り当てられなかった 空間にアクセスし"
573 "ようとした場合に B<SIGSEGV> シグナルを受信することだろう。)"
576 #: build/C/man3/alloca.3:149
578 "On many systems B<alloca>() cannot be used inside the list of arguments of "
579 "a function call, because the stack space reserved by B<alloca>() would "
580 "appear on the stack in the middle of the space for the function arguments."
582 "多くのシステムにおいて、関数コールの引き数のリスト内では B<alloca>() が使え"
583 "ない。 これは、 B<alloca>() によって予約されるスタック領域が、 関数引き数に"
584 "使われるスタック領域の中に現れてしまうためである。"
587 #: build/C/man3/alloca.3:149 build/C/man2/fallocate.2:145
588 #: build/C/man2/madvise.2:353 build/C/man3/malloc_hook.3:133
589 #: build/C/man2/mlock.2:330 build/C/man2/mmap.2:649 build/C/man2/mmap2.2:88
590 #: build/C/man2/mprotect.2:220 build/C/man2/mremap.2:200
591 #: build/C/man2/msync.2:118 build/C/man3/mtrace.3:41
592 #: build/C/man2/posix_fadvise.2:182 build/C/man3/posix_fallocate.3:126
593 #: build/C/man3/posix_memalign.3:230 build/C/man2/readahead.2:92
594 #: build/C/man2/remap_file_pages.2:155 build/C/man3/shm_open.3:269
595 #: build/C/man7/shm_overview.7:114 build/C/man2/shmctl.2:403
596 #: build/C/man2/shmget.2:290 build/C/man2/shmop.2:282
597 #: build/C/man2/subpage_prot.2:120 build/C/man2/sync_file_range.2:217
603 #: build/C/man3/alloca.3:153
604 msgid "B<brk>(2), B<longjmp>(3), B<malloc>(3)"
605 msgstr "B<brk>(2), B<longjmp>(3), B<malloc>(3)"
608 #: build/C/man2/cacheflush.2:24
614 #: build/C/man2/cacheflush.2:24
620 #: build/C/man2/cacheflush.2:27
621 msgid "cacheflush - flush contents of instruction and/or data cache"
622 msgstr "cacheflush - 命令キャッシュやデータキャッシュの内容をフラッシュする"
625 #: build/C/man2/cacheflush.2:30
627 msgid "B<#include E<lt>asm/cachectl.hE<gt>>\n"
628 msgstr "B<#include E<lt>asm/cachectl.hE<gt>>\n"
631 #: build/C/man2/cacheflush.2:32
633 msgid "B<int cacheflush(char *>I<addr>B<, int >I<nbytes>B<, int >I<cache>B<);>\n"
634 msgstr "B<int cacheflush(char *>I<addr>B<, int >I<nbytes>B<, int >I<cache>B<);>\n"
637 #: build/C/man2/cacheflush.2:42
639 "B<cacheflush>() flushes the contents of the indicated cache(s) for the user "
640 "addresses in the range I<addr> to I<(addr+nbytes-1)>. I<cache> may be one "
643 "B<cacheflush>() は I<addr> から I<(addr+nbytes-1)> の範囲のユーザアドレスに"
644 "対応する 指定されたキャッシュをフラッシュする。 I<cache> には以下のいずれかを"
648 #: build/C/man2/cacheflush.2:42
654 #: build/C/man2/cacheflush.2:45
655 msgid "Flush the instruction cache."
656 msgstr "命令 (instruction) キャッシュをフラッシュする。"
659 #: build/C/man2/cacheflush.2:45
665 #: build/C/man2/cacheflush.2:48
666 msgid "Write back to memory and invalidate the affected valid cache lines."
667 msgstr "変更があったキャッシュラインをメモリに書き戻し、無効にする。"
670 #: build/C/man2/cacheflush.2:48
676 #: build/C/man2/cacheflush.2:52
677 msgid "Same as B<(ICACHE|DCACHE)>."
678 msgstr "B<(ICACHE|DCACHE)> と同じ。"
681 #: build/C/man2/cacheflush.2:58
683 "B<cacheflush>() returns 0 on success or -1 on error. If errors are "
684 "detected, I<errno> will indicate the error."
686 "B<cacheflush>() は成功した場合は 0 を、失敗した場合は -1 を返す。エラーが検"
687 "出された場合は I<errno> にエラーが指示される。"
690 #: build/C/man2/cacheflush.2:59 build/C/man2/mmap2.2:58
691 #: build/C/man2/mremap.2:143 build/C/man2/shmctl.2:303
692 #: build/C/man2/subpage_prot.2:67
698 #: build/C/man2/cacheflush.2:66
700 "Some or all of the address range I<addr> to I<(addr+nbytes-1)> is not "
703 "I<addr> から I<(addr+nbytes-1)> の範囲のアドレスの全てまたは一部が アクセス可"
707 #: build/C/man2/cacheflush.2:66 build/C/man2/fallocate.2:96
708 #: build/C/man2/madvise.2:264 build/C/man2/mlock.2:158
709 #: build/C/man2/mlock.2:165 build/C/man2/mlock.2:177 build/C/man2/mmap.2:421
710 #: build/C/man2/mmap.2:429 build/C/man2/mmap.2:434 build/C/man2/mmap2.2:61
711 #: build/C/man2/mprotect.2:89 build/C/man2/mremap.2:152
712 #: build/C/man2/msync.2:80 build/C/man2/posix_fadvise.2:93
713 #: build/C/man3/posix_fallocate.3:79 build/C/man3/posix_memalign.3:124
714 #: build/C/man2/readahead.2:76 build/C/man2/remap_file_pages.2:130
715 #: build/C/man2/remap_file_pages.2:137 build/C/man3/shm_open.3:211
716 #: build/C/man2/shmctl.2:317 build/C/man2/shmget.2:196
717 #: build/C/man2/shmop.2:195 build/C/man2/shmop.2:218
718 #: build/C/man2/subpage_prot.2:72 build/C/man2/sync_file_range.2:152
724 #: build/C/man2/cacheflush.2:74
725 msgid "I<cache> is not one of B<ICACHE>, B<DCACHE>, or B<BCACHE>."
726 msgstr "I<cache> パラメータが B<ICACHE>, B<DCACHE>, B<BCACHE> のどれでもない。"
728 #. FIXME This system call was only on MIPS back in 1.2 days, but
729 #. by now it is on a number of other architectures (but not i386).
730 #. Investigate the details and update this page.
731 #. Irix 6.5 appears to have a cacheflush() syscall -- mtk
733 #: build/C/man2/cacheflush.2:81
735 "This Linux-specific system call is only available on MIPS-based systems. It "
736 "should not be used in programs intended to be portable."
738 "この Linux 特有のシステムコールは MIPS ベースのシステムでのみ有効である。 移"
739 "植を意図したプログラムで使用すべきではない。"
742 #: build/C/man2/cacheflush.2:88
744 "The current implementation ignores the I<addr> and I<nbytes> arguments. "
745 "Therefore, the whole cache is always flushed."
747 "現在の実装では、引き数 I<addr> と I<nbytes> は無視される。そのため、 常に全て"
751 #: build/C/man2/fallocate.2:7
757 #: build/C/man2/fallocate.2:7
759 #| msgid "2011-09-08"
764 #: build/C/man2/fallocate.2:10
765 msgid "fallocate - manipulate file space"
766 msgstr "fallocate - ファイル空間の操作"
769 #: build/C/man2/fallocate.2:14 build/C/man2/readahead.2:35
772 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
773 "B<#include E<lt>fcntl.hE<gt>>\n"
775 "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
776 "B<#include E<lt>fcntl.hE<gt>>\n"
779 #: build/C/man2/fallocate.2:17
781 msgid "B<int fallocate(int >I<fd>B<, int >I<mode>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
782 msgstr "B<int fallocate(int >I<fd>B<, int >I<mode>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
785 #: build/C/man2/fallocate.2:23
788 #| "This is a nonportable, Linux-specific system call. For the portable, "
789 #| "POSIX.1-specified method of ensuring that space is allocated for a file, "
790 #| "see B<posix_fallocate>()."
792 "This is a nonportable, Linux-specific system call. For the portable, "
793 "POSIX.1-specified method of ensuring that space is allocated for a file, see "
794 "B<posix_fallocate>(3)."
796 "このシステムコールは、移植性のない、Linux 固有のシステムコールである。 移植性"
797 "が必要な場合は、ファイルに対してディスク空間を確実に確保するために、 POSIX.1 "
798 "で規定された方法である B<posix_fallocate>(3) を使うこと。"
801 #: build/C/man2/fallocate.2:33
803 "B<fallocate>() allows the caller to directly manipulate the allocated disk "
804 "space for the file referred to by I<fd> for the byte range starting at "
805 "I<offset> and continuing for I<len> bytes."
807 "B<fallocate>() を使うと、 I<fd> が参照するファイルに割り当てられたディスク空"
808 "間を直接操作できる。 操作対象は、 I<offset> から始まる長さ I<len> バイトの領"
812 #: build/C/man2/fallocate.2:39
814 "The I<mode> argument determines the operation to be performed on the given "
815 "range. Currently only one flag is supported for I<mode>:"
817 "I<mode> 引き数は、指定された領域に対して実行する操作を指定する。 現在のとこ"
818 "ろ、 I<mode> に指定できるフラグは以下の一つだけである。"
821 #: build/C/man2/fallocate.2:39
823 msgid "B<FALLOC_FL_KEEP_SIZE>"
824 msgstr "B<FALLOC_FL_KEEP_SIZE>"
826 #. Note from Amit Arora:
827 #. There were few more flags which were discussed, but none of
828 #. them have been finalized upon. Here are these flags:
829 #. FA_FL_DEALLOC, FA_FL_DEL_DATA, FA_FL_ERR_FREE, FA_FL_NO_MTIME,
831 #. All of the above flags were debated upon and we can not say
832 #. if any/which one of these flags will make it to the later kernels.
834 #: build/C/man2/fallocate.2:63
836 "This flag allocates and initializes to zero the disk space within the range "
837 "specified by I<offset> and I<len>. After a successful call, subsequent "
838 "writes into this range are guaranteed not to fail because of lack of disk "
839 "space. Preallocating zeroed blocks beyond the end of the file is useful for "
840 "optimizing append workloads. Preallocating blocks does not change the file "
841 "size (as reported by B<stat>(2)) even if it is less than I<offset>+I<len>."
843 "このフラグは、 I<offset> と I<len> で指定された領域のディスク空間を割り当て、"
844 "その空間を 0 で初期化する。 呼び出しが成功すると、それに続いてこの領域への書"
845 "き込みが行われるが、 ディスク空間の不足による書き込み失敗が発生しないことが保"
846 "証される。 ファイル末尾より後ろの領域について 0 で埋めたブロックを前もって 割"
847 "り当てておくことは、追記 (append) の作業負荷を最適化するのに 有用である。 "
848 "ファイルサイズが I<offset>+I<len> よりも小さい場合であっても、ブロックの前"
849 "もっての割り当てにより (B<stat>(2) が返す) ファイルサイズは変更されることは"
853 #: build/C/man2/fallocate.2:77
855 "If B<FALLOC_FL_KEEP_SIZE> flag is not specified in I<mode>, the default "
856 "behavior is almost same as when this flag is specified. The only difference "
857 "is that on success, the file size will be changed if I<offset + len> is "
858 "greater than the file size. This default behavior closely resembles the "
859 "behavior of the B<posix_fallocate>(3) library function, and is intended as "
860 "a method of optimally implementing that function."
862 "B<FALLOC_FL_KEEP_SIZE> フラグが I<mode> に指定されなかった場合、デフォルトの"
863 "動作は B<FALLOC_FL_KEEP_SIZE> フラグが指定された場合とほとんど同じとなる。 唯"
864 "一の違いは、 I<offset + len> がファイルサイズよりも大きかった場合、呼び出しが"
865 "成功すると ファイルサイズが変更される点である。 このデフォルトの動作は、ライ"
866 "ブラリ関数 B<posix_fallocate>(3) の動作と非常に似ている。これは "
867 "B<posix_fallocate>(3) を最適に実装する手段を提供することを目的としているから"
871 #: build/C/man2/fallocate.2:81
873 "Because allocation is done in block size chunks, B<fallocate>() may "
874 "allocate a larger range than that which was specified."
876 "割り当てはブロックサイズ単位で行われるため、 B<fallocate>() は指定されたより"
880 #: build/C/man2/fallocate.2:84
881 msgid "B<fallocate>() returns zero on success, and -1 on failure."
882 msgstr "B<fallocate>() は成功すると 0 を返し、エラーの場合は -1 を返す。"
885 #: build/C/man2/fallocate.2:85 build/C/man2/madvise.2:261
886 #: build/C/man2/mmap.2:415 build/C/man2/posix_fadvise.2:90
887 #: build/C/man3/posix_fallocate.3:71 build/C/man2/readahead.2:72
888 #: build/C/man2/sync_file_range.2:148
894 #: build/C/man2/fallocate.2:89 build/C/man3/posix_fallocate.3:75
895 msgid "I<fd> is not a valid file descriptor, or is not opened for writing."
897 "I<fd> が有効なファイルディスクリプタでないか、 書き込み用としてオープンされて"
901 #: build/C/man2/fallocate.2:89 build/C/man3/posix_fallocate.3:75
907 #: build/C/man2/fallocate.2:93
908 msgid "I<offset>+I<len> exceeds the maximum file size."
909 msgstr "I<offset + len> がファイルサイズの最大値よりも大きい。"
912 #: build/C/man2/fallocate.2:93
918 #: build/C/man2/fallocate.2:96
919 msgid "A signal was caught during execution."
920 msgstr "実行中にシグナルが捕捉された。"
923 #: build/C/man2/fallocate.2:102 build/C/man3/posix_fallocate.3:85
924 msgid "I<offset> was less than 0, or I<len> was less than or equal to 0."
925 msgstr "I<offset> が 0 未満だったか、 I<len> が 0 以下だった。"
928 #: build/C/man2/fallocate.2:102 build/C/man2/madvise.2:292
929 #: build/C/man2/sync_file_range.2:160
935 #: build/C/man2/fallocate.2:105
936 msgid "An I/O error occurred while reading from or writing to a file system."
937 msgstr "ファイルシステムとの読み書き中に入出力エラーが発生した。"
940 #: build/C/man2/fallocate.2:105 build/C/man2/mmap.2:450
941 #: build/C/man3/posix_fallocate.3:85
947 #: build/C/man2/fallocate.2:112
949 "I<fd> does not refer to a regular file or a directory. (If I<fd> is a pipe "
950 "or FIFO, a different error results.)"
952 "I<fd> が通常のファイルかディレクトリを参照していない (I<fd> がパイプや FIFO "
953 "を参照している場合、別のエラーが発生する)。"
956 #: build/C/man2/fallocate.2:112 build/C/man3/posix_fallocate.3:89
957 #: build/C/man2/shmget.2:214 build/C/man2/sync_file_range.2:166
963 #: build/C/man2/fallocate.2:117 build/C/man3/posix_fallocate.3:94
965 "There is not enough space left on the device containing the file referred to "
967 msgstr "I<fd> が参照するファイルを含むデバイスに十分な空き領域がない。"
970 #: build/C/man2/fallocate.2:122
972 "The file system containing the file referred to by I<fd> does not support "
975 "I<fd> が参照するファイルを含むファイルシステムが 指定された操作をサポートして"
979 #: build/C/man2/fallocate.2:122
981 msgid "B<EOPNOTSUPP>"
982 msgstr "B<EOPNOTSUPP>"
985 #: build/C/man2/fallocate.2:128
987 "The I<mode> is not supported by the file system containing the file referred "
990 "I<fd> が参照するファイルを含むファイルシステムが I<mode> をサポートしていな"
994 #: build/C/man2/fallocate.2:128 build/C/man2/mlock.2:144
995 #: build/C/man2/mlock.2:183 build/C/man2/mmap.2:458 build/C/man2/shmctl.2:342
996 #: build/C/man2/shmget.2:222
1002 #: build/C/man2/fallocate.2:134
1004 #| msgid "The buffer referred to by I<map> is not accessible."
1005 msgid "The file referred to by I<fd> is marked immutable (see B<chattr>(1))."
1006 msgstr "The buffer referred to by I<map> is not accessible."
1009 #: build/C/man2/fallocate.2:134 build/C/man2/posix_fadvise.2:96
1010 #: build/C/man3/posix_fallocate.3:94 build/C/man2/sync_file_range.2:169
1016 #: build/C/man2/fallocate.2:138
1018 #| msgid "I<fd> refers to a pipe."
1019 msgid "I<fd> refers to a pipe or FIFO."
1020 msgstr "I<fd> がパイプを参照している。"
1023 #: build/C/man2/fallocate.2:138 build/C/man2/mmap2.2:70
1024 #: build/C/man2/posix_fadvise.2:103 build/C/man3/posix_fallocate.3:98
1025 #: build/C/man3/posix_memalign.3:133 build/C/man2/readahead.2:82
1026 #: build/C/man2/remap_file_pages.2:146 build/C/man3/shm_open.3:247
1027 #: build/C/man2/subpage_prot.2:85 build/C/man2/sync_file_range.2:177
1033 #: build/C/man2/fallocate.2:142
1035 "B<fallocate>() is available on Linux since kernel 2.6.23. Support is "
1036 "provided by glibc since version 2.10."
1038 "B<fallocate>() はカーネル 2.6.23 以降の Linux で利用可能である。 glibc での"
1039 "対応はバージョン 3.10 以降で行われている。"
1042 #: build/C/man2/fallocate.2:145
1043 msgid "B<fallocate>() is Linux-specific."
1044 msgstr "B<fallocate>() は Linux 固有である。"
1047 #: build/C/man2/fallocate.2:149
1048 msgid "B<ftruncate>(2), B<posix_fadvise>(3), B<posix_fallocate>(3)"
1049 msgstr "B<ftruncate>(2), B<posix_fadvise>(3), B<posix_fallocate>(3)"
1052 #: build/C/man2/madvise.2:35
1058 #: build/C/man2/madvise.2:35
1060 #| msgid "2011-09-08"
1065 #: build/C/man2/madvise.2:38
1066 msgid "madvise - give advice about use of memory"
1067 msgstr "madvise - メモリ利用に関するアドバイスを与える"
1070 #: build/C/man2/madvise.2:40 build/C/man2/msync.2:30
1071 #: build/C/man3/shm_open.3:31
1072 msgid "B<#include E<lt>sys/mman.hE<gt>>"
1073 msgstr "B<#include E<lt>sys/mman.hE<gt>>"
1076 #: build/C/man2/madvise.2:42
1078 "B<int madvise(void *>I<addr>B<, size_t >I<length>B<, int >I<advice>B<);>"
1080 "B<int madvise(void *>I<addr>B<, size_t >I<length>B<, int >I<advice>B<);>"
1083 #: build/C/man2/madvise.2:46 build/C/man2/posix_fadvise.2:42
1084 #: build/C/man3/posix_fallocate.3:37 build/C/man3/posix_memalign.3:44
1086 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
1087 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7) 参照):"
1090 #: build/C/man2/madvise.2:50
1091 msgid "B<madvise>(): _BSD_SOURCE"
1092 msgstr "B<madvise>(): _BSD_SOURCE"
1095 #: build/C/man2/madvise.2:68
1097 "The B<madvise>() system call advises the kernel about how to handle paging "
1098 "input/output in the address range beginning at address I<addr> and with size "
1099 "I<length> bytes. It allows an application to tell the kernel how it expects "
1100 "to use some mapped or shared memory areas, so that the kernel can choose "
1101 "appropriate read-ahead and caching techniques. This call does not influence "
1102 "the semantics of the application (except in the case of B<MADV_DONTNEED>), "
1103 "but may influence its performance. The kernel is free to ignore the advice."
1105 "B<madvise>() システムコールは、アドレス I<addr> からはじまる I<length> バイ"
1106 "トのメモリブロックのページング入出力をどう扱えば良いか、 カーネルにアドバイス"
1107 "する。 これを用いると、 アプリケーションからカーネルに、 マップされたメモリや"
1108 "共有メモリをどのように扱ってほしいか伝えることができ、 カーネルはそれに応じて"
1109 "先読みやキャッシュなどの適切な手法を選択できる。 このコールはアプリケーション"
1110 "の動作そのものには影響しない (B<MADV_DONTNEED> の場合は別) が、 性能には影響"
1111 "しうる。 なおこのアドバイスを受け入れるかどうかはカーネルに任される。"
1114 #: build/C/man2/madvise.2:72
1115 msgid "The advice is indicated in the I<advice> argument which can be"
1117 "アドバイスは引き数 I<advice> によって与える。以下のいずれかを指定できる。"
1120 #: build/C/man2/madvise.2:72
1122 msgid "B<MADV_NORMAL>"
1123 msgstr "B<MADV_NORMAL>"
1126 #: build/C/man2/madvise.2:76
1127 msgid "No special treatment. This is the default."
1128 msgstr "特別な扱いは行わない。これがデフォルトである。"
1131 #: build/C/man2/madvise.2:76
1133 msgid "B<MADV_RANDOM>"
1134 msgstr "B<MADV_RANDOM>"
1137 #: build/C/man2/madvise.2:80
1139 "Expect page references in random order. (Hence, read ahead may be less "
1140 "useful than normally.)"
1142 "ページ参照はランダムな順序で行われそうだ。 (したがって、先読みはあまり効果が"
1146 #: build/C/man2/madvise.2:80
1148 msgid "B<MADV_SEQUENTIAL>"
1149 msgstr "B<MADV_SEQUENTIAL>"
1152 #: build/C/man2/madvise.2:85
1154 "Expect page references in sequential order. (Hence, pages in the given "
1155 "range can be aggressively read ahead, and may be freed soon after they are "
1158 "ページ参照はシーケンシャルな順序で行われそうだ。 (したがって与えた範囲のペー"
1159 "ジは積極的に先読みしておくと良いだろう。 またアクセスが終わったら速やかに解放"
1163 #: build/C/man2/madvise.2:85
1165 msgid "B<MADV_WILLNEED>"
1166 msgstr "B<MADV_WILLNEED>"
1169 #: build/C/man2/madvise.2:89
1171 "Expect access in the near future. (Hence, it might be a good idea to read "
1172 "some pages ahead.)"
1174 "近い将来にアクセスされそうだ。 (したがってこれらのページを今のうちに先読みし"
1178 #: build/C/man2/madvise.2:89
1180 msgid "B<MADV_DONTNEED>"
1181 msgstr "B<MADV_DONTNEED>"
1184 #: build/C/man2/madvise.2:100
1186 "Do not expect access in the near future. (For the time being, the "
1187 "application is finished with the given range, so the kernel can free "
1188 "resources associated with it.) Subsequent accesses of pages in this range "
1189 "will succeed, but will result either in reloading of the memory contents "
1190 "from the underlying mapped file (see B<mmap>(2)) or zero-fill-on-demand "
1191 "pages for mappings without an underlying file."
1193 "しばらくアクセスはなさそうだ。 (現時点でアプリケーションは与えた範囲の処理を"
1194 "終えている。 したがってカーネルはこれに関連するリソースを解放して良い。) こ"
1195 "れ以降この範囲のページへのアクセスがあると、 成功はするが、メモリの内容をマッ"
1196 "プ元のファイルからロードし直すことになる (B<mmap>(2) を見よ) か、 または元"
1197 "ファイルがないマップページでは アクセスがあったときに 0 埋めが行われることに"
1201 #: build/C/man2/madvise.2:100
1203 msgid "B<MADV_REMOVE> (Since Linux 2.6.16)"
1204 msgstr "B<MADV_REMOVE> (Linux 2.6.16 以降)"
1207 #. Databases want to use this feature to drop a section of their
1208 #. bufferpool (shared memory segments) - without writing back to
1209 #. disk/swap space. This feature is also useful for supporting
1210 #. hot-plug memory on UML.
1212 #: build/C/man2/madvise.2:113
1214 "Free up a given range of pages and its associated backing store. Currently, "
1215 "only shmfs/tmpfs supports this; other file systems return with the error "
1218 "指定された範囲のページと関連するバッキングストアを解放する。 現在のところ、 "
1219 "shmfs/tmpfs だけがこれに対応している。 他のファイルシステムでは B<ENOSYS> が"
1223 #: build/C/man2/madvise.2:113
1225 msgid "B<MADV_DONTFORK> (Since Linux 2.6.16)"
1226 msgstr "B<MADV_DONTFORK> (Linux 2.6.16 以降)"
1228 #. See http://lwn.net/Articles/171941/
1229 #. [PATCH] madvise MADV_DONTFORK/MADV_DOFORK
1230 #. Currently, copy-on-write may change the physical address of
1231 #. a page even if the user requested that the page is pinned in
1232 #. memory (either by mlock or by get_user_pages). This happens
1233 #. if the process forks meanwhile, and the parent writes to that
1234 #. page. As a result, the page is orphaned: in case of
1235 #. get_user_pages, the application will never see any data hardware
1236 #. DMA's into this page after the COW. In case of mlock'd memory,
1237 #. the parent is not getting the realtime/security benefits of mlock.
1238 #. In particular, this affects the Infiniband modules which do DMA from
1239 #. and into user pages all the time.
1240 #. This patch adds madvise options to control whether memory range is
1241 #. inherited across fork. Useful e.g. for when hardware is doing DMA
1242 #. from/into these pages. Could also be useful to an application
1243 #. wanting to speed up its forks by cutting large areas out of
1245 #. SEE ALSO: http://lwn.net/Articles/171941/
1246 #. "Tweaks to madvise() and posix_fadvise()", 14 Feb 2006
1248 #: build/C/man2/madvise.2:144
1250 "Do not make the pages in this range available to the child after a B<fork>"
1251 "(2). This is useful to prevent copy-on-write semantics from changing the "
1252 "physical location of a page(s) if the parent writes to it after a B<fork>"
1253 "(2). (Such page relocations cause problems for hardware that DMAs into the "
1256 "B<fork>(2) が行われた後、指定された範囲のページを子プロセスが利用できないよ"
1257 "うにする。 この機能は、書き込み時コピー (copy-on-write) 方式で、 B<fork>(2) "
1258 "の後で親プロセスがページに書き込みを行った場合に ページの物理位置が変化しない"
1259 "ようにするのに有効である (ページの再配置はハードウェアがそのページに DMA 転送"
1260 "を行うような場合に 問題を起こすことがある)。"
1263 #: build/C/man2/madvise.2:144
1265 msgid "B<MADV_DOFORK> (Since Linux 2.6.16)"
1266 msgstr "B<MADV_DOFORK> (Linux 2.6.16 以降)"
1269 #: build/C/man2/madvise.2:150
1271 "Undo the effect of B<MADV_DONTFORK>, restoring the default behavior, whereby "
1272 "a mapping is inherited across B<fork>(2)."
1274 "B<MADV_DONTFORK> の影響を取り消し、デフォルトの動作に戻す。 つまり、 B<fork>"
1275 "(2) の前後でマッピングは継承されるようになる。"
1278 #: build/C/man2/madvise.2:150
1280 #| msgid "B<MADV_DOFORK> (Since Linux 2.6.16)"
1281 msgid "B<MADV_HWPOISON> (Since Linux 2.6.32)"
1282 msgstr "B<MADV_DOFORK> (Linux 2.6.16 以降)"
1285 #: build/C/man2/madvise.2:162
1287 "Poison a page and handle it like a hardware memory corruption. This "
1288 "operation is only available for privileged (B<CAP_SYS_ADMIN>) processes. "
1289 "This operation may result in the calling process receiving a B<SIGBUS> and "
1290 "the page being unmapped. This feature is intended for testing of memory "
1291 "error-handling code; it is only available if the kernel was configured with "
1292 "B<CONFIG_MEMORY_FAILURE>."
1296 #: build/C/man2/madvise.2:162
1298 #| msgid "B<MADV_DOFORK> (Since Linux 2.6.16)"
1299 msgid "B<MADV_SOFT_OFFLINE> (Since Linux 2.6.33)"
1300 msgstr "B<MADV_DOFORK> (Linux 2.6.16 以降)"
1303 #: build/C/man2/madvise.2:180
1305 "Soft offline the pages in the range specified by I<addr> and I<length>. The "
1306 "memory of each page in the specified range is preserved (i.e., when next "
1307 "accessed, the same content will be visible, but in a new physical page "
1308 "frame), and the original page is offlined (i.e., no longer used, and taken "
1309 "out of normal memory management). The effect of the B<MADV_SOFT_OFFLINE> "
1310 "operation is invisible to (i.e., does not change the semantics of) the "
1311 "calling process. This feature is intended for testing of memory error-"
1312 "handling code; it is only available if the kernel was configured with "
1313 "B<CONFIG_MEMORY_FAILURE>."
1317 #: build/C/man2/madvise.2:180
1319 #| msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
1320 msgid "B<MADV_MERGEABLE> (since Linux 2.6.32)"
1321 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
1324 #: build/C/man2/madvise.2:205
1326 "Enable Kernel Samepage Merging (KSM) for the pages in the range specified by "
1327 "I<addr> and I<length>. The kernel regularly scans those areas of user "
1328 "memory that have been marked as mergeable, looking for pages with identical "
1329 "content. These are replaced by a single write-protected page (which is "
1330 "automatically copied if a process later wants to update the content of the "
1331 "page). KSM only merges private anonymous pages (see B<mmap>(2)). The KSM "
1332 "feature is intended for applications that generate many instances of the "
1333 "same data (e.g., virtualization systems such as KVM). It can consume a lot "
1334 "of processing power; use with care. See the kernel source file "
1335 "I<Documentation/vm/ksm.txt> for more details. The B<MADV_MERGEABLE> and "
1336 "B<MADV_UNMERGEABLE> operations are only available if the kernel was "
1337 "configured with B<CONFIG_KSM>."
1341 #: build/C/man2/madvise.2:205
1343 #| msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
1344 msgid "B<MADV_UNMERGEABLE> (since Linux 2.6.32)"
1345 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
1348 #: build/C/man2/madvise.2:214
1350 "Undo the effect of an earlier B<MADV_MERGEABLE> operation on the specified "
1351 "address range; KSM unmerges whatever pages it had merged in the address "
1352 "range specified by I<addr> and I<length>."
1356 #: build/C/man2/madvise.2:214
1358 #| msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
1359 msgid "B<MADV_HUGEPAGE> (since Linux 2.6.38)"
1360 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
1362 #. http://lwn.net/Articles/358904/
1363 #. https://lwn.net/Articles/423584/
1365 #: build/C/man2/madvise.2:243
1367 "Enables Transparent Huge Pages (THP) for pages in the range specified by "
1368 "I<addr> and I<length>. Currently, Transparent Huge Pages only work with "
1369 "private anonymous pages (see B<mmap>(2)). The kernel will regularly scan "
1370 "the areas marked as huge page candidates to replace them with huge pages. "
1371 "The kernel will also allocate huge pages directly when the region is "
1372 "naturally aligned to the huge page size (see B<posix_memalign>(2)). This "
1373 "feature is primarily aimed at applications that use large mappings of data "
1374 "and access large regions of that memory at a time (e.g. virtualization "
1375 "systems such as QEMU). It can very easily waste memory (e.g. a 2MB mapping "
1376 "that only ever accesses 1 byte will result in 2MB of wired memory instead of "
1377 "one 4KB page). See the kernel source file I<Documentation/vm/transhuge.txt> "
1378 "for more details. The B<MADV_HUGEPAGE> and B<MADV_NOHUGEPAGE> operations "
1379 "are only available if the kernel was configured with "
1380 "B<CONFIG_TRANSPARENT_HUGEPAGE>."
1384 #: build/C/man2/madvise.2:243
1386 #| msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
1387 msgid "B<MADV_NOHUGEPAGE> (since Linux 2.6.38)"
1388 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
1391 #: build/C/man2/madvise.2:250
1393 "Ensures that memory in the address range specified by I<addr> and I<length> "
1394 "will not be collapsed into huge pages."
1398 #: build/C/man2/madvise.2:257
1400 "On success B<madvise>() returns zero. On error, it returns -1 and I<errno> "
1401 "is set appropriately."
1403 "B<madvise>() は成功すると 0 を返す。 エラーが起こると -1 を返し、 I<errno> "
1407 #: build/C/man2/madvise.2:258 build/C/man2/mlock.2:155 build/C/man2/mmap.2:411
1408 #: build/C/man2/mremap.2:137
1414 #: build/C/man2/madvise.2:261
1415 msgid "A kernel resource was temporarily unavailable."
1416 msgstr "何らかのカーネルリソースが一時的に利用できなかった。"
1419 #: build/C/man2/madvise.2:264
1420 msgid "The map exists, but the area maps something that isn't a file."
1421 msgstr "指定したマップは存在するが、ファイルではないところをマップしている。"
1424 #: build/C/man2/madvise.2:267
1425 msgid "This error can occur for the following reasons:"
1429 #: build/C/man2/madvise.2:268 build/C/man2/madvise.2:274
1430 #: build/C/man2/madvise.2:277 build/C/man2/madvise.2:280
1431 #: build/C/man2/madvise.2:283
1439 #: build/C/man2/madvise.2:274
1441 #| msgid "I<len> was negative."
1442 msgid "The value I<len> is negative."
1443 msgstr "I<len> が負の数である。"
1446 #: build/C/man2/madvise.2:277
1447 msgid "I<addr> is not page-aligned."
1451 #: build/C/man2/madvise.2:280
1453 #| msgid "I<fd> is not a valid file descriptor."
1454 msgid "I<advice> is not a valid value"
1455 msgstr "I<fd> が有効なファイルディスクリプタではない。"
1458 #: build/C/man2/madvise.2:283
1461 #| "The value I<len> is negative, I<addr> is not page-aligned, I<advice> is "
1462 #| "not a valid value, or the application is attempting to release locked or "
1463 #| "shared pages (with B<MADV_DONTNEED>)."
1465 "The application is attempting to release locked or shared pages (with "
1466 "B<MADV_DONTNEED>)."
1468 "I<len> の値が負、 I<addr> がページ境界でない、 I<advice> が正しい値でない、 "
1469 "アプリケーションがロックされたページや共有ページを (B<MADV_DONTNEED> で) 解放"
1473 #: build/C/man2/madvise.2:291
1475 "B<MADV_MERGEABLE> or B<MADV_UNMERGEABLE> was specified in I<advice>, but the "
1476 "kernel was not configured with B<CONFIG_KSM>."
1480 #: build/C/man2/madvise.2:298
1482 "(for B<MADV_WILLNEED>) Paging in this area would exceed the process's "
1483 "maximum resident set size."
1485 "(B<MADV_WILLNEED> の場合) この範囲のページングを行うと、 プロセスの RSS "
1486 "(resident set size) の最大値を越えてしまう。"
1489 #: build/C/man2/madvise.2:298 build/C/man2/madvise.2:303
1490 #: build/C/man2/mlock.2:124 build/C/man2/mlock.2:132 build/C/man2/mlock.2:170
1491 #: build/C/man2/mmap.2:454 build/C/man2/mprotect.2:94
1492 #: build/C/man2/mprotect.2:97 build/C/man2/mremap.2:180
1493 #: build/C/man2/msync.2:93 build/C/man3/posix_memalign.3:130
1494 #: build/C/man2/shmctl.2:326 build/C/man2/shmget.2:211
1495 #: build/C/man2/shmop.2:209 build/C/man2/subpage_prot.2:82
1496 #: build/C/man2/sync_file_range.2:163
1502 #: build/C/man2/madvise.2:303
1503 msgid "(for B<MADV_WILLNEED>) Not enough memory: paging in failed."
1504 msgstr "(B<MADV_WILLNEED> の場合) メモリが足りず、ページングに失敗した。"
1507 #: build/C/man2/madvise.2:307
1509 "Addresses in the specified range are not currently mapped, or are outside "
1510 "the address space of the process."
1512 "指定した範囲のアドレスが、現在マップされていない。 あるいはプロセスのアドレス"
1515 #. FIXME . Write a posix_fadvise(3) page.
1517 #: build/C/man2/madvise.2:319
1519 "POSIX.1b. POSIX.1-2001 describes B<posix_madvise>(3) with constants "
1520 "B<POSIX_MADV_NORMAL>, etc., with a behavior close to that described here. "
1521 "There is a similar B<posix_fadvise>(2) for file access."
1523 "POSIX.1b. POSIX.1-2001 では、 B<posix_madvise>(3) を B<POSIX_MADV_NORMAL> "
1524 "などの定数とともに記述していた (それぞれの振る舞いはここで述べたものに近"
1525 "い)。 ファイルアクセスに対しても B<posix_fadvise>(2) という類似の関数が存在"
1529 #: build/C/man2/madvise.2:328
1532 #| "B<MADV_REMOVE>, B<MADV_DONTFORK>, and B<MADV_DOFORK> are Linux-specific."
1534 "B<MADV_REMOVE>, B<MADV_DONTFORK>, B<MADV_DOFORK>, B<MADV_HWPOISON>, "
1535 "B<MADV_MERGEABLE>, and B<MADV_UNMERGEABLE> are Linux-specific."
1536 msgstr "B<MADV_REMOVE>, B<MADV_DONTFORK>, B<MADV_DOFORK> は Linux 固有である。"
1539 #: build/C/man2/madvise.2:329 build/C/man2/mlock.2:268
1540 #: build/C/man2/shmget.2:278
1546 #: build/C/man2/madvise.2:337
1548 "The current Linux implementation (2.4.0) views this system call more as a "
1549 "command than as advice and hence may return an error when it cannot do what "
1550 "it usually would do in response to this advice. (See the ERRORS description "
1551 "above.) This is nonstandard behavior."
1553 "現在の Linux の実装 (2.4.0) では、 このシステムコールをアドバイスというよりは"
1554 "命令と見ている。 したがってこのアドバイスに対して通常行われる動作が不可能な場"
1555 "合は、 エラーを返すことがある (上記の エラー の記述を参照)。 この振舞いは標準"
1561 #. function first appeared in 4.4BSD.
1563 #: build/C/man2/madvise.2:353
1565 "The Linux implementation requires that the address I<addr> be page-aligned, "
1566 "and allows I<length> to be zero. If there are some parts of the specified "
1567 "address range that are not mapped, the Linux version of B<madvise>() "
1568 "ignores them and applies the call to the rest (but returns B<ENOMEM> from "
1569 "the system call, as it should)."
1571 "Linux の実装では I<addr> のアドレスはページ境界の値でなければならない。また "
1572 "I<length> は 0 であっても構わない。 また Linux 版の B<madvise>() では、指定"
1573 "されたアドレス範囲にマップされていない部分があると、 これらを無視して残りの部"
1574 "分にアドバイスを適用する (しかしシステムコールに対してはちゃんと B<ENOMEM> を"
1578 #: build/C/man2/madvise.2:360
1580 "B<getrlimit>(2), B<mincore>(2), B<mmap>(2), B<mprotect>(2), B<msync>(2), "
1583 "B<getrlimit>(2), B<mincore>(2), B<mmap>(2), B<mprotect>(2), B<msync>(2), "
1587 #: build/C/man3/malloc_hook.3:6
1590 msgstr "MALLOC_HOOK"
1593 #: build/C/man3/malloc_hook.3:6
1595 #| msgid "2010-10-30"
1600 #: build/C/man3/malloc_hook.3:11
1602 "__malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, "
1603 "__realloc_hook, __after_morecore_hook - malloc debugging variables"
1605 "__malloc_hook, __malloc_initialize_hook, __memalign_hook, __free_hook, "
1606 "__realloc_hook, __after_morecore_hook - malloc デバッグ用の変数"
1609 #: build/C/man3/malloc_hook.3:14 build/C/man3/posix_memalign.3:36
1611 msgid "B<#include E<lt>malloc.hE<gt>>\n"
1612 msgstr "B<#include E<lt>malloc.hE<gt>>\n"
1615 #: build/C/man3/malloc_hook.3:16
1617 msgid "B<void *(*__malloc_hook)(size_t >I<size>B<, const void *>I<caller>B<);>\n"
1618 msgstr "B<void *(*__malloc_hook)(size_t >I<size>B<, const void *>I<caller>B<);>\n"
1621 #: build/C/man3/malloc_hook.3:19
1623 msgid "B<void *(*__realloc_hook)(void *>I<ptr>B<, size_t >I<size>B<, const void *>I<caller>B<);>\n"
1624 msgstr "B<void *(*__realloc_hook)(void *>I<ptr>B<, size_t >I<size>B<, const void *>I<caller>B<);>\n"
1627 #: build/C/man3/malloc_hook.3:22
1630 "B<void *(*__memalign_hook)(size_t >I<alignment>B<, size_t >I<size>B<,>\n"
1631 "B< const void *>I<caller>B<);>\n"
1633 "B<void *(*__memalign_hook)(size_t >I<alignment>B<, size_t >I<size>B<,>\n"
1634 "B< const void *>I<caller>B<);>\n"
1637 #: build/C/man3/malloc_hook.3:24
1639 msgid "B<void (*__free_hook)(void *>I<ptr>B<, const void *>I<caller>B<);>\n"
1640 msgstr "B<void (*__free_hook)(void *>I<ptr>B<, const void *>I<caller>B<);>\n"
1643 #: build/C/man3/malloc_hook.3:26
1645 msgid "B<void (*__malloc_initialize_hook)(void);>\n"
1646 msgstr "B<void (*__malloc_initialize_hook)(void);>\n"
1649 #: build/C/man3/malloc_hook.3:28
1651 msgid "B<void (*__after_morecore_hook)(void);>\n"
1652 msgstr "B<void (*__after_morecore_hook)(void);>\n"
1655 #: build/C/man3/malloc_hook.3:39
1657 "The GNU C library lets you modify the behavior of B<malloc>(3), B<realloc>"
1658 "(3), and B<free>(3) by specifying appropriate hook functions. You can use "
1659 "these hooks to help you debug programs that use dynamic memory allocation, "
1662 "GNU C ライブラリでは、適切なフック関数 (hook function) を指定することで "
1663 "B<malloc>(3), B<realloc>(3), B<free>(3) の動作を変更することができる。例え"
1664 "ば、動的にメモリ割り当てを行う プログラムのデバッグにこれらのフックを使うこと"
1668 #: build/C/man3/malloc_hook.3:46
1670 "The variable B<__malloc_initialize_hook> points at a function that is called "
1671 "once when the malloc implementation is initialized. This is a weak "
1672 "variable, so it can be overridden in the application with a definition like "
1675 "変数 B<__malloc_initialize_hook> は malloc の実装が初期化される際に一度だけ呼"
1676 "ばれる関数へのポインタである。 この変数は書き換え可能 (weak) であり、アプリ"
1677 "ケーション内で 以下のような定義で上書きできる:"
1680 #: build/C/man3/malloc_hook.3:49
1682 msgid " void (*__malloc_initialize_hook)(void) = my_init_hook;\n"
1683 msgstr " void (*__malloc_initialize_hook)(void) = my_init_hook;\n"
1686 #: build/C/man3/malloc_hook.3:54
1688 "Now the function I<my_init_hook>() can do the initialization of all hooks."
1690 "なお、関数 I<my_init_hook>() で全てのフックの初期化をすることができる。"
1693 #: build/C/man3/malloc_hook.3:70
1695 "The four functions pointed to by B<__malloc_hook>, B<__realloc_hook>, "
1696 "B<__memalign_hook>, B<__free_hook> have a prototype like the functions "
1697 "B<malloc>(3), B<realloc>(3), B<memalign>(3), B<free>(3), respectively, "
1698 "except that they have a final argument I<caller> that gives the address of "
1699 "the caller of B<malloc>(3), etc."
1701 "B<__malloc_hook>, B<__realloc_hook>, B<__memalign_hook>, B<__free_hook> で指"
1702 "される 4 つの関数は、各々 B<malloc>(3), B<realloc>(3), B<memalign>(3), "
1703 "B<free>(3) とよく似たプロトタイプを持っているが、 一番最後の引き数 "
1704 "I<caller> をとる点が異なる。 引き数 I<caller> には、 B<malloc>(3) などの呼び"
1705 "出し元 (caller) のアドレスが格納される。"
1708 #: build/C/man3/malloc_hook.3:76
1710 "The variable B<__after_morecore_hook> points at a function that is called "
1711 "each time after B<sbrk>(2) was asked for more memory."
1713 "変数 B<__after_morecore_hook> は、領域の追加要求があり B<sbrk>(2) が呼ばれた"
1714 "後で毎回呼び出される関数へのポインタである。"
1717 #: build/C/man3/malloc_hook.3:78
1718 msgid "These functions are GNU extensions."
1719 msgstr "これらの関数は GNU による拡張である。"
1721 #. https://bugzilla.redhat.com/show_bug.cgi?id=450187
1722 #. http://sourceware.org/bugzilla/show_bug.cgi?id=9957
1724 #: build/C/man3/malloc_hook.3:85
1726 "The use of these hook functions is not safe in multithreaded programs, and "
1727 "they are now deprecated. Programmers should instead preempt calls to the "
1728 "relevant functions by defining and exporting functions such as \"malloc\" "
1733 #: build/C/man3/malloc_hook.3:85 build/C/man2/mmap.2:567
1734 #: build/C/man2/mprotect.2:142
1740 #: build/C/man3/malloc_hook.3:87
1741 msgid "Here is a short example of how to use these variables."
1742 msgstr "これらの変数の使い方の簡単な例を以下に示す。"
1745 #: build/C/man3/malloc_hook.3:91
1748 "#include E<lt>stdio.hE<gt>\n"
1749 "#include E<lt>malloc.hE<gt>\n"
1751 "#include E<lt>stdio.hE<gt>\n"
1752 "#include E<lt>malloc.hE<gt>\n"
1755 #: build/C/man3/malloc_hook.3:95
1758 "/* Prototypes for our hooks. */\n"
1759 "static void my_init_hook(void);\n"
1760 "static void *my_malloc_hook(size_t, const void *);\n"
1762 "/* 使おうとするフックのプロトタイプ宣言 */\n"
1763 "static void my_init_hook(void);\n"
1764 "static void *my_malloc_hook(size_t, const void *);\n"
1767 #: build/C/man3/malloc_hook.3:98
1770 "/* Variables to save original hooks. */\n"
1771 "static void *(*old_malloc_hook)(size_t, const void *);\n"
1773 "/* 元々のフックを保存するための変数 */\n"
1774 "static void *(*old_malloc_hook)(size_t, const void *);\n"
1777 #: build/C/man3/malloc_hook.3:101
1780 "/* Override initializing hook from the C library. */\n"
1781 "void (*__malloc_initialize_hook) (void) = my_init_hook;\n"
1783 "/* C ライブラリから呼ばれる初期化フックを上書きする */\n"
1784 "void (*__malloc_initialize_hook) (void) = my_init_hook;\n"
1787 #: build/C/man3/malloc_hook.3:108
1791 "my_init_hook(void)\n"
1793 " old_malloc_hook = __malloc_hook;\n"
1794 " __malloc_hook = my_malloc_hook;\n"
1798 "my_init_hook(void)\n"
1800 " old_malloc_hook = __malloc_hook;\n"
1801 " __malloc_hook = my_malloc_hook;\n"
1805 #: build/C/man3/malloc_hook.3:113
1809 "my_malloc_hook(size_t size, const void *caller)\n"
1814 "my_malloc_hook(size_t size, const void *caller)\n"
1819 #: build/C/man3/malloc_hook.3:116
1822 " /* Restore all old hooks */\n"
1823 " __malloc_hook = old_malloc_hook;\n"
1825 " /* 元々のフックを全て戻す */\n"
1826 " __malloc_hook = old_malloc_hook;\n"
1829 #: build/C/man3/malloc_hook.3:119
1832 " /* Call recursively */\n"
1833 " result = malloc(size);\n"
1835 " /* malloc の再帰的呼び出し */\n"
1836 " result = malloc(size);\n"
1839 #: build/C/man3/malloc_hook.3:122
1842 " /* Save underlying hooks */\n"
1843 " old_malloc_hook = __malloc_hook;\n"
1845 " /* 現在設定されているフック (underlying hook) を保存する */\n"
1846 " old_malloc_hook = __malloc_hook;\n"
1849 #: build/C/man3/malloc_hook.3:126
1852 " /* printf() might call malloc(), so protect it too. */\n"
1853 " printf(\"malloc(%u) called from %p returns %p\\en\",\n"
1854 " (unsigned int) size, caller, result);\n"
1856 " /* printf() は malloc() を呼び出す可能性があるので\n"
1857 " ここでもガードを行う (元々のフックのままにしておく) */\n"
1858 " printf(\"malloc(%u) called from %p returns %p\\en\",\n"
1859 " (unsigned int) size, caller, result);\n"
1862 #: build/C/man3/malloc_hook.3:129
1865 " /* Restore our own hooks */\n"
1866 " __malloc_hook = my_malloc_hook;\n"
1868 " /* ユーザが使おうとするフックを再設定する */\n"
1869 " __malloc_hook = my_malloc_hook;\n"
1872 #: build/C/man3/malloc_hook.3:132
1882 #: build/C/man3/malloc_hook.3:138
1883 msgid "B<mallinfo>(3), B<malloc>(3), B<mcheck>(3), B<mtrace>(3)"
1884 msgstr "B<mallinfo>(3), B<malloc>(3), B<mcheck>(3), B<mtrace>(3)"
1887 #: build/C/man2/mlock.2:27
1893 #: build/C/man2/mlock.2:27
1895 #| msgid "2011-09-08"
1900 #: build/C/man2/mlock.2:30
1901 msgid "mlock, munlock, mlockall, munlockall - lock and unlock memory"
1902 msgstr "mlock - メモリのロックとロック解除を行う"
1905 #: build/C/man2/mlock.2:33 build/C/man2/mmap.2:46 build/C/man2/mmap2.2:35
1906 #: build/C/man2/mprotect.2:38 build/C/man2/mremap.2:39
1908 msgid "B<#include E<lt>sys/mman.hE<gt>>\n"
1909 msgstr "B<#include E<lt>sys/mman.hE<gt>>\n"
1912 #: build/C/man2/mlock.2:36
1915 "B<int mlock(const void *>I<addr>B<, size_t >I<len>B<);>\n"
1916 "B<int munlock(const void *>I<addr>B<, size_t >I<len>B<);>\n"
1918 "B<int mlock(const void *>I<addr>B<, size_t >I<len>B<);>\n"
1919 "B<int munlock(const void *>I<addr>B<, size_t >I<len>B<);>\n"
1922 #: build/C/man2/mlock.2:39
1925 "B<int mlockall(int >I<flags>B<);>\n"
1926 "B<int munlockall(void);>\n"
1928 "B<int mlockall(int >I<flags>B<);>\n"
1929 "B<int munlockall(void);>\n"
1932 #: build/C/man2/mlock.2:55
1934 "B<mlock>() and B<mlockall>() respectively lock part or all of the calling "
1935 "process's virtual address space into RAM, preventing that memory from being "
1936 "paged to the swap area. B<munlock>() and B<munlockall>() perform the "
1937 "converse operation, respectively unlocking part or all of the calling "
1938 "process's virtual address space, so that pages in the specified virtual "
1939 "address range may once more to be swapped out if required by the kernel "
1940 "memory manager. Memory locking and unlocking are performed in units of "
1943 "B<mlock>() と B<mlockall>() はそれぞれ、呼び出し元プロセスの仮想アドレス空"
1944 "間の一部または全部を RAM 上にロックし、メモリがスワップエリアにページングされ"
1945 "るのを防ぐ。 B<munlock>() と B<munlockall>() は逆の操作で、それぞれ呼び出し"
1946 "元プロセスの仮想アドレス空間の一部または全部を ロック解除する。つまり、指定さ"
1947 "れた仮想アドレス範囲のページは カーネルメモリマネージャーから要求されればス"
1948 "ワップアウトするようになる。 メモリのロックとロック解除はページ単位で行われ"
1952 #: build/C/man2/mlock.2:55
1954 msgid "mlock() and munlock()"
1955 msgstr "mlock() と munlock()"
1958 #: build/C/man2/mlock.2:65
1960 "B<mlock>() locks pages in the address range starting at I<addr> and "
1961 "continuing for I<len> bytes. All pages that contain a part of the specified "
1962 "address range are guaranteed to be resident in RAM when the call returns "
1963 "successfully; the pages are guaranteed to stay in RAM until later unlocked."
1965 "B<mlock>() は I<addr> から始まる長さ I<len> バイトのアドレス範囲のページを"
1966 "ロックする。 呼び出しが成功した場合には、 指定されたアドレス範囲を含む全ての"
1967 "ページは RAM に残り続けることが保証される。 これらのページは後でロック解除さ"
1968 "れるまで RAM に残り続けることが保証される。"
1971 #: build/C/man2/mlock.2:74
1973 "B<munlock>() unlocks pages in the address range starting at I<addr> and "
1974 "continuing for I<len> bytes. After this call, all pages that contain a part "
1975 "of the specified memory range can be moved to external swap space again by "
1978 "B<munlock>() は、 I<addr> から始まる長さ I<len> バイトのアドレス範囲のページ"
1979 "のロックを解除する。 この呼び出しを行った後は、カーネルが、指定されたメモリ範"
1980 "囲を含む 全てのページを外部のスワップ空間に移動できるようになる。"
1983 #: build/C/man2/mlock.2:74
1985 msgid "mlockall() and munlockall()"
1986 msgstr "mlockall() と munlockall()"
1989 #: build/C/man2/mlock.2:84
1991 "B<mlockall>() locks all pages mapped into the address space of the calling "
1992 "process. This includes the pages of the code, data and stack segment, as "
1993 "well as shared libraries, user space kernel data, shared memory, and memory-"
1994 "mapped files. All mapped pages are guaranteed to be resident in RAM when "
1995 "the call returns successfully; the pages are guaranteed to stay in RAM until "
1998 "B<mlockall>() は呼び出し元プロセスのアドレス空間にマップされている全てのペー"
1999 "ジを ロックする。これにはコード、データ、スタックの 各セグメント、共有ライブ"
2000 "ラリ、カーネルのユーザー空間データ、 共有メモリ、メモリ・マップされたファイル"
2001 "が含まれる。 システム・コールが成功した場合には全てのマップされたページは "
2002 "RAM に 残ることを保証される。 これらのページは後でロック解除されるまで RAM に"
2006 #: build/C/man2/mlock.2:89
2008 "The I<flags> argument is constructed as the bitwise OR of one or more of the "
2009 "following constants:"
2010 msgstr "I<flags> 引数は以下の内容の一つまたは複数のビット OR から構成される:"
2013 #: build/C/man2/mlock.2:89
2015 msgid "B<MCL_CURRENT>"
2016 msgstr "B<MCL_CURRENT>"
2019 #: build/C/man2/mlock.2:93
2021 "Lock all pages which are currently mapped into the address space of the "
2024 "現在、プロセスのアドレス空間にマップされている全てのページをロックする。"
2027 #: build/C/man2/mlock.2:93
2029 msgid "B<MCL_FUTURE>"
2030 msgstr "B<MCL_FUTURE>"
2033 #: build/C/man2/mlock.2:100
2035 "Lock all pages which will become mapped into the address space of the "
2036 "process in the future. These could be for instance new pages required by a "
2037 "growing heap and stack as well as new memory mapped files or shared memory "
2040 "将来、プロセスのアドレス空間にマップされる全てのページをロックする。 例えば、"
2041 "ヒープ (heap) やスタックの成長により新しく必要になったページだけで なく、新し"
2042 "くメモリマップされたファイルや共有メモリ領域もロックされる。"
2045 #: build/C/man2/mlock.2:113
2047 "If B<MCL_FUTURE> has been specified, then a later system call (e.g., B<mmap>"
2048 "(2), B<sbrk>(2), B<malloc>(3)), may fail if it would cause the number of "
2049 "locked bytes to exceed the permitted maximum (see below). In the same "
2050 "circumstances, stack growth may likewise fail: the kernel will deny stack "
2051 "expansion and deliver a B<SIGSEGV> signal to the process."
2053 "B<MCL_FUTURE> が指定されていると、以後のシステムコール (例えば、 B<mmap>(2), "
2054 "B<sbrk>(2), B<malloc>(3)) は、ロックするバイト数が許可された最大値 (下記参"
2055 "照) を超えた場合に 失敗する可能性がある。 同様に、スタックの成長も失敗する可"
2056 "能性がある。 その場合、カーネルはスタックの拡張を拒否し、 B<SIGSEGV> をプロセ"
2060 #: build/C/man2/mlock.2:117
2062 "B<munlockall>() unlocks all pages mapped into the address space of the "
2065 "B<munlockall>() は、呼び出し元プロセスのアドレス空間にマッピングされている "
2069 #: build/C/man2/mlock.2:123
2071 "On success these system calls return 0. On error, -1 is returned, I<errno> "
2072 "is set appropriately, and no changes are made to any locks in the address "
2073 "space of the process."
2075 "成功した場合は、これらのシステムコールはゼロを返す。 エラーの場合は -1 が返さ"
2076 "れ、 I<errno> が適切に設定され、プロセスのアドレス空間におけるロックは変更さ"
2080 #: build/C/man2/mlock.2:132
2082 "(Linux 2.6.9 and later) the caller had a nonzero B<RLIMIT_MEMLOCK> soft "
2083 "resource limit, but tried to lock more memory than the limit permitted. "
2084 "This limit is not enforced if the process is privileged (B<CAP_IPC_LOCK>)."
2086 "(Linux 2.6.9 以降) 呼び出し元は非ゼロの ソフト資源制限 B<RLIMIT_MEMLOCK> を持"
2087 "つが、制限が許可している以上のメモリをロックしようとした。 この制限は、プロセ"
2088 "スが特権 (B<CAP_IPC_LOCK>) を持っている場合は適用されない。"
2090 #. In the case of mlock(), this check is somewhat buggy: it doesn't
2091 #. take into account whether the to-be-locked range overlaps with
2092 #. already locked pages. Thus, suppose we allocate
2093 #. (num_physpages / 4 + 1) of memory, and lock those pages once using
2094 #. mlock(), and then lock the *same* page range a second time.
2095 #. In the case, the second mlock() call will fail, since the check
2096 #. calculates that the process is trying to lock (num_physpages / 2 + 2)
2097 #. pages, which of course is not true. (MTK, Nov 04, kernel 2.4.28)
2099 #: build/C/man2/mlock.2:144
2101 "(Linux 2.4 and earlier) the calling process tried to lock more than half of "
2104 "(Linux 2.4 以前) 呼び出し元プロセスが RAM の半分以上をロックしようとした。"
2106 #. SVr4 documents an additional EAGAIN error code.
2108 #: build/C/man2/mlock.2:150
2110 "The caller is not privileged, but needs privilege (B<CAP_IPC_LOCK>) to "
2111 "perform the requested operation."
2115 #: build/C/man2/mlock.2:155
2116 msgid "For B<mlock>() and B<munlock>():"
2117 msgstr "B<mlock>() と B<munlock>() 用として:"
2120 #: build/C/man2/mlock.2:158
2121 msgid "Some or all of the specified address range could not be locked."
2122 msgstr "指定されたアドレス範囲の一部または全てをロックすることができなかった。"
2125 #: build/C/man2/mlock.2:165
2127 "The result of the addition I<start>+I<len> was less than I<start> (e.g., the "
2128 "addition may have resulted in an overflow)."
2132 #: build/C/man2/mlock.2:170
2133 msgid "(Not on Linux) I<addr> was not a multiple of the page size."
2135 "(Linux ではこの意味で使われない) I<addr> がページサイズの倍数ではない。"
2138 #: build/C/man2/mlock.2:174
2140 "Some of the specified address range does not correspond to mapped pages in "
2141 "the address space of the process."
2143 "指定されたアドレス範囲がプロセスのアドレス空間にマップされたページと 一致しな"
2147 #: build/C/man2/mlock.2:177
2148 msgid "For B<mlockall>():"
2149 msgstr "B<mlockall>() 用として:"
2152 #: build/C/man2/mlock.2:180
2153 msgid "Unknown I<flags> were specified."
2154 msgstr "未知の I<flags> が指定された。"
2157 #: build/C/man2/mlock.2:183
2158 msgid "For B<munlockall>():"
2159 msgstr "B<munlockall>() 用として:"
2162 #: build/C/man2/mlock.2:187
2164 "(Linux 2.6.8 and earlier) The caller was not privileged (B<CAP_IPC_LOCK>)."
2166 "(Linux 2.6.8 以前) 呼び出し元が権限 (B<CAP_IPC_LOCK>) を持っていない。"
2169 #: build/C/man2/mlock.2:189
2170 msgid "POSIX.1-2001, SVr4."
2171 msgstr "POSIX.1-2001, SVr4."
2174 #: build/C/man2/mlock.2:189 build/C/man2/mmap.2:487 build/C/man2/msync.2:105
2176 msgid "AVAILABILITY"
2180 #: build/C/man2/mlock.2:201
2182 "On POSIX systems on which B<mlock>() and B<munlock>() are available, "
2183 "B<_POSIX_MEMLOCK_RANGE> is defined in I<E<lt>unistd.hE<gt>> and the number "
2184 "of bytes in a page can be determined from the constant B<PAGESIZE> (if "
2185 "defined) in I<E<lt>limits.hE<gt>> or by calling I<sysconf(_SC_PAGESIZE)>."
2187 "B<mlock>() と B<munlock>() が使用可能な POSIX システムでは "
2188 "B<_POSIX_MEMLOCK_RANGE> が I<E<lt>unistd.hE<gt>> で定義されている。 また、"
2189 "ページあたりのバイト数は、 I<E<lt>limits.hE<gt>> で定義される定数 "
2190 "B<PAGESIZE> から (定義されている場合)、もしくは I<sysconf(_SC_PAGESIZE)> を呼"
2193 #. POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
2194 #. -1: unavailable, 0: ask using sysconf().
2195 #. glibc defines it to 1.
2197 #: build/C/man2/mlock.2:214
2199 "On POSIX systems on which B<mlockall>() and B<munlockall>() are available, "
2200 "B<_POSIX_MEMLOCK> is defined in I<E<lt>unistd.hE<gt>> to a value greater "
2201 "than 0. (See also B<sysconf>(3).)"
2203 "B<mlockall>() と B<munlockall>() が利用可能な POSIX システムでは、 "
2204 "B<_POSIX_MEMLOCK> は I<E<lt>unistd.hE<gt>> で 0 より大きい値に定義されている "
2205 "(B<sysconf>(3) も参照のこと)。"
2208 #: build/C/man2/mlock.2:232
2210 "Memory locking has two main applications: real-time algorithms and high-"
2211 "security data processing. Real-time applications require deterministic "
2212 "timing, and, like scheduling, paging is one major cause of unexpected "
2213 "program execution delays. Real-time applications will usually also switch "
2214 "to a real-time scheduler with B<sched_setscheduler>(2). Cryptographic "
2215 "security software often handles critical bytes like passwords or secret keys "
2216 "as data structures. As a result of paging, these secrets could be "
2217 "transferred onto a persistent swap store medium, where they might be "
2218 "accessible to the enemy long after the security software has erased the "
2219 "secrets in RAM and terminated. (But be aware that the suspend mode on "
2220 "laptops and some desktop computers will save a copy of the system's RAM to "
2221 "disk, regardless of memory locks.)"
2223 "メモリのロックの用途としては主に二つある: リアルタイム アルゴリズムと高いセ"
2224 "キュリティの必要なデータ処理である。リアルタイムの アプリケーションは決定的な"
2225 "タイミングやスケジューリングを必要とするが、 ページングは予期しないプログラム"
2226 "の実行遅延をもたらす主要な要因となる。 リアルタイムのアプリケーションはたいて"
2227 "いは B<sched_setscheduler>(2) でリアルタイムスケジューラに変更される。 暗号"
2228 "やセキュリティのソフトウェアはしばしばパスワードや秘密鍵のデータの ような重要"
2229 "なバイト列を扱う。ページングの結果、これらの秘密が スワップ用の固定媒体に転送"
2230 "されるかもしれない。そして、セキュリティ・ ソフトウェアが RAM 上の秘密を削除"
2231 "して終了したずっと後になっても、 このスワップされたデータには敵がアクセスでき"
2232 "る可能性がある (しかし、ラップトップといくつかのデスクトップコンピュータの サ"
2233 "スペンドモードはシステムの RAM の内容をメモリのロックに関わらず ディスクに保"
2237 #: build/C/man2/mlock.2:245
2239 "Real-time processes that are using B<mlockall>() to prevent delays on page "
2240 "faults should reserve enough locked stack pages before entering the time-"
2241 "critical section, so that no page fault can be caused by function calls. "
2242 "This can be achieved by calling a function that allocates a sufficiently "
2243 "large automatic variable (an array) and writes to the memory occupied by "
2244 "this array in order to touch these stack pages. This way, enough pages will "
2245 "be mapped for the stack and can be locked into RAM. The dummy writes ensure "
2246 "that not even copy-on-write page faults can occur in the critical section."
2248 "リアルタイムプロセスが B<mlockall>() を使ってページフォールトによる遅延を防"
2249 "ごうとする場合、 関数呼び出しによってページフォールトが発生しないように、 時"
2250 "間制限の厳しい部分 (time-critical section) に入る前に 十分な量のロックされた"
2251 "スタックを確保しておく必要がある。 これを実現するには、十分な大きさの自動変"
2252 "数 (の配列) を確保し、 これらのスタック用のページがメモリ上に確保されるように"
2253 "この配列に 書き込みを行う関数を用意し、これを呼び出せばよい。こうすること"
2254 "で、 十分な量のページがスタックにマッピングされ、RAM にロックされる。 ダミー"
2255 "の書き込みを行うことによって、 時間制限の厳しい部分 (critical section) 内では"
2256 "書き込み時コピーによる ページフォールトさえも発生しないことが保証される。"
2259 #: build/C/man2/mlock.2:251
2261 "Memory locks are not inherited by a child created via B<fork>(2) and are "
2262 "automatically removed (unlocked) during an B<execve>(2) or when the process "
2265 "メモリロックは B<fork>(2) で作成された子プロセスには継承されず、 B<execve>"
2266 "(2) が呼ばれたり、プロセスが終了した場合は 自動的に削除される (ロック解除さ"
2270 #: build/C/man2/mlock.2:255
2272 "The memory lock on an address range is automatically removed if the address "
2273 "range is unmapped via B<munmap>(2)."
2275 "あるアドレス範囲に対するメモリロックは、そのアドレス範囲が B<munmap>(2) に"
2276 "よってアンマップされた場合は削除される。"
2279 #: build/C/man2/mlock.2:268
2281 "Memory locks do not stack, that is, pages which have been locked several "
2282 "times by calls to B<mlock>() or B<mlockall>() will be unlocked by a single "
2283 "call to B<munlock>() for the corresponding range or by B<munlockall>(). "
2284 "Pages which are mapped to several locations or by several processes stay "
2285 "locked into RAM as long as they are locked at least at one location or by at "
2286 "least one process."
2288 "メモリのロックは累積しない。 すなわち複数回 B<mlock>() や B<mlockall>() を"
2289 "呼び出してロックされたページでも、 対応する範囲に対して B<munlock>() を 1 回"
2290 "呼び出したり B<munlockall>() を呼び出したりするだけでロック解除される。 複数"
2291 "の場所や複数のプロセスにマップされているページは、少なくとも一つの場所、 一つ"
2292 "のプロセスでロックされている限りは RAM に残り続ける。"
2295 #: build/C/man2/mlock.2:279
2297 "Under Linux, B<mlock>() and B<munlock>() automatically round I<addr> down "
2298 "to the nearest page boundary. However, POSIX.1-2001 allows an "
2299 "implementation to require that I<addr> is page aligned, so portable "
2300 "applications should ensure this."
2302 "Linux では、 B<mlock>() と B<munlock>() は自動的に I<addr> を端数切り捨てに"
2303 "より一番近いページ境界へと丸める。 しかし POSIX.1-2001 は I<addr> がページ境"
2304 "界に合っていることを要求する実装も許している。 そのため移植性を意図したアプリ"
2305 "ケーションではきちんと境界に合わせた方が良い。"
2308 #: build/C/man2/mlock.2:292
2310 "The I<VmLck> field of the Linux-specific I</proc/PID/status> file shows how "
2311 "many kilobytes of memory the process with ID I<PID> has locked using B<mlock>"
2312 "(), B<mlockall>(), and B<mmap>(2) B<MAP_LOCKED>."
2316 #: build/C/man2/mlock.2:292
2318 msgid "Limits and permissions"
2322 #: build/C/man2/mlock.2:299
2324 "In Linux 2.6.8 and earlier, a process must be privileged (B<CAP_IPC_LOCK>) "
2325 "in order to lock memory and the B<RLIMIT_MEMLOCK> soft resource limit "
2326 "defines a limit on how much memory the process may lock."
2328 "Linux 2.6.8 以前では、メモリをロックするためには特権 (B<CAP_IPC_LOCK>) が必"
2329 "要で、 ソフト資源制限 B<RLIMIT_MEMLOCK> はプロセスがどれだけのメモリをロック"
2333 #: build/C/man2/mlock.2:305
2335 "Since Linux 2.6.9, no limits are placed on the amount of memory that a "
2336 "privileged process can lock and the B<RLIMIT_MEMLOCK> soft resource limit "
2337 "instead defines a limit on how much memory an unprivileged process may lock."
2339 "Linux 2.6.9 以降では、特権を持つプロセスがロックできるメモリ量は無制限とな"
2340 "り、 代わりにソフト資源制限 B<RLIMIT_MEMLOCK> は特権を持たないプロセスがロッ"
2344 #: build/C/man2/mlock.2:313
2346 "In the 2.4 series Linux kernels up to and including 2.4.17, a bug caused the "
2347 "B<mlockall>() B<MCL_FUTURE> flag to be inherited across a B<fork>(2). This "
2348 "was rectified in kernel 2.4.18."
2350 "2.4.17 までの 2.4 シリーズの Linux カーネルには、 B<mlockall>() "
2351 "B<MCL_FUTURE> フラグが B<fork>(2) で継承されると言うバグがある。 これはカー"
2354 #. See the following LKML thread:
2355 #. http://marc.theaimsgroup.com/?l=linux-kernel&m=113801392825023&w=2
2356 #. "Rationale for RLIMIT_MEMLOCK"
2359 #: build/C/man2/mlock.2:330
2361 "Since kernel 2.6.9, if a privileged process calls I<mlockall(MCL_FUTURE)> "
2362 "and later drops privileges (loses the B<CAP_IPC_LOCK> capability by, for "
2363 "example, setting its effective UID to a nonzero value), then subsequent "
2364 "memory allocations (e.g., B<mmap>(2), B<brk>(2)) will fail if the "
2365 "B<RLIMIT_MEMLOCK> resource limit is encountered."
2367 "カーネル 2.6.9 以降では、特権を持ったプロセスが I<mlockall(MCL_FUTURE)> を呼"
2368 "び出した後で、特権をなくした場合 (例えば、 実効 UID を 0 以外の値に変更するな"
2369 "どにより、 B<CAP_IPC_LOCK> ケーパビリティを失った場合)、リソース上限 "
2370 "B<RLIMIT_MEMLOCK> に達すると、それ以降のメモリ割り当て (例えば B<mmap>(2), "
2374 #: build/C/man2/mlock.2:337
2377 #| "B<mmap>(2), B<setrlimit>(2), B<shmctl>(2), B<sysconf>(3), B<capabilities>"
2380 "B<mmap>(2), B<setrlimit>(2), B<shmctl>(2), B<sysconf>(3), B<proc>(5), "
2381 "B<capabilities>(7)"
2383 "B<mmap>(2), B<setrlimit>(2), B<shmctl>(2), B<sysconf>(3), B<capabilities>(7)"
2386 #: build/C/man2/mmap.2:40
2392 #: build/C/man2/mmap.2:40
2394 #| msgid "2010-06-10"
2399 #: build/C/man2/mmap.2:43
2400 msgid "mmap, munmap - map or unmap files or devices into memory"
2401 msgstr "mmap, munmap - ファイルやデバイスをメモリにマップ/アンマップする"
2404 #: build/C/man2/mmap.2:51
2407 "B<void *mmap(void *>I<addr>B<, size_t >I<length>B<, int >I<prot>B<, int >I<flags>B<,>\n"
2408 "B< int >I<fd>B<, off_t >I<offset>B<);>\n"
2409 "B<int munmap(void *>I<addr>B<, size_t >I<length>B<);>\n"
2411 "B<void *mmap(void *>I<addr>B<, size_t >I<length>B<, int >I<prot>B<, int >I<flags>B<,>\n"
2412 "B< int >I<fd>B<, off_t >I<offset>B<);>\n"
2413 "B<int munmap(void *>I<addr>B<, size_t >I<length>B<);>\n"
2416 #: build/C/man2/mmap.2:61
2418 "B<mmap>() creates a new mapping in the virtual address space of the calling "
2419 "process. The starting address for the new mapping is specified in I<addr>. "
2420 "The I<length> argument specifies the length of the mapping."
2422 "B<mmap>() は、新しいマッピングを呼び出し元プロセスの仮想アドレス空間に作成す"
2423 "る。 新しいマッピングの開始アドレスは I<addr> で指定される。マッピングの長さ"
2424 "は I<length> 引き数で指定される。"
2426 #. Before Linux 2.6.24, the address was rounded up to the next page
2427 #. boundary; since 2.6.24, it is rounded down!
2429 #: build/C/man2/mmap.2:75
2431 "If I<addr> is NULL, then the kernel chooses the address at which to create "
2432 "the mapping; this is the most portable method of creating a new mapping. If "
2433 "I<addr> is not NULL, then the kernel takes it as a hint about where to place "
2434 "the mapping; on Linux, the mapping will be created at a nearby page "
2435 "boundary. The address of the new mapping is returned as the result of the "
2438 "I<addr> が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。 こ"
2439 "の方法は最も移植性のある新しいマッピングの作成方法である。 I<addr> が NULL で"
2440 "ない場合、カーネルはマッピングをどこに配置するかのヒントとして I<addr> を使用"
2441 "する。Linux では、マッピングはすぐ近くのページ境界に作成される。 新しいマッピ"
2442 "ングのアドレスは、呼び出しの返り値として返される。"
2445 #: build/C/man2/mmap.2:87
2447 "The contents of a file mapping (as opposed to an anonymous mapping; see "
2448 "B<MAP_ANONYMOUS> below), are initialized using I<length> bytes starting at "
2449 "offset I<offset> in the file (or other object) referred to by the file "
2450 "descriptor I<fd>. I<offset> must be a multiple of the page size as returned "
2451 "by I<sysconf(_SC_PAGE_SIZE)>."
2453 "ファイルマッピングの内容は、 ファイルディスクリプタ I<fd> で参照されるファイ"
2454 "ル (もしくは他のオブジェクト) のオフセット I<offset> から開始される "
2455 "I<length> バイトのデータで初期化される (ファイルマッピングは無名マッピングの"
2456 "反対語である。 B<MAP_ANONYMOUS> を参照)。 I<offset> は I<sysconf"
2457 "(_SC_PAGE_SIZE)> が返すページサイズの倍数でなければならない。"
2460 #: build/C/man2/mmap.2:95
2462 "The I<prot> argument describes the desired memory protection of the mapping "
2463 "(and must not conflict with the open mode of the file). It is either "
2464 "B<PROT_NONE> or the bitwise OR of one or more of the following flags:"
2466 "引き数 I<prot> には、マッピングのメモリ保護をどのように行なうかを指定する "
2467 "(ファイルのオープンモードと矛盾してはいけない)。 I<prot> には、 B<PROT_NONE> "
2468 "か、以下のフラグをひとつ以上ビット毎の論理和 (OR) をとったものを 指定できる。"
2471 #: build/C/man2/mmap.2:95 build/C/man2/mprotect.2:67
2473 msgid "B<PROT_EXEC>"
2474 msgstr "B<PROT_EXEC>"
2477 #: build/C/man2/mmap.2:98
2478 msgid "Pages may be executed."
2479 msgstr "ページは実行可能である。"
2482 #: build/C/man2/mmap.2:98 build/C/man2/mprotect.2:61
2484 msgid "B<PROT_READ>"
2485 msgstr "B<PROT_READ>"
2488 #: build/C/man2/mmap.2:101
2489 msgid "Pages may be read."
2490 msgstr "ページは読み込み可能である。"
2493 #: build/C/man2/mmap.2:101 build/C/man2/mprotect.2:64
2495 msgid "B<PROT_WRITE>"
2496 msgstr "B<PROT_WRITE>"
2499 #: build/C/man2/mmap.2:104
2500 msgid "Pages may be written."
2501 msgstr "ページに書き込み可能である。"
2504 #: build/C/man2/mmap.2:104 build/C/man2/mprotect.2:58
2506 msgid "B<PROT_NONE>"
2507 msgstr "B<PROT_NONE>"
2510 #: build/C/man2/mmap.2:107
2511 msgid "Pages may not be accessed."
2512 msgstr "ページにはアクセスできない。"
2515 #: build/C/man2/mmap.2:116
2517 "The I<flags> argument determines whether updates to the mapping are visible "
2518 "to other processes mapping the same region, and whether updates are carried "
2519 "through to the underlying file. This behavior is determined by including "
2520 "exactly one of the following values in I<flags>:"
2522 "I<flags> 引き数により、マッピングに対する更新が同じ領域をマッピングしている "
2523 "他のプロセスに見えるか、更新がマッピング元のファイルを通じて 伝えられるか、が"
2524 "決定される。この動作は、以下の値のいずれか一つだけ (複数は指定できない) を "
2525 "I<flags> に含めることで指定する。"
2528 #: build/C/man2/mmap.2:116
2530 msgid "B<MAP_SHARED>"
2531 msgstr "B<MAP_SHARED>"
2534 #: build/C/man2/mmap.2:126
2536 "Share this mapping. Updates to the mapping are visible to other processes "
2537 "that map this file, and are carried through to the underlying file. The "
2538 "file may not actually be updated until B<msync>(2) or B<munmap>() is "
2541 "このマッピングを共有する。 マッピングに対する更新はこのファイルをマッピングし"
2542 "ている他のプロセス から見える。更新はマッピング元のファイルを通じて伝えられ"
2543 "る。 ただし、ファイルの実際の更新は B<msync>(2) または B<munmap>() が呼ばれ"
2547 #: build/C/man2/mmap.2:126
2549 msgid "B<MAP_PRIVATE>"
2550 msgstr "B<MAP_PRIVATE>"
2553 #: build/C/man2/mmap.2:135
2555 "Create a private copy-on-write mapping. Updates to the mapping are not "
2556 "visible to other processes mapping the same file, and are not carried "
2557 "through to the underlying file. It is unspecified whether changes made to "
2558 "the file after the B<mmap>() call are visible in the mapped region."
2560 "プライベートな copy-on-write (書き込み時コピー) マップを生成する。 マッピング"
2561 "に対する更新は同じファイルをマッピングしている他のプロセス には見えず、更新が"
2562 "マッピング元のファイルを通じて伝えられることもない。 B<mmap>() の呼び出し後"
2563 "にマッピング元のファイルに対して行われた変更が、 マップ領域に反映されるかどう"
2567 #: build/C/man2/mmap.2:137
2568 msgid "Both of these flags are described in POSIX.1-2001."
2569 msgstr "上記の二つのフラグは POSIX.1-2001 で規定されている。"
2572 #: build/C/man2/mmap.2:140
2574 "In addition, zero or more of the following values can be ORed in I<flags>:"
2576 "さらに、以下の値のうち 0 個以上をビット毎の論理和 (OR) で I<flags> に指定する"
2580 #: build/C/man2/mmap.2:140
2582 msgid "B<MAP_32BIT> (since Linux 2.4.20, 2.6)"
2583 msgstr "B<MAP_32BIT> (Linux 2.4.20, 2.6 以降)"
2585 #. See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
2587 #: build/C/man2/mmap.2:156
2589 "Put the mapping into the first 2 Gigabytes of the process address space. "
2590 "This flag is only supported on x86-64, for 64-bit programs. It was added to "
2591 "allow thread stacks to be allocated somewhere in the first 2GB of memory, so "
2592 "as to improve context-switch performance on some early 64-bit processors. "
2593 "Modern x86-64 processors no longer have this performance problem, so use of "
2594 "this flag is not required on those systems. The B<MAP_32BIT> flag is "
2595 "ignored when B<MAP_FIXED> is set."
2597 "マッピングをプロセスのアドレス空間の先頭 2 ギガバイト以内に配置する。 このフ"
2598 "ラグがサポートされているのは x86-64 アーキテクチャ上の 64 ビットプログラムの"
2599 "みである。 このフラグが追加されたのは、スレッドのスタックをメモリの先頭 2GB "
2600 "以内の どこかに割り当てることで、初期のいくつかの 64 ビットプロセッサにおけ"
2601 "る コンテキストスイッチの性能問題を改善するためである。 最近の x86-64 プロ"
2602 "セッサではこの性能問題はもはや存在せず、 そのようなシステムではこのフラグを使"
2603 "用する必要はない。 B<MAP_FIXED> がセットされている場合は、 B<MAP_32BIT> フラ"
2607 #: build/C/man2/mmap.2:156
2610 msgstr "B<MAP_ANON>"
2613 #: build/C/man2/mmap.2:161
2614 msgid "Synonym for B<MAP_ANONYMOUS>. Deprecated."
2615 msgstr "B<MAP_ANONYMOUS> の同義語。非推奨。"
2618 #: build/C/man2/mmap.2:161
2620 msgid "B<MAP_ANONYMOUS>"
2621 msgstr "B<MAP_ANONYMOUS>"
2624 #: build/C/man2/mmap.2:183
2626 "The mapping is not backed by any file; its contents are initialized to "
2627 "zero. The I<fd> and I<offset> arguments are ignored; however, some "
2628 "implementations require I<fd> to be -1 if B<MAP_ANONYMOUS> (or B<MAP_ANON>) "
2629 "is specified, and portable applications should ensure this. The use of "
2630 "B<MAP_ANONYMOUS> in conjunction with B<MAP_SHARED> is only supported on "
2631 "Linux since kernel 2.4."
2633 "マッピングはどのファイルとも関連付けされない。 マッピングの内容は 0 で初期化"
2634 "される。 引き数 I<fd> と I<offset> は無視される。 ただし、実装によっては "
2635 "B<MAP_ANONYMOUS> (もしくは B<MAP_ANON>) が指定された場合、 I<fd> を -1 にす"
2636 "る必要があり、 移植性が必要なアプリケーションでは必ず I<fd> を -1 にすべきで"
2637 "ある。 B<MAP_ANONYMOUS> と B<MAP_SHARED> を組み合わせての利用は カーネル 2.4 "
2638 "以降の Linux でのみサポートされている。"
2641 #: build/C/man2/mmap.2:183
2643 msgid "B<MAP_DENYWRITE>"
2644 msgstr "B<MAP_DENYWRITE>"
2646 #. Introduced in 1.1.36, removed in 1.3.24.
2648 #: build/C/man2/mmap.2:191
2650 "This flag is ignored. (Long ago, it signaled that attempts to write to the "
2651 "underlying file should fail with B<ETXTBUSY>. But this was a source of "
2652 "denial-of-service attacks.)"
2654 "このフラグは無視される (ずっと前は、マップ元のファイルへの書き込みを行おうと"
2655 "すると、エラー B<ETXTBUSY> で失敗するようにシグナルが設定されていたが、これ"
2656 "は denial-of-service (サービス拒否) 攻撃の原因となった)。"
2659 #: build/C/man2/mmap.2:191
2661 msgid "B<MAP_EXECUTABLE>"
2662 msgstr "B<MAP_EXECUTABLE>"
2664 #. Introduced in 1.1.38, removed in 1.3.24. Flag tested in proc_follow_link.
2665 #. (Long ago, it signaled that the underlying file is an executable.
2666 #. However, that information was not really used anywhere.)
2667 #. Linus talked about DOS related to MAP_EXECUTABLE, but he was thinking of
2670 #: build/C/man2/mmap.2:199
2671 msgid "This flag is ignored."
2672 msgstr "このフラグは無視される。"
2675 #: build/C/man2/mmap.2:199
2678 msgstr "B<MAP_FILE>"
2680 #. On some systems, this was required as the opposite of
2681 #. MAP_ANONYMOUS -- mtk, 1 May 2007
2683 #: build/C/man2/mmap.2:205
2684 msgid "Compatibility flag. Ignored."
2685 msgstr "互換性のためのフラグ。無視される。"
2688 #: build/C/man2/mmap.2:205
2690 msgid "B<MAP_FIXED>"
2691 msgstr "B<MAP_FIXED>"
2694 #: build/C/man2/mmap.2:223
2696 "Don't interpret I<addr> as a hint: place the mapping at exactly that "
2697 "address. I<addr> must be a multiple of the page size. If the memory region "
2698 "specified by I<addr> and I<len> overlaps pages of any existing mapping(s), "
2699 "then the overlapped part of the existing mapping(s) will be discarded. If "
2700 "the specified address cannot be used, B<mmap>() will fail. Because "
2701 "requiring a fixed address for a mapping is less portable, the use of this "
2702 "option is discouraged."
2704 "I<addr> をアドレスのヒントとして使用するのではなく、 I<addr> で指定されたアド"
2705 "レスをそのまま使用してマッピングを配置する。 I<addr> はページサイズの倍数でな"
2706 "ければならない。 I<addr> と I<len> で指定されたメモリ領域が既存のマッピングの"
2707 "ページと重なる場合、 既存のマッピングの重なった部分は捨てられる。 もし指定さ"
2708 "れたアドレスが使用できない場合、 B<mmap>() は失敗する。 マッピングに対して固"
2709 "定アドレスを要求するのは移植性の面で劣るので、 このオプションは使用しないこと"
2713 #: build/C/man2/mmap.2:223
2715 msgid "B<MAP_GROWSDOWN>"
2716 msgstr "B<MAP_GROWSDOWN>"
2719 #: build/C/man2/mmap.2:228
2722 #| "Used for stacks. Indicates to the kernel virtual memory system that the "
2723 #| "mapping should extend downwards in memory."
2725 "Used for stacks. Indicates to the kernel virtual memory system that the "
2726 "mapping should extend downward in memory."
2728 "スタック用に使用される。マッピングをメモリ内で逆向きに行うことを カーネル仮想"
2729 "メモリシステムに指示する。 (訳注:マッピングは通常はメモリ・アドレスが増加す"
2730 "る向きに行うが、 このオプションを指定すると逆向きにマッピングを行う)"
2733 #: build/C/man2/mmap.2:228
2735 msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
2736 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
2739 #: build/C/man2/mmap.2:234
2741 "Allocate the mapping using \"huge pages.\" See the kernel source file "
2742 "I<Documentation/vm/hugetlbpage.txt> for further information."
2744 "\"huge page\" を使ってマッピングを割り当てる。 詳しい情報は、カーネル・ソース"
2745 "の I<Documentation/vm/hugetlbpage.txt> を参照。"
2748 #: build/C/man2/mmap.2:234
2750 msgid "B<MAP_LOCKED> (since Linux 2.5.37)"
2751 msgstr "B<MAP_LOCKED> (Linux 2.5.37 以降)"
2753 #. If set, the mapped pages will not be swapped out.
2755 #: build/C/man2/mmap.2:240
2757 "Lock the pages of the mapped region into memory in the manner of B<mlock>"
2758 "(2). This flag is ignored in older kernels."
2760 "マップされた領域のページを B<mlock>(2) の方法でメモリ内にロックする。 それ以"
2761 "前のカーネルでは、このフラグは無視される。"
2764 #: build/C/man2/mmap.2:240
2766 msgid "B<MAP_NONBLOCK> (since Linux 2.5.46)"
2767 msgstr "B<MAP_NONBLOCK> (Linux 2.5.46 以降)"
2770 #: build/C/man2/mmap.2:255
2772 "Only meaningful in conjunction with B<MAP_POPULATE>. Don't perform read-"
2773 "ahead: only create page tables entries for pages that are already present in "
2774 "RAM. Since Linux 2.6.23, this flag causes B<MAP_POPULATE> to do nothing. "
2775 "One day the combination of B<MAP_POPULATE> and B<MAP_NONBLOCK> may be "
2778 "B<MAP_POPULATE> と組み合わせた場合のみ意味を持つ。 read-ahead (前もって読み込"
2779 "むこと) を実行しない。 単に、すでに RAM 上に存在するページに対して ページテー"
2780 "ブルエントリを作成するだけである。 Linux 2.6.23 以降では、このフラグは "
2781 "B<MAP_POPULATE> に何の影響も与えない。 いつか B<MAP_POPULATE> と "
2782 "B<MAP_NONBLOCK> を組み合わせた場合の動作は実装し直されるかもしれない。"
2785 #: build/C/man2/mmap.2:255
2787 msgid "B<MAP_NORESERVE>"
2788 msgstr "B<MAP_NORESERVE>"
2791 #: build/C/man2/mmap.2:270
2793 "Do not reserve swap space for this mapping. When swap space is reserved, "
2794 "one has the guarantee that it is possible to modify the mapping. When swap "
2795 "space is not reserved one might get B<SIGSEGV> upon a write if no physical "
2796 "memory is available. See also the discussion of the file I</proc/sys/vm/"
2797 "overcommit_memory> in B<proc>(5). In kernels before 2.6, this flag only had "
2798 "effect for private writable mappings."
2800 "このマッピングに対するスワップ空間の予約を行わない。 スワップ空間を予約した場"
2801 "合は、このマッピングの変更が必ず可能なことが 保証される。予約を行わなかった場"
2802 "合、物理メモリに空きがないと 書き込み時に B<SIGSEGV> エラーを受け取ることがあ"
2803 "る。 B<proc>(5) の I</proc/sys/vm/overcommit_memory> ファイルについての議論"
2804 "も参照。 バージョン 2.6 より前のカーネルでは、このフラグは書き込み可能な プラ"
2805 "イベート・マッピングについてのみ効果があった。"
2808 #: build/C/man2/mmap.2:270
2810 msgid "B<MAP_POPULATE> (since Linux 2.5.46)"
2811 msgstr "B<MAP_POPULATE> (Linux 2.5.46 以降)"
2814 #: build/C/man2/mmap.2:277
2816 "Populate (prefault) page tables for a mapping. For a file mapping, this "
2817 "causes read-ahead on the file. Later accesses to the mapping will not be "
2818 "blocked by page faults. B<MAP_POPULATE> is only supported for private "
2819 "mappings since Linux 2.6.23."
2821 "マッピング用のページテーブルを配置 (populate) する ファイルマッピングの場合に"
2822 "は、これによりファイルが先読み (read-ahead) が行われる。この以後は、マッピン"
2823 "グに対するアクセスがページフォールトで ブロックされることがなくなる。 "
2824 "B<MAP_POPULATE> は Linux 2.6.23 以降でプライベート・マッピングについてのみ サ"
2828 #: build/C/man2/mmap.2:277
2830 msgid "B<MAP_STACK> (since Linux 2.6.27)"
2831 msgstr "B<MAP_STACK> (Linux 2.6.27 以降)"
2833 #. See http://lwn.net/Articles/294642 "Tangled up in threads", 19 Aug 08
2834 #. commit cd98a04a59e2f94fa64d5bf1e26498d27427d5e7
2835 #. http://thread.gmane.org/gmane.linux.kernel/720412
2836 #. "pthread_create() slow for many threads; also time to revisit 64b
2837 #. context switch optimization?"
2839 #: build/C/man2/mmap.2:290
2841 "Allocate the mapping at an address suitable for a process or thread stack. "
2842 "This flag is currently a no-op, but is used in the glibc threading "
2843 "implementation so that if some architectures require special treatment for "
2844 "stack allocations, support can later be transparently implemented for glibc."
2846 "プロセスやスレッドのスタックに適したアドレスにマッピングを割り当てる。 現在の"
2847 "ところ、このフラグは何もしないが、 glibc のスレッド実装では使用されている。 "
2848 "これは、いくつかのアーキテクチャではスタックの割り当てに関して特別な扱い が必"
2849 "要な場合に、glibc にそのサポートを後で透過的に実装できるようにする ためであ"
2853 #: build/C/man2/mmap.2:290
2855 #| msgid "B<MAP_HUGETLB> (since Linux 2.6.32)"
2856 msgid "B<MAP_UNINITIALIZED> (since Linux 2.6.33)"
2857 msgstr "B<MAP_HUGETLB> (Linux 2.6.32 以降)"
2860 #: build/C/man2/mmap.2:300
2862 "Don't clear anonymous pages. This flag is intended to improve performance "
2863 "on embedded devices. This flag is only honored if the kernel was configured "
2864 "with the B<CONFIG_MMAP_ALLOW_UNINITIALIZED> option. Because of the security "
2865 "implications, that option is normally enabled only on embedded devices (i."
2866 "e., devices where one has complete control of the contents of user memory)."
2870 #: build/C/man2/mmap.2:308
2872 "Of the above flags, only B<MAP_FIXED> is specified in POSIX.1-2001. "
2873 "However, most systems also support B<MAP_ANONYMOUS> (or its synonym "
2876 "上記のフラグの中では、 B<MAP_FIXED> だけが POSIX.1-2001 で規定されている。 し"
2877 "かしながら、ほとんどのシステムで B<MAP_ANONYMOUS> (またはその同義語である "
2878 "B<MAP_ANON>) もサポートされている。"
2881 #: build/C/man2/mmap.2:315
2883 "Some systems document the additional flags B<MAP_AUTOGROW>, "
2884 "B<MAP_AUTORESRV>, B<MAP_COPY>, and B<MAP_LOCAL>."
2886 "いくつかのシステムでは、上記以外にフラグとして B<MAP_AUTOGROW>, "
2887 "B<MAP_AUTORESRV>, B<MAP_COPY>, B<MAP_LOCAL> が規定されている。"
2890 #: build/C/man2/mmap.2:321
2892 "Memory mapped by B<mmap>() is preserved across B<fork>(2), with the same "
2895 "B<mmap>() によってマップされたメモリの属性は B<fork>(2) の際に継承される。"
2898 #: build/C/man2/mmap.2:329
2900 "A file is mapped in multiples of the page size. For a file that is not a "
2901 "multiple of the page size, the remaining memory is zeroed when mapped, and "
2902 "writes to that region are not written out to the file. The effect of "
2903 "changing the size of the underlying file of a mapping on the pages that "
2904 "correspond to added or removed regions of the file is unspecified."
2906 "ファイルはページサイズの整数倍の領域にマップされる。サイズがページサイズの 整"
2907 "数倍でないファイルの場合、マップ時に残りの領域は 0 で埋められ、この領域へ 書"
2908 "きこみを行ってもファイルに書き出されることはない。マッピングを行った元 ファイ"
2909 "ルのサイズを変更した場合、元ファイルの追加されたり削除された領域に対応 する"
2910 "マップされたページに対してどのような影響があるかは規定されていない。"
2913 #: build/C/man2/mmap.2:329
2919 #: build/C/man2/mmap.2:339
2921 "The B<munmap>() system call deletes the mappings for the specified address "
2922 "range, and causes further references to addresses within the range to "
2923 "generate invalid memory references. The region is also automatically "
2924 "unmapped when the process is terminated. On the other hand, closing the "
2925 "file descriptor does not unmap the region."
2927 "システムコール B<munmap>() は指定されたアドレス範囲のマップを消去し、 これ以"
2928 "降のその範囲内へのメモリ参照は不正となる。 この領域は、プロセスが終了したとき"
2929 "にも自動的にアンマップされる。 一方、ファイル記述子をクローズしても、この領域"
2933 #: build/C/man2/mmap.2:349
2935 "The address I<addr> must be a multiple of the page size. All pages "
2936 "containing a part of the indicated range are unmapped, and subsequent "
2937 "references to these pages will generate B<SIGSEGV>. It is not an error if "
2938 "the indicated range does not contain any mapped pages."
2940 "I<addr> アドレスはページサイズの整数倍でなければならない。指定された範囲の一"
2941 "部分を 含む全てのページはアンマップされ、これ以降にこれらのページへの参照があ"
2942 "ると B<SIGSEGV> が発生する。 指定した範囲内にマップされたページが一つも含まれ"
2943 "ていない場合でも エラーにならない。"
2946 #: build/C/man2/mmap.2:349
2948 msgid "Timestamps changes for file-backed mappings"
2949 msgstr "ファイルと関連付けられたマッピングに対するタイムスタンプの更新"
2952 #: build/C/man2/mmap.2:356
2954 "For file-backed mappings, the I<st_atime> field for the mapped file may be "
2955 "updated at any time between the B<mmap>() and the corresponding unmapping; "
2956 "the first reference to a mapped page will update the field if it has not "
2959 "ファイルと関連付けられたマッピングの場合、マッピングされたファイルの "
2960 "I<st_atime> フィールドは、 B<mmap>() されてからアンマップ (unmap) されるまで"
2961 "の間に更新されることがある。 それまでに更新が行われていなければ、マップされた"
2962 "ページへの最初の参照があった 際に更新される。"
2965 #: build/C/man2/mmap.2:373
2967 "The I<st_ctime> and I<st_mtime> field for a file mapped with B<PROT_WRITE> "
2968 "and B<MAP_SHARED> will be updated after a write to the mapped region, and "
2969 "before a subsequent B<msync>(2) with the B<MS_SYNC> or B<MS_ASYNC> flag, if "
2972 "B<PROT_WRITE> と B<MAP_SHARED> の両方を指定してマップされたファイルの場合、書"
2973 "き込みがあると、 I<st_ctime> と I<st_mtime> の両フィールドは、マップされた領"
2974 "域への書き込みより後で、 B<MS_SYNC> または B<MS_ASYNC> フラグを指定して "
2975 "B<msync>(2) が呼ばれる前までに更新される。"
2978 #: build/C/man2/mmap.2:390
2980 "On success, B<mmap>() returns a pointer to the mapped area. On error, the "
2981 "value B<MAP_FAILED> (that is, I<(void\\ *)\\ -1>) is returned, and I<errno> "
2982 "is set appropriately. On success, B<munmap>() returns 0, on failure -1, "
2983 "and I<errno> is set (probably to B<EINVAL>)."
2985 "B<mmap>() は成功するとマップされた領域へのポインタを返す。 失敗すると値 "
2986 "B<MAP_FAILED> (つまり I<(void\\ *)\\ -1>) を返し、 I<errno> がエラーの内容に"
2987 "したがってセットされる。 B<munmap>() は成功すると 0 を返す。失敗すると -1 を"
2988 "返し、 I<errno> がセットされる (多くの場合 B<EINVAL> になるだろう)。"
2991 #: build/C/man2/mmap.2:391 build/C/man2/mprotect.2:80
2992 #: build/C/man3/shm_open.3:185 build/C/man3/shm_open.3:190
2993 #: build/C/man2/shmctl.2:295 build/C/man2/shmget.2:186
2994 #: build/C/man2/shmop.2:189
3000 #: build/C/man2/mmap.2:411
3002 "A file descriptor refers to a non-regular file. Or B<MAP_PRIVATE> was "
3003 "requested, but I<fd> is not open for reading. Or B<MAP_SHARED> was "
3004 "requested and B<PROT_WRITE> is set, but I<fd> is not open in read/write "
3005 "(B<O_RDWR>) mode. Or B<PROT_WRITE> is set, but the file is append-only."
3007 "以下のいずれかの場合。 ファイル記述子の参照先が通常のファイルではない (non-"
3008 "regular file) 。 B<MAP_PRIVATE> を要求したが I<fd> は読み込み用にオープンされ"
3009 "ていない。 B<MAP_SHARED> を要求して B<PROT_WRITE> をセットしたが I<fd> は読み"
3010 "書きモード (B<O_RDWR>) でオープンされていない、 B<PROT_WRITE> をセットした"
3011 "が、ファイルは追加 (append) 専用である。"
3014 #: build/C/man2/mmap.2:415
3016 "The file has been locked, or too much memory has been locked (see "
3019 "ファイルがロックされている。またはロックされているメモリが多すぎる "
3020 "(B<setrlimit>(2) を参照)。"
3023 #: build/C/man2/mmap.2:421
3025 "I<fd> is not a valid file descriptor (and B<MAP_ANONYMOUS> was not set)."
3027 "I<fd> が有効なファイル記述子 (file descriptor) ではない (かつ "
3028 "B<MAP_ANONYMOUS> がセットされていない)。"
3031 #: build/C/man2/mmap.2:429
3033 "We don't like I<addr>, I<length>, or I<offset> (e.g., they are too large, or "
3034 "not aligned on a page boundary)."
3036 "I<addr> か I<length> か I<offset> が適切でない (例えば、大きすぎるとか、ペー"
3037 "ジ境界にアラインメントされていない)。"
3040 #: build/C/man2/mmap.2:434
3041 msgid "(since Linux 2.6.12) I<length> was 0."
3042 msgstr "(Linux 2.6.12 以降) I<length> が 0 であった。"
3045 #: build/C/man2/mmap.2:442
3047 "I<flags> contained neither B<MAP_PRIVATE> or B<MAP_SHARED>, or contained "
3048 "both of these values."
3050 "I<flags> に B<MAP_PRIVATE> と B<MAP_SHARED> のどちらも含まれていなかった、も"
3054 #: build/C/man2/mmap.2:442 build/C/man3/shm_open.3:227
3055 #: build/C/man2/shmget.2:202
3060 #. [2.6.7] shmem_zero_setup()-->shmem_file_setup()-->get_empty_filp()
3062 #: build/C/man2/mmap.2:450 build/C/man2/shmget.2:206
3063 msgid "The system limit on the total number of open files has been reached."
3064 msgstr "システム全体でオープンされているファイルの総数が上限に達した。"
3067 #: build/C/man2/mmap.2:454
3069 "The underlying file system of the specified file does not support memory "
3072 "指定されたファイルが置かれているファイルシステムがメモリマッピングをサポート "
3076 #: build/C/man2/mmap.2:458
3078 "No memory is available, or the process's maximum number of mappings would "
3079 "have been exceeded."
3081 "メモリに空きがない、または処理中のプロセスのマッピング数が最大数を超過した。"
3083 #. (Since 2.4.25 / 2.6.0.)
3085 #: build/C/man2/mmap.2:467
3087 "The I<prot> argument asks for B<PROT_EXEC> but the mapped area belongs to a "
3088 "file on a file system that was mounted no-exec."
3090 "I<prot> 引き数は B<PROT_EXEC> を行うように指定されているが、 no-exec でマウン"
3091 "トされたファイルシステム上のファイルに マップ領域が対応している。"
3094 #: build/C/man2/mmap.2:467
3100 #: build/C/man2/mmap.2:473
3102 "B<MAP_DENYWRITE> was set but the object specified by I<fd> is open for "
3105 "B<MAP_DENYWRITE> がセットされているが I<fd> で指定されているオブジェクトは書"
3109 #: build/C/man2/mmap.2:475
3110 msgid "Use of a mapped region can result in these signals:"
3111 msgstr "マップ領域を利用する際に、以下のシグナルが発生することがある:"
3114 #: build/C/man2/mmap.2:475
3120 #: build/C/man2/mmap.2:478
3121 msgid "Attempted write into a region mapped as read-only."
3122 msgstr "読み込み専用で mmap された領域へ書き込みを行おうとした。"
3125 #: build/C/man2/mmap.2:478
3131 #: build/C/man2/mmap.2:483
3133 "Attempted access to a portion of the buffer that does not correspond to the "
3134 "file (for example, beyond the end of the file, including the case where "
3135 "another process has truncated the file)."
3137 "バッファのうち、ファイルに関連づけられていない部分 (例えばファイル末尾を越え"
3138 "た部分など。これには 他のプロセスがファイルを切り詰めた場合なども含まれる) "
3141 #. SVr4 documents additional error codes ENXIO and ENODEV.
3142 #. SUSv2 documents additional error codes EMFILE and EOVERFLOW.
3144 #: build/C/man2/mmap.2:487
3145 msgid "SVr4, 4.4BSD, POSIX.1-2001."
3146 msgstr "SVr4, 4.4BSD, POSIX.1-2001."
3148 #. POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
3149 #. -1: unavailable, 0: ask using sysconf().
3150 #. glibc defines it to 1.
3152 #: build/C/man2/mmap.2:501
3154 "On POSIX systems on which B<mmap>(), B<msync>(2) and B<munmap>() are "
3155 "available, B<_POSIX_MAPPED_FILES> is defined in I<E<lt>unistd.hE<gt>> to a "
3156 "value greater than 0. (See also B<sysconf>(3).)"
3158 "B<mmap>(), B<msync>(2) B<munmap>() が利用可能な POSIX システムでは、 "
3159 "B<_POSIX_MAPPED_FILES> は E<lt>unistd.hE<gt> で 0 より大きな値に定義される "
3160 "(B<sysconf>(3) も参照のこと)。"
3162 #. Since around glibc 2.1/2.2, depending on the platform.
3164 #: build/C/man2/mmap.2:512
3166 "Since kernel 2.4, this system call has been superseded by B<mmap2>(2). "
3167 "Nowadays, the glibc B<mmap>() wrapper function invokes B<mmap2>(2) with a "
3168 "suitably adjusted value for I<offset>."
3170 "カーネル 2.4 以降、このシステムコールは B<mmap2>(2) に取って代わられた。 現"
3171 "在では、 glibc の B<mmap>() のラッパー関数は I<offset> を適切に調整してから "
3172 "B<mmap2>(2) を起動する。"
3175 #: build/C/man2/mmap.2:525
3177 "On some hardware architectures (e.g., i386), B<PROT_WRITE> implies "
3178 "B<PROT_READ>. It is architecture dependent whether B<PROT_READ> implies "
3179 "B<PROT_EXEC> or not. Portable programs should always set B<PROT_EXEC> if "
3180 "they intend to execute code in the new mapping."
3182 "(i386 などの) いくつかのアーキテクチャでは、 B<PROT_WRITE> をセットすると、暗"
3183 "黙のうちに B<PROT_READ> がセットされる。 B<PROT_READ> をセットした際に暗黙の"
3184 "うちに B<PROT_EXEC> がセットされるかどうかは、アーキテクチャ依存である。 移植"
3185 "性を考慮したプログラムでは、 新規にマップした領域でコードを実行したい場合は、"
3186 "常に B<PROT_EXEC> をセットすべきである。"
3189 #: build/C/man2/mmap.2:540
3191 "The portable way to create a mapping is to specify I<addr> as 0 (NULL), and "
3192 "omit B<MAP_FIXED> from I<flags>. In this case, the system chooses the "
3193 "address for the mapping; the address is chosen so as not to conflict with "
3194 "any existing mapping, and will not be 0. If the B<MAP_FIXED> flag is "
3195 "specified, and I<addr> is 0 (NULL), then the mapped address will be 0 (NULL)."
3197 "マッピングを作成する移植性のある方法は、 I<addr> に 0 (NULL) を指定し、 "
3198 "I<flags> から B<MAP_FIXED> を外すことである。 この場合、システムがマッピング"
3199 "用のアドレスの選択を行う。 アドレスは既存のマッピングと衝突しないように、 か"
3200 "つ 0 にならないように選択される。 B<MAP_FIXED> フラグが指定され、かつ "
3201 "I<addr> が 0 (NULL) の場合には、マップされるアドレスが 0 (NULL) になる。"
3204 #: build/C/man2/mmap.2:545
3206 "On Linux there are no guarantees like those suggested above under "
3207 "B<MAP_NORESERVE>. By default, any process can be killed at any moment when "
3208 "the system runs out of memory."
3210 "Linux においては、上記の B<MAP_NORESERVE> で述べられているような保証はない。 "
3211 "デフォルトでは、システムがメモリを使い切った場合には、 どのプロセスがいつ強制"
3215 #: build/C/man2/mmap.2:552
3217 "In kernels before 2.6.7, the B<MAP_POPULATE> flag only has effect if I<prot> "
3218 "is specified as B<PROT_NONE>."
3220 "2.6.7 より前のカーネルでは、 I<prot> に B<PROT_NONE> が指定された場合にの"
3221 "み、 B<MAP_POPULATE> フラグが効力を持つ。"
3224 #: build/C/man2/mmap.2:567
3226 "SUSv3 specifies that B<mmap>() should fail if I<length> is 0. However, in "
3227 "kernels before 2.6.12, B<mmap>() succeeded in this case: no mapping was "
3228 "created and the call returned I<addr>. Since kernel 2.6.12, B<mmap>() "
3229 "fails with the error B<EINVAL> for this case."
3231 "SUSv3 では、 I<length> が 0 の場合、 B<mmap>() は失敗すると規定されている。"
3232 "しかしながら、2.6.12 より前のカーネルでは、 この場合に B<mmap>() は成功して"
3233 "いた (マッピングは作成されず、 I<addr> が返されていた)。 カーネル 2.6.12 以降"
3234 "では、 B<mmap>() はエラー B<EINVAL> で失敗する。"
3237 #: build/C/man2/mmap.2:579
3239 "The following program prints part of the file specified in its first command-"
3240 "line argument to standard output. The range of bytes to be printed is "
3241 "specified via offset and length values in the second and third command-line "
3242 "arguments. The program creates a memory mapping of the required pages of "
3243 "the file and then uses B<write>(2) to output the desired bytes."
3245 "以下のプログラムは、一番目のコマンドライン引き数で指定された ファイルの一部を"
3246 "標準出力に表示する。 表示する範囲は、二番目、三番目のコマンドライン引き数で渡"
3247 "される オフセットと長さで指定される。 このプログラムは、指定されたファイルの"
3248 "必要なページのメモリ・ マッピングを作成し、 B<write>(2) を使って所望のバイト"
3252 #: build/C/man2/mmap.2:587
3255 "#include E<lt>sys/mman.hE<gt>\n"
3256 "#include E<lt>sys/stat.hE<gt>\n"
3257 "#include E<lt>fcntl.hE<gt>\n"
3258 "#include E<lt>stdio.hE<gt>\n"
3259 "#include E<lt>stdlib.hE<gt>\n"
3260 "#include E<lt>unistd.hE<gt>\n"
3262 "#include E<lt>sys/mman.hE<gt>\n"
3263 "#include E<lt>sys/stat.hE<gt>\n"
3264 "#include E<lt>fcntl.hE<gt>\n"
3265 "#include E<lt>stdio.hE<gt>\n"
3266 "#include E<lt>stdlib.hE<gt>\n"
3267 "#include E<lt>unistd.hE<gt>\n"
3270 #: build/C/man2/mmap.2:590 build/C/man2/mprotect.2:172
3273 "#define handle_error(msg) \\e\n"
3274 " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
3276 "#define handle_error(msg) \\e\n"
3277 " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
3280 #: build/C/man2/mmap.2:600
3284 "main(int argc, char *argv[])\n"
3288 " struct stat sb;\n"
3289 " off_t offset, pa_offset;\n"
3294 "main(int argc, char *argv[])\n"
3298 " struct stat sb;\n"
3299 " off_t offset, pa_offset;\n"
3304 #: build/C/man2/mmap.2:605
3307 " if (argc E<lt> 3 || argc E<gt> 4) {\n"
3308 " fprintf(stderr, \"%s file offset [length]\\en\", argv[0]);\n"
3309 " exit(EXIT_FAILURE);\n"
3312 " if (argc E<lt> 3 || argc E<gt> 4) {\n"
3313 " fprintf(stderr, \"%s file offset [length]\\en\", argv[0]);\n"
3314 " exit(EXIT_FAILURE);\n"
3318 #: build/C/man2/mmap.2:609
3321 " fd = open(argv[1], O_RDONLY);\n"
3323 " handle_error(\"open\");\n"
3325 " fd = open(argv[1], O_RDONLY);\n"
3327 " handle_error(\"open\");\n"
3330 #: build/C/man2/mmap.2:612
3333 " if (fstat(fd, &sb) == -1) /* To obtain file size */\n"
3334 " handle_error(\"fstat\");\n"
3336 " if (fstat(fd, &sb) == -1) /* To obtain file size */\n"
3337 " handle_error(\"fstat\");\n"
3340 #: build/C/man2/mmap.2:616
3343 " offset = atoi(argv[2]);\n"
3344 " pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1);\n"
3345 " /* offset for mmap() must be page aligned */\n"
3347 " offset = atoi(argv[2]);\n"
3348 " pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1);\n"
3349 " /* offset for mmap() must be page aligned */\n"
3352 #: build/C/man2/mmap.2:621
3355 " if (offset E<gt>= sb.st_size) {\n"
3356 " fprintf(stderr, \"offset is past end of file\\en\");\n"
3357 " exit(EXIT_FAILURE);\n"
3360 " if (offset E<gt>= sb.st_size) {\n"
3361 " fprintf(stderr, \"offset is past end of file\\en\");\n"
3362 " exit(EXIT_FAILURE);\n"
3366 #: build/C/man2/mmap.2:627
3369 " if (argc == 4) {\n"
3370 " length = atoi(argv[3]);\n"
3371 " if (offset + length E<gt> sb.st_size)\n"
3372 " length = sb.st_size - offset;\n"
3373 " /* Can\\(aqt display bytes past end of file */\n"
3375 " if (argc == 4) {\n"
3376 " length = atoi(argv[3]);\n"
3377 " if (offset + length E<gt> sb.st_size)\n"
3378 " length = sb.st_size - offset;\n"
3379 " /* Can\\(aqt display bytes past end of file */\n"
3382 #: build/C/man2/mmap.2:631
3385 " } else { /* No length arg ==E<gt> display to end of file */\n"
3386 " length = sb.st_size - offset;\n"
3389 " } else { /* No length arg ==E<gt> display to end of file */\n"
3390 " length = sb.st_size - offset;\n"
3394 #: build/C/man2/mmap.2:636
3397 " addr = mmap(NULL, length + offset - pa_offset, PROT_READ,\n"
3398 " MAP_PRIVATE, fd, pa_offset);\n"
3399 " if (addr == MAP_FAILED)\n"
3400 " handle_error(\"mmap\");\n"
3402 " addr = mmap(NULL, length + offset - pa_offset, PROT_READ,\n"
3403 " MAP_PRIVATE, fd, pa_offset);\n"
3404 " if (addr == MAP_FAILED)\n"
3405 " handle_error(\"mmap\");\n"
3408 #: build/C/man2/mmap.2:641
3411 " s = write(STDOUT_FILENO, addr + offset - pa_offset, length);\n"
3412 " if (s != length) {\n"
3414 " handle_error(\"write\");\n"
3416 " s = write(STDOUT_FILENO, addr + offset - pa_offset, length);\n"
3417 " if (s != length) {\n"
3419 " handle_error(\"write\");\n"
3422 #: build/C/man2/mmap.2:645
3425 " fprintf(stderr, \"partial write\");\n"
3426 " exit(EXIT_FAILURE);\n"
3429 " fprintf(stderr, \"partial write\");\n"
3430 " exit(EXIT_FAILURE);\n"
3434 #: build/C/man2/mmap.2:648
3437 #| " exit(EXIT_SUCCESS);\n"
3440 " exit(EXIT_SUCCESS);\n"
3443 " exit(EXIT_SUCCESS);\n"
3447 #: build/C/man2/mmap.2:662
3449 "B<getpagesize>(2), B<mincore>(2), B<mlock>(2), B<mmap2>(2), B<mprotect>(2), "
3450 "B<mremap>(2), B<msync>(2), B<remap_file_pages>(2), B<setrlimit>(2), B<shmat>"
3451 "(2), B<shm_open>(3), B<shm_overview>(7)"
3453 "B<getpagesize>(2), B<mincore>(2), B<mlock>(2), B<mmap2>(2), B<mprotect>(2), "
3454 "B<mremap>(2), B<msync>(2), B<remap_file_pages>(2), B<setrlimit>(2), B<shmat>"
3455 "(2), B<shm_open>(3), B<shm_overview>(7)"
3458 #: build/C/man2/mmap.2:667 build/C/man2/msync.2:122
3459 msgid "B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391."
3460 msgstr "B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391."
3463 #: build/C/man2/mmap2.2:29
3469 #: build/C/man2/mmap2.2:29 build/C/man2/msync.2:25
3470 #: build/C/man2/remap_file_pages.2:26
3476 #: build/C/man2/mmap2.2:32
3477 msgid "mmap2 - map files or devices into memory"
3478 msgstr "mmap2 - ファイルやデバイスをメモリにマップする"
3481 #: build/C/man2/mmap2.2:38
3484 "B<void *mmap2(void *>I<addr>B<, size_t >I<length>B<, int >I<prot>B<,>\n"
3485 "B< int >I<flags>B<, int >I<fd>B<, off_t >I<pgoffset>B<);>\n"
3487 "B<void *mmap2(void *>I<addr>B<, size_t >I<length>B<, int >I<prot>B<,>\n"
3488 "B< int >I<flags>B<, int >I<fd>B<, off_t >I<pgoffset>B<);>\n"
3491 #: build/C/man2/mmap2.2:50
3493 "The B<mmap2>() system call operates in exactly the same way as B<mmap>(2), "
3494 "except that the final argument specifies the offset into the file in 4096-"
3495 "byte units (instead of bytes, as is done by B<mmap>(2)). This enables "
3496 "applications that use a 32-bit I<off_t> to map large files (up to 2^44 "
3499 "B<mmap2>() システムコールは B<mmap>(2) と全く同じように動作する。 ただし最"
3500 "後の引き数には、ファイルのオフセットを (B<mmap>(2) が行っている、バイト単位"
3501 "ではなく) 4096 バイトを単位として指定する。 これにより、32 ビットの "
3502 "I<off_t> を使うアプリケーションで (2^44 バイトまでの) 大きなファイルをマップ"
3506 #: build/C/man2/mmap2.2:57
3508 "On success, B<mmap2>() returns a pointer to the mapped area. On error -1 "
3509 "is returned and I<errno> is set appropriately."
3511 "成功した場合、 B<mmap2>() はマップされた領域へのポインタを返す。 エラーの場"
3512 "合は -1 が返されて、 I<errno> が適切に設定される。"
3515 #: build/C/man2/mmap2.2:61
3516 msgid "Problem with getting the data from userspace."
3517 msgstr "ユーザ空間からデータを取得するときに問題があった。"
3520 #: build/C/man2/mmap2.2:66
3522 "(Various platforms where the page size is not 4096 bytes.) I<offset * 4096> "
3523 "is not a multiple of the system page size."
3525 "(ページサイズが 4096 バイトでないプラットフォームにおいて) I<offset * 4096> "
3526 "がシステムのページサイズの倍数ではない。"
3529 #: build/C/man2/mmap2.2:70
3530 msgid "B<mmap2>() can return any of the same errors as B<mmap>(2)."
3531 msgstr "B<mmap2>() は B<mmap>(2) と同じエラーを返すことができる。"
3534 #: build/C/man2/mmap2.2:73
3535 msgid "B<mmap2>() is available since Linux 2.3.31."
3536 msgstr "B<mmap2>() は、Linux 2.3.31 以降で使用可能である。"
3539 #: build/C/man2/mmap2.2:75 build/C/man2/subpage_prot.2:93
3540 msgid "This system call is Linux-specific."
3541 msgstr "このシステムコールは Linux 独自である。"
3544 #: build/C/man2/mmap2.2:81
3546 "Nowadays, the glibc B<mmap>() wrapper function invokes this system call "
3547 "rather than the B<mmap>(2) system call."
3549 "現在では、glibc の B<mmap>() のラッパー関数は、 B<mmap>(2) システムコールで"
3550 "はなく、このシステムコール (B<mmap2>(2)) を起動する。"
3552 #. ia64 can have page sizes ranging from 4kB to 64kB.
3553 #. On cris, it looks like the unit might also be the page size,
3554 #. which is 8192 bytes. -- mtk, June 2007
3556 #: build/C/man2/mmap2.2:88
3558 "On ia64, the unit for I<offset> is actually the system page size, rather "
3561 "ia64 では、 I<offset> の単位は、実際にはシステムのページサイズであり、 4096 "
3565 #: build/C/man2/mmap2.2:94
3567 "B<getpagesize>(2), B<mmap>(2), B<mremap>(2), B<msync>(2), B<shm_open>(3)"
3569 "B<getpagesize>(2), B<mmap>(2), B<mremap>(2), B<msync>(2), B<shm_open>(3)"
3572 #: build/C/man2/mprotect.2:32
3578 #: build/C/man2/mprotect.2:32
3584 #: build/C/man2/mprotect.2:35
3585 msgid "mprotect - set protection on a region of memory"
3586 msgstr "mprotect - メモリ領域の保護を設定する"
3589 #: build/C/man2/mprotect.2:40
3591 msgid "B<int mprotect(const void *>I<addr>B<, size_t >I<len>B<, int >I<prot>B<);>\n"
3592 msgstr "B<int mprotect(const void *>I<addr>B<, size_t >I<len>B<, int >I<prot>B<);>\n"
3595 #: build/C/man2/mprotect.2:48
3597 "B<mprotect>() changes protection for the calling process's memory page(s) "
3598 "containing any part of the address range in the interval [I<addr>,\\ I<addr>"
3599 "+I<len>-1]. I<addr> must be aligned to a page boundary."
3601 "B<mprotect>() は、区間 [I<addr>,\\ I<addr>+I<len>-1] のアドレス範囲を含む 呼"
3602 "び出し元のプロセスのメモリページのアクセス保護を変更する。 I<addr> はページ境"
3606 #: build/C/man2/mprotect.2:53
3608 "If the calling process tries to access memory in a manner that violates the "
3609 "protection, then the kernel generates a B<SIGSEGV> signal for the process."
3611 "呼び出し元のプロセスがアクセス保護に違反するようなメモリアクセスを 行おうとす"
3612 "ると、カーネルはシグナル B<SIGSEGV> をそのプロセスに対して生成する。"
3615 #: build/C/man2/mprotect.2:58
3617 "I<prot> is either B<PROT_NONE> or a bitwise-or of the other values in the "
3620 "I<prot> には、 B<PROT_NONE> か、以下のリストの B<PROT_NONE> 以外の値をビット"
3621 "毎の論理和 (bitwize-or) で指定する:"
3624 #: build/C/man2/mprotect.2:61
3625 msgid "The memory cannot be accessed at all."
3626 msgstr "そのメモリには全くアクセスできない。"
3629 #: build/C/man2/mprotect.2:64
3630 msgid "The memory can be read."
3631 msgstr "そのメモリを読み取ることができる。"
3634 #: build/C/man2/mprotect.2:67
3635 msgid "The memory can be modified."
3636 msgstr "そのメモリを変更できる。"
3639 #. Document PROT_GROWSUP and PROT_GROWSDOWN
3641 #: build/C/man2/mprotect.2:72
3642 msgid "The memory can be executed."
3643 msgstr "そのメモリは実行可能である。"
3646 #: build/C/man2/mprotect.2:79
3648 "On success, B<mprotect>() returns zero. On error, -1 is returned, and "
3649 "I<errno> is set appropriately."
3651 "成功した場合、 B<mprotect>() は 0 を返す。エラーの場合は -1 が返り、 "
3652 "I<errno> が適切に設定される。"
3655 #: build/C/man2/mprotect.2:89
3657 "The memory cannot be given the specified access. This can happen, for "
3658 "example, if you B<mmap>(2) a file to which you have read-only access, then "
3659 "ask B<mprotect>() to mark it B<PROT_WRITE>."
3661 "指定されたアクセスをメモリに設定することができない。 これは、例えば ファイル"
3662 "を読み取り専用で B<mmap>(2) しており、その領域に対して B<mprotect>() を呼び"
3663 "出して B<PROT_WRITE> に設定しようとした場合に発生する。"
3665 #. Or: both PROT_GROWSUP and PROT_GROWSDOWN were specified in 'prot'.
3667 #: build/C/man2/mprotect.2:94
3669 "I<addr> is not a valid pointer, or not a multiple of the system page size."
3671 "I<addr> が有効なポインタでないか、 システムのページサイズの倍数でない。"
3674 #: build/C/man2/mprotect.2:97
3675 msgid "Internal kernel structures could not be allocated."
3676 msgstr "カーネル内部の構造体を割り当てることができなかった。"
3679 #: build/C/man2/mprotect.2:107
3681 "Addresses in the range [I<addr>, I<addr>+I<len>-1] are invalid for the "
3682 "address space of the process, or specify one or more pages that are not "
3683 "mapped. (Before kernel 2.4.19, the error B<EFAULT> was incorrectly produced "
3686 "[I<addr>, I<addr>+I<len>-1] という範囲のアドレスがプロセスのアドレス空間とし"
3687 "て不正であるか、 その範囲のアドレスがマップされていない 1 つ以上のページを指"
3688 "している (カーネル 2.4.19 より前では、この状況でエラー B<EFAULT> が間違って生"
3691 #. SVr4 defines an additional error
3692 #. code EAGAIN. The SVr4 error conditions don't map neatly onto Linux's.
3694 #: build/C/man2/mprotect.2:116
3696 "SVr4, POSIX.1-2001. POSIX says that the behavior of B<mprotect>() is "
3697 "unspecified if it is applied to a region of memory that was not obtained via "
3700 "SVr4, POSIX.1-2001. POSIX では、 B<mmap>(2) 経由で獲得していないメモリ領域"
3701 "に対して B<mprotect>() を行った場合の B<mprotect>() の動作は未定義であると"
3705 #: build/C/man2/mprotect.2:123
3707 "On Linux it is always permissible to call B<mprotect>() on any address in a "
3708 "process's address space (except for the kernel vsyscall area). In "
3709 "particular it can be used to change existing code mappings to be writable."
3711 "Linux では、(カーネル vsyscall 領域以外の) 任意のプロセスアドレス空間に対し"
3712 "て B<mprotect>() を呼び出すことが、常に許されている。 これは特に既存のコード"
3713 "マッピングを書き込み可能にするために使われる。"
3716 #: build/C/man2/mprotect.2:133
3718 "Whether B<PROT_EXEC> has any effect different from B<PROT_READ> is "
3719 "architecture- and kernel version-dependent. On some hardware architectures "
3720 "(e.g., i386), B<PROT_WRITE> implies B<PROT_READ>."
3722 "B<PROT_EXEC> が B<PROT_READ> と異なる影響を持つか否かは、アーキテクチャとカー"
3723 "ネルのバージョンに依存する。 (i386 などの) いくつかのアーキテクチャでは、 "
3724 "B<PROT_WRITE> をセットすると、暗黙のうちに B<PROT_READ> がセットされる。"
3727 #: build/C/man2/mprotect.2:142
3729 "POSIX.1-2001 says that an implementation may permit access other than that "
3730 "specified in I<prot>, but at a minimum can only allow write access if "
3731 "B<PROT_WRITE> has been set, and must not allow any access if B<PROT_NONE> "
3734 "POSIX.1-2001 では、 I<prot> で指定されていないアクセスを許可する実装を認めて"
3735 "いる。 ただし、最低限、 B<PROT_WRITE> がセットされている場合にのみ書き込みア"
3736 "クセスが許可され、 B<PROT_NONE> がセットされている場合にはアクセスは許可され"
3740 #: build/C/man2/mprotect.2:148
3742 "The program below allocates four pages of memory, makes the third of these "
3743 "pages read-only, and then executes a loop that walks upward through the "
3744 "allocated region modifying bytes."
3746 "以下のプログラムは、メモリページを 4つ確保し、そのうち 3番目のページを 読み込"
3747 "み専用に設定する。その後で、確保した領域のアドレスの小さい方から 大きな方に向"
3748 "かって順番にバイト値を変更するループを実行する。"
3751 #: build/C/man2/mprotect.2:151
3753 "An example of what we might see when running the program is the following:"
3754 msgstr "プログラムを実行した場合の一例を以下に示す。"
3757 #: build/C/man2/mprotect.2:157
3761 "Start of region: 0x804c000\n"
3762 "Got SIGSEGV at address: 0x804e000\n"
3765 "Start of region: 0x804c000\n"
3766 "Got SIGSEGV at address: 0x804e000\n"
3769 #: build/C/man2/mprotect.2:159
3771 msgid "Program source"
3775 #: build/C/man2/mprotect.2:169
3778 "#include E<lt>unistd.hE<gt>\n"
3779 "#include E<lt>signal.hE<gt>\n"
3780 "#include E<lt>stdio.hE<gt>\n"
3781 "#include E<lt>malloc.hE<gt>\n"
3782 "#include E<lt>stdlib.hE<gt>\n"
3783 "#include E<lt>errno.hE<gt>\n"
3784 "#include E<lt>sys/mman.hE<gt>\n"
3786 "#include E<lt>unistd.hE<gt>\n"
3787 "#include E<lt>signal.hE<gt>\n"
3788 "#include E<lt>stdio.hE<gt>\n"
3789 "#include E<lt>malloc.hE<gt>\n"
3790 "#include E<lt>stdlib.hE<gt>\n"
3791 "#include E<lt>errno.hE<gt>\n"
3792 "#include E<lt>sys/mman.hE<gt>\n"
3795 #: build/C/man2/mprotect.2:174
3797 msgid "char *buffer;\n"
3798 msgstr "char *buffer;\n"
3801 #: build/C/man2/mprotect.2:182
3805 "handler(int sig, siginfo_t *si, void *unused)\n"
3807 " printf(\"Got SIGSEGV at address: 0x%lx\\en\",\n"
3808 " (long) si-E<gt>si_addr);\n"
3809 " exit(EXIT_FAILURE);\n"
3813 "handler(int sig, siginfo_t *si, void *unused)\n"
3815 " printf(\"Got SIGSEGV at address: 0x%lx\\en\",\n"
3816 " (long) si-E<gt>si_addr);\n"
3817 " exit(EXIT_FAILURE);\n"
3821 #: build/C/man2/mprotect.2:189
3825 "main(int argc, char *argv[])\n"
3829 " struct sigaction sa;\n"
3836 " struct sigaction sa;\n"
3839 #: build/C/man2/mprotect.2:195
3842 " sa.sa_flags = SA_SIGINFO;\n"
3843 " sigemptyset(&sa.sa_mask);\n"
3844 " sa.sa_sigaction = handler;\n"
3845 " if (sigaction(SIGSEGV, &sa, NULL) == -1)\n"
3846 " handle_error(\"sigaction\");\n"
3848 " sa.sa_flags = SA_SIGINFO;\n"
3849 " sigemptyset(&sa.sa_mask);\n"
3850 " sa.sa_sigaction = handler;\n"
3851 " if (sigaction(SIGSEGV, &sa, NULL) == -1)\n"
3852 " handle_error(\"sigaction\");\n"
3855 #: build/C/man2/mprotect.2:199
3858 " pagesize = sysconf(_SC_PAGE_SIZE);\n"
3859 " if (pagesize == -1)\n"
3860 " handle_error(\"sysconf\");\n"
3862 " pagesize = sysconf(_SC_PAGE_SIZE);\n"
3863 " if (pagesize == -1)\n"
3864 " handle_error(\"sysconf\");\n"
3867 #: build/C/man2/mprotect.2:202
3870 " /* Allocate a buffer aligned on a page boundary;\n"
3871 " initial protection is PROT_READ | PROT_WRITE */\n"
3873 " /* Allocate a buffer aligned on a page boundary;\n"
3874 " initial protection is PROT_READ | PROT_WRITE */\n"
3877 #: build/C/man2/mprotect.2:206
3880 " buffer = memalign(pagesize, 4 * pagesize);\n"
3881 " if (buffer == NULL)\n"
3882 " handle_error(\"memalign\");\n"
3884 " buffer = memalign(pagesize, 4 * pagesize);\n"
3885 " if (buffer == NULL)\n"
3886 " handle_error(\"memalign\");\n"
3889 #: build/C/man2/mprotect.2:208
3891 msgid " printf(\"Start of region: 0x%lx\\en\", (long) buffer);\n"
3892 msgstr " printf(\"Start of region: 0x%lx\\en\", (long) buffer);\n"
3895 #: build/C/man2/mprotect.2:212
3898 " if (mprotect(buffer + pagesize * 2, pagesize,\n"
3899 " PROT_READ) == -1)\n"
3900 " handle_error(\"mprotect\");\n"
3902 " if (mprotect(buffer + pagesize * 2, pagesize,\n"
3903 " PROT_READ) == -1)\n"
3904 " handle_error(\"mprotect\");\n"
3907 #: build/C/man2/mprotect.2:215
3910 " for (p = buffer ; ; )\n"
3911 " *(p++) = \\(aqa\\(aq;\n"
3913 " for (p = buffer ; ; )\n"
3914 " *(p++) = \\(aqa\\(aq;\n"
3917 #: build/C/man2/mprotect.2:219
3920 " printf(\"Loop completed\\en\"); /* Should never happen */\n"
3921 " exit(EXIT_SUCCESS);\n"
3924 " printf(\"Loop completed\\en\"); /* Should never happen */\n"
3925 " exit(EXIT_SUCCESS);\n"
3929 #: build/C/man2/mprotect.2:223
3930 msgid "B<mmap>(2), B<sysconf>(3)"
3931 msgstr "B<mmap>(2), B<sysconf>(3)"
3934 #: build/C/man2/mremap.2:31
3940 #: build/C/man2/mremap.2:31
3946 #: build/C/man2/mremap.2:34
3947 msgid "mremap - remap a virtual memory address"
3948 msgstr "mremap - 仮想メモリ・アドレスを再マッピングする"
3951 #: build/C/man2/mremap.2:37
3953 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
3954 msgstr "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
3957 #: build/C/man2/mremap.2:42
3960 "B<void *mremap(void *>I<old_address>B<, size_t >I<old_size>B<,>\n"
3961 "B< size_t >I<new_size>B<, int >I<flags>B<, ... /* void *>I<new_address>B< */);>\n"
3963 "B<void *mremap(void *>I<old_address>B<, size_t >I<old_size>B<,>\n"
3964 "B< size_t >I<new_size>B<, int >I<flags>B<, ... /* void *>I<new_address>B< */);>\n"
3967 #: build/C/man2/mremap.2:48
3969 "B<mremap>() expands (or shrinks) an existing memory mapping, potentially "
3970 "moving it at the same time (controlled by the I<flags> argument and the "
3971 "available virtual address space)."
3973 "B<mremap>() は既存のメモリ・マッピングの拡張 (または縮小) を行う。 同時に移"
3974 "動されることもある (I<flags> 引き数と利用可能な仮想アドレス空間によって決ま"
3978 #: build/C/man2/mremap.2:62
3980 "I<old_address> is the old address of the virtual memory block that you want "
3981 "to expand (or shrink). Note that I<old_address> has to be page aligned. "
3982 "I<old_size> is the old size of the virtual memory block. I<new_size> is the "
3983 "requested size of the virtual memory block after the resize. An optional "
3984 "fifth argument, I<new_address>, may be provided; see the description of "
3985 "B<MREMAP_FIXED> below."
3987 "I<old_address> は拡張 (または縮小) しようとする仮想メモリ・ブロック の元のア"
3988 "ドレスである。I<old_address> はページ境界に合っていなければ ならない点に注意"
3989 "すること。I<old_size> は元の仮想メモリ・ブロックの サイズである。 "
3990 "I<new_size> は要求する変更後の仮想メモリ・ブロックのサイズである。 5 番目の引"
3991 "き数として I<new_address> を指定することができる。下記の B<MREMAP_FIXED> の説"
3995 #: build/C/man2/mremap.2:74
3997 "In Linux the memory is divided into pages. A user process has (one or) "
3998 "several linear virtual memory segments. Each virtual memory segment has one "
3999 "or more mappings to real memory pages (in the page table). Each virtual "
4000 "memory segment has its own protection (access rights), which may cause a "
4001 "segmentation violation if the memory is accessed incorrectly (e.g., writing "
4002 "to a read-only segment). Accessing virtual memory outside of the segments "
4003 "will also cause a segmentation violation."
4005 "Linux ではメモリはページに分割される。ユーザー・プロセスは (一つまたは) 複数"
4006 "のリニアな仮想メモリセグメントを持つ。 それぞれの仮想メモリセグメントは一つ以"
4007 "上の実メモリ・ページ にマッピングされている (マッピング情報はページ・テーブル"
4008 "で管理される)。 仮想メモリセグメントにはセグメント毎の保護 (アクセス権) が設"
4009 "定されており、 メモリが不正にアクセスされた場合 (例えば読み込み専用のセグメン"
4010 "トに 書き込んだ場合)、セグメンテーション侵害 (segmentation violation) を 引き"
4011 "起こす。また、セグメント外の仮想メモリにアクセスした場合にも セグメンテーショ"
4015 #: build/C/man2/mremap.2:82
4017 "B<mremap>() uses the Linux page table scheme. B<mremap>() changes the "
4018 "mapping between virtual addresses and memory pages. This can be used to "
4019 "implement a very efficient B<realloc>(3)."
4021 "B<mremap>() は Linux のページ・テーブル方式を使用する。 B<mremap>() は仮想"
4022 "アドレスとメモリ・ページのマッピングを変更する。これは非常に効率的な "
4023 "B<realloc>(3) を実装するのに使用されている。"
4026 #: build/C/man2/mremap.2:84
4027 msgid "The I<flags> bit-mask argument may be 0, or include the following flag:"
4028 msgstr "I<flags> ビットマスク引数は 0 または以下のフラグを含む:"
4031 #: build/C/man2/mremap.2:84
4033 msgid "B<MREMAP_MAYMOVE>"
4034 msgstr "B<MREMAP_MAYMOVE>"
4037 #: build/C/man2/mremap.2:96
4039 "By default, if there is not sufficient space to expand a mapping at its "
4040 "current location, then B<mremap>() fails. If this flag is specified, then "
4041 "the kernel is permitted to relocate the mapping to a new virtual address, if "
4042 "necessary. If the mapping is relocated, then absolute pointers into the old "
4043 "mapping location become invalid (offsets relative to the starting address of "
4044 "the mapping should be employed)."
4046 "デフォルトでは、現在の位置にマッピングを拡張するための 十分な空きがなければ "
4047 "B<mremap>() は失敗する。 このフラグが指定されると、カーネルは必要があれば"
4048 "マッピングを 新しい仮想アドレスに再配置することができる マッピングが再配置さ"
4049 "れると、古いマッピング位置への絶対ポインタは 無効になる (マッピングの開始アド"
4050 "レスからの相対オフセットは有効のままである)。"
4053 #: build/C/man2/mremap.2:96
4055 msgid "B<MREMAP_FIXED> (since Linux 2.3.31)"
4056 msgstr "B<MREMAP_FIXED> (Linux 2.3.31 以降)"
4059 #: build/C/man2/mremap.2:118
4061 "This flag serves a similar purpose to the B<MAP_FIXED> flag of B<mmap>(2). "
4062 "If this flag is specified, then B<mremap>() accepts a fifth argument, "
4063 "I<void *new_address>, which specifies a page-aligned address to which the "
4064 "mapping must be moved. Any previous mapping at the address range specified "
4065 "by I<new_address> and I<new_size> is unmapped. If B<MREMAP_FIXED> is "
4066 "specified, then B<MREMAP_MAYMOVE> must also be specified."
4068 "このフラグは B<mmap>(2) の B<MAP_FIXED> フラグと似たような目的で用いられ"
4069 "る。 このフラグが指定されると、 B<mremap>() は 5 番目の引き数 I<void "
4070 "*new_address> を受け取り、この引数はマッピングが移動されるべきアドレスを指定"
4071 "する。 このアドレスはページ境界に合っていなければならない。 I<new_address> "
4072 "と I<new_size> で指定されるアドレス範囲に過去のマッピングがあった場合、 その"
4073 "マッピングはアンマップされる (unmapped)。 B<MREMAP_FIXED> を指定した場合は、 "
4074 "B<MREMAP_MAYMOVE> も指定しなければならない。"
4077 #: build/C/man2/mremap.2:128
4079 "If the memory segment specified by I<old_address> and I<old_size> is locked "
4080 "(using B<mlock>(2) or similar), then this lock is maintained when the "
4081 "segment is resized and/or relocated. As a consequence, the amount of memory "
4082 "locked by the process may change."
4084 "I<old_address> と I<old_size> で指定されるメモリセグメントが (B<mlock>(2) や"
4085 "同様のもので) ロックされている場合、セグメントのサイズが変わったり 再配置され"
4086 "たりした時にロックも維持される。 その結果、プロセスによってロックされるメモリ"
4090 #: build/C/man2/mremap.2:136
4092 "On success B<mremap>() returns a pointer to the new virtual memory area. "
4093 "On error, the value B<MAP_FAILED> (that is, I<(void\\ *)\\ -1>) is returned, "
4094 "and I<errno> is set appropriately."
4096 "成功した場合は B<mremap>() は新しい仮想メモリ領域へのポインタを返す。 エラー"
4097 "の場合は B<MAP_FAILED> (すなわち I<(void\\ *)\\ -1>) が返され、 I<errno> が適"
4101 #: build/C/man2/mremap.2:143
4103 "The caller tried to expand a memory segment that is locked, but this was not "
4104 "possible without exceeding the B<RLIMIT_MEMLOCK> resource limit."
4106 "呼び出し元がロックされているメモリセグメントを拡張しようとしたが、 "
4107 "B<RLIMIT_MEMLOCK> リソース制限を越えずにこれを行うことができない。"
4110 #: build/C/man2/mremap.2:152
4112 "\"Segmentation fault.\" Some address in the range I<old_address> to "
4113 "I<old_address>+I<old_size> is an invalid virtual memory address for this "
4114 "process. You can also get B<EFAULT> even if there exist mappings that cover "
4115 "the whole address space requested, but those mappings are of different types."
4117 "「セグメンテーション違反(segmentation fault)」 I<old_address> から "
4118 "I<old_address>+I<old_size> の 範囲のアドレスのどれかがこのプロセスにおいて不"
4119 "正な仮想メモリ・アドレスである。 たとえ要求したアドレス空間全体を含むような"
4120 "マッピングがあったとしても、 それらのマッピングが異なった型ならば B<EFAULT> "
4124 #: build/C/man2/mremap.2:180
4126 "An invalid argument was given. Possible causes are: I<old_address> was not "
4127 "page aligned; a value other than B<MREMAP_MAYMOVE> or B<MREMAP_FIXED> was "
4128 "specified in I<flags>; I<new_size> was zero; I<new_size> or I<new_address> "
4129 "was invalid; or the new address range specified by I<new_address> and "
4130 "I<new_size> overlapped the old address range specified by I<old_address> and "
4131 "I<old_size>; or B<MREMAP_FIXED> was specified without also specifying "
4132 "B<MREMAP_MAYMOVE>."
4134 "不正な引き数が与えられた。 可能性のある原因は以下の通りである: たいていは "
4135 "I<old_address> がページ境界に 合ってない; I<flags> に B<MREMAP_MAYMOVE> また"
4136 "は B<MREMAP_FIXED> 以外の値が指定されている; I<new_size> がゼロ; I<new_size> "
4137 "または I<new_address> の値が不正; I<new_address> と I<new_size> で指定される"
4138 "新しいアドレス範囲が I<old_address> と I<old_size> で指定される古いアドレス範"
4139 "囲と重なっている; B<MREMAP_FIXED> が指定されているが B<MREMAP_MAYMOVE> が指定"
4143 #: build/C/man2/mremap.2:186
4145 "The memory area cannot be expanded at the current virtual address, and the "
4146 "B<MREMAP_MAYMOVE> flag is not set in I<flags>. Or, there is not enough "
4147 "(virtual) memory available."
4149 "現在の仮想アドレスではメモリ領域が拡張できず、 B<MREMAP_MAYMOVE> フラグが "
4150 "I<flags> に設定されていない。 または十分な (仮想) メモリが存在しない。"
4152 #. 4.2BSD had a (never actually implemented)
4154 #. call with completely different semantics.
4156 #: build/C/man2/mremap.2:192
4158 "This call is Linux-specific, and should not be used in programs intended to "
4161 "このコールは Linux 特有であり、移植を意図したプログラムで 使用すべきではな"
4165 #: build/C/man2/mremap.2:200
4167 "Prior to version 2.4, glibc did not expose the definition of "
4168 "B<MREMAP_FIXED>, and the prototype for B<mremap>() did not allow for the "
4169 "I<new_address> argument."
4171 "バージョン 2.4 より前の glibc では、 B<MREMAP_FIXED> の定義は公開されておら"
4172 "ず、 B<mremap>() のプロトタイプは I<new_address> 引き数を取らなかった。"
4175 #: build/C/man2/mremap.2:209
4177 "B<brk>(2), B<getpagesize>(2), B<getrlimit>(2), B<mlock>(2), B<mmap>(2), "
4178 "B<sbrk>(2), B<malloc>(3), B<realloc>(3)"
4180 "B<brk>(2), B<getpagesize>(2), B<getrlimit>(2), B<mlock>(2), B<mmap>(2), "
4181 "B<sbrk>(2), B<realloc>(3), B<malloc>(3)"
4184 #: build/C/man2/mremap.2:214
4186 "Your favorite OS text book for more information on paged memory. (I<Modern "
4187 "Operating Systems> by Andrew S. Tannenbaum, I<Inside Linux> by Randolf "
4188 "Bentson, I<The Design of the UNIX Operating System> by Maurice J. Bach.)"
4190 "ページ分割されたメモリについてもっと詳しく知りたいならば あなたの好みの OS の"
4191 "教科書を参照すること。 (I<Modern Operating Systems> by Andrew S. Tannenbaum, "
4192 "I<Inside Linux> by Randolf Bentson, I<The Design of the UNIX Operating "
4193 "System> by Maurice J. Bach.)"
4196 #: build/C/man2/msync.2:25
4202 #: build/C/man2/msync.2:28
4203 msgid "msync - synchronize a file with a memory map"
4204 msgstr "msync - ファイルをマップしたメモリと同期させる"
4207 #: build/C/man2/msync.2:32
4208 msgid "B<int msync(void *>I<addr>B<, size_t >I<length>B<, int >I<flags>B<);>"
4209 msgstr "B<int msync(void *>I<addr>B<, size_t >I<length>B<, int >I<flags>B<);>"
4212 #: build/C/man2/msync.2:48
4214 "B<msync>() flushes changes made to the in-core copy of a file that was "
4215 "mapped into memory using B<mmap>(2) back to disk. Without use of this call "
4216 "there is no guarantee that changes are written back before B<munmap>(2) is "
4217 "called. To be more precise, the part of the file that corresponds to the "
4218 "memory area starting at I<addr> and having length I<length> is updated."
4220 "B<msync>() は B<mmap>(2) を使ってメモリにマップされたファイルの、 メモリ上"
4221 "のコピーになされた変更をディスクに反映させる。 この関数を使用しないと、 "
4222 "B<munmap>(2) が呼び出されるまで変更が書き戻される保証はない。 より正確には、"
4223 "ファイルのうち I<addr> から始まり長さ I<length> のメモリ領域に対応する部分が"
4227 #: build/C/man2/msync.2:68
4229 "The I<flags> argument may have the bits B<MS_ASYNC>, B<MS_SYNC>, and "
4230 "B<MS_INVALIDATE> set, but not both B<MS_ASYNC> and B<MS_SYNC>. B<MS_ASYNC> "
4231 "specifies that an update be scheduled, but the call returns immediately. "
4232 "B<MS_SYNC> asks for an update and waits for it to complete. "
4233 "B<MS_INVALIDATE> asks to invalidate other mappings of the same file (so that "
4234 "they can be updated with the fresh values just written)."
4236 "I<flags> 引数にはビット B<MS_ASYNC>, B<MS_SYNC>, B<MS_INVALIDATE> を設定する"
4237 "ことができるが、 B<MS_ASYNC> と B<MS_SYNC> を同時に指定することはできない。 "
4238 "B<MS_ASYNC> は更新を予定に組み込むことを表し、呼び出しは直ちに返る。 "
4239 "B<MS_SYNC> は更新を要求し、更新が完了するまで待つ。 B<MS_INVALIDATE> は(たっ"
4240 "た今書き込んだ新しい値でマッピングを更新することができるように) 同じファイル"
4241 "に対する他のマッピングを無効にすることを要求する。"
4244 #: build/C/man2/msync.2:73
4246 "On success, zero is returned. On error, -1 is returned, and I<errno> is set "
4249 "成功した場合、 0 が返る。エラーの場合、 -1 が返り、 I<errno> が適切に設定され"
4253 #: build/C/man2/msync.2:74
4259 #: build/C/man2/msync.2:80
4261 "B<MS_INVALIDATE> was specified in I<flags>, and a memory lock exists for the "
4262 "specified address range."
4264 "I flags に B<MS_INVALIDATE> が指定されたが、指定されたアドレス範囲にロックが"
4268 #: build/C/man2/msync.2:93
4270 "I<addr> is not a multiple of PAGESIZE; or any bit other than B<MS_ASYNC> | "
4271 "B<MS_INVALIDATE> | B<MS_SYNC> is set in I<flags>; or both B<MS_SYNC> and "
4272 "B<MS_ASYNC> are set in I<flags>."
4274 "I<addr> が PAGESIZE の倍数でない。または、 I<flags> に B<MS_ASYNC>、"
4275 "B<MS_INVALIDATE>、B<MS_SYNC> 以外のビットが設定された。 または、 I<flags> に "
4276 "B<MS_SYNC> と B<MS_ASYNC> の両方が設定された。"
4279 #: build/C/man2/msync.2:96
4280 msgid "The indicated memory (or part of it) was not mapped."
4281 msgstr "指定されたメモリ (またはその一部) がマップされていない。"
4284 #: build/C/man2/msync.2:98 build/C/man3/posix_fallocate.3:103
4285 #: build/C/man3/shm_open.3:251 build/C/man7/shm_overview.7:103
4286 msgid "POSIX.1-2001."
4287 msgstr "POSIX.1-2001."
4290 #: build/C/man2/msync.2:105
4292 "This call was introduced in Linux 1.3.21, and then used B<EFAULT> instead of "
4293 "B<ENOMEM>. In Linux 2.4.19 this was changed to the POSIX value B<ENOMEM>."
4295 "この関数は Linux 1.3.21 で導入されたが、 B<ENOMEM> ではなく B<EFAULT> が使わ"
4296 "れていた。 これは Linux 2.4.19 で POSIX における値 B<ENOMEM> に変更された。"
4298 #. POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
4299 #. -1: unavailable, 0: ask using sysconf().
4300 #. glibc defines them to 1.
4302 #: build/C/man2/msync.2:118
4304 "On POSIX systems on which B<msync>() is available, both "
4305 "B<_POSIX_MAPPED_FILES> and B<_POSIX_SYNCHRONIZED_IO> are defined in "
4306 "I<E<lt>unistd.hE<gt>> to a value greater than 0. (See also B<sysconf>(3).)"
4308 "B<msync>() が使用可能な POSIX システムでは B<_POSIX_MAPPED_FILES> と "
4309 "B<_POSIX_SYNCHRONIZED_IO> の両方が I<E<lt>unistd.hE<gt>> で 0 より大きい値に"
4310 "定義される。 (B<sysconf>(3) を参照すること。 )"
4313 #: build/C/man2/msync.2:120 build/C/man7/shm_overview.7:46
4319 #: build/C/man3/mtrace.3:4
4325 #: build/C/man3/mtrace.3:4
4331 #: build/C/man3/mtrace.3:7
4332 msgid "mtrace, muntrace - malloc debugging"
4333 msgstr "mtrace, muntrace - malloc debugging"
4336 #: build/C/man3/mtrace.3:9
4337 msgid "B<#include E<lt>mcheck.hE<gt>>"
4338 msgstr "B<#include E<lt>mcheck.hE<gt>>"
4341 #: build/C/man3/mtrace.3:11
4342 msgid "B<void mtrace(void);>"
4343 msgstr "B<void mtrace(void);>"
4346 #: build/C/man3/mtrace.3:13
4347 msgid "B<void muntrace(void);>"
4348 msgstr "B<void muntrace(void);>"
4351 #: build/C/man3/mtrace.3:24
4353 "The function B<mtrace>() installs handlers for B<malloc>(3), B<realloc>(3) "
4354 "and B<free>(3). The function B<muntrace>() disables these handlers."
4356 "関数 B<mtrace>() は、 B<malloc>(3), B<realloc>(3), B<free>(3) のハンドラを"
4357 "組み込む。 関数 B<muntrace>() はこれらのハンドラを解除する。"
4360 #: build/C/man3/mtrace.3:34
4362 "The environment variable B<MALLOC_TRACE> defines a file where B<mtrace>() "
4363 "writes its output. This file must be writable to the user or B<mtrace>() "
4364 "will do nothing. If the file is not empty it will be truncated."
4366 "環境変数 B<MALLOC_TRACE> は B<mtrace>() が出力を書き出すファイルを指定す"
4367 "る。 ユーザが書き込み権限を持つファイルを指定しなければならない。 書き込み権"
4368 "限がない場合、 B<mtrace>() は何もしない。 ファイルが空でない場合、ファイルの"
4372 #: build/C/man3/mtrace.3:36
4373 msgid "These are GNU extensions."
4374 msgstr "この関数は GNU 拡張である。"
4377 #: build/C/man3/mtrace.3:41
4379 "The output of B<mtrace>() will be ASCII but not in a friendly format. So "
4380 "glibc comes with a perl-script called mtrace to make sense of it."
4382 "B<mtrace>() の出力は ASCII 形式だが、人が読みやすいフォーマットではない。 そ"
4383 "こで、glibc には mtrace 出力を分かりやすい形式に変換する perl スクリプトが付"
4387 #: build/C/man3/mtrace.3:44
4388 msgid "B<malloc>(3), B<malloc_hook>(3)"
4389 msgstr "B<malloc>(3), B<malloc_hook>(3)"
4392 #: build/C/man2/posix_fadvise.2:27
4394 msgid "POSIX_FADVISE"
4395 msgstr "POSIX_FADVISE"
4398 #: build/C/man2/posix_fadvise.2:27 build/C/man2/sync_file_range.2:30
4400 #| msgid "2010-10-30"
4405 #: build/C/man2/posix_fadvise.2:30
4406 msgid "posix_fadvise - predeclare an access pattern for file data"
4407 msgstr "posix_fadvise - ファイルデータのアクセスパターンをあらかじめ宣言する"
4410 #: build/C/man2/posix_fadvise.2:33 build/C/man3/posix_fallocate.3:29
4412 msgid "B<#include E<lt>fcntl.hE<gt>>\n"
4413 msgstr "B<#include E<lt>fcntl.hE<gt>>\n"
4416 #: build/C/man2/posix_fadvise.2:36
4418 msgid "B<int posix_fadvise(int >I<fd>B<, off_t >I<offset>B<, off_t >I<len>B<, int >I<advice>B<);>\n"
4419 msgstr "B<int posix_fadvise(int >I<fd>B<, off_t >I<offset>B<, off_t >I<len>B<, int >I<advice>B<);>\n"
4422 #: build/C/man2/posix_fadvise.2:45
4424 #| msgid "B<posix_fallocate>():"
4425 msgid "B<posix_fadvise>():"
4426 msgstr "B<posix_fallocate>():"
4429 #: build/C/man2/posix_fadvise.2:47 build/C/man3/posix_fallocate.3:42
4430 msgid "_XOPEN_SOURCE\\ E<gt>=\\ 600 || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L"
4431 msgstr "_XOPEN_SOURCE\\ E<gt>=\\ 600 || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L"
4434 #: build/C/man2/posix_fadvise.2:55
4436 "Programs can use B<posix_fadvise>() to announce an intention to access file "
4437 "data in a specific pattern in the future, thus allowing the kernel to "
4438 "perform appropriate optimizations."
4440 "プログラムは、将来特定のパターンでファイルデータに アクセスする意思を伝えるた"
4441 "めに B<posix_fadvise>() を使うことができる。 これにより、カーネルが適切な最"
4445 #: build/C/man2/posix_fadvise.2:62
4448 #| "The I<advice> applies to a (not necessarily existent) region starting at "
4449 #| "I<offset> and extending for I<len> bytes (or until the end of the file if "
4450 #| "I<len> is 0) within the file referred to by I<fd>. The advice is not "
4451 #| "binding; it merely constitutes an expectation on behalf of the "
4454 "The I<advice> applies to a (not necessarily existent) region starting at "
4455 "I<offset> and extending for I<len> bytes (or until the end of the file if "
4456 "I<len> is 0) within the file referred to by I<fd>. The I<advice> is not "
4457 "binding; it merely constitutes an expectation on behalf of the application."
4459 "I<advice> は I<fd> が参照しているファイルの I<offset> から始まる I<len> バイ"
4460 "トの範囲内 (I<len> が 0 の場合はファイルの終りまで) の (必ずしも存在しない) "
4461 "領域に適用される。 アドバイスは義務づけではない。 アドバイスは単にアプリケー"
4462 "ションのために可能性を構成するだけである。"
4465 #: build/C/man2/posix_fadvise.2:64
4466 msgid "Permissible values for I<advice> include:"
4467 msgstr "I<advice> に許される値には、以下のものが含まれる:"
4470 #: build/C/man2/posix_fadvise.2:64
4472 msgid "B<POSIX_FADV_NORMAL>"
4473 msgstr "B<POSIX_FADV_NORMAL>"
4476 #: build/C/man2/posix_fadvise.2:70
4478 "Indicates that the application has no advice to give about its access "
4479 "pattern for the specified data. If no advice is given for an open file, "
4480 "this is the default assumption."
4482 "指定されたデータのアクセスパターンを指示するアドバイスを アプリケーションが何"
4483 "も持っていないことを示す。 オープンされたファイルにアドバイスが指定されない場"
4484 "合、 これがデフォルトで仮定される。"
4487 #: build/C/man2/posix_fadvise.2:70
4489 msgid "B<POSIX_FADV_SEQUENTIAL>"
4490 msgstr "B<POSIX_FADV_SEQUENTIAL>"
4493 #: build/C/man2/posix_fadvise.2:74
4495 "The application expects to access the specified data sequentially (with "
4496 "lower offsets read before higher ones)."
4498 "アプリケーションは指定されたデータがシーケンシャルに (大きなオフセットの前に"
4499 "小さなオフセットのデータを読むように) アクセスされることを期待する。"
4502 #: build/C/man2/posix_fadvise.2:74
4504 msgid "B<POSIX_FADV_RANDOM>"
4505 msgstr "B<POSIX_FADV_RANDOM>"
4508 #: build/C/man2/posix_fadvise.2:77
4509 msgid "The specified data will be accessed in random order."
4510 msgstr "指定されたデータがランダムな順番でアクセスされる。"
4513 #: build/C/man2/posix_fadvise.2:77
4515 msgid "B<POSIX_FADV_NOREUSE>"
4516 msgstr "B<POSIX_FADV_NOREUSE>"
4519 #: build/C/man2/posix_fadvise.2:80
4520 msgid "The specified data will be accessed only once."
4521 msgstr "指定されたデータは 1 度しかアクセスされない。"
4524 #: build/C/man2/posix_fadvise.2:80
4526 msgid "B<POSIX_FADV_WILLNEED>"
4527 msgstr "B<POSIX_FADV_WILLNEED>"
4530 #: build/C/man2/posix_fadvise.2:83
4531 msgid "The specified data will be accessed in the near future."
4532 msgstr "指定されたデータは近い将来アクセスされる。"
4535 #: build/C/man2/posix_fadvise.2:83
4537 msgid "B<POSIX_FADV_DONTNEED>"
4538 msgstr "B<POSIX_FADV_DONTNEED>"
4541 #: build/C/man2/posix_fadvise.2:86
4542 msgid "The specified data will not be accessed in the near future."
4543 msgstr "指定されたデータは近い将来アクセスされない。"
4546 #: build/C/man2/posix_fadvise.2:89
4547 msgid "On success, zero is returned. On error, an error number is returned."
4548 msgstr "成功した場合は 0 が返される。 失敗した場合はエラー番号が返される。"
4551 #: build/C/man2/posix_fadvise.2:93
4552 msgid "The I<fd> argument was not a valid file descriptor."
4553 msgstr "I<fd> 引き数が有効なファイルディスクリプタでない。"
4556 #: build/C/man2/posix_fadvise.2:96
4557 msgid "An invalid value was specified for I<advice>."
4558 msgstr "無効な値が I<advice> に指定された。"
4561 #: build/C/man2/posix_fadvise.2:103
4563 "The specified file descriptor refers to a pipe or FIFO. (Linux actually "
4564 "returns B<EINVAL> in this case.)"
4566 "指定されたファイルディスクリプタがパイプまたは FIFO を参照している (この場"
4567 "合、Linux は実際には B<EINVAL> を返す)。"
4569 #. of fadvise64_64()
4571 #: build/C/man2/posix_fadvise.2:111
4573 "Kernel support first appeared in Linux 2.5.60; the underlying system call is "
4574 "called B<fadvise64>(). Library support has been provided since glibc "
4575 "version 2.2, via the wrapper function B<posix_fadvise>()."
4579 #: build/C/man2/posix_fadvise.2:120
4581 "POSIX.1-2001. Note that the type of the I<len> argument was changed from "
4582 "I<size_t> to I<off_t> in POSIX.1-2003 TC1."
4584 "POSIX.1-2001. I<len> 引き数の型が POSIX.1-2003 TC1 において I<size_t> から "
4585 "I<off_t> に変更された点に注意すること。"
4588 #: build/C/man2/posix_fadvise.2:126
4590 "Under Linux, B<POSIX_FADV_NORMAL> sets the readahead window to the default "
4591 "size for the backing device; B<POSIX_FADV_SEQUENTIAL> doubles this size, and "
4592 "B<POSIX_FADV_RANDOM> disables file readahead entirely. These changes affect "
4593 "the entire file, not just the specified region (but other open file handles "
4594 "to the same file are unaffected)."
4596 "Linux では、B<POSIX_FADV_NORMAL> はバッキングデバイスの デフォルトサイズに先"
4597 "読み (readahead) ウインドウを設定する。 B<POSIX_FADV_SEQUENTIAL> はこのサイズ"
4598 "を 2 倍し、 B<POSIX_FADV_RANDOM> は先読みを全く無効にする。 これらの変更は"
4599 "ファイル全体に影響し、指定された領域のみに影響するわけではない (しかし同じ"
4600 "ファイルに対する他のオープンファイルハンドルは影響を受けない)。"
4603 #: build/C/man2/posix_fadvise.2:133
4605 "B<POSIX_FADV_WILLNEED> initiates a nonblocking read of the specified region "
4606 "into the page cache. The amount of data read may be decreased by the kernel "
4607 "depending on virtual memory load. (A few megabytes will usually be fully "
4608 "satisfied, and more is rarely useful.)"
4610 "B<POSIX_FADV_WILLNEED> は、 ページキャッシュに指定領域のブロックされない読み"
4611 "込みを開始する。 読み込まれるデータの総量は、 仮想メモリの負荷に依ってカーネ"
4612 "ルが減らすかもしれない (数メガバイトであれば通常は全く十分であり、 それより多"
4616 #: build/C/man2/posix_fadvise.2:137
4618 "In kernels before 2.6.18, B<POSIX_FADV_NOREUSE> had the same semantics as "
4619 "B<POSIX_FADV_WILLNEED>. This was probably a bug; since kernel 2.6.18, this "
4622 "2.6.18 より前のカーネルでは、B<POSIX_FADV_NOREUSE> は B<POSIX_FADV_WILLNEED> "
4623 "と同じ意味であった。 これは多分バグであった。 カーネル 2.6.18 以降では、この"
4627 #: build/C/man2/posix_fadvise.2:145
4629 "B<POSIX_FADV_DONTNEED> attempts to free cached pages associated with the "
4630 "specified region. This is useful, for example, while streaming large "
4631 "files. A program may periodically request the kernel to free cached data "
4632 "that has already been used, so that more useful cached pages are not "
4633 "discarded instead."
4635 "B<POSIX_FADV_DONTNEED> は指定された領域に関連付けられた キャッシュページを解"
4636 "放しようとする。 例えば、これは大きなファイルをストリーミングするときに役立"
4637 "つ。 プログラムは、使用済みのキャッシュされたデータを解放するように、 定期的"
4638 "にカーネルに要求するかもしれない。 そうすることにより、さらに有効なキャッシュ"
4639 "されたページが、 代わりに破棄されることはない。"
4642 #: build/C/man2/posix_fadvise.2:153
4644 "Pages that have not yet been written out will be unaffected, so if the "
4645 "application wishes to guarantee that pages will be released, it should call "
4646 "B<fsync>(2) or B<fdatasync>(2) first."
4648 "まだ書き出されていないページは影響を受けないので、 そのページの解放が保証され"
4649 "ることをアプリケーションが望んでいるなら、 最初に B<fsync>(2) または "
4650 "B<fdatasync>(2) を呼ぶべきである。"
4653 #: build/C/man2/posix_fadvise.2:153
4655 msgid "arm_fadvise()"
4659 #: build/C/man2/posix_fadvise.2:165
4661 "The ARM architecture needs 64-bit arguments to be aligned in a suitable pair "
4662 "of registers. On this architecture, the call signature of B<posix_fadvise>"
4663 "() is flawed, since it forces a register to be wasted as padding between "
4664 "the I<fd> and I<len> arguments. Therefore, since Linux 2.6.14, ARM defines "
4665 "a different system call that orders the arguments suitably:"
4669 #: build/C/man2/posix_fadvise.2:170
4671 #| msgid "B<int fallocate(int >I<fd>B<, int >I<mode>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
4673 "B<long arm_fadvise64_64(int >I<fd>B<, int >I<advice>B<,>\n"
4674 "B< loff_t >I<offset>B<, loff_t >I<len>B<);>\n"
4675 msgstr "B<int fallocate(int >I<fd>B<, int >I<mode>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
4677 #. No ARM support in glibc.
4679 #: build/C/man2/posix_fadvise.2:177
4681 "The behavior of this system call is otherwise exactly the same as "
4682 "B<posix_fadvise>(). No library support is provided for this system call in "
4687 #: build/C/man2/posix_fadvise.2:182
4689 "In kernels before 2.6.6, if I<len> was specified as 0, then this was "
4690 "interpreted literally as \"zero bytes\", rather than as meaning \"all bytes "
4691 "through to the end of the file\"."
4693 "2.6.6 より前のカーネルでは、 I<len> に 0 が指定された場合、 「ファイルの終り"
4694 "までの全てのバイト」という意味ではなく、 文字通り「0 バイト」として解釈されて"
4697 #. FIXME . Write a posix_fadvise(3) page.
4699 #: build/C/man2/posix_fadvise.2:188
4702 #| "B<readahead>(2), B<posix_fallocate>(3), B<posix_madvise>(3), "
4703 #| "B<feature_test_macros>(7)"
4705 "B<readahead>(2), B<sync_file_range>(2), B<posix_fallocate>(3), "
4706 "B<posix_madvise>(3)"
4707 msgstr "B<readahead>(2), B<posix_fallocate>(3), B<posix_madvise>(3)"
4710 #: build/C/man3/posix_fallocate.3:23
4712 msgid "POSIX_FALLOCATE"
4713 msgstr "POSIX_FALLOCATE"
4716 #: build/C/man3/posix_fallocate.3:23 build/C/man3/posix_memalign.3:26
4722 #: build/C/man3/posix_fallocate.3:26
4723 msgid "posix_fallocate - allocate file space"
4724 msgstr "posix_fallocate - ファイルのスペースを確保する"
4727 #: build/C/man3/posix_fallocate.3:31
4729 msgid "B<int posix_fallocate(int >I<fd>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
4730 msgstr "B<int posix_fallocate(int >I<fd>B<, off_t >I<offset>B<, off_t >I<len>B<);>\n"
4733 #: build/C/man3/posix_fallocate.3:40
4734 msgid "B<posix_fallocate>():"
4735 msgstr "B<posix_fallocate>():"
4738 #: build/C/man3/posix_fallocate.3:59
4740 "The function B<posix_fallocate>() ensures that disk space is allocated for "
4741 "the file referred to by the descriptor I<fd> for the bytes in the range "
4742 "starting at I<offset> and continuing for I<len> bytes. After a successful "
4743 "call to B<posix_fallocate>(), subsequent writes to bytes in the specified "
4744 "range are guaranteed not to fail because of lack of disk space."
4746 "関数 B<posix_fallocate>() は、ディスクリプタ I<fd> で参照されるファイルに対"
4747 "して、ディスクスペースを確実に確保する。 ディスクスペースは I<offset> から始"
4748 "まる I<len> バイトの範囲のバイトである。 B<posix_fallocate>() の呼び出しが成"
4749 "功した後、指定された範囲のバイトに対する書き込みは、 ディスクスペースの不足で"
4753 #: build/C/man3/posix_fallocate.3:64
4755 "If the size of the file is less than I<offset>+I<len>, then the file is "
4756 "increased to this size; otherwise the file size is left unchanged."
4758 "ファイルのサイズが I<offset>+I<len> より小さい場合、ファイルはこのサイズにな"
4759 "るように拡大される。 それ以外の場合、ファイルサイズは変わらない。"
4762 #: build/C/man3/posix_fallocate.3:70
4764 "B<posix_fallocate>() returns zero on success, or an error number on "
4765 "failure. Note that I<errno> is not set."
4767 "B<posix_fallocate>() は成功した場合、0 を返す。 失敗した場合、エラー番号を返"
4768 "す。 I<errno> が設定されない点に注意すること。"
4771 #: build/C/man3/posix_fallocate.3:79
4772 msgid "I<offset+len> exceeds the maximum file size."
4773 msgstr "I<offset+len> が最大ファイルサイズを超えている。"
4776 #: build/C/man3/posix_fallocate.3:89
4777 msgid "I<fd> does not refer to a regular file."
4778 msgstr "I<fd> が通常のファイルとして参照されていない。"
4781 #: build/C/man3/posix_fallocate.3:98
4782 msgid "I<fd> refers to a pipe."
4783 msgstr "I<fd> がパイプを参照している。"
4786 #: build/C/man3/posix_fallocate.3:101
4787 msgid "B<posix_fallocate>() is available since glibc 2.1.94."
4788 msgstr "B<posix_fallocate>() は glibc 2.1.94 以降で利用可能である。"
4791 #: build/C/man3/posix_fallocate.3:126
4793 "POSIX.1-2008 says that an implementation I<shall> give the B<EINVAL> error "
4794 "if I<len> was 0, or I<offset> was less than 0. POSIX.1-2001 says that an "
4795 "implementation I<shall> give the B<EINVAL> error if I<len> is less than 0, "
4796 "or I<offset> was less than 0, and I<may> give the error if I<len> equals "
4799 "POSIX.1-2008 では、 I<len> が 0 の場合、もしくは I<offset> が 0 未満の場合、 "
4800 "B<EINVAL> エラーを返すものとされている。 POSIX.1-2001 では、 I<len> が 0 未満"
4801 "の場合、もしくは I<offset> が 0 未満の場合、 B<EINVAL> エラーを返すものとされ"
4802 "ている。また、 I<len> が 0 の場合、 B<EINVAL> エラーを返してもよいとされてい"
4806 #: build/C/man3/posix_fallocate.3:130
4807 msgid "B<fallocate>(2), B<lseek>(2), B<posix_fadvise>(2)"
4808 msgstr "B<fallocate>(2), B<lseek>(2), B<posix_fadvise>(2)"
4811 #: build/C/man3/posix_memalign.3:26
4813 msgid "POSIX_MEMALIGN"
4814 msgstr "POSIX_MEMALIGN"
4817 #: build/C/man3/posix_memalign.3:29
4818 msgid "posix_memalign, memalign, valloc - Allocate aligned memory"
4820 "posix_memalign, memalign, valloc - アラインメントされたメモリの割り当てを行う"
4823 #: build/C/man3/posix_memalign.3:32
4825 msgid "B<#include E<lt>stdlib.hE<gt>>\n"
4826 msgstr "B<#include E<lt>stdlib.hE<gt>>\n"
4829 #: build/C/man3/posix_memalign.3:34
4831 msgid "B<int posix_memalign(void **>I<memptr>B<, size_t >I<alignment>B<, size_t >I<size>B<);>\n"
4832 msgstr "B<int posix_memalign(void **>I<memptr>B<, size_t >I<alignment>B<, size_t >I<size>B<);>\n"
4835 #: build/C/man3/posix_memalign.3:39
4838 "B<void *valloc(size_t >I<size>B<);>\n"
4839 "B<void *memalign(size_t >I<boundary>B<, size_t >I<size>B<);>\n"
4841 "B<void *valloc(size_t >I<size>B<);>\n"
4842 "B<void *memalign(size_t >I<boundary>B<, size_t >I<size>B<);>\n"
4845 #: build/C/man3/posix_memalign.3:49
4847 "B<posix_memalign>(): _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
4850 "B<posix_memalign>(): _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
4854 #: build/C/man3/posix_memalign.3:51
4855 msgid "B<valloc>():"
4856 msgstr "B<valloc>():"
4859 #: build/C/man3/posix_memalign.3:54
4861 msgid "Since glibc 2.12:"
4862 msgstr "glibc 2.12 以降:"
4865 #: build/C/man3/posix_memalign.3:61
4869 " (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
4870 " _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
4871 " !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
4874 " (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
4875 " _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
4876 " !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
4879 #: build/C/man3/posix_memalign.3:63
4881 msgid "Before glibc 2.12:"
4882 msgstr "glibc 2.12 より前:"
4885 #: build/C/man3/posix_memalign.3:67
4887 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
4888 "_XOPEN_SOURCE_EXTENDED"
4890 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
4891 "_XOPEN_SOURCE_EXTENDED"
4895 #: build/C/man3/posix_memalign.3:89
4897 "The function B<posix_memalign>() allocates I<size> bytes and places the "
4898 "address of the allocated memory in I<*memptr>. The address of the allocated "
4899 "memory will be a multiple of I<alignment>, which must be a power of two and "
4900 "a multiple of I<sizeof(void *)>. If I<size> is 0, then B<posix_memalign>() "
4901 "returns either NULL, or a unique pointer value that can later be "
4902 "successfully passed to B<free>(3)."
4904 "関数 B<posix_memalign>() は、 I<size> バイトのメモリを割り当て、割り当てられ"
4905 "たメモリのアドレスを I<*memptr> に設定する。 割り当てられたメモリのアドレス"
4906 "は I<alignment> の倍数になっているはずである。 I<alignment> は 2 のべき乗で、"
4907 "かつ I<sizeof(void *)> の倍数でなければならない。 I<size> が 0 の場合、 "
4908 "B<posix_memalign>() は NULL か一意なポインタ値を返す。 このポインタ値は、後"
4909 "で B<free>(3) に問題なく渡すことができる。"
4911 #. The behavior of memalign() for size==0 is as for posix_memalign()
4912 #. but no standards govern this.
4914 #: build/C/man3/posix_memalign.3:100
4916 "The obsolete function B<memalign>() allocates I<size> bytes and returns a "
4917 "pointer to the allocated memory. The memory address will be a multiple of "
4918 "I<boundary>, which must be a power of two."
4920 "廃止された関数である B<memalign>() は、 I<size> バイトのメモリを割り当て、割"
4921 "り当てられたメモリへのポインタを返す。 メモリのアドレスは I<boundary> の倍数"
4922 "になっているはずである。 I<boundary> は 2 のべき乗でなければならない。"
4925 #: build/C/man3/posix_memalign.3:109
4927 "The obsolete function B<valloc>() allocates I<size> bytes and returns a "
4928 "pointer to the allocated memory. The memory address will be a multiple of "
4929 "the page size. It is equivalent to I<memalign(sysconf(_SC_PAGESIZE),size)>."
4931 "廃止された関数である B<valloc>() は I<size> バイトのメモリを割り当て、割り当"
4932 "てられたメモリへのポインタを返す。 メモリのアドレスはページサイズの倍数になっ"
4933 "ているはずである。 これは I<memalign(sysconf(_SC_PAGESIZE),size)> と等価であ"
4937 #: build/C/man3/posix_memalign.3:111
4938 msgid "For all three routines, the memory is not zeroed."
4939 msgstr "3 つの関数はいずれもメモリのゼロクリアを行わない。"
4942 #: build/C/man3/posix_memalign.3:116
4944 "B<memalign>() and B<valloc>() return the pointer to the allocated memory, "
4945 "or NULL if the request fails."
4947 "B<memalign>() と B<valloc>() は割り当てられたメモリへのポインタを返す。 割"
4948 "り当てに失敗した場合は NULL を返す。"
4951 #: build/C/man3/posix_memalign.3:123
4953 "B<posix_memalign>() returns zero on success, or one of the error values "
4954 "listed in the next section on failure. Note that I<errno> is not set."
4956 "B<posix_memalign>() は成功した場合は 0 を返し、 失敗した場合は次のセクション"
4957 "に記載されたエラー値のいずれかを返す。 I<errno> はセットされないことに注意す"
4961 #: build/C/man3/posix_memalign.3:130
4963 "The I<alignment> argument was not a power of two, or was not a multiple of "
4964 "I<sizeof(void *)>."
4966 "I<alignment> 引き数が 2 のべき乗でなかったか、 I<sizeof(void *)> の倍数でな"
4970 #: build/C/man3/posix_memalign.3:133
4971 msgid "There was insufficient memory to fulfill the allocation request."
4972 msgstr "割り当て要求を満たすのに十分なメモリがなかった。"
4975 #: build/C/man3/posix_memalign.3:142
4977 "The functions B<memalign>() and B<valloc>() have been available in all "
4978 "Linux libc libraries. The function B<posix_memalign>() is available since "
4981 "B<memalign>() と B<valloc>() はすべての Linux libc ライブラリで使用可能であ"
4982 "る。 B<posix_memalign>() は glibc 2.1.91 以降で使用可能である。"
4985 #: build/C/man3/posix_memalign.3:155
4987 "The function B<valloc>() appeared in 3.0BSD. It is documented as being "
4988 "obsolete in 4.3BSD, and as legacy in SUSv2. It does not appear in "
4989 "POSIX.1-2001. The function B<memalign>() appears in SunOS 4.1.3 but not in "
4990 "4.4BSD. The function B<posix_memalign>() comes from POSIX.1d."
4992 "関数 B<valloc>() は 3.0BSD で登場した。4.3BSD では廃止されたと記載されてお"
4993 "り、 SUSv2 では過去の名残だと記載されている。 POSIX.1-2001 にはもはや存在しな"
4994 "い。 関数 B<memalign>() は SunOS 4.1.3 で登場したが、4.4BSD にはない。 関数 "
4995 "B<posix_memalign>() は POSIX.1d に由来する。"
4998 #: build/C/man3/posix_memalign.3:155
5004 #: build/C/man3/posix_memalign.3:159
5006 "Everybody agrees that B<posix_memalign>() is declared in I<E<lt>stdlib."
5009 "B<posix_memalign>() の宣言を I<E<lt>stdlib.hE<gt>> で行うことに関しては、 皆"
5013 #: build/C/man3/posix_memalign.3:163
5015 "On some systems B<memalign>() is declared in I<E<lt>stdlib.hE<gt>> instead "
5016 "of I<E<lt>malloc.hE<gt>>."
5018 "いくつかのシステムでは、 B<memalign>() は I<E<lt>malloc.hE<gt>> ではなく "
5019 "I<E<lt>stdlib.hE<gt>> で宣言されている。"
5022 #: build/C/man3/posix_memalign.3:179
5024 "According to SUSv2, B<valloc>() is declared in I<E<lt>stdlib.hE<gt>>. "
5025 "Libc4,5 and glibc declare it in I<E<lt>malloc.hE<gt>> and perhaps also in "
5026 "I<E<lt>stdlib.hE<gt>> (namely, if B<_GNU_SOURCE> is defined, or "
5027 "B<_BSD_SOURCE> is defined, or, for glibc, if B<_XOPEN_SOURCE_EXTENDED> is "
5028 "defined, or, equivalently, B<_XOPEN_SOURCE> is defined to a value not less "
5031 "SUSv2 によると、 B<valloc>() は I<E<lt>stdlib.hE<gt>> で宣言される。 "
5032 "libc4,5 や glibc では I<E<lt>malloc.hE<gt>> で宣言されており、 さらに "
5033 "I<E<lt>stdlib.hE<gt>> でも宣言されることもある (具体的には以下のいずれかの場"
5034 "合: B<_GNU_SOURCE> が定義されている、 B<_BSD_SOURCE> が定義されている、 "
5035 "glibc で B<_XOPEN_SOURCE_EXTENDED> が定義されている、 glibc で "
5036 "B<_XOPEN_SOURCE> が 500 より小さくない値に定義されている)。"
5039 #: build/C/man3/posix_memalign.3:188
5041 "On many systems there are alignment restrictions, for example, on buffers "
5042 "used for direct block device I/O. POSIX specifies the I<pathconf(path,"
5043 "_PC_REC_XFER_ALIGN)> call that tells what alignment is needed. Now one can "
5044 "use B<posix_memalign>() to satisfy this requirement."
5046 "多くのシステムでは、アラインメントに関して制限がある。例えば、 ブロックデバイ"
5047 "スに対するダイレクト I/O に使用するバッファには アラインメントに関する制限が"
5048 "ある。 POSIX では、どんなアラインメントが必要かを知るために I<pathconf(path,"
5049 "_PC_REC_XFER_ALIGN)> コールを規定している。ここで B<posix_memalign>() を使う"
5050 "と、この必要条件を満たすことができる。"
5053 #: build/C/man3/posix_memalign.3:197
5055 "B<posix_memalign>() verifies that I<alignment> matches the requirements "
5056 "detailed above. B<memalign>() may not check that the I<boundary> argument "
5059 "B<posix_memalign>() は I<alignment> が上で詳細に述べた必要条件を満たすかどう"
5060 "かを確かめる。 B<memalign>() は I<boundary> 引き数が正しいかどうかの確認を行"
5063 #. Other systems allow passing the result of
5070 #: build/C/man3/posix_memalign.3:225
5072 "POSIX requires that memory obtained from B<posix_memalign>() can be freed "
5073 "using B<free>(3). Some systems provide no way to reclaim memory allocated "
5074 "with B<memalign>() or B<valloc>() (because one can only pass to B<free>"
5075 "(3) a pointer gotten from B<malloc>(3), while, for example, B<memalign>() "
5076 "would call B<malloc>(3) and then align the obtained value). The glibc "
5077 "implementation allows memory obtained from any of these three routines to be "
5078 "reclaimed with B<free>(3)."
5080 "POSIX では B<posix_memalign>() によって獲得したメモリは B<free>(3) を使って"
5081 "解放することができる必要がある。 いくつかのシステムでは B<memalign>() や "
5082 "B<valloc>() で割り当てられたメモリを再利用する手段が提供されていない。 (なぜ"
5083 "なら B<free>(3) に渡すことができるのは B<malloc>(3) から受け取ったポインタ"
5084 "だけだが、 例えば B<memalign>() は B<malloc>(3) を呼び出し、得た値をアライ"
5085 "ンメントしてしまうからである) glibc の実装では、 ここに述べた 3 つの関数のい"
5086 "ずれで獲得したメモリも B<free>(3) で再利用することができる。"
5089 #: build/C/man3/posix_memalign.3:230
5091 "The glibc B<malloc>(3) always returns 8-byte aligned memory addresses, so "
5092 "these routines are only needed if you require larger alignment values."
5094 "glibc の B<malloc>(3) は常に 8 バイトにアラインメントされたメモリアドレスを"
5095 "返すので、 ここで述べた関数が必要になるのは 8 バイトよりも大きなアラインメン"
5099 #: build/C/man3/posix_memalign.3:235
5100 msgid "B<brk>(2), B<getpagesize>(2), B<free>(3), B<malloc>(3)"
5101 msgstr "B<brk>(2), B<getpagesize>(2), B<free>(3), B<malloc>(3)"
5104 #: build/C/man2/readahead.2:28
5110 #: build/C/man2/readahead.2:28 build/C/man7/shm_overview.7:27
5116 #: build/C/man2/readahead.2:31
5117 msgid "readahead - perform file readahead into page cache"
5118 msgstr "readahead - 前もってファイルをページ・キャッシュに読み込む"
5121 #: build/C/man2/readahead.2:37
5123 msgid "B<ssize_t readahead(int >I<fd>B<, off64_t >I<offset>B<, size_t >I<count>B<);>\n"
5124 msgstr "B<ssize_t readahead(int >I<fd>B<, off64_t >I<offset>B<, size_t >I<count>B<);>\n"
5127 #: build/C/man2/readahead.2:65
5129 "B<readahead>() populates the page cache with data from a file so that "
5130 "subsequent reads from that file will not block on disk I/O. The I<fd> "
5131 "argument is a file descriptor identifying the file which is to be read. The "
5132 "I<offset> argument specifies the starting point from which data is to be "
5133 "read and I<count> specifies the number of bytes to be read. I/O is "
5134 "performed in whole pages, so that I<offset> is effectively rounded down to a "
5135 "page boundary and bytes are read up to the next page boundary greater than "
5136 "or equal to I<(offset+count)>. B<readahead>() does not read beyond the end "
5137 "of the file. B<readahead>() blocks until the specified data has been "
5138 "read. The current file offset of the open file referred to by I<fd> is left "
5141 "B<readahead>() は、この後の同じファイルからのデータ読み込み時にディスク I/O "
5142 "で 動作が停止 (block) しないように、前もってファイルの内容を ページ・キャッ"
5143 "シュに読み込む。 I<fd> 引き数は読み込みを行うファイルを識別するファイル・ディ"
5144 "スクリプタである。 I<offset> 引き数はデータの読み込み開始位置を指定し、 "
5145 "I<count> は読み込むデータのバイト数を指定する。 ディスク I/O はページ単位で実"
5146 "行されるので、 実際には I<offset> はページ境界に切り下げられ、読み込みバイト"
5147 "数は I<(offset+count)> より小さくない次のページ境界まで切り上げられる。 "
5148 "B<readahead>() はファイルの末尾を越えた範囲まで読み出しを行うことはない。ま"
5149 "た、 B<readahead>() は指定したデータの読み込みが終わるまで停止 (block) す"
5150 "る。 I<fd> で参照されたオープン済のファイルのファイルオフセットの現在値は 変"
5154 #: build/C/man2/readahead.2:71
5156 "On success, B<readahead>() returns 0; on failure, -1 is returned, with "
5157 "I<errno> set to indicate the cause of the error."
5159 "B<readahead>() は成功すると 0 を返す。失敗した場合 -1 を返し、 I<errno> にエ"
5163 #: build/C/man2/readahead.2:76
5164 msgid "I<fd> is not a valid file descriptor or is not open for reading."
5166 "I<fd> が有効なファイル・ディスクリプタでない、または 読み込み用にオープンされ"
5170 #: build/C/man2/readahead.2:82
5172 "I<fd> does not refer to a file type to which B<readahead>() can be applied."
5174 "I<fd> が参照しているファイルが、 B<readahead>() を行うことができないタイプの"
5178 #: build/C/man2/readahead.2:87
5180 "The B<readahead>() system call appeared in Linux 2.4.13; glibc support has "
5181 "been provided since version 2.3."
5183 "B<readahead>() システムコールは Linux 2.4.13 で登場した。 glibc でのサポート"
5184 "は glibc バージョン 2.3 以降で行われている。"
5187 #: build/C/man2/readahead.2:92
5189 "The B<readahead>() system call is Linux-specific, and its use should be "
5190 "avoided in portable applications."
5192 "B<readahead>() システムコールは Linux 固有であり、移植を考慮したプログラムで"
5196 #: build/C/man2/readahead.2:98
5197 msgid "B<lseek>(2), B<madvise>(2), B<mmap>(2), B<posix_fadvise>(2), B<read>(2)"
5199 "B<lseek>(2), B<madvise>(2), B<mmap>(2), B<posix_fadvise>(2), B<read>(2)"
5202 #: build/C/man2/remap_file_pages.2:26
5204 msgid "REMAP_FILE_PAGES"
5205 msgstr "REMAP_FILE_PAGES"
5208 #: build/C/man2/remap_file_pages.2:29
5209 msgid "remap_file_pages - create a nonlinear file mapping"
5210 msgstr "remap_file_pages - 非線形ファイルマッピングを作成する。"
5213 #: build/C/man2/remap_file_pages.2:33
5216 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
5217 "B<#include E<lt>sys/mman.hE<gt>>\n"
5219 "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
5220 "B<#include E<lt>sys/mman.hE<gt>>\n"
5223 #: build/C/man2/remap_file_pages.2:36
5226 "B<int remap_file_pages(void *>I<addr>B<, size_t >I<size>B<, int >I<prot>B<,>\n"
5227 "B< ssize_t >I<pgoff>B<, int >I<flags>B<);>\n"
5229 "B<int remap_file_pages(void *>I<addr>B<, size_t >I<size>B<, int >I<prot>B<,>\n"
5230 "B< ssize_t >I<pgoff>B<, int >I<flags>B<);>\n"
5233 #: build/C/man2/remap_file_pages.2:49
5235 "The B<remap_file_pages>() system call is used to create a nonlinear "
5236 "mapping, that is, a mapping in which the pages of the file are mapped into a "
5237 "nonsequential order in memory. The advantage of using B<remap_file_pages>"
5238 "() over using repeated calls to B<mmap>(2) is that the former approach "
5239 "does not require the kernel to create additional VMA (Virtual Memory Area) "
5242 "B<remap_file_pages>() システムコールは非線形なマッピング、 つまりファイルの"
5243 "ページがメモリ上で連続しない順番でマップされる マッピングを作成するために使わ"
5244 "れる。 B<remap_file_pages>() を使う方が B<mmap>(2) を繰り返して使うより優れ"
5245 "ている点は、 前者の方法ではカーネルが VMA (Virtual Memory Area, 仮想メモリ領"
5246 "域) データ構造体を追加で作成する必要がないことである。"
5249 #: build/C/man2/remap_file_pages.2:51
5250 msgid "To create a nonlinear mapping we perform the following steps:"
5251 msgstr "非線形マッピングを作成するためには、 以下のようなステップを実行する:"
5254 #: build/C/man2/remap_file_pages.2:51
5260 #: build/C/man2/remap_file_pages.2:59
5262 "Use B<mmap>(2) to create a mapping (which is initially linear). This "
5263 "mapping must be created with the B<MAP_SHARED> flag."
5265 "B<mmap>(2) を使い、マッピングを作成する (このマッピングは最初は線形であ"
5266 "る)。 このマッピングは B<MAP_SHARED> フラグを指定して作成されなければならな"
5270 #: build/C/man2/remap_file_pages.2:59
5276 #: build/C/man2/remap_file_pages.2:67
5278 "Use one or more calls to B<remap_file_pages>() to rearrange the "
5279 "correspondence between the pages of the mapping and the pages of the file. "
5280 "It is possible to map the same page of a file into multiple locations within "
5281 "the mapped region."
5283 "B<remap_file_pages>() を 1 回以上呼び出して、 マッピングのページとファイルの"
5284 "ページの対応関係を再構成する。 ファイルの同じページをマッピング領域の複数の場"
5288 #: build/C/man2/remap_file_pages.2:78
5290 "The I<pgoff> and I<size> arguments specify the region of the file that is to "
5291 "be relocated within the mapping: I<pgoff> is a file offset in units of the "
5292 "system page size; I<size> is the length of the region in bytes."
5294 "I<pgoff> と I<size> 引き数は、マッピング内で再配置されるファイルの領域を指定"
5295 "する。 I<pgoff> はファイルオフセットであり、単位はシステムのページサイズであ"
5296 "る。 I<size> は領域の長さであり、単位はバイトである。"
5299 #: build/C/man2/remap_file_pages.2:96
5301 "The I<addr> argument serves two purposes. First, it identifies the mapping "
5302 "whose pages we want to rearrange. Thus, I<addr> must be an address that "
5303 "falls within a region previously mapped by a call to B<mmap>(2). Second, "
5304 "I<addr> specifies the address at which the file pages identified by I<pgoff> "
5305 "and I<size> will be placed."
5307 "I<addr> 引き数は 2 つの目的で使われる。 第 1 の目的は、この引き数によって再編"
5308 "成したいページの マッピングを識別することである。 よって I<addr> は B<mmap>"
5309 "(2) の呼び出しで過去にマップされた領域内のアドレスでなければならない。 第 2 "
5310 "の目的は、 I<pgoff> と I<size> で識別されるファイルページが置かれる予定のアド"
5311 "レスを、 I<addr> によって指定することである。"
5313 #. This rounding is weird, and not consistent with the treatment of
5314 #. the analogous arguments for munmap()/mprotect() and for mlock().
5317 #: build/C/man2/remap_file_pages.2:110
5319 "The values specified in I<addr> and I<size> should be multiples of the "
5320 "system page size. If they are not, then the kernel rounds I<both> values "
5321 "I<down> to the nearest multiple of the page size."
5323 "I<addr> と I<size> に指定する値は、システムのページサイズの倍数とすべきであ"
5324 "る。 それ以外の場合、カーネルは「両方」の値を 最も近いページサイズの倍数へ"
5328 #: build/C/man2/remap_file_pages.2:114
5329 msgid "The I<prot> argument must be specified as 0."
5330 msgstr "I<prot> 引き数は 0 に指定されなければならない。"
5333 #: build/C/man2/remap_file_pages.2:122
5335 "The I<flags> argument has the same meaning as for B<mmap>(2), but all flags "
5336 "other than B<MAP_NONBLOCK> are ignored."
5338 "I<flags> 引き数は B<mmap>(2) のものと同じ意味であるが、 B<MAP_NONBLOCK> 以外"
5342 #: build/C/man2/remap_file_pages.2:129
5344 "On success, B<remap_file_pages>() returns 0. On error, -1 is returned, and "
5345 "I<errno> is set appropriately."
5347 "成功した場合、 B<remap_file_pages>() は 0 を返す。 エラーの場合、-1 が返さ"
5348 "れ、 I<errno> が適切に設定される。"
5351 #: build/C/man2/remap_file_pages.2:137
5353 "I<addr> does not refer to a valid mapping created with the B<MAP_SHARED> "
5356 "I<addr> が B<MAP_SHARED> フラグを指定して作成された有効なマッピングを参照して"
5359 #. And possibly others from vma->vm_ops->populate()
5361 #: build/C/man2/remap_file_pages.2:146
5362 msgid "I<addr>, I<size>, I<prot>, or I<pgoff> is invalid."
5363 msgstr "I<addr>, I<size>, I<prot>, I<pgoff> のいずれかが不正である。"
5366 #: build/C/man2/remap_file_pages.2:151
5368 "The B<remap_file_pages>() system call appeared in Linux 2.5.46; glibc "
5369 "support was added in version 2.3.3."
5371 "B<remap_file_pages>() システムコールは Linux 2.5.46 で登場した。 glibc での"
5372 "サポートは glibc バージョン 2.3.3 で追加された。"
5375 #: build/C/man2/remap_file_pages.2:155
5376 msgid "The B<remap_file_pages>() system call is Linux-specific."
5377 msgstr "B<remap_file_pages>() システムコールは Linux 固有のものである。"
5380 #: build/C/man2/remap_file_pages.2:162
5382 "B<getpagesize>(2), B<mmap>(2), B<mmap2>(2), B<mprotect>(2), B<mremap>(2), "
5385 "B<getpagesize>(2), B<mmap>(2), B<mmap2>(2), B<mprotect>(2), B<mremap>(2), "
5389 #: build/C/man3/shm_open.3:26
5395 #: build/C/man3/shm_open.3:26
5401 #: build/C/man3/shm_open.3:29
5403 "shm_open, shm_unlink - Create/open or unlink POSIX shared memory objects"
5405 "shm_open, shm_unlink - POSIX 共有メモリ・オブジェクトの作成/オープン、 削除を"
5409 #: build/C/man3/shm_open.3:33
5410 msgid "B<#include E<lt>sys/stat.hE<gt>> /* For mode constants */"
5411 msgstr "B<#include E<lt>sys/stat.hE<gt>> /* mode 定数用 */"
5414 #: build/C/man3/shm_open.3:35
5415 msgid "B<#include E<lt>fcntl.hE<gt>> /* For O_* constants */"
5416 msgstr "B<#include E<lt>fcntl.hE<gt>> /* O_* 定数の定義用 */"
5419 #: build/C/man3/shm_open.3:37
5421 "B<int shm_open(const char *>I<name>B<, int >I<oflag>B<, mode_t >I<mode>B<);>"
5423 "B<void * shm_open(const char *>I<name>B<, int >I<oflag>B<, mode_t "
5427 #: build/C/man3/shm_open.3:39
5428 msgid "B<int shm_unlink(const char *>I<name>B<);>"
5429 msgstr "B<int shm_unlink(const char *>I<name>B<);>"
5432 #: build/C/man3/shm_open.3:41
5433 msgid "Link with I<-lrt>."
5434 msgstr "I<-lrt> でリンクする。"
5437 #: build/C/man3/shm_open.3:53
5439 "B<shm_open>() creates and opens a new, or opens an existing, POSIX shared "
5440 "memory object. A POSIX shared memory object is in effect a handle which can "
5441 "be used by unrelated processes to B<mmap>(2) the same region of shared "
5442 "memory. The B<shm_unlink>() function performs the converse operation, "
5443 "removing an object previously created by B<shm_open>()."
5445 "B<shm_open>() は、POSIX 共有メモリ・オブジェクトを新規に作成/オープンした"
5446 "り、 すでに存在するオブジェクトをオープンしたりする。 POSIX 共有メモリ・オブ"
5447 "ジェクトは、実際には、関係のないプロセスが 共有メモリの同じ領域を B<mmap>"
5448 "(2) するために使用することができる手段である。 B<shm_unlink>() は、逆の操"
5449 "作、つまり以前に B<shm_open>() で作成されたオブジェクトの削除を行う。"
5451 #. glibc allows the initial slash to be omitted, and makes
5452 #. multiple initial slashes equivalent to a single slash.
5453 #. This differs from the implementation of POSIX message queues.
5454 #. glibc allows subdirectory components in the name, in which
5455 #. case the subdirectory must exist under /dev/shm, and allow the
5456 #. required permissions if a user wants to create a shared memory
5457 #. object in that subdirectory.
5459 #: build/C/man3/shm_open.3:74
5461 "The operation of B<shm_open>() is analogous to that of B<open>(2). I<name> "
5462 "specifies the shared memory object to be created or opened. For portable "
5463 "use, a shared memory object should be identified by a name of the form I</"
5464 "somename>; that is, a null-terminated string of up to B<NAME_MAX> (i.e., "
5465 "255) characters consisting of an initial slash, followed by one or more "
5466 "characters, none of which are slashes."
5468 "B<shm_open>() の動作は B<open>(2) とよく似ている。 I<name> で作成したりオー"
5469 "プンしたりする共有メモリ・オブジェクトを指定する。 移植性を持たせるためには、"
5470 "共有メモリ・オブジェクトは I</somename> という形式の名前で識別し、 その名前"
5471 "は、最大で B<NAME_MAX> (すなわち 255) 文字の NULL 終端された文字列で、 スラッ"
5472 "シュで始まり、スラッシュ以外の文字が 1 文字以上続く形式 にすべきである。"
5475 #: build/C/man3/shm_open.3:81
5477 "I<oflag> is a bit mask created by ORing together exactly one of B<O_RDONLY> "
5478 "or B<O_RDWR> and any of the other flags listed here:"
5480 "I<oflag> はビットマスクで、 B<O_RDONLY> と B<O_RDWR> のいずれか一方と、以下に"
5481 "述べる他のフラグの論理和をとったもの を指定する。"
5484 #: build/C/man3/shm_open.3:81
5487 msgstr "B<O_RDONLY>"
5490 #: build/C/man3/shm_open.3:87
5492 "Open the object for read access. A shared memory object opened in this way "
5493 "can only be B<mmap>(2)ed for read (B<PROT_READ>) access."
5495 "読み出しアクセス用にオブジェクトをオープンする。 このフラグを指定してオープン"
5496 "された共有メモリ・オブジェクトは、 読み出し (B<PROT_READ>) アクセスでのみ "
5497 "B<mmap>(2) することができる。"
5500 #: build/C/man3/shm_open.3:87
5506 #: build/C/man3/shm_open.3:90
5507 msgid "Open the object for read-write access."
5508 msgstr "読み書きアクセス用にオブジェクトをオープンする。"
5511 #: build/C/man3/shm_open.3:90
5516 #. In truth it is actually the file system IDs on Linux, but these
5517 #. are nearly always the same as the effective IDs. (MTK, Jul 05)
5519 #: build/C/man3/shm_open.3:110
5521 "Create the shared memory object if it does not exist. The user and group "
5522 "ownership of the object are taken from the corresponding effective IDs of "
5523 "the calling process, and the object's permission bits are set according to "
5524 "the low-order 9 bits of I<mode>, except that those bits set in the process "
5525 "file mode creation mask (see B<umask>(2)) are cleared for the new object. "
5526 "A set of macro constants which can be used to define I<mode> is listed in "
5527 "B<open>(2). (Symbolic definitions of these constants can be obtained by "
5528 "including I<E<lt>sys/stat.hE<gt>>.)"
5530 "存在しない場合、共有メモリ・オブジェクトを作成する。 オブジェクトのユーザとグ"
5531 "ループの所有権は、 呼び出し元プロセスの対応する実効 ID が使われ、 オブジェク"
5532 "トの許可ビットは I<mode> の下位 9 ビットに基づいて設定される。ただし、 ファイ"
5533 "ルモード作成マスク (B<umask>(2) 参照) に設定されている値は、新規オブジェクト"
5534 "に関してはクリアされる。 I<mode> を定義するために使用できるマクロ定数(群)は "
5535 "B<open>(2) に記載されている (これらの定数のシンボル定義は I<E<lt>sys/stat."
5536 "hE<gt>> のインクルードにより得られる)。"
5539 #: build/C/man3/shm_open.3:116
5541 "A new shared memory object initially has zero length\\(emthe size of the "
5542 "object can be set using B<ftruncate>(2). The newly allocated bytes of a "
5543 "shared memory object are automatically initialized to 0."
5545 "新規に作成された共有メモリ・オブジェクトは長さ 0 で初期化される。 オブジェク"
5546 "トの大きさは B<ftruncate>(2) を使って設定できる。 共有メモリ・オブジェクトと"
5547 "して新規に確保されたバイトは自動的に 0 に初期化される。"
5550 #: build/C/man3/shm_open.3:116
5556 #: build/C/man3/shm_open.3:125
5558 "If B<O_CREAT> was also specified, and a shared memory object with the given "
5559 "I<name> already exists, return an error. The check for the existence of the "
5560 "object, and its creation if it does not exist, are performed atomically."
5562 "B<O_CREAT> が一緒に指定されており、 I<name> で指定された共有メモリ・オブジェ"
5563 "クトが既に存在した場合、 エラーを返す。 オブジェクトの存在確認と、存在しな"
5564 "かった場合のオブジェクト作成は、 必ず一連の操作として実行される (performed "
5568 #: build/C/man3/shm_open.3:125
5574 #: build/C/man3/shm_open.3:128
5575 msgid "If the shared memory object already exists, truncate it to zero bytes."
5577 "共有メモリ・オブジェクトがすでに存在した場合、 そのオブジェクトを 0 バイトに"
5581 #: build/C/man3/shm_open.3:131
5583 "Definitions of these flag values can be obtained by including I<E<lt>fcntl."
5586 "これらのフラグ値の定義は I<E<lt>fcntl.hE<gt>> のインクルードにより得られる。"
5589 #: build/C/man3/shm_open.3:142
5591 "On successful completion B<shm_open>() returns a new file descriptor "
5592 "referring to the shared memory object. This file descriptor is guaranteed "
5593 "to be the lowest-numbered file descriptor not previously opened within the "
5594 "process. The B<FD_CLOEXEC> flag (see B<fcntl>(2)) is set for the file "
5597 "成功して完了した場合、 B<shm_open>() は共有メモリ・オブジェクトを参照する新"
5598 "しいファイル・ディスクリプタを返す。 このファイル・ディスクリプタは、そのプロ"
5599 "セス内で過去にオープンされていない ファイル・ディスクリプタの中で最も小さな数"
5600 "になることが保証される。 B<FD_CLOEXEC> フラグ (B<fcntl>(2) を参照) が、この"
5601 "ファイル・ディスクリプタに設定される。"
5604 #: build/C/man3/shm_open.3:151
5606 "The file descriptor is normally used in subsequent calls to B<ftruncate>(2) "
5607 "(for a newly created object) and B<mmap>(2). After a call to B<mmap>(2) "
5608 "the file descriptor may be closed without affecting the memory mapping."
5610 "通常、これらのファイル・ディスクリプタは、この後続けて実行される B<ftruncate>"
5611 "(2) (新規に作成されたオブジェクトの場合のみ) と B<mmap>(2) の呼び出しに使用"
5612 "される。 B<mmap>(2) を呼び出した後は、ファイル・ディスクリプタをクローズして"
5613 "もよく、 クローズしてもメモリ・マッピングに影響を与えることはない。"
5616 #: build/C/man3/shm_open.3:169
5618 "The operation of B<shm_unlink>() is analogous to B<unlink>(2): it removes a "
5619 "shared memory object name, and, once all processes have unmapped the object, "
5620 "de-allocates and destroys the contents of the associated memory region. "
5621 "After a successful B<shm_unlink>(), attempts to B<shm_open>() an object "
5622 "with the same I<name> will fail (unless B<O_CREAT> was specified, in which "
5623 "case a new, distinct object is created)."
5625 "B<shm_unlink>() の動作は B<unlink>(2) とよく似ている: 共有メモリ・オブジェ"
5626 "クト名を削除し、すべてのプロセスが処理対象の オブジェクトをアンマップした時点"
5627 "でオブジェクトの割り当てを解除し、 対応するメモリ領域の内容を破棄する。 "
5628 "B<shm_unlink>() が成功した後で、同じ I<name> を持つオブジェクトに対して "
5629 "B<shm_open>() を行うと、 (B<O_CREAT> が指定されていない場合) 失敗する。 "
5630 "(B<O_CREAT> が指定されている場合、新しく別のオブジェクトが作成される)。"
5633 #: build/C/man3/shm_open.3:178
5635 "On success, B<shm_open>() returns a nonnegative file descriptor. On "
5636 "failure, B<shm_open>() returns -1. B<shm_unlink>() returns 0 on success, "
5639 "成功した場合、 B<shm_open>() は非負のファイル・ディスクリプタを返す。 失敗し"
5640 "た場合、 B<shm_open>() は -1 を返す。 B<shm_unlink>() は、成功した場合 0 "
5641 "を、エラーが起こった場合 -1 を返す。"
5644 #: build/C/man3/shm_open.3:185
5646 "On failure, I<errno> is set to indicate the cause of the error. Values "
5647 "which may appear in I<errno> include the following:"
5649 "失敗した場合、エラーの原因を示すため I<errno> が設定される。 I<errno> に設定"
5653 #: build/C/man3/shm_open.3:190
5654 msgid "Permission to B<shm_unlink>() the shared memory object was denied."
5655 msgstr "共有メモリオブジェクトを B<shm_unlink>() する権限がなかった。"
5658 #: build/C/man3/shm_open.3:200
5660 "Permission was denied to B<shm_open>() I<name> in the specified I<mode>, or "
5661 "B<O_TRUNC> was specified and the caller does not have write permission on "
5664 "指定された I<mode> で I<name> を B<shm_open>() する権限がなかった。もしく"
5665 "は、 B<O_TRUNC> が指定されたが、呼び出し元にはそのオブジェクトに対する書き込"
5669 #: build/C/man3/shm_open.3:200 build/C/man2/shmget.2:192
5675 #: build/C/man3/shm_open.3:211
5677 "Both B<O_CREAT> and B<O_EXCL> were specified to B<shm_open>() and the "
5678 "shared memory object specified by I<name> already exists."
5680 "B<O_CREAT> と B<O_EXCL> の両方が B<shm_open>() に指定されたが、 I<name> で指"
5681 "定された共有メモリ・オブジェクトが既に存在した。"
5684 #: build/C/man3/shm_open.3:218
5685 msgid "The I<name> argument to B<shm_open>() was invalid."
5686 msgstr "B<shm_open>() に与えられた I<name> 引き数が不正であった。"
5689 #: build/C/man3/shm_open.3:218
5695 #: build/C/man3/shm_open.3:221
5696 msgid "The process already has the maximum number of files open."
5697 msgstr "プロセスがオープン可能なファイル数の上限にすでに達していた。"
5700 #: build/C/man3/shm_open.3:221
5702 msgid "B<ENAMETOOLONG>"
5703 msgstr "B<ENAMETOOLONG>"
5706 #: build/C/man3/shm_open.3:227
5707 msgid "The length of I<name> exceeds B<PATH_MAX>."
5708 msgstr "I<name> の長さが B<PATH_MAX> を越えている。"
5711 #: build/C/man3/shm_open.3:231
5713 "The limit on the total number of files open on the system has been reached."
5714 msgstr "ファイルシステムでオープンできるファイル数の上限に達した。"
5717 #: build/C/man3/shm_open.3:231 build/C/man3/shm_open.3:240
5718 #: build/C/man2/shmget.2:206
5724 #: build/C/man3/shm_open.3:240
5726 "An attempt was made to B<shm_open>() a I<name> that did not exist, and "
5727 "B<O_CREAT> was not specified."
5729 "存在していない I<name> のオブジェクトを B<shm_open>() しようとしたが、 "
5730 "B<O_CREAT> が指定されていなかった。"
5733 #: build/C/man3/shm_open.3:247
5735 "An attempt was to made to B<shm_unlink>() a I<name> that does not exist."
5736 msgstr "存在しない I<name> のオブジェクトを B<shm_unlink>() しようとした。"
5739 #: build/C/man3/shm_open.3:249
5740 msgid "These functions are provided in glibc 2.2 and later."
5741 msgstr "これらの関数は glibc 2.2 以降で提供されている。"
5744 #: build/C/man3/shm_open.3:255
5746 "POSIX.1-2001 says that the group ownership of a newly created shared memory "
5747 "object is set to either the calling process's effective group ID or \"a "
5748 "system default group ID\"."
5750 "POSIX.1-2001 には、新規に作成される共有メモリオブジェクトのグループ所有権"
5751 "は、 呼び出し元プロセスの実効グループ ID か 「システムのデフォルトのグループ "
5752 "ID」 のどちらかに設定される、と書かれている。"
5755 #: build/C/man3/shm_open.3:264
5757 "POSIX leaves the behavior of the combination of B<O_RDONLY> and B<O_TRUNC> "
5758 "unspecified. On Linux, this will successfully truncate an existing shared "
5759 "memory object\\(emthis may not be so on other UNIX systems."
5761 "POSIX は B<O_RDONLY> と B<O_TRUNC> が一緒に指定された場合の動作を未定義にして"
5762 "いる。Linux では、 既存の共有メモリ・オブジェクトに対する切り詰め (truncate) "
5763 "は成功する。 しかし、他の UNIX システムでも同じであるとは限らない。"
5766 #: build/C/man3/shm_open.3:269
5768 "The POSIX shared memory object implementation on Linux 2.4 makes use of a "
5769 "dedicated file system, which is normally mounted under I</dev/shm>."
5771 "Linux 2.4 における POSIX 共有メモリ・オブジェクトの実装は 専用のファイルシス"
5772 "テムを使用する。そのファイルシステムは通常 I</dev/shm> にマウントされる。"
5775 #: build/C/man3/shm_open.3:280
5777 "B<close>(2), B<fchmod>(2), B<fchown>(2), B<fcntl>(2), B<fstat>(2), "
5778 "B<ftruncate>(2), B<mmap>(2), B<open>(2), B<umask>(2), B<shm_overview>(7)"
5780 "B<close>(2), B<fchmod>(2), B<fchown>(2), B<fcntl>(2), B<fstat>(2), "
5781 "B<ftruncate>(2), B<mmap>(2), B<open>(2), B<umask>(2), B<shm_overview>(7)"
5784 #: build/C/man7/shm_overview.7:27
5786 msgid "SHM_OVERVIEW"
5787 msgstr "SHM_OVERVIEW"
5790 #: build/C/man7/shm_overview.7:30
5791 msgid "shm_overview - Overview of POSIX shared memory"
5792 msgstr "shm_overview - POSIX 共有メモリの概要"
5795 #: build/C/man7/shm_overview.7:33
5797 "The POSIX shared memory API allows processes to communicate information by "
5798 "sharing a region of memory."
5800 "POSIX 共有メモリ API を使用すると、メモリのある領域を共有して、 プロセス間で"
5804 #: build/C/man7/shm_overview.7:35
5805 msgid "The interfaces employed in the API are:"
5806 msgstr "この API では以下のインターフェースが採用されている。"
5809 #: build/C/man7/shm_overview.7:35
5811 msgid "B<shm_open>(3)"
5812 msgstr "B<shm_open>(3)"
5815 #: build/C/man7/shm_overview.7:42
5817 "Create and open a new object, or open an existing object. This is analogous "
5818 "to B<open>(2). The call returns a file descriptor for use by the other "
5819 "interfaces listed below."
5821 "新しいオブジェクトを生成しオープンする、もしくは 既存のオブジェクトをオープン"
5822 "する。これは B<open>(2) と同じである。下記にある他のインターフェースで使用す"
5826 #: build/C/man7/shm_overview.7:42
5828 msgid "B<ftruncate>(2)"
5829 msgstr "B<ftruncate>(2)"
5832 #: build/C/man7/shm_overview.7:46
5834 "Set the size of the shared memory object. (A newly created shared memory "
5835 "object has a length of zero.)"
5836 msgstr "共有メモリオブジェクトの大きさを設定する。"
5839 #: build/C/man7/shm_overview.7:50
5841 "Map the shared memory object into the virtual address space of the calling "
5844 "呼び出したプロセスの仮想アドレス空間に共有メモリオブジェクトを マップする。"
5847 #: build/C/man7/shm_overview.7:50
5849 msgid "B<munmap>(2)"
5850 msgstr "B<munmap>(2)"
5853 #: build/C/man7/shm_overview.7:54
5855 "Unmap the shared memory object from the virtual address space of the calling "
5858 "呼び出したプロセスの仮想アドレス空間から 共有メモリオブジェクトをアンマップす"
5862 #: build/C/man7/shm_overview.7:54
5864 msgid "B<shm_unlink>(3)"
5865 msgstr "B<shm_unlink>(3)"
5868 #: build/C/man7/shm_overview.7:57
5869 msgid "Remove a shared memory object name."
5870 msgstr "共有メモリオブジェクト名を削除する。"
5873 #: build/C/man7/shm_overview.7:57
5876 msgstr "B<close>(2)"
5879 #: build/C/man7/shm_overview.7:62
5881 "Close the file descriptor allocated by B<shm_open>(3) when it is no longer "
5884 "B<shm_open>(3) で割り当てられたファイルディスクリプタが不要になった際に、 そ"
5885 "のファイルディスクリプタをクローズする。"
5888 #: build/C/man7/shm_overview.7:62
5891 msgstr "B<fstat>(2)"
5894 #: build/C/man7/shm_overview.7:76
5896 "Obtain a I<stat> structure that describes the shared memory object. Among "
5897 "the information returned by this call are the object's size (I<st_size>), "
5898 "permissions (I<st_mode>), owner (I<st_uid>), and group (I<st_gid>)."
5900 "その共有メモリオブジェクトについての情報が入った I<stat> 構造体を取得する。 "
5901 "このシステムコールが返す情報には、オブジェクトのサイズ (I<st_size>)、 許可属"
5902 "性 (I<st_mode>)、 所有者 (I<st_uid>)、 グループ (I<st_gid>) がある。"
5905 #: build/C/man7/shm_overview.7:76
5907 msgid "B<fchown>(2)"
5908 msgstr "B<fchown>(2)"
5911 #: build/C/man7/shm_overview.7:79
5912 msgid "To change the ownership of a shared memory object."
5913 msgstr "共有メモリオブジェクトの所有権を変更する。"
5916 #: build/C/man7/shm_overview.7:79
5918 msgid "B<fchmod>(2)"
5919 msgstr "B<fchmod>(2)"
5922 #: build/C/man7/shm_overview.7:82
5923 msgid "To change the permissions of a shared memory object."
5924 msgstr "共有メモリオブジェクトの許可属性を変更する。"
5927 #: build/C/man7/shm_overview.7:82
5933 #: build/C/man7/shm_overview.7:84
5934 msgid "POSIX shared memory is supported since Linux 2.4 and glibc 2.2."
5935 msgstr "POSIX 共有メモリは Linux 2.4 と glibc 2.2 以降でサポートされている。"
5938 #: build/C/man7/shm_overview.7:84
5944 #: build/C/man7/shm_overview.7:89
5946 "POSIX shared memory objects have kernel persistence: a shared memory object "
5947 "will exist until the system is shut down, or until all processes have "
5948 "unmapped the object and it has been deleted with B<shm_unlink>(3)"
5950 "POSIX 共有メモリオブジェクトはカーネル内で保持される。 共有メモリオブジェクト"
5951 "は、システムがシャットダウンされるか、 全てのプロセスがそのオブジェクトをアン"
5952 "マップし、 B<shm_unlink>(3) で削除されるまで、存在し続ける。"
5955 #: build/C/man7/shm_overview.7:89
5961 #: build/C/man7/shm_overview.7:94
5963 "Programs using the POSIX shared memory API must be compiled with I<cc -lrt> "
5964 "to link against the real-time library, I<librt>."
5966 "POSIX 共有メモリ API を使用したプログラムは I<cc -lrt> でコンパイルし、リアル"
5967 "タイムライブラリ I<librt> とリンクしなければならない。"
5970 #: build/C/man7/shm_overview.7:94
5972 msgid "Accessing shared memory objects via the file system"
5973 msgstr "ファイルシステム経由での共有メモリオブジェクトへのアクセス"
5976 #: build/C/man7/shm_overview.7:101
5978 "On Linux, shared memory objects are created in a (I<tmpfs>) virtual file "
5979 "system, normally mounted under I</dev/shm>. Since kernel 2.6.19, Linux "
5980 "supports the use of access control lists (ACLs) to control the permissions "
5981 "of objects in the virtual file system."
5983 "Linux では、共有メモリオブジェクトは通常 I</dev/shm> 以下にマウントされる仮想"
5984 "ファイルシステム (I<tmpfs>) 内に作成される。 カーネル 2.6.19 以降の Linux で"
5985 "は、 仮想ファイルシステム内のオブジェクトの許可属性の制御に、 アクセス制御リ"
5986 "スト (ACL; access control lists) を使うことができる。"
5989 #: build/C/man7/shm_overview.7:106
5991 "Typically, processes must synchronize their access to a shared memory "
5992 "object, using, for example, POSIX semaphores."
5994 "通常は、共有メモリオブジェクトにアクセスするプロセスは、 POSIX セマフォなどを"
5995 "使ってプロセス間で同期をとらなければならない。"
5998 #: build/C/man7/shm_overview.7:114
6000 "System V shared memory (B<shmget>(2), B<shmop>(2), etc.) is an older shared "
6001 "memory API. POSIX shared memory provides a simpler, and better designed "
6002 "interface; on the other hand POSIX shared memory is somewhat less widely "
6003 "available (especially on older systems) than System V shared memory."
6005 "System V 共有メモリ (B<shmget>(2), B<shmop>(2) など) は古い共有メモリ API で"
6006 "ある。 POSIX 共有メモリは、より簡単で、うまく設計されたインタフェースを提供し"
6007 "ている。 一方で、POSIX 共有メモリは System V 共有メモリと比べると 利用できる"
6008 "システムが少ない (特に、古いシステムでは少ない)。"
6011 #: build/C/man7/shm_overview.7:127
6013 "B<fchmod>(2), B<fchown>(2), B<fstat>(2), B<ftruncate>(2), B<mmap>(2), "
6014 "B<mprotect>(2), B<munmap>(2), B<shmget>(2), B<shmop>(2), B<shm_open>(3), "
6015 "B<shm_unlink>(3), B<sem_overview>(7)"
6017 "B<fchmod>(2), B<fchown>(2), B<fstat>(2), B<ftruncate>(2), B<mmap>(2), "
6018 "B<mprotect>(2), B<munmap>(2), B<shmget>(2), B<shmop>(2), B<shm_open>(3), "
6019 "B<shm_unlink>(3), B<sem_overview>(7)"
6022 #: build/C/man2/shmctl.2:43
6028 #: build/C/man2/shmctl.2:43
6034 #: build/C/man2/shmctl.2:46
6035 msgid "shmctl - shared memory control"
6036 msgstr "shmctl - 共有メモリ (shared memory) を制御する"
6039 #: build/C/man2/shmctl.2:49 build/C/man2/shmget.2:42
6040 msgid "B<#include E<lt>sys/ipc.hE<gt>>"
6041 msgstr "B<#include E<lt>sys/ipc.hE<gt>>"
6044 #: build/C/man2/shmctl.2:51 build/C/man2/shmget.2:44
6045 msgid "B<#include E<lt>sys/shm.hE<gt>>"
6046 msgstr "B<#include E<lt>sys/shm.hE<gt>>"
6049 #: build/C/man2/shmctl.2:53
6051 "B<int shmctl(int >I<shmid>B<, int >I<cmd>B<, struct shmid_ds *>I<buf>B<);>"
6053 "B<int shmctl(int >I<shmid>B<, int >I<cmd>B<, struct shmid_ds *>I<buf>B<);>"
6056 #: build/C/man2/shmctl.2:60
6058 "B<shmctl>() performs the control operation specified by I<cmd> on the "
6059 "shared memory segment whose identifier is given in I<shmid>."
6061 "B<shmctl>() は、識別子が I<shmid> の共有メモリ・セグメントに対して I<cmd> で"
6065 #: build/C/man2/shmctl.2:65
6067 "The I<buf> argument is a pointer to a I<shmid_ds> structure, defined in "
6068 "I<E<lt>sys/shm.hE<gt>> as follows:"
6070 "I<buf> 引き数は、 I<shmid_ds> 構造体へのポインタである。 この構造体は "
6071 "I<E<lt>sys/shm.hE<gt>> で以下のように定義されている"
6074 #: build/C/man2/shmctl.2:79
6077 "struct shmid_ds {\n"
6078 " struct ipc_perm shm_perm; /* Ownership and permissions */\n"
6079 " size_t shm_segsz; /* Size of segment (bytes) */\n"
6080 " time_t shm_atime; /* Last attach time */\n"
6081 " time_t shm_dtime; /* Last detach time */\n"
6082 " time_t shm_ctime; /* Last change time */\n"
6083 " pid_t shm_cpid; /* PID of creator */\n"
6084 " pid_t shm_lpid; /* PID of last shmat(2)/shmdt(2) */\n"
6085 " shmatt_t shm_nattch; /* No. of current attaches */\n"
6089 "struct shmid_ds {\n"
6090 " struct ipc_perm shm_perm; /* 所有権と許可 */\n"
6091 " size_t shm_segsz; /* セグメントのサイズ (バイト) */\n"
6092 " time_t shm_atime; /* 最後の付加 (attach) の時刻 */\n"
6093 " time_t shm_dtime; /* 最後の分離 (detach) の時刻 */\n"
6094 " time_t shm_ctime; /* 最後に変更が行われた時刻 */\n"
6095 " pid_t shm_cpid; /* 作成者 (creator) の PID */\n"
6096 " pid_t shm_lpid; /* 最後の shmat(2)/shmdt(2) の PID */\n"
6097 " shmatt_t shm_nattch; /* 現在付加されている数 */\n"
6102 #: build/C/man2/shmctl.2:87
6104 "The I<ipc_perm> structure is defined in I<E<lt>sys/ipc.hE<gt>> as follows "
6105 "(the highlighted fields are settable using B<IPC_SET>):"
6107 "I<ipc_perm> 構造体は I<E<lt>sys/ipc.hE<gt>> で以下のように定義されている (強"
6108 "調されたフィールドは B<IPC_SET> を使って設定可能である):"
6111 #: build/C/man2/shmctl.2:100
6114 "struct ipc_perm {\n"
6115 " key_t __key; /* Key supplied to shmget(2) */\n"
6116 " uid_t B<uid>; /* Effective UID of owner */\n"
6117 " gid_t B<gid>; /* Effective GID of owner */\n"
6118 " uid_t cuid; /* Effective UID of creator */\n"
6119 " gid_t cgid; /* Effective GID of creator */\n"
6120 " unsigned short B<mode>; /* B<Permissions> + SHM_DEST and\n"
6121 " SHM_LOCKED flags */\n"
6122 " unsigned short __seq; /* Sequence number */\n"
6125 "struct ipc_perm {\n"
6126 " key_t __key; /* shmget(2) に与えられるキー */\n"
6127 " uid_t B<uid>; /* 所有者の実効 UID */\n"
6128 " gid_t B<gid>; /* 所有者の実効 GID */\n"
6129 " uid_t cuid; /* 作成者の実効 UID */\n"
6130 " gid_t cgid; /* 作成者の実効 GID */\n"
6131 " unsigned short B<mode>; /* B<許可> + SHM_DEST と\n"
6132 " SHM_LOCKED フラグ */\n"
6133 " unsigned short __seq; /* シーケンス番号 */\n"
6137 #: build/C/man2/shmctl.2:106
6138 msgid "Valid values for I<cmd> are:"
6139 msgstr "I<cmd> として有効な値は以下の通り:"
6142 #: build/C/man2/shmctl.2:107
6145 msgstr "B<IPC_STAT>"
6148 #: build/C/man2/shmctl.2:116
6150 "Copy information from the kernel data structure associated with I<shmid> "
6151 "into the I<shmid_ds> structure pointed to by I<buf>. The caller must have "
6152 "read permission on the shared memory segment."
6154 "I<shmid> に関連づけられたカーネルデータ構造体の情報を I<buf> で指された "
6155 "I<shmid_ds> 構造体にコピーする。 呼び出し元は共有メモリ・セグメントに対する "
6156 "読み込み許可を持たなければならない。"
6159 #: build/C/man2/shmctl.2:116
6165 #: build/C/man2/shmctl.2:134
6167 "Write the values of some members of the I<shmid_ds> structure pointed to by "
6168 "I<buf> to the kernel data structure associated with this shared memory "
6169 "segment, updating also its I<shm_ctime> member. The following fields can be "
6170 "changed: I<shm_perm.uid>, I<shm_perm.gid>, and (the least significant 9 bits "
6171 "of) I<shm_perm.mode>. The effective UID of the calling process must match "
6172 "the owner (I<shm_perm.uid>) or creator (I<shm_perm.cuid>) of the shared "
6173 "memory segment, or the caller must be privileged."
6175 "I<buf> によって指される I<shmid_ds> 構造体のいくつかのメンバーの値を、 この共"
6176 "有メモリ・セグメントに関連づけられたカーネルデータ構造体に書き込み、 "
6177 "I<shm_ctime> メンバーも更新する。 以下のフィールドは変更できる。 I<shm_perm."
6178 "uid>, I<shm_perm.gid>, I<shm_perm.mode> (の最下位 9 ビット)。 呼び出したプロ"
6179 "セスの実効 UID が所有者 (I<shm_perm.uid>) または作成者 (I<shm_perm.cuid>) "
6180 "と一致するか、呼び出し元が特権を持たなければならない。"
6183 #: build/C/man2/shmctl.2:134
6186 msgstr "B<IPC_RMID>"
6189 #: build/C/man2/shmctl.2:151
6191 "Mark the segment to be destroyed. The segment will only actually be "
6192 "destroyed after the last process detaches it (i.e., when the I<shm_nattch> "
6193 "member of the associated structure I<shmid_ds> is zero). The caller must be "
6194 "the owner or creator, or be privileged. If a segment has been marked for "
6195 "destruction, then the (nonstandard) B<SHM_DEST> flag of the I<shm_perm."
6196 "mode> field in the associated data structure retrieved by B<IPC_STAT> will "
6199 "セグメントに破棄済みのマークを付ける。 セグメントは、実際には最後プロセスがセ"
6200 "グメントを分離した (関連する I<shmid_ds> 構造体の I<shm_nattch> メンバーが 0 "
6201 "になった) 後でのみ破棄される。 呼び出し元は所有者か作成者であるか、特権を持た"
6202 "なければならない。 セグメントに破棄のマークが付けられると、 関連するデータ構"
6203 "造体において I<shm_perm.mode> フィールドの (標準ではない) B<SHM_DEST> フラグ"
6204 "が設定される。 このデータ構造体は B<IPC_STAT> で取得される。"
6207 #: build/C/man2/shmctl.2:154
6209 "The caller I<must> ensure that a segment is eventually destroyed; otherwise "
6210 "its pages that were faulted in will remain in memory or swap."
6212 "呼び出し元は最終的にはセグメントを忘れずに破棄I<しなければならない>。 そうで"
6213 "なれば、フォールト (fault) されたページは メモリかスワップ (swap) に残り続け"
6217 #: build/C/man2/shmctl.2:154
6219 msgid "B<IPC_INFO> (Linux-specific)"
6220 msgstr "B<IPC_INFO> (Linux 固有)"
6223 #: build/C/man2/shmctl.2:167
6225 "Returns information about system-wide shared memory limits and parameters in "
6226 "the structure pointed to by I<buf>. This structure is of type I<shminfo> "
6227 "(thus, a cast is required), defined in I<E<lt>sys/shm.hE<gt>> if the "
6228 "B<_GNU_SOURCE> feature test macro is defined:"
6230 "システム全体での共有メモリの制限とパラメータに関する情報を、 I<buf> が指す構"
6231 "造体に入れて返す。 この構造体は I<shminfo> 型である (そのためキャストが必要で"
6232 "ある)。 I<shminfo> は B<_GNU_SOURCE> 機能検査マクロが定義された場合に "
6233 "I<E<lt>sys/shm.hE<gt>> で以下のように定義される:"
6236 #: build/C/man2/shmctl.2:181
6239 "struct shminfo {\n"
6240 " unsigned long shmmax; /* Maximum segment size */\n"
6241 " unsigned long shmmin; /* Minimum segment size;\n"
6243 " unsigned long shmmni; /* Maximum number of segments */\n"
6244 " unsigned long shmseg; /* Maximum number of segments\n"
6245 " that a process can attach;\n"
6246 " unused within kernel */\n"
6247 " unsigned long shmall; /* Maximum number of pages of\n"
6248 " shared memory, system-wide */\n"
6251 "struct shminfo {\n"
6252 " unsigned long shmmax; /* 最大セグメントサイズ */\n"
6253 " unsigned long shmmin; /* 最小セグメントサイズ。\n"
6255 " unsigned long shmmni; /* 最大セグメント数 */\n"
6256 " unsigned long shmseg; /* プロセスが付加できる\n"
6259 " unsigned long shmall; /* 共有メモリの最大ページ数。\n"
6264 #: build/C/man2/shmctl.2:194
6266 "The I<shmmni>, I<shmmax>, and I<shmall> settings can be changed via I</proc> "
6267 "files of the same name; see B<proc>(5) for details."
6269 "設定 I<shmmni>, I<shmmax>, I<shmall> は I</proc> にある同じ名前のファイル経由"
6270 "で変更可能である。 詳しくは B<proc>(5) を参照。"
6273 #: build/C/man2/shmctl.2:194
6275 msgid "B<SHM_INFO> (Linux-specific)"
6276 msgstr "B<SHM_INFO> (Linux 固有)"
6279 #: build/C/man2/shmctl.2:205
6281 "Returns a I<shm_info> structure whose fields contain information about "
6282 "system resources consumed by shared memory. This structure is defined in "
6283 "I<E<lt>sys/shm.hE<gt>> if the B<_GNU_SOURCE> feature test macro is defined:"
6285 "共有メモリが消費しているシステム資源に関する情報を 格納した I<shm_info> 構造"
6286 "体を返す。 この構造体は、 B<_GNU_SOURCE> 機能検査マクロが定義された場合に "
6287 "I<E<lt>sys/shm.hE<gt>> で以下のように定義される:"
6290 #: build/C/man2/shmctl.2:222
6293 "struct shm_info {\n"
6294 " int used_ids; /* # of currently existing\n"
6296 " unsigned long shm_tot; /* Total number of shared\n"
6297 " memory pages */\n"
6298 " unsigned long shm_rss; /* # of resident shared\n"
6299 " memory pages */\n"
6300 " unsigned long shm_swp; /* # of swapped shared\n"
6301 " memory pages */\n"
6302 " unsigned long swap_attempts;\n"
6303 " /* Unused since Linux 2.4 */\n"
6304 " unsigned long swap_successes;\n"
6305 " /* Unused since Linux 2.4 */\n"
6308 "struct shm_info {\n"
6309 " int used_ids; /* 現在存在するセグメント数 */\n"
6310 " unsigned long shm_tot; /* 共有メモリのページ総数 */\n"
6311 " unsigned long shm_rss; /* メモリ上にある (スワップされて\n"
6312 " いない) 共有メモリページ数 */\n"
6313 " unsigned long shm_swp; /* スワップされている共有メモリ\n"
6315 " unsigned long swap_attempts;\n"
6316 " /* Linux 2.4 以降では未使用 */\n"
6317 " unsigned long swap_successes;\n"
6318 " /* Linux 2.4 以降では未使用 */\n"
6322 #: build/C/man2/shmctl.2:224
6324 msgid "B<SHM_STAT> (Linux-specific)"
6325 msgstr "B<SHM_STAT> (Linux 固有)"
6328 #: build/C/man2/shmctl.2:235
6330 "Returns a I<shmid_ds> structure as for B<IPC_STAT>. However, the I<shmid> "
6331 "argument is not a segment identifier, but instead an index into the kernel's "
6332 "internal array that maintains information about all shared memory segments "
6335 "B<IPC_STAT> と同じく I<shmid_ds> 構造体を返す。 但し、 I<shmid> 引き数は、セ"
6336 "グメント識別子ではなく、システム上の全ての共有メモリ セグメントに関する情報を"
6337 "管理するカーネルの内部配列へのインデックス である。"
6340 #: build/C/man2/shmctl.2:238
6342 "The caller can prevent or allow swapping of a shared memory segment with the "
6343 "following I<cmd> values:"
6345 "呼び出し元は、I<cmd> に以下の値を指定することで、共有メモリ・セグメントが ス"
6346 "ワップされることを防止したり、許可したりできる:"
6349 #: build/C/man2/shmctl.2:239
6351 msgid "B<SHM_LOCK> (Linux-specific)"
6352 msgstr "B<SHM_LOCK> (Linux 固有)"
6355 #: build/C/man2/shmctl.2:251
6357 "Prevent swapping of the shared memory segment. The caller must fault in any "
6358 "pages that are required to be present after locking is enabled. If a "
6359 "segment has been locked, then the (nonstandard) B<SHM_LOCKED> flag of the "
6360 "I<shm_perm.mode> field in the associated data structure retrieved by "
6361 "B<IPC_STAT> will be set."
6363 "共有メモリ・セグメントをスワップすることを防止する。 ロックが有効になった後、"
6364 "呼び出し元は、 存在することが要求された全てのページをフォールトさせなければな"
6365 "らない。 セグメントがロックされると、 関連するデータ構造体において "
6366 "I<shm_perm.mode> フィールドの (標準的ではない) B<SHM_LOCKED> フラグが設定さ"
6367 "れる。 このデータ構造体は B<IPC_STAT> で取得される。"
6370 #: build/C/man2/shmctl.2:251
6372 msgid "B<SHM_UNLOCK> (Linux-specific)"
6373 msgstr "B<SHM_UNLOCK> (Linux 固有)"
6376 #: build/C/man2/shmctl.2:254
6377 msgid "Unlock the segment, allowing it to be swapped out."
6378 msgstr "セグメントのロックを解除し、スワップ・アウトすることを可能にする。"
6380 #. There was some weirdness in 2.6.9: SHM_LOCK and SHM_UNLOCK could
6381 #. be applied to a segment, regardless of ownership of the segment.
6382 #. This was a botch-up in the move to RLIMIT_MEMLOCK, and was fixed
6383 #. in 2.6.10. MTK, May 2005
6385 #: build/C/man2/shmctl.2:272
6387 "In kernels before 2.6.10, only a privileged process could employ B<SHM_LOCK> "
6388 "and B<SHM_UNLOCK>. Since kernel 2.6.10, an unprivileged process can employ "
6389 "these operations if its effective UID matches the owner or creator UID of "
6390 "the segment, and (for B<SHM_LOCK>) the amount of memory to be locked falls "
6391 "within the B<RLIMIT_MEMLOCK> resource limit (see B<setrlimit>(2))."
6393 "2.6.10 より前のカーネルでは、特権プロセスだけが B<SHM_LOCK> と B<SHM_UNLOCK> "
6394 "を利用することができた。 2.6.10 以降のカーネルでは、非特権プロセスであっても"
6395 "次の条件を満たせば これらの操作を利用することができる。その条件とは、プロセス"
6396 "の実効 UID がそのセグメントの所有者もしくは作成者の UID と一致し、 "
6397 "(B<SHM_LOCK> の場合には) ロックするメモリの合計が B<RLIMIT_MEMLOCK> リソース"
6398 "上限 (B<setrlimit>(2) 参照) の範囲内に入っていることである。"
6401 #: build/C/man2/shmctl.2:290
6403 "A successful B<IPC_INFO> or B<SHM_INFO> operation returns the index of the "
6404 "highest used entry in the kernel's internal array recording information "
6405 "about all shared memory segments. (This information can be used with "
6406 "repeated B<SHM_STAT> operations to obtain information about all shared "
6407 "memory segments on the system.) A successful B<SHM_STAT> operation returns "
6408 "the identifier of the shared memory segment whose index was given in "
6409 "I<shmid>. Other operations return 0 on success."
6411 "B<IPC_INFO> と B<SHM_INFO> 操作は、成功すると、全ての共有メモリセグメントに関"
6412 "する情報を 管理しているカーネルの内部配列の使用中エントリのインデックスの う"
6413 "ち最大値を返す (この情報は、システムの全ての共有メモリセグメントに関する情報"
6414 "を 取得するために、 B<SHM_STAT> 操作を繰り返し実行する際に使用できる)。 "
6415 "B<SHM_STAT> 操作は、成功すると、 I<shmid> で指定されたインデックスを持つ共有"
6416 "メモリセグメントの識別子を返す。 他の操作は、成功の場合 0 を返す。"
6419 #: build/C/man2/shmctl.2:294
6420 msgid "On error, -1 is returned, and I<errno> is set appropriately."
6421 msgstr "エラーの場合は -1 を返し、 I<errno> を適切に設定する。"
6424 #: build/C/man2/shmctl.2:303
6426 "B<IPC_STAT> or B<SHM_STAT> is requested and I<shm_perm.mode> does not allow "
6427 "read access for I<shmid>, and the calling process does not have the "
6428 "B<CAP_IPC_OWNER> capability."
6430 "B<IPC_STAT> または B<SHM_STAT> が要求され、 I<shm_perm.mode> が I<shmid> への"
6431 "読み込みアクセスを許しておらず、 かつ呼び出したプロセスが B<CAP_IPC_OWNER> "
6432 "ケーパビリティ (capability) を持っていない。"
6435 #: build/C/man2/shmctl.2:314
6437 "The argument I<cmd> has value B<IPC_SET> or B<IPC_STAT> but the address "
6438 "pointed to by I<buf> isn't accessible."
6440 "I<cmd> 引き数に B<IPC_SET> か B<IPC_STAT> が指定されたが I<buf> で指されてい"
6444 #: build/C/man2/shmctl.2:314
6450 #: build/C/man2/shmctl.2:317
6451 msgid "I<shmid> points to a removed identifier."
6452 msgstr "I<shmid> が削除 (remove) された識別子 (identifier) を指している。"
6455 #: build/C/man2/shmctl.2:326
6457 "I<shmid> is not a valid identifier, or I<cmd> is not a valid command. Or: "
6458 "for a B<SHM_STAT> operation, the index value specified in I<shmid> referred "
6459 "to an array slot that is currently unused."
6461 "I<shmid> が有効な識別子でないか、 I<cmd> が有効なコマンドでない。 もしくは、 "
6462 "B<SHM_STAT> 操作の場合に、 I<shmid> で指定されたインデックス値が現在未使用の"
6466 #: build/C/man2/shmctl.2:337
6468 "(In kernels since 2.6.9), B<SHM_LOCK> was specified and the size of the to-"
6469 "be-locked segment would mean that the total bytes in locked shared memory "
6470 "segments would exceed the limit for the real user ID of the calling "
6471 "process. This limit is defined by the B<RLIMIT_MEMLOCK> soft resource limit "
6472 "(see B<setrlimit>(2))."
6474 "(2.6.9 以降のカーネルにおいて) B<SHM_LOCK> が指定され、 ロックされる予定のセ"
6475 "グメントのサイズ (ロックされる共有メモリ・セグメントの合計バイト数) が、 呼び"
6476 "出したプロセスの実ユーザー ID についての制限を超えた。 この制限は "
6477 "B<RLIMIT_MEMLOCK> ソフト資源制限で定義される (B<setrlimit>(2) を参照)。"
6480 #: build/C/man2/shmctl.2:337
6482 msgid "B<EOVERFLOW>"
6483 msgstr "B<EOVERFLOW>"
6486 #: build/C/man2/shmctl.2:342
6488 "B<IPC_STAT> is attempted, and the GID or UID value is too large to be stored "
6489 "in the structure pointed to by I<buf>."
6491 "B<IPC_STAT> が試みられ、GID や UID の値が I<buf> で指示される構造体に格納する"
6495 #: build/C/man2/shmctl.2:354
6497 "B<IPC_SET> or B<IPC_RMID> is attempted, and the effective user ID of the "
6498 "calling process is not that of the creator (found in I<shm_perm.cuid>), or "
6499 "the owner (found in I<shm_perm.uid>), and the process was not privileged "
6500 "(Linux: did not have the B<CAP_SYS_ADMIN> capability)."
6502 "B<IPC_SET> か B<IPC_RMID> が試みられ、 呼び出したプロセスの実効ユーザー ID が"
6503 "作成者 (I<shm_perm.cuid>) でも所有者 (I<shm_perm.uid>) でもなく、プロセスが"
6504 "特権を持たない (Linux では B<CAP_SYS_ADMIN> ケーパビリティを持たない)。"
6507 #: build/C/man2/shmctl.2:366
6509 "Or (in kernels before 2.6.9), B<SHM_LOCK> or B<SHM_UNLOCK> was specified, "
6510 "but the process was not privileged (Linux: did not have the B<CAP_IPC_LOCK> "
6511 "capability). (Since Linux 2.6.9, this error can also occur if the "
6512 "B<RLIMIT_MEMLOCK> is 0 and the caller is not privileged.)"
6514 "または (2.6.9 より前のカーネルで) B<SHM_LOCK> または B<SHM_UNLOCK> が指定さ"
6515 "れているが、プロセスが特権を持たない (Linux では B<CAP_IPC_LOCK> ケーパビリ"
6516 "ティを持たない)。 (Linux 2.6.9 以降では、 B<RLIMIT_MEMLOCK> が 0 で呼び出し元"
6517 "が特権を持たない場合にも、このエラーが起こる。)"
6519 #. SVr4 documents an additional error condition EMFILE.
6521 #: build/C/man2/shmctl.2:371 build/C/man2/shmget.2:232
6522 #: build/C/man2/shmop.2:229
6523 msgid "SVr4, POSIX.1-2001."
6524 msgstr "SVr4, POSIX.1-2001."
6527 #: build/C/man2/shmctl.2:382
6529 "The B<IPC_INFO>, B<SHM_STAT> and B<SHM_INFO> operations are used by the "
6530 "B<ipcs>(1) program to provide information on allocated resources. In the "
6531 "future these may modified or moved to a /proc file system interface."
6533 "B<IPC_INFO>, B<SHM_STAT>, B<SHM_INFO> 操作は、 B<ipcs>(1) プログラムで割り当"
6534 "て済の資源に関する情報を提供するために 使用されている。将来、これらの操作は変"
6535 "更されたり、 /proc ファイルシステムのインタフェースに移動されるかもしれない。"
6538 #: build/C/man2/shmctl.2:390
6540 "Linux permits a process to attach (B<shmat>(2)) a shared memory segment "
6541 "that has already been marked for deletion using I<shmctl(IPC_RMID)>. This "
6542 "feature is not available on other UNIX implementations; portable "
6543 "applications should avoid relying on it."
6545 "Linux では、 I<shmctl(IPC_RMID)> を使ってすでに削除マークがつけられている共有"
6546 "メモリ・セグメントを あるプロセスが付加 (attach) (B<shmat>(2)) することを許"
6547 "可している。 この機能は他の UNIX の実装では利用できない。 移植性を考慮したア"
6548 "プリケーションではこれに依存しないようにすべきである。"
6551 #: build/C/man2/shmctl.2:403
6553 "Various fields in a I<struct shmid_ds> were typed as I<short> under Linux "
6554 "2.2 and have become I<long> under Linux 2.4. To take advantage of this, a "
6555 "recompilation under glibc-2.1.91 or later should suffice. (The kernel "
6556 "distinguishes old and new calls by an B<IPC_64> flag in I<cmd>.)"
6558 "I<構造体 shmid_ds> 内の多くのフィールドは、 Linux 2.2 では I<short> 型だった"
6559 "が、Linux 2.4 では I<long> 型になった。 この利点を生かすには、glibc-2.1.91 以"
6560 "降の環境下で 再コンパイルすれば十分である。 カーネルは新しい形式の呼び出しと"
6561 "古い形式の呼び出しを I<cmd> 内の B<IPC_64> フラグで区別する。"
6564 #: build/C/man2/shmctl.2:410
6566 "B<mlock>(2), B<setrlimit>(2), B<shmget>(2), B<shmop>(2), B<capabilities>(7), "
6569 "B<mlock>(2), B<setrlimit>(2), B<shmget>(2), B<shmop>(2), B<capabilities>(7), "
6570 "B<shm_overview>(7), B<svipc>(7)"
6573 #: build/C/man2/shmget.2:36
6579 #: build/C/man2/shmget.2:36
6585 #: build/C/man2/shmget.2:39
6586 msgid "shmget - allocates a shared memory segment"
6587 msgstr "shmget - 共有メモリ・セグメントを割り当てる"
6590 #: build/C/man2/shmget.2:46
6591 msgid "B<int shmget(key_t >I<key>B<, size_t >I<size>B<, int >I<shmflg>B<);>"
6592 msgstr "B<int shmget(key_t >I<key>B<, size_t >I<size>B<, int >I<shmflg>B<);>"
6595 #: build/C/man2/shmget.2:70
6597 "B<shmget>() returns the identifier of the shared memory segment associated "
6598 "with the value of the argument I<key>. A new shared memory segment, with "
6599 "size equal to the value of I<size> rounded up to a multiple of B<PAGE_SIZE>, "
6600 "is created if I<key> has the value B<IPC_PRIVATE> or I<key> isn't "
6601 "B<IPC_PRIVATE>, no shared memory segment corresponding to I<key> exists, and "
6602 "B<IPC_CREAT> is specified in I<shmflg>."
6604 "B<shmget>() は I<key> 引き数に対応する共有メモリ・セグメントの識別子を返"
6605 "す。 I<key> の値が B<IPC_PRIVATE> の場合、もしくは I<key> に対応する共有メモ"
6606 "リ・セグメントが存在せず、 I<shmflg> に B<IPC_CREAT> が指定されていた場合、 "
6607 "新しい共有メモリ・セグメントを作成する。 作成される共有メモリ・セグメント"
6608 "は、 I<size> 引き数の値を B<PAGE_SIZE> の倍数へと切り上げた (round up) 大きさ"
6612 #: build/C/man2/shmget.2:89
6614 "If I<shmflg> specifies both B<IPC_CREAT> and B<IPC_EXCL> and a shared memory "
6615 "segment already exists for I<key>, then B<shmget>() fails with I<errno> set "
6616 "to B<EEXIST>. (This is analogous to the effect of the combination B<O_CREAT "
6617 "| O_EXCL> for B<open>(2).)"
6619 "I<shmflg> に B<IPC_CREAT> と B<IPC_EXCL> の両方が指定された場合、 I<key> に対"
6620 "応する共有メモリ・セグメントが既に存在すると、 B<shmget>() は失敗し、 "
6621 "I<errno> に B<EEXIST> が設定される (これは B<open>(2) に B<O_CREAT | "
6622 "O_EXCL> を指定した場合の動作と同じである)。"
6625 #: build/C/man2/shmget.2:93
6626 msgid "The value I<shmflg> is composed of:"
6627 msgstr "I<shmflg> は以下の内容から構成される:"
6630 #: build/C/man2/shmget.2:93
6632 msgid "B<IPC_CREAT>"
6633 msgstr "B<IPC_CREAT>"
6636 #: build/C/man2/shmget.2:100
6638 "to create a new segment. If this flag is not used, then B<shmget>() will "
6639 "find the segment associated with I<key> and check to see if the user has "
6640 "permission to access the segment."
6642 "新しいセグメントを作成する。このフラグが指定されなかった場合、 B<shmget>() "
6643 "は I<key> に対応するセグメントを探し、 ユーザがそのセグメントにアクセスする許"
6647 #: build/C/man2/shmget.2:100
6650 msgstr "B<IPC_EXCL>"
6653 #: build/C/man2/shmget.2:103
6654 msgid "used with B<IPC_CREAT> to ensure failure if the segment already exists."
6656 "B<IPC_CREAT> と共に使用し、セグメントが既に存在した場合には 失敗することを保"
6660 #: build/C/man2/shmget.2:103
6662 msgid "I<mode_flags>"
6663 msgstr "I<mode_flags>"
6666 #: build/C/man2/shmget.2:113
6668 "(least significant 9 bits) specifying the permissions granted to the owner, "
6669 "group, and world. These bits have the same format, and the same meaning, as "
6670 "the I<mode> argument of B<open>(2). Presently, the execute permissions are "
6671 "not used by the system."
6673 "(下位 9 ビット) 所有者、グループ、他人 (world) への許可を指定する。 これらの"
6674 "ビットは B<open>(2) の I<mode> 引き数と同じ形式で同じ意味を持つ。 今のとこ"
6675 "ろ、システムは実行 (execute) 許可を参照しない。"
6678 #: build/C/man2/shmget.2:113
6680 msgid "B<SHM_HUGETLB> (since Linux 2.6)"
6681 msgstr "B<SHM_HUGETLB> (Linux 2.6 以降)"
6684 #: build/C/man2/shmget.2:119
6686 "Allocate the segment using \"huge pages.\" See the kernel source file "
6687 "I<Documentation/vm/hugetlbpage.txt> for further information."
6689 "\"ヒュージページ (huge page)\" を使うセグメントを割り当てる。 詳細な情報は、"
6690 "カーネル・ソースのファイル I<Documentation/vm/hugetlbpage.txt> を参照。"
6693 #: build/C/man2/shmget.2:119
6695 msgid "B<SHM_NORESERVE> (since Linux 2.6.15)"
6696 msgstr "B<SHM_NORESERVE> (Linux 2.6.15 以降)"
6698 #. As at 2.6.17-rc2, this flag has no effect if SHM_HUGETLB was also
6701 #: build/C/man2/shmget.2:138
6703 "This flag serves the same purpose as the B<mmap>(2) B<MAP_NORESERVE> flag. "
6704 "Do not reserve swap space for this segment. When swap space is reserved, "
6705 "one has the guarantee that it is possible to modify the segment. When swap "
6706 "space is not reserved one might get B<SIGSEGV> upon a write if no physical "
6707 "memory is available. See also the discussion of the file I</proc/sys/vm/"
6708 "overcommit_memory> in B<proc>(5)."
6710 "このフラグは、 B<mmap>(2) の B<MAP_NORESERVE> フラグと同じ役割を果たす。 こ"
6711 "のセグメントに対するスワップ空間の予約を行わない。 スワップ空間を予約した場合"
6712 "は、そのセグメントの変更が必ず成功することが 保証される。スワップ空間の予約を"
6713 "行わなかった場合は、物理メモリに空きが ないと書き込み時に B<SIGSEGV> を受け取"
6714 "る可能性がある。 B<proc>(5) にある I</proc/sys/vm/overcommit_memory> ファイ"
6718 #: build/C/man2/shmget.2:146
6720 "When a new shared memory segment is created, its contents are initialized to "
6721 "zero values, and its associated data structure, I<shmid_ds> (see B<shmctl>"
6722 "(2)), is initialized as follows:"
6724 "共有メモリ・セグメントが新たに作成される際、 共有メモリ・セグメントの内容は "
6725 "0 で初期化され、 関連情報を保持するデータ構造体 I<shmid_ds> は以下のように初"
6729 #: build/C/man2/shmget.2:151
6731 "I<shm_perm.cuid> and I<shm_perm.uid> are set to the effective user ID of the "
6734 "I<shm_perm.cuid> と I<shm_perm.uid> に呼び出し元プロセスの実効 (effective) "
6738 #: build/C/man2/shmget.2:156
6740 "I<shm_perm.cgid> and I<shm_perm.gid> are set to the effective group ID of "
6741 "the calling process."
6743 "I<shm_perm.cgid> と I<shm_perm.gid> に呼び出し元プロセスの実効グループID を設"
6747 #: build/C/man2/shmget.2:161
6749 "The least significant 9 bits of I<shm_perm.mode> are set to the least "
6750 "significant 9 bit of I<shmflg>."
6752 "I<shm_perm.mode> の下位 9 ビットに I<shmflg> の下位 9 ビットを設定する。"
6755 #: build/C/man2/shmget.2:165
6756 msgid "I<shm_segsz> is set to the value of I<size>."
6757 msgstr "I<shm_segsz> に I<size> の値を設定する。"
6760 #: build/C/man2/shmget.2:172
6761 msgid "I<shm_lpid>, I<shm_nattch>, I<shm_atime> and I<shm_dtime> are set to 0."
6763 "I<shm_lpid>, I<shm_nattch>, I<shm_atime>, I<shm_dtime> に 0 を設定する。"
6766 #: build/C/man2/shmget.2:175
6767 msgid "I<shm_ctime> is set to the current time."
6768 msgstr "I<shm_ctime> に現在の時刻を設定する。"
6771 #: build/C/man2/shmget.2:178
6773 "If the shared memory segment already exists, the permissions are verified, "
6774 "and a check is made to see if it is marked for destruction."
6776 "共有メモリ・セグメントが既に存在する場合、アクセス許可の検査と、 破壊 "
6777 "(destruction) マークがつけられていないかのチェックが行われる。"
6780 #: build/C/man2/shmget.2:182
6782 "A valid segment identifier, I<shmid>, is returned on success, -1 on error."
6784 "成功した場合、有効なセグメント識別子 I<shmid> が返される。エラーの場合、 -1 "
6788 #: build/C/man2/shmget.2:186
6789 msgid "On failure, I<errno> is set to one of the following:"
6790 msgstr "失敗した場合は I<errno> が以下のどれかに設定される:"
6793 #: build/C/man2/shmget.2:192
6795 "The user does not have permission to access the shared memory segment, and "
6796 "does not have the B<CAP_IPC_OWNER> capability."
6798 "ユーザーはその共有メモリ・セグメントへのアクセス許可を持たず、 "
6799 "B<CAP_IPC_OWNER> ケーパビリティも持っていない。"
6802 #: build/C/man2/shmget.2:196
6803 msgid "B<IPC_CREAT | IPC_EXCL> was specified and the segment exists."
6805 "B<IPC_CREAT | IPC_EXCL> が指定されていたが、そのセグメントが既に存在する。"
6808 #: build/C/man2/shmget.2:202
6810 "A new segment was to be created and I<size> E<lt> B<SHMMIN> or I<size> E<gt> "
6811 "B<SHMMAX>, or no new segment was to be created, a segment with given key "
6812 "existed, but I<size> is greater than the size of that segment."
6814 "新しいセグメントを作成しようとした際に I<size> E<lt> B<SHMMIN> または "
6815 "I<size> E<gt> B<SHMMAX> であった。 もしくは、指定されたキーに対応するセグメン"
6816 "トが既に存在して、新しい セグメントを作成しようとはしなかったが、I<size> が存"
6817 "在するセグメントの サイズよりも大きかった。"
6820 #: build/C/man2/shmget.2:211
6822 "No segment exists for the given I<key>, and B<IPC_CREAT> was not specified."
6824 "指定された I<key> に対応するセグメントが存在せず、 B<IPC_CREAT> も指定されて"
6828 #: build/C/man2/shmget.2:214
6829 msgid "No memory could be allocated for segment overhead."
6830 msgstr "セグメントの管理情報 (overhead) に割り当てるメモリがなかった。"
6833 #: build/C/man2/shmget.2:222
6835 "All possible shared memory IDs have been taken (B<SHMMNI>), or allocating a "
6836 "segment of the requested I<size> would cause the system to exceed the system-"
6837 "wide limit on shared memory (B<SHMALL>)."
6839 "システム全体の共有メモリ・セグメント数の制限 (B<SHMMNI>) に達した、または要"
6840 "求された I<size> のセグメントの割り当てが システム全体の共有メモリサイズの制"
6841 "限 (B<SHMALL>) を超過した。"
6844 #: build/C/man2/shmget.2:229
6846 "The B<SHM_HUGETLB> flag was specified, but the caller was not privileged "
6847 "(did not have the B<CAP_IPC_LOCK> capability)."
6849 "B<SHM_HUGETLB> フラグが指定されたが、呼び出し元には権限がなかった "
6850 "(B<CAP_IPC_LOCK> ケーパビリティを持っていなかった)。"
6853 #: build/C/man2/shmget.2:235
6854 msgid "B<SHM_HUGETLB> is a nonportable Linux extension."
6855 msgstr "B<SHM_HUGETLB> は Linux での拡張であり、移植性はない。"
6858 #: build/C/man2/shmget.2:245
6860 "B<IPC_PRIVATE> isn't a flag field but a I<key_t> type. If this special "
6861 "value is used for I<key>, the system call ignores everything but the least "
6862 "significant 9 bits of I<shmflg> and creates a new shared memory segment (on "
6865 "B<IPC_PRIVATE> はフラグではなく I<key_t> 型である。 この特別な値が I<key> に"
6866 "使用された場合は、 B<shmget>() は I<shmflg> の下位 9 ビットを除いた全てを無"
6867 "視し、 (成功すれば) 新しい共有メモリ・セグメントを作成する。"
6870 #: build/C/man2/shmget.2:249
6872 "The following limits on shared memory segment resources affect the B<shmget>"
6875 "B<shmget>() コールに影響する共有メモリ・セグメント資源の制限は以下の通りであ"
6879 #: build/C/man2/shmget.2:249
6885 #: build/C/man2/shmget.2:254
6887 "System wide maximum of shared memory pages (on Linux, this limit can be read "
6888 "and modified via I</proc/sys/kernel/shmall>)."
6890 "システム全体の共有メモリ・ページの最大数 (Linux では、この上限値は I</proc/"
6891 "sys/kernel/shmall> 経由で参照したり、変更したりできる)。"
6894 #: build/C/man2/shmget.2:254
6900 #: build/C/man2/shmget.2:259
6902 "Maximum size in bytes for a shared memory segment: policy dependent (on "
6903 "Linux, this limit can be read and modified via I</proc/sys/kernel/shmmax>)."
6905 "共有メモリ・セグメントのバイト単位の大きさの上限: 方針依存 (Linux では、この"
6906 "上限値は I</proc/sys/kernel/shmmax> 経由で参照したり、変更したりできる)。"
6909 #: build/C/man2/shmget.2:259
6915 #: build/C/man2/shmget.2:265
6917 "Minimum size in bytes for a shared memory segment: implementation dependent "
6918 "(currently 1 byte, though B<PAGE_SIZE> is the effective minimum size)."
6920 "共有メモリ・セグメントのバイト単位の大きさの下限: 実装依存 (現在は 1 バイトだ"
6921 "が、実質的な最小サイズは B<PAGE_SIZE> である)。"
6924 #: build/C/man2/shmget.2:265
6929 #. Kernels between 2.4.x and 2.6.8 had an off-by-one error that meant
6930 #. that we could create one more segment than SHMMNI -- MTK
6931 #. This /proc file is not available in Linux 2.2 and earlier -- MTK
6933 #: build/C/man2/shmget.2:274
6935 "System wide maximum number of shared memory segments: implementation "
6936 "dependent (currently 4096, was 128 before Linux 2.3.99; on Linux, this limit "
6937 "can be read and modified via I</proc/sys/kernel/shmmni>)."
6939 "システム全体の共有メモリーの数の上限: 実装依存 (現在は 4096。Linux 2.3.99 よ"
6940 "り前では 128。 Linux では、この上限値は I</proc/sys/kernel/shmmni> 経由で参照"
6944 #: build/C/man2/shmget.2:278
6946 "The implementation has no specific limits for the per-process maximum number "
6947 "of shared memory segments (B<SHMSEG>)."
6949 "プロセス当りの共有メモリ・セグメントの個数の最大値 (B<SHMSEG>) に関する実装"
6953 #: build/C/man2/shmget.2:284
6955 "Until version 2.3.30 Linux would return B<EIDRM> for a B<shmget>() on a "
6956 "shared memory segment scheduled for deletion."
6958 "バージョン 2.3.30 までは、Linux は 削除が予定されている共有メモリ・セグメント"
6959 "に対して B<shmget>() が行われると B<EIDRM> を返していた。"
6962 #: build/C/man2/shmget.2:290
6964 "The name choice B<IPC_PRIVATE> was perhaps unfortunate, B<IPC_NEW> would "
6965 "more clearly show its function."
6967 "B<IPC_PRIVATE> という名前を選んだのはおそらく失敗であろう。 B<IPC_NEW> の方が"
6968 "より明確にその機能を表しているだろう。"
6971 #: build/C/man2/shmget.2:298
6973 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<ftok>(3), B<capabilities>(7), "
6974 "B<shm_overview>(7), B<svipc>(7)"
6976 "B<shmat>(2), B<shmctl>(2), B<shmdt>(2), B<ftok>(3), B<capabilities>(7), "
6977 "B<shm_overview>(7), B<svipc>(7)"
6980 #: build/C/man2/shmop.2:39
6986 #: build/C/man2/shmop.2:39
6992 #: build/C/man2/shmop.2:42
6993 msgid "shmat, shmdt - shared memory operations"
6994 msgstr "shmat, shmdt - 共有メモリ (shared memory) の操作"
6997 #: build/C/man2/shmop.2:46
7000 "B<#include E<lt>sys/types.hE<gt>>\n"
7001 "B<#include E<lt>sys/shm.hE<gt>>\n"
7003 "B<#include E<lt>sys/types.hE<gt>>\n"
7004 "B<#include E<lt>sys/shm.hE<gt>>\n"
7007 #: build/C/man2/shmop.2:48
7009 msgid "B<void *shmat(int >I<shmid>B<, const void *>I<shmaddr>B<, int >I<shmflg>B<);>\n"
7010 msgstr "B<void *shmat(int >I<shmid>B<, const void *>I<shmaddr>B<, int >I<shmflg>B<);>\n"
7013 #: build/C/man2/shmop.2:50
7015 msgid "B<int shmdt(const void *>I<shmaddr>B<);>\n"
7016 msgstr "B<int shmdt(const void *>I<shmaddr>B<);>\n"
7019 #: build/C/man2/shmop.2:59
7021 "B<shmat>() attaches the shared memory segment identified by I<shmid> to the "
7022 "address space of the calling process. The attaching address is specified by "
7023 "I<shmaddr> with one of the following criteria:"
7025 "B<shmat>() は I<shmid> で指定された共有メモリ・セグメント (shared memory "
7026 "segment) を コールしたプロセスのアドレス空間に付加 (attach) する。 付加するア"
7027 "ドレスは I<shmaddr> に以下のどれかの形式で指定する:"
7030 #: build/C/man2/shmop.2:65
7032 "If I<shmaddr> is NULL, the system chooses a suitable (unused) address at "
7033 "which to attach the segment."
7035 "I<shmaddr> が NULL ならば、システムはセグメントを付加するための 適切な (使用"
7036 "されていない) アドレスを選択する。"
7039 #: build/C/man2/shmop.2:80
7041 "If I<shmaddr> isn't NULL and B<SHM_RND> is specified in I<shmflg>, the "
7042 "attach occurs at the address equal to I<shmaddr> rounded down to the nearest "
7043 "multiple of B<SHMLBA>. Otherwise I<shmaddr> must be a page-aligned address "
7044 "at which the attach occurs."
7046 "I<shmaddr> が NULL でなく B<SHM_RND> が I<shmflg> に指定されている場合は、 "
7047 "I<shmaddr> を B<SHMLBA> の倍数へと切り捨てた (rounding down) のと等しいアドレ"
7048 "スへ付加する。 その他の場合は I<shmaddr> は付加を行なうアドレスで、ページ境界"
7052 #: build/C/man2/shmop.2:90
7054 "If B<SHM_RDONLY> is specified in I<shmflg>, the segment is attached for "
7055 "reading and the process must have read permission for the segment. "
7056 "Otherwise the segment is attached for read and write and the process must "
7057 "have read and write permission for the segment. There is no notion of a "
7058 "write-only shared memory segment."
7060 "B<SHM_RDONLY> が I<shmflg> に指定されていた場合は、 セグメントは読み込み専用"
7061 "に付加され、プロセスはそのセグメントへの 読み込み許可を持たなければならな"
7062 "い。 そうでなければそのセグメントは読み込みと書き込みのために付加され、 プロ"
7063 "セスはそのセグメントに読み込みと書き込みの許可を持つ必要がある。 書き込み専用"
7064 "の共有メモリ・セグメントという概念は存在しない。"
7067 #: build/C/man2/shmop.2:105
7069 "The (Linux-specific) B<SHM_REMAP> flag may be specified in I<shmflg> to "
7070 "indicate that the mapping of the segment should replace any existing mapping "
7071 "in the range starting at I<shmaddr> and continuing for the size of the "
7072 "segment. (Normally an B<EINVAL> error would result if a mapping already "
7073 "exists in this address range.) In this case, I<shmaddr> must not be NULL."
7075 "(Linux 特有の) B<SHM_REMAP> フラグが I<shmflg> に指定された場合は、 セグメン"
7076 "トのマッピングを既存のマッピングに置き換える。 マッピングの範囲は、 "
7077 "I<shmaddr> から始まりセグメントのサイズ分だけある (通常 B<EINVAL> エラーは、"
7078 "このアドレス範囲にマッピングが既に存在するために起る)。 このフラグを指定する"
7079 "場合は、 I<shmaddr> が NULL であってはならない。"
7082 #: build/C/man2/shmop.2:112
7084 "The B<brk>(2) value of the calling process is not altered by the attach. "
7085 "The segment will automatically be detached at process exit. The same "
7086 "segment may be attached as a read and as a read-write one, and more than "
7087 "once, in the process's address space."
7089 "呼び出したプロセスの B<brk>(2) の値は付加によって変化しない。 そのセグメント"
7090 "はプロセスが終了 (exit) したら自動的に分離 (detach) される。 同じセグメントを"
7091 "プロセスのアドレス空間に、読み込み専用および読み書き両用 として付加でき、また"
7095 #: build/C/man2/shmop.2:120
7097 "A successful B<shmat>() call updates the members of the I<shmid_ds> "
7098 "structure (see B<shmctl>(2)) associated with the shared memory segment as "
7101 "成功した B<shmat>() コールは共有メモリ・セグメントに関連する I<shmid_ds> 構"
7102 "造体 (B<shmctl>(2) を参照) のメンバーを以下のように更新する:"
7105 #: build/C/man2/shmop.2:123
7106 msgid "I<shm_atime> is set to the current time."
7107 msgstr "I<shm_atime> には現在の時刻を設定する。"
7110 #: build/C/man2/shmop.2:126 build/C/man2/shmop.2:152
7111 msgid "I<shm_lpid> is set to the process-ID of the calling process."
7112 msgstr "I<shm_lpid> には呼び出したプロセスのプロセス ID が設定される。"
7115 #: build/C/man2/shmop.2:129
7116 msgid "I<shm_nattch> is incremented by one."
7117 msgstr "I<shm_nattch> を 1 増加させる。"
7120 #: build/C/man2/shmop.2:140
7122 "B<shmdt>() detaches the shared memory segment located at the address "
7123 "specified by I<shmaddr> from the address space of the calling process. The "
7124 "to-be-detached segment must be currently attached with I<shmaddr> equal to "
7125 "the value returned by the attaching B<shmat>() call."
7127 "B<shmdt>() は呼び出したプロセスのアドレス空間から I<shmaddr> で指定されたア"
7128 "ドレスに配置された共有メモリ・セグメントを分離 (detach) する。 分離する共有メ"
7129 "モリ・セグメントは、現在 I<shmaddr> に付加されているものでなければならない。 "
7130 "I<shmaddr> は、それを付加した時に B<shmat>() が返した値に等しくなければなら"
7134 #: build/C/man2/shmop.2:146
7136 "On a successful B<shmdt>() call the system updates the members of the "
7137 "I<shmid_ds> structure associated with the shared memory segment as follows:"
7139 "成功した B<shmdt>() コールはその共有メモリ・セグメントに関連する "
7140 "I<shmid_ds> 構造体のメンバーを以下のように更新する:"
7143 #: build/C/man2/shmop.2:149
7144 msgid "I<shm_dtime> is set to the current time."
7145 msgstr "I<shm_dtime> には現在の時刻が設定される。"
7148 #: build/C/man2/shmop.2:157
7150 "I<shm_nattch> is decremented by one. If it becomes 0 and the segment is "
7151 "marked for deletion, the segment is deleted."
7153 "I<shm_nattch> を 1 減少させる。 もし 0 になり、削除マークがあった場合は その"
7157 #: build/C/man2/shmop.2:161
7159 "After a B<fork>(2) the child inherits the attached shared memory segments."
7161 "B<fork>(2) した後、子プロセスは付加された共有メモリ・セグメントを継承する。"
7164 #: build/C/man2/shmop.2:165
7166 "After an B<execve>(2) all attached shared memory segments are detached from "
7169 "B<exec>(2) した後、全ての付加された共有メモリ・セグメントはプロセスから分離"
7173 #: build/C/man2/shmop.2:169
7175 "Upon B<_exit>(2) all attached shared memory segments are detached from the "
7178 "B<exit>(2) において、全ての付加された共有メモリ・セグメントはプロセスから分"
7182 #: build/C/man2/shmop.2:177
7184 "On success B<shmat>() returns the address of the attached shared memory "
7185 "segment; on error I<(void\\ *)\\ -1> is returned, and I<errno> is set to "
7186 "indicate the cause of the error."
7188 "B<shmat>() は、成功した場合、 付加された共有メモリ・セグメントのアドレスを返"
7189 "す。 エラーの場合、 I<(void\\ *)\\ -1> を返し、 I<errno> にエラーの原因を示す"
7193 #: build/C/man2/shmop.2:183
7195 "On success B<shmdt>() returns 0; on error -1 is returned, and I<errno> is "
7196 "set to indicate the cause of the error."
7198 "B<shmdt>() は、成功すると 0 を返す。 エラーの場合、-1 を返し、 I<errno> にエ"
7202 #: build/C/man2/shmop.2:189
7203 msgid "When B<shmat>() fails, I<errno> is set to one of the following:"
7205 "B<shmat>() が失敗した場合、 I<errno> に以下の値のどれかを設定して返す:"
7208 #: build/C/man2/shmop.2:195
7210 "The calling process does not have the required permissions for the requested "
7211 "attach type, and does not have the B<CAP_IPC_OWNER> capability."
7213 "呼び出したプロセスに要求された種類の付加に必要な許可がなく、 "
7214 "B<CAP_IPC_OWNER> ケーパビリティ (capability) がない。"
7217 #: build/C/man2/shmop.2:209
7219 "Invalid I<shmid> value, unaligned (i.e., not page-aligned and B<SHM_RND> was "
7220 "not specified) or invalid I<shmaddr> value, or can't attach segment at "
7221 "I<shmaddr>, or B<SHM_REMAP> was specified and I<shmaddr> was NULL."
7223 "I<shmid> の値が不正である。 I<shmaddr> の値が境界違反 (unaligned) (つまり、"
7224 "ページ境界に合っておらず、 B<SHM_RND> が指定されていない) または が不正であ"
7225 "る。 I<shmaddr> へのセグメントの付加に失敗した。 または B<SHM_REMAP> が指定さ"
7226 "れているが、 I<shmaddr> が NULL であった。"
7229 #: build/C/man2/shmop.2:212
7230 msgid "Could not allocate memory for the descriptor or for the page tables."
7232 "ディスクリプター (descriptor) やページ・テーブルのためのメモリを 割り当てるこ"
7236 #: build/C/man2/shmop.2:218
7237 msgid "When B<shmdt>() fails, I<errno> is set as follows:"
7238 msgstr "B<shmdt>() が失敗した場合、 B<EINVAL> は以下のようにセットされる:"
7240 #. The following since 2.6.17-rc1:
7242 #: build/C/man2/shmop.2:226
7244 "There is no shared memory segment attached at I<shmaddr>; or, I<shmaddr> is "
7245 "not aligned on a page boundary."
7247 "I<shmaddr> に付加された共有メモリ・セグメントが存在しない。 もしくは、 "
7248 "I<shmaddr> がページ境界に合っていない。"
7251 #: build/C/man2/shmop.2:245
7253 "In SVID 3 (or perhaps earlier) the type of the I<shmaddr> argument was "
7254 "changed from I<char *> into I<const void *>, and the returned type of "
7255 "B<shmat>() from I<char *> into I<void *>. (Linux libc4 and libc5 have the "
7256 "I<char *> prototypes; glibc2 has I<void *>.)"
7258 "SVID 3 で (たぶんそれより前だと思うが) I<shmaddr> 引き数の型は I<char *> か"
7259 "ら I<const void *> に、I<shmat>() の返り値の型は I<char *> から I<void *> に"
7260 "変更された (Linux では libc4 と libc5 のプロトタイプは I<char *> であり、"
7261 "glibc2 のプロトタイプは I<void *> である)。"
7264 #: build/C/man2/shmop.2:257
7266 "Using B<shmat>() with I<shmaddr> equal to NULL is the preferred, portable "
7267 "way of attaching a shared memory segment. Be aware that the shared memory "
7268 "segment attached in this way may be attached at different addresses in "
7269 "different processes. Therefore, any pointers maintained within the shared "
7270 "memory must be made relative (typically to the starting address of the "
7271 "segment), rather than absolute."
7273 "共有メモリセグメントを付加する場合の移植性の高い方法としては、 I<shmaddr> を "
7274 "NULL にして B<shmat>() を使用するのがよい。 このような方法で付加される共有メ"
7275 "モリセグメントは、 プロセスが異なれば別のアドレスに付加される、という点に注意"
7276 "すること。 よって共有メモリ内で管理されるポインタは、 絶対アドレスではなく、 "
7277 "(一般的にはセグメントの開始アドレスからの) 相対アドレスで作成するべきであ"
7281 #: build/C/man2/shmop.2:262
7283 "On Linux, it is possible to attach a shared memory segment even if it is "
7284 "already marked to be deleted. However, POSIX.1-2001 does not specify this "
7285 "behavior and many other implementations do not support it."
7287 "Linux では共有メモリセグメントに既に削除マークが付けられていても、 その共有メ"
7288 "モリセグメントを付加することができる。 しかし POSIX.1-2001 ではこのような動作"
7289 "を指定しておらず、 他の多くの実装もこれをサポートしていない。"
7292 #: build/C/man2/shmop.2:265
7293 msgid "The following system parameter affects B<shmat>():"
7294 msgstr "以下のシステム・パラメーターは、 B<shmat>() に影響する:"
7296 #. FIXME A good explanation of the rationale for the existence
7297 #. of SHMLBA would be useful here
7299 #: build/C/man2/shmop.2:265
7304 #. FIXME That last sentence isn't true for all Linux
7305 #. architectures (i.e., SHMLBA != PAGE_SIZE for some architectures)
7308 #: build/C/man2/shmop.2:278
7310 "Segment low boundary address multiple. Must be page aligned. For the "
7311 "current implementation the B<SHMLBA> value is B<PAGE_SIZE>."
7313 "セグメントの境界アドレスの最小倍数。ページ境界に合ってなければならない。 現在"
7314 "の実装では B<SHMLBA> の値は B<PAGE_SIZE> である。"
7317 #: build/C/man2/shmop.2:282
7319 "The implementation places no intrinsic limit on the per-process maximum "
7320 "number of shared memory segments (B<SHMSEG>)."
7322 "現在の実装では、プロセスごとの 共有メモリ・セグメントの最大数 (B<SHMSEG>) に"
7326 #: build/C/man2/shmop.2:290
7328 "B<brk>(2), B<mmap>(2), B<shmctl>(2), B<shmget>(2), B<capabilities>(7), "
7329 "B<shm_overview>(7), B<svipc>(7)"
7331 "B<brk>(2), B<mmap>(2), B<shmctl>(2), B<shmget>(2), B<capabilities>(7), "
7332 "B<shm_overview>(7), B<svipc>(7)"
7335 #: build/C/man2/subpage_prot.2:28
7337 msgid "SUBPAGE_PROT"
7338 msgstr "SUBPAGE_PROT"
7341 #: build/C/man2/subpage_prot.2:28
7347 #: build/C/man2/subpage_prot.2:31
7348 msgid "subpage_prot - define a subpage protection for an address range"
7349 msgstr "subpage_prot - define a subpage protection for an address range"
7352 #: build/C/man2/subpage_prot.2:35
7355 "B<long subpage_prot(unsigned long >I<addr>B<, unsigned long >I<len>B<,>\n"
7356 "B< uint32_t *>I<map>B<);>\n"
7358 "B<long subpage_prot(unsigned long >I<addr>B<, unsigned long >I<len>B<,>\n"
7359 "B< uint32_t *>I<map>B<);>\n"
7362 #: build/C/man2/subpage_prot.2:42
7364 "The PowerPC-specific B<subpage_prot>() system call provides the facility to "
7365 "control the access permissions on individual 4kB subpages on systems "
7366 "configured with a page size of 64kB."
7368 "The PowerPC-specific B<subpage_prot>() system call provides the facility to "
7369 "control the access permissions on individual 4kB subpages on systems "
7370 "configured with a page size of 64kB."
7373 #: build/C/man2/subpage_prot.2:49
7375 "The protection map is applied to the memory pages in the region starting at "
7376 "I<addr> and continuing for I<len> bytes. Both of these arguments must be "
7377 "aligned to a 64-kB boundary."
7379 "The protection map is applied to the memory pages in the region starting at "
7380 "I<addr> and continuing for I<len> bytes. Both of these arguments must be "
7381 "aligned to a 64-kB boundary."
7384 #: build/C/man2/subpage_prot.2:61
7386 "The protection map is specified in the buffer pointed to by I<map>. The map "
7387 "has 2 bits per 4kB subpage; thus each 32-bit word specifies the protections "
7388 "of 16 4kB subpages inside a 64kB page (so, the number of 32-bit words "
7389 "pointed to by I<map> should equate to the number of 64-kB pages specified by "
7390 "I<len>). Each 2-bit field in the protection map is either 0 to allow any "
7391 "access, 1 to prevent writes, or 2 or 3 to prevent all accesses."
7393 "The protection map is specified in the buffer pointed to by I<map>. The map "
7394 "has 2 bits per 4kB subpage; thus each 32-bit word specifies the protections "
7395 "of 16 4kB subpages inside a 64kB page (so, the number of 32-bit words "
7396 "pointed to by I<map> should equate to the number of 64-kB pages specified by "
7397 "I<len>). Each 2-bit field in the protection map is either 0 to allow any "
7398 "access, 1 to prevent writes, or 2 or 3 to prevent all accesses."
7401 #: build/C/man2/subpage_prot.2:66
7403 "On success, B<subpage_prot>() returns 0. Otherwise, one of the error codes "
7404 "specified below is returned."
7406 "On success, B<subpage_prot>() returns 0. Otherwise, one of the error codes "
7407 "specified below is returned."
7410 #: build/C/man2/subpage_prot.2:72
7411 msgid "The buffer referred to by I<map> is not accessible."
7412 msgstr "The buffer referred to by I<map> is not accessible."
7415 #: build/C/man2/subpage_prot.2:82
7417 "The I<addr> or I<len> arguments are incorrect. Both of these arguments must "
7418 "be aligned to a multiple of the system page size, and they must not refer to "
7419 "a region outside of the address space of the process or to a region that "
7420 "consists of huge pages."
7422 "The I<addr> or I<len> arguments are incorrect. Both of these arguments must "
7423 "be aligned to a multiple of the system page size, and they must not refer to "
7424 "a region outside of the address space of the process or to a region that "
7425 "consists of huge pages."
7428 #: build/C/man2/subpage_prot.2:85 build/C/man2/sync_file_range.2:166
7429 msgid "Out of memory."
7433 #: build/C/man2/subpage_prot.2:91
7435 "This system call is provided on the PowerPC architecture since Linux "
7436 "2.6.25. The system call is provided only if the kernel is configured with "
7437 "B<CONFIG_PPC_64K_PAGES>. No library support is provided."
7439 "This system call is provided on the PowerPC architecture since Linux "
7440 "2.6.25. The system call is provided only if the kernel is configured with "
7441 "B<CONFIG_PPC_64K_PAGES>. No library support is provided."
7444 #: build/C/man2/subpage_prot.2:98
7446 "Normal page protections (at the 64-kB page level) also apply; the subpage "
7447 "protection mechanism is an additional constraint, so putting 0 in a 2-bit "
7448 "field won't allow writes to a page that is otherwise write-protected."
7450 "Normal page protections (at the 64-kB page level) also apply; the subpage "
7451 "protection mechanism is an additional constraint, so putting 0 in a 2-bit "
7452 "field won't allow writes to a page that is otherwise write-protected."
7455 #: build/C/man2/subpage_prot.2:98
7460 #. In the initial implementation, it was the case that:
7461 #. In fact the whole process is switched to use 4k hardware pages when the
7462 #. subpage_prot system call is used, but this could be improved in future
7463 #. to switch only the affected segments.
7464 #. But Paul Mackerass says (Oct 2010): I'm pretty sure we now only switch
7465 #. the affected segment, not the whole process.
7467 #: build/C/man2/subpage_prot.2:120
7469 "This system call is provided to assist writing emulators that operate using "
7470 "64-kB pages on PowerPC systems. When emulating systems such as x86, which "
7471 "uses a smaller page size, the emulator can no longer use the memory-"
7472 "management unit (MMU) and normal system calls for controlling page "
7473 "protections. (The emulator could emulate the MMU by checking and possibly "
7474 "remapping the address for each memory access in software, but that is "
7475 "slow.) The idea is that the emulator supplies an array of protection masks "
7476 "to apply to a specified range of virtual addresses. These masks are applied "
7477 "at the level where hardware page-table entries (PTEs) are inserted into the "
7478 "hardware page table based on the Linux PTEs, so the Linux PTEs are not "
7479 "affected. Implicit in this is that the regions of the address space that "
7480 "are protected are switched to use 4-kB hardware pages rather than 64-kB "
7481 "hardware pages (on machines with hardware 64-kB page support)."
7483 "This system call is provided to assist writing emulators that operate using "
7484 "64-kB pages on PowerPC systems. When emulating systems such as x86, which "
7485 "uses a smaller page size, the emulator can no longer use the memory-"
7486 "management unit (MMU) and normal system calls for controlling page "
7487 "protections. (The emulator could emulate the MMU by checking and possibly "
7488 "remapping the address for each memory access in software, but that is "
7489 "slow.) The idea is that the emulator supplies an array of protection masks "
7490 "to apply to a specified range of virtual addresses. These masks are applied "
7491 "at the level where hardware page-table entries (PTEs) are inserted into the "
7492 "hardware page table based on the Linux PTEs, so the Linux PTEs are not "
7493 "affected. Implicit in this is that the regions of the address space that "
7494 "are protected are switched to use 4-kB hardware pages rather than 64-kB "
7495 "hardware pages (on machines with hardware 64-kB page support)."
7498 #: build/C/man2/subpage_prot.2:123
7499 msgid "B<mprotect>(2), B<syscall>(2);"
7500 msgstr "B<mprotect>(2), B<syscall>(2);"
7503 #: build/C/man2/subpage_prot.2:126
7504 msgid "the kernel source file I<Documentation/vm/hugetlbpage.txt>."
7505 msgstr "the kernel source file I<Documentation/vm/hugetlbpage.txt>."
7508 #: build/C/man2/sync_file_range.2:30
7510 msgid "SYNC_FILE_RANGE"
7511 msgstr "SYNC_FILE_RANGE"
7514 #: build/C/man2/sync_file_range.2:33
7515 msgid "sync_file_range - sync a file segment with disk"
7516 msgstr "sync_file_range - ファイルセグメントをディスクと同期する"
7519 #: build/C/man2/sync_file_range.2:37
7522 #| "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
7523 #| "B<#include E<lt>fcntl.hE<gt>>\n"
7525 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
7526 "B<#include E<lt>fcntl.hE<gt>>\n"
7528 "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
7529 "B<#include E<lt>fcntl.hE<gt>>\n"
7532 #: build/C/man2/sync_file_range.2:40
7535 "B<int sync_file_range(int >I<fd>B<, off64_t >I<offset>B<, off64_t >I<nbytes>B<,>\n"
7536 "B< unsigned int >I<flags>B<);>\n"
7538 "B<int sync_file_range(int >I<fd>B<, off64_t >I<offset>B<, off64_t >I<nbytes>B<,>\n"
7539 "B< unsigned int >I<flags>B<);>\n"
7542 #: build/C/man2/sync_file_range.2:47
7544 "B<sync_file_range>() permits fine control when synchronizing the open file "
7545 "referred to by the file descriptor I<fd> with disk."
7547 "B<sync_file_range>() を使うと、ファイルディスクリプタ I<fd> で参照されるオー"
7548 "プンされたファイルのディスクとの同期に関して、 きめ細かな制御が可能となる。"
7551 #: build/C/man2/sync_file_range.2:61
7553 "I<offset> is the starting byte of the file range to be synchronized. "
7554 "I<nbytes> specifies the length of the range to be synchronized, in bytes; if "
7555 "I<nbytes> is zero, then all bytes from I<offset> through to the end of file "
7556 "are synchronized. Synchronization is in units of the system page size: "
7557 "I<offset> is rounded down to a page boundary; I<(offset+nbytes-1)> is "
7558 "rounded up to a page boundary."
7560 "I<offset> は、同期を行うファイルの領域の開始バイトである。 I<nbytes> には同期"
7561 "を行う領域の長さをバイト単位で指定する。 I<nbytes> が 0 の場合は、 I<offset> "
7562 "からファイル末尾までの全バイトを同期する。 同期はシステムのページサイズの単位"
7563 "で行われる。 I<offset> はページ境界にあわせて切り下げられ、 I<(offset"
7564 "+nbytes-1)> はページ境界にあわせて切り上げられる。"
7567 #: build/C/man2/sync_file_range.2:65
7568 msgid "The I<flags> bit-mask argument can include any of the following values:"
7569 msgstr "ビットマスク引き数 I<flags> には以下の値を指定することができる:"
7572 #: build/C/man2/sync_file_range.2:65
7574 msgid "B<SYNC_FILE_RANGE_WAIT_BEFORE>"
7575 msgstr "B<SYNC_FILE_RANGE_WAIT_BEFORE>"
7578 #: build/C/man2/sync_file_range.2:70
7580 "Wait upon write-out of all pages in the specified range that have already "
7581 "been submitted to the device driver for write-out before performing any "
7584 "何らかの書き込みを行う前に、指定された領域のページで 書き出しを行うようにデバ"
7585 "イスドライバにすでに要求が発行されている ページの書き出しが全て完了するのを待"
7589 #: build/C/man2/sync_file_range.2:70 build/C/man2/sync_file_range.2:120
7591 msgid "B<SYNC_FILE_RANGE_WRITE>"
7592 msgstr "B<SYNC_FILE_RANGE_WRITE>"
7595 #: build/C/man2/sync_file_range.2:76
7597 "Initiate write-out of all dirty pages in the specified range which are not "
7598 "presently submitted write-out. Note that even this may block if you attempt "
7599 "to write more than request queue size."
7601 "指定された領域のページで、書き出し要求が発行されていない 全ての dirty (キャッ"
7602 "シュだけが変更されている) ページの 書き出しを開始する。 リクエストキューの大"
7603 "きさより多く書き込もうとした場合には、 この処理は停止 (block) する可能性があ"
7607 #: build/C/man2/sync_file_range.2:76
7609 msgid "B<SYNC_FILE_RANGE_WAIT_AFTER>"
7610 msgstr "B<SYNC_FILE_RANGE_WAIT_AFTER>"
7613 #: build/C/man2/sync_file_range.2:80
7615 "Wait upon write-out of all pages in the range after performing any write."
7617 "何らかの書き込み後に、指定された領域の全てのページの 書き出しが行われるのを待"
7621 #: build/C/man2/sync_file_range.2:84
7622 msgid "Specifying I<flags> as 0 is permitted, as a no-op."
7623 msgstr "I<flags> に 0 を指定した場合、何もしないことを表す。"
7626 #: build/C/man2/sync_file_range.2:84
7632 #: build/C/man2/sync_file_range.2:100
7635 #| "This system call is extremely dangerous and should not be used in "
7636 #| "portable programs. None of these operations writes out the file's "
7637 #| "metadata. Therefore, unless the application is strictly performing "
7638 #| "overwrites of already-instantiated disk blocks, there are no guarantees "
7639 #| "that the data will be available after a crash. There is no user "
7640 #| "interface to know if a write is purely an overwrite. On filesystem using "
7641 #| "copy-on-write semantics (e.g., I<btrfs>) an overwrite of existing "
7642 #| "allocated blocks is impossible. When writing into preallocated space, "
7643 #| "many filesystems also require calls into the block allocator, which this "
7644 #| "system call does not sync out to disk. This system call does not flush "
7645 #| "disk write caches and thus does not provide any data integrity on systems "
7646 #| "with volatile disk write caches."
7648 "This system call is extremely dangerous and should not be used in portable "
7649 "programs. None of these operations writes out the file's metadata. "
7650 "Therefore, unless the application is strictly performing overwrites of "
7651 "already-instantiated disk blocks, there are no guarantees that the data will "
7652 "be available after a crash. There is no user interface to know if a write "
7653 "is purely an overwrite. On file systems using copy-on-write semantics (e."
7654 "g., I<btrfs>) an overwrite of existing allocated blocks is impossible. "
7655 "When writing into preallocated space, many file systems also require calls "
7656 "into the block allocator, which this system call does not sync out to disk. "
7657 "This system call does not flush disk write caches and thus does not provide "
7658 "any data integrity on systems with volatile disk write caches."
7660 "このシステムコールは非常に危険であり、 移植性が必要なプログラムで使用すべきで"
7661 "はない。 これらの操作ではどれもファイルのメタデータの書き出しを行わない。 し"
7662 "たがって、アプリケーションにより作成済みのディスクブロックの 上書きの実行が確"
7663 "実に行われない限り、クラッシュの後でもデータが 利用できる保証はない。 書き込"
7664 "みが上書きだけであるかを知るためのユーザインタフェースは存在しない。 "
7665 "(I<btrfs> などの) copy-on-write 動作を使ったファイルシステムでは、 既存の割り"
7666 "当て済みのブロックに対する上書き自体ができない。 前もって割り当てられた領域に"
7667 "書き込みを行う場合、 多くのファイルシステムでは block allocator への書き込み"
7668 "も必要となるが、 このシステムコールは block allocator のディスクへの同期を行"
7669 "わない。 このシステムコールはディスク書き込みキャッシュのフラッシュを 行わな"
7670 "いので、揮発性のディスク書き込みキャッシュを使ったシステムでは このシステム"
7671 "コールではデータの一貫性を確保できないことになる。"
7674 #: build/C/man2/sync_file_range.2:100
7676 msgid "Some details"
7680 #: build/C/man2/sync_file_range.2:108
7682 "B<SYNC_FILE_RANGE_WAIT_BEFORE> and B<SYNC_FILE_RANGE_WAIT_AFTER> will detect "
7683 "any I/O errors or B<ENOSPC> conditions and will return these to the caller."
7685 "B<SYNC_FILE_RANGE_WAIT_BEFORE> と B<SYNC_FILE_RANGE_WAIT_AFTER> は I/O エラー"
7686 "や B<ENOSPC> 状態を検出し、呼び出し元にこれらの情報を返す。"
7689 #: build/C/man2/sync_file_range.2:112
7690 msgid "Useful combinations of the I<flags> bits are:"
7691 msgstr "I<flags> の役に立つビットの組み合わせを以下に示す:"
7694 #: build/C/man2/sync_file_range.2:112
7696 msgid "B<SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE>"
7697 msgstr "B<SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE>"
7700 #: build/C/man2/sync_file_range.2:120
7702 "Ensures that all pages in the specified range which were dirty when "
7703 "B<sync_file_range>() was called are placed under write-out. This is a "
7704 "start-write-for-data-integrity operation."
7706 "指定された範囲内のページで、 B<sync_file_range>() が呼び出された際に dirty "
7707 "であった全てのページが、 確実に書き出し対象となるようにする。 これは、start-"
7708 "write-for-data-integrity 操作 (データ完全性確保のための書き込み開始の操作) で"
7712 #: build/C/man2/sync_file_range.2:127
7714 "Start write-out of all dirty pages in the specified range which are not "
7715 "presently under write-out. This is an asynchronous flush-to-disk "
7716 "operation. This is not suitable for data integrity operations."
7718 "指定された範囲内のページで、現在書き出し中でない全ての dirty ページの 書き出"
7719 "しを開始する。これは非同期のディスクへのフラッシュ (flush-to-disk) 操作であ"
7720 "る。データ完全性確保が必要な操作としては適切ではない。"
7723 #: build/C/man2/sync_file_range.2:127
7725 msgid "B<SYNC_FILE_RANGE_WAIT_BEFORE> (or B<SYNC_FILE_RANGE_WAIT_AFTER>)"
7726 msgstr "B<SYNC_FILE_RANGE_WAIT_BEFORE> (or B<SYNC_FILE_RANGE_WAIT_AFTER>)"
7729 #: build/C/man2/sync_file_range.2:134
7731 "Wait for completion of write-out of all pages in the specified range. This "
7732 "can be used after an earlier B<SYNC_FILE_RANGE_WAIT_BEFORE | "
7733 "SYNC_FILE_RANGE_WRITE> operation to wait for completion of that operation, "
7734 "and obtain its result."
7736 "指定された範囲内の全てのページの書き出しの完了を待つ。 このフラグは、前に行わ"
7737 "れた操作 B<SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE> の後に使用で"
7738 "き、この操作の完了を待ち、結果を取得することができる。"
7741 #: build/C/man2/sync_file_range.2:134
7743 msgid "B<SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER>"
7744 msgstr "B<SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER>"
7747 #: build/C/man2/sync_file_range.2:141
7749 "This is a write-for-data-integrity operation that will ensure that all pages "
7750 "in the specified range which were dirty when B<sync_file_range>() was "
7751 "called are committed to disk."
7753 "これは write-for-data-integrity 操作 (データ完全性確保のための書き込み) であ"
7754 "り、指定された範囲内の、 B<sync_file_range>() が呼ばれた時点で dirty な全て"
7755 "のページが ディスクに格納されることが保証される。"
7758 #: build/C/man2/sync_file_range.2:147
7760 "On success, B<sync_file_range>() returns 0; on failure -1 is returned and "
7761 "I<errno> is set to indicate the error."
7763 "成功の場合、 B<sync_file_range>() は 0 を返す。失敗の場合、-1 を返し、 "
7764 "I<error> にエラーを示す値を設定する。"
7767 #: build/C/man2/sync_file_range.2:152
7768 msgid "I<fd> is not a valid file descriptor."
7769 msgstr "I<fd> が有効なファイルディスクリプタではない。"
7772 #: build/C/man2/sync_file_range.2:160
7774 "I<flags> specifies an invalid bit; or I<offset> or I<nbytes> is invalid."
7776 "I<flags> に不正なビットが指定されている。または I<offset> か I<nbytes> が不正"
7780 #: build/C/man2/sync_file_range.2:163
7785 #: build/C/man2/sync_file_range.2:169
7786 msgid "Out of disk space."
7787 msgstr "ディスク領域不足である。"
7789 #. FIXME . (bug?) Actually, how can 'fd' refer to a symbolic link (S_ISLNK)?
7790 #. (In userspace at least) it isn't possible to obtain a file descriptor
7791 #. for a symbolic link.
7793 #: build/C/man2/sync_file_range.2:177
7795 "I<fd> refers to something other than a regular file, a block device, a "
7796 "directory, or a symbolic link."
7798 "I<fd> が、通常のファイル、ブロックデバイス、ディレクトリ、シンボリックリンク "
7802 #: build/C/man2/sync_file_range.2:180
7803 msgid "B<sync_file_range>() appeared on Linux in kernel 2.6.17."
7804 msgstr "B<sync_file_range>() はカーネル 2.6.17 で Linux に登場した。"
7807 #: build/C/man2/sync_file_range.2:183
7809 "This system call is Linux-specific, and should be avoided in portable "
7812 "このシステムコールは Linux 独自であり、 移植性が必要なプログラムでは使用を避"
7815 #. See kernel commit edd5cd4a9424f22b0fa08bef5e299d41befd5622
7817 #: build/C/man2/sync_file_range.2:196
7819 "Some architectures (e.g., PowerPC, ARM) need 64-bit arguments to be aligned "
7820 "in a suitable pair of registers. On such architectures, the call signature "
7821 "of B<sync_file_range>() is flawed, since it forces a register to be wasted "
7822 "as padding between the I<fd> and I<offset> arguments. Therefore, these "
7823 "architectures define a different system call that orders the arguments "
7828 #: build/C/man2/sync_file_range.2:201
7831 #| "B<int remap_file_pages(void *>I<addr>B<, size_t >I<size>B<, int >I<prot>B<,>\n"
7832 #| "B< ssize_t >I<pgoff>B<, int >I<flags>B<);>\n"
7834 "B<int sync_file_range2(int >I<fd>B<, unsigned int >I<flags>B<,>\n"
7835 "B< off64_t >I<offset>B<, off64_t >I<nbytes>B<);>\n"
7837 "B<int remap_file_pages(void *>I<addr>B<, size_t >I<size>B<, int >I<prot>B<,>\n"
7838 "B< ssize_t >I<pgoff>B<, int >I<flags>B<);>\n"
7841 #: build/C/man2/sync_file_range.2:206
7843 "The behavior of this system call is otherwise exactly the same as "
7844 "B<sync_file_range>()."
7848 #: build/C/man2/sync_file_range.2:217
7850 "A system call with this signature first appeared on the ARM architecture in "
7851 "Linux 2.6.20, with the name B<arm_sync_file_range>(). It was renamed in "
7852 "Linux 2.6.22, when the analogous system call was added for PowerPC. On "
7853 "architectures where glibc support is provided, glibc transparently wraps "
7854 "B<sync_file_range2>() under the name B<sync_file_range>()."
7858 #: build/C/man2/sync_file_range.2:222
7861 #| "B<fdatasync>(2), B<fsync>(2), B<msync>(2), B<sync>(2), "
7862 #| "B<feature_test_macros>(7)"
7863 msgid "B<fdatasync>(2), B<fsync>(2), B<msync>(2), B<sync>(2)"
7864 msgstr "B<fdatasync>(2), B<fsync>(2), B<msync>(2), B<sync>(2)"
7866 #~ msgid "2008-09-25"
7867 #~ msgstr "2008-09-25"
7870 #~ "(Linux 2.6.9 and later) the caller was not privileged (B<CAP_IPC_LOCK>) "
7871 #~ "and its B<RLIMIT_MEMLOCK> soft resource limit was 0."
7873 #~ "(Linux 2.6.9 以降) 呼び出し元は特権 (B<CAP_IPC_LOCK>) を持たず、ソフト資"
7874 #~ "源制限 B<RLIMIT_MEMLOCK> が 0 である。"
7877 #~ "(Linux 2.6.8 and earlier) The calling process has insufficient privilege "
7878 #~ "to call B<munlockall>(). Under Linux the B<CAP_IPC_LOCK> capability is "
7881 #~ "(Linux 2.6.8 以前) 呼び出し元プロセスが B<munlockall>() を呼び出すのに必"
7882 #~ "要な特権を所有していなかった。 Linux では、 B<CAP_IPC_LOCK> ケーパビリティ"
7885 #~ msgid "2009-09-26"
7886 #~ msgstr "2009-09-26"
7888 #~ msgid "2003-02-14"
7889 #~ msgstr "2003-02-14"
7892 #~ "B<#define _XOPEN_SOURCE 600>\n"
7893 #~ "B<#include E<lt>fcntl.hE<gt>>\n"
7895 #~ "B<#define _XOPEN_SOURCE 600>\n"
7896 #~ "B<#include E<lt>fcntl.hE<gt>>\n"
7899 #~ "B<posix_fadvise>() appeared in kernel 2.5.60. Glibc support has been "
7900 #~ "provided since version 2.2."
7902 #~ "B<posix_fadvise>() はカーネル 2.5.60 で登場した。 glibc でのサポートは "
7903 #~ "glibc バージョン 2.2 以降で行われている。"
7905 #~ msgid "2010-01-17"
7906 #~ msgstr "2010-01-17"
7909 #~ "B<#define _GNU_SOURCE>\n"
7910 #~ "B<#include E<lt>fcntl.hE<gt>>\n"
7912 #~ "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
7913 #~ "B<#include E<lt>fcntl.hE<gt>>\n"