OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.51.
[linuxjm/LDP_man-pages.git] / po4a / man2 / po / ja.po
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.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2013-04-30 20:29+0900\n"
10 "PO-Revision-Date: 2013-04-02 17:27+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 #, fuzzy
152 #| msgid "Sub functions for x86-64 are:"
153 msgid "Subfunctions for x86-64 are:"
154 msgstr "x86-64 の副機能は以下の通り:"
155
156 #. type: TP
157 #: build/C/man2/arch_prctl.2:54
158 #, no-wrap
159 msgid "B<ARCH_SET_FS>"
160 msgstr "B<ARCH_SET_FS>"
161
162 #. type: Plain text
163 #: build/C/man2/arch_prctl.2:60
164 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
165 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
166
167 #. type: TP
168 #: build/C/man2/arch_prctl.2:60
169 #, no-wrap
170 msgid "B<ARCH_GET_FS>"
171 msgstr "B<ARCH_GET_FS>"
172
173 #. type: Plain text
174 #: build/C/man2/arch_prctl.2:68
175 msgid ""
176 "Return the 64-bit base value for the I<FS> register of the current thread in "
177 "the I<unsigned long> pointed to by I<addr>."
178 msgstr ""
179 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
180 "I<unsigned long> の領域に格納する。"
181
182 #. type: TP
183 #: build/C/man2/arch_prctl.2:68
184 #, no-wrap
185 msgid "B<ARCH_SET_GS>"
186 msgstr "B<ARCH_SET_GS>"
187
188 #. type: Plain text
189 #: build/C/man2/arch_prctl.2:74
190 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
191 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
192
193 #. type: TP
194 #: build/C/man2/arch_prctl.2:74
195 #, no-wrap
196 msgid "B<ARCH_GET_GS>"
197 msgstr "B<ARCH_GET_GS>"
198
199 #. type: Plain text
200 #: build/C/man2/arch_prctl.2:82
201 msgid ""
202 "Return the 64-bit base value for the I<GS> register of the current thread in "
203 "the I<unsigned long> pointed to by I<addr>."
204 msgstr ""
205 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
206 "I<unsigned long> の領域に格納する。"
207
208 #. type: SH
209 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209
210 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
211 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
212 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
213 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:1804
214 #: build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57
215 #: build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209
216 #: build/C/man2/ptrace.2:1714 build/C/man2/quotactl.2:419
217 #: build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88
218 #: build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:52
219 #: build/C/man2/vmsplice.2:113
220 #, no-wrap
221 msgid "RETURN VALUE"
222 msgstr "返り値"
223
224 #. type: Plain text
225 #: build/C/man2/arch_prctl.2:88
226 msgid ""
227 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
228 "I<errno> is set to indicate the error."
229 msgstr ""
230 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
231 "I<errno> をエラーを示す値に設定する。"
232
233 #. type: SH
234 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
235 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
236 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
237 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
238 #: build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64
239 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
240 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:427
241 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
242 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
243 #: build/C/man2/vmsplice.2:122
244 #, no-wrap
245 msgid "ERRORS"
246 msgstr "エラー"
247
248 #. type: TP
249 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
250 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
251 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
252 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1732
253 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
254 #: build/C/man2/vm86.2:58
255 #, no-wrap
256 msgid "B<EFAULT>"
257 msgstr "B<EFAULT>"
258
259 #. type: Plain text
260 #: build/C/man2/arch_prctl.2:93
261 msgid ""
262 "I<addr> points to an unmapped address or is outside the process address "
263 "space."
264 msgstr ""
265 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
266 "にある。"
267
268 #. type: TP
269 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
270 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
271 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
272 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811
273 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
274 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
275 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1743
276 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
277 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
278 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
279 #, no-wrap
280 msgid "B<EINVAL>"
281 msgstr "B<EINVAL>"
282
283 #. type: Plain text
284 #: build/C/man2/arch_prctl.2:97
285 msgid "I<code> is not a valid subcommand."
286 msgstr "I<code> が有効なサブコマンドでない。"
287
288 #. type: TP
289 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
290 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
291 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
292 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1753
293 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
294 #, no-wrap
295 msgid "B<EPERM>"
296 msgstr "B<EPERM>"
297
298 #.  .SH AUTHOR
299 #.  Man page written by Andi Kleen.
300 #. type: Plain text
301 #: build/C/man2/arch_prctl.2:103
302 msgid "I<addr> is outside the process address space."
303 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
304
305 #. type: SH
306 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
307 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
308 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
309 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
310 #: build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829
311 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
312 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
313 #: build/C/man2/ptrace.2:1771 build/C/man2/sendfile.2:148
314 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
315 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
316 #, no-wrap
317 msgid "CONFORMING TO"
318 msgstr "準拠"
319
320 #. type: Plain text
321 #: build/C/man2/arch_prctl.2:107
322 msgid ""
323 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
324 "programs intended to be portable."
325 msgstr ""
326 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
327 "うべきでない。"
328
329 #. type: SH
330 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
331 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
332 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
333 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834
334 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
335 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1773
336 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
337 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
338 #, no-wrap
339 msgid "NOTES"
340 msgstr "注意"
341
342 #. type: Plain text
343 #: build/C/man2/arch_prctl.2:110
344 #, fuzzy
345 #| msgid ""
346 #| "B<arch_prctl>()  is only supported on Linux/x86-64 for 64-bit programs "
347 #| "currently."
348 msgid ""
349 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
350 "currently."
351 msgstr ""
352 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
353 "ポートされている。"
354
355 #. type: Plain text
356 #: build/C/man2/arch_prctl.2:112
357 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
358 msgstr ""
359 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
360 "される。"
361
362 #. type: Plain text
363 #: build/C/man2/arch_prctl.2:115
364 msgid "B<ARCH_SET_GS> is disabled in some kernels."
365 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
366
367 #. type: Plain text
368 #: build/C/man2/arch_prctl.2:130
369 #, fuzzy
370 #| msgid ""
371 #| "Context switches for 64-bit segment bases are rather expensive.  It may "
372 #| "be a faster alternative to set a 32-bit base using a segment selector by "
373 #| "setting up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>"
374 #| "(2)  system call in kernel 2.5 or later.  B<arch_prctl>()  is only needed "
375 #| "when you want to set bases that are larger than 4GB.  Memory in the first "
376 #| "2GB of address space can be allocated by using B<mmap>(2)  with the "
377 #| "B<MAP_32BIT> flag."
378 msgid ""
379 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
380 "faster alternative to set a 32-bit base using a segment selector by setting "
381 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
382 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
383 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
384 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
385 msgstr ""
386 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
387 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
388 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
389 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
390 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
391 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
392
393 #. type: Plain text
394 #: build/C/man2/arch_prctl.2:135
395 msgid ""
396 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
397 "have to declare it yourself for now.  This may be fixed in future glibc "
398 "versions."
399 msgstr ""
400 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
401 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
402 "ジョンで修正されるかもしれない。"
403
404 #. type: Plain text
405 #: build/C/man2/arch_prctl.2:138
406 msgid "I<FS> may be already used by the threading library."
407 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
408
409 #. type: SH
410 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
411 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
412 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
413 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112
414 #: build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205
415 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
416 #: build/C/man2/ptrace.2:1927 build/C/man2/quotactl.2:507
417 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
418 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
419 #: build/C/man2/vmsplice.2:154
420 #, no-wrap
421 msgid "SEE ALSO"
422 msgstr "関連項目"
423
424 #. type: Plain text
425 #: build/C/man2/arch_prctl.2:143
426 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
427 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
428
429 #. type: Plain text
430 #: build/C/man2/arch_prctl.2:145
431 msgid "AMD X86-64 Programmer's manual"
432 msgstr "AMD X86-64 Programmer's manual"
433
434 #. type: SH
435 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325
436 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
437 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
438 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
439 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114
440 #: build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209
441 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
442 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1941
443 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
444 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
445 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
446 #, no-wrap
447 msgid "COLOPHON"
448 msgstr "この文書について"
449
450 #. type: Plain text
451 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332
452 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
453 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
454 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
455 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121
456 #: build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216
457 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
458 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1948
459 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
460 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
461 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
462 #, fuzzy
463 #| msgid ""
464 #| "This page is part of release 3.50 of the Linux I<man-pages> project.  A "
465 #| "description of the project, and information about reporting bugs, can be "
466 #| "found at http://www.kernel.org/doc/man-pages/."
467 msgid ""
468 "This page is part of release 3.51 of the Linux I<man-pages> project.  A "
469 "description of the project, and information about reporting bugs, can be "
470 "found at http://www.kernel.org/doc/man-pages/."
471 msgstr ""
472 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.50 の一部\n"
473 "である。プロジェクトの説明とバグ報告に関する情報は\n"
474 "http://www.kernel.org/doc/man-pages/ に書かれている。"
475
476 #. type: TH
477 #: build/C/man2/futex.2:53
478 #, no-wrap
479 msgid "FUTEX"
480 msgstr "FUTEX"
481
482 #. type: TH
483 #: build/C/man2/futex.2:53
484 #, no-wrap
485 msgid "2013-03-15"
486 msgstr "2013-03-15"
487
488 #. type: Plain text
489 #: build/C/man2/futex.2:56
490 msgid "futex - fast user-space locking"
491 msgstr "futex - 高速ユーザ空間ロック"
492
493 #. type: Plain text
494 #: build/C/man2/futex.2:61
495 #, no-wrap
496 msgid ""
497 "B<#include E<lt>linux/futex.hE<gt>>\n"
498 "B<#include E<lt>sys/time.hE<gt>>\n"
499 msgstr ""
500 "B<#include E<lt>linux/futex.hE<gt>>\n"
501 "B<#include E<lt>sys/time.hE<gt>>\n"
502
503 #. type: Plain text
504 #: build/C/man2/futex.2:64
505 #, no-wrap
506 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
507 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
508
509 #.  int *? void *? u32 *?
510 #. type: Plain text
511 #: build/C/man2/futex.2:67
512 #, no-wrap
513 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
514 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
515
516 #. type: Plain text
517 #: build/C/man2/futex.2:84
518 msgid ""
519 "The B<futex>()  system call provides a method for a program to wait for a "
520 "value at a given address to change, and a method to wake up anyone waiting "
521 "on a particular address (while the addresses for the same memory in separate "
522 "processes may not be equal, the kernel maps them internally so the same "
523 "memory mapped in different locations will correspond for B<futex>()  "
524 "calls).  This system call is typically used to implement the contended case "
525 "of a lock in shared memory, as described in B<futex>(7)."
526 msgstr ""
527 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
528 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
529 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
530 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
531 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
532 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
533 "る。"
534
535 #. type: Plain text
536 #: build/C/man2/futex.2:91
537 msgid ""
538 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
539 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
540 "mean putting the calling process to sleep or, conversely, waking a waiting "
541 "process."
542 msgstr ""
543 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
544 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
545 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
546 "味する。"
547
548 #. type: Plain text
549 #: build/C/man2/futex.2:98
550 msgid ""
551 "Callers of this function are expected to adhere to the semantics as set out "
552 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
553 "instructions, this in turn probably means that most users will in fact be "
554 "library authors and not general application developers."
555 msgstr ""
556 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
557 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
558 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
559 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
560 "る。"
561
562 #. type: Plain text
563 #: build/C/man2/futex.2:106
564 msgid ""
565 "The I<uaddr> argument needs to point to an aligned integer which stores the "
566 "counter.  The operation to execute is passed via the I<op> argument, along "
567 "with a value I<val>."
568 msgstr ""
569 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
570 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
571 "渡される。"
572
573 #. type: Plain text
574 #: build/C/man2/futex.2:108
575 msgid "Five operations are currently defined:"
576 msgstr "現在のところ 5 つの操作が定義されている:"
577
578 #. type: TP
579 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
580 #, no-wrap
581 msgid "B<FUTEX_WAIT>"
582 msgstr "B<FUTEX_WAIT>"
583
584 #. type: Plain text
585 #: build/C/man2/futex.2:126
586 msgid ""
587 "This operation atomically verifies that the futex address I<uaddr> still "
588 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
589 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
590 "minimum duration of the wait, which is infinite otherwise.  The arguments "
591 "I<uaddr2> and I<val3> are ignored."
592 msgstr ""
593 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
594 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
595 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
596 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
597 "I<uaddr2> と I<val3> は無視される。"
598
599 #. type: Plain text
600 #: build/C/man2/futex.2:134
601 msgid ""
602 "For B<futex>(7), this call is executed if decrementing the count gave a "
603 "negative value (indicating contention), and will sleep until another process "
604 "releases the futex and executes the B<FUTEX_WAKE> operation."
605 msgstr ""
606 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
607 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
608 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
609
610 #. type: TP
611 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
612 #, no-wrap
613 msgid "B<FUTEX_WAKE>"
614 msgstr "B<FUTEX_WAKE>"
615
616 #. type: Plain text
617 #: build/C/man2/futex.2:145
618 msgid ""
619 "This operation wakes at most I<val> processes waiting on this futex address "
620 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
621 "I<val3> are ignored."
622 msgstr ""
623 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
624 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
625 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
626
627 #. type: Plain text
628 #: build/C/man2/futex.2:151
629 msgid ""
630 "For B<futex>(7), this is executed if incrementing the count showed that "
631 "there were waiters, once the futex value has been set to 1 (indicating that "
632 "it is available)."
633 msgstr ""
634 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
635 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
636 "場合に実行される。"
637
638 #. type: TP
639 #: build/C/man2/futex.2:151
640 #, no-wrap
641 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
642 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
643
644 #.  , suitable for .BR poll (2).
645 #. type: Plain text
646 #: build/C/man2/futex.2:167
647 msgid ""
648 "To support asynchronous wakeups, this operation associates a file descriptor "
649 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
650 "receive the signal number that was passed in I<val>.  The calling process "
651 "must close the returned file descriptor after use.  The arguments "
652 "I<timeout>, I<uaddr2> and I<val3> are ignored."
653 msgstr ""
654 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
655 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
656 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
657 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
658 "I<uaddr2>, I<val3> は無視される。"
659
660 #. type: Plain text
661 #: build/C/man2/futex.2:172
662 msgid ""
663 "To prevent race conditions, the caller should test if the futex has been "
664 "upped after B<FUTEX_FD> returns."
665 msgstr ""
666 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
667 "up されたかどうかを確認しなければならない。"
668
669 #. type: Plain text
670 #: build/C/man2/futex.2:176
671 msgid ""
672 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
673 "2.6.26 onward."
674 msgstr ""
675 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
676 "ている。"
677
678 #. type: TP
679 #: build/C/man2/futex.2:176
680 #, no-wrap
681 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
682 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
683
684 #. type: Plain text
685 #: build/C/man2/futex.2:191
686 msgid ""
687 "This operation was introduced in order to avoid a \"thundering herd\" effect "
688 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
689 "another futex.  This call wakes up I<val> processes, and requeues all other "
690 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
691 "I<val3> are ignored."
692 msgstr ""
693 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
694 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
695 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
696 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
697 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
698
699 #. type: TP
700 #: build/C/man2/futex.2:191
701 #, no-wrap
702 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
703 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
704
705 #. type: Plain text
706 #: build/C/man2/futex.2:209
707 msgid ""
708 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
709 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
710 "but first checks whether the location I<uaddr> still contains the value "
711 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
712 "argument I<timeout> is ignored."
713 msgstr ""
714 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
715 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
716 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
717 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
718
719 #. type: Plain text
720 #: build/C/man2/futex.2:216
721 #, fuzzy
722 #| msgid ""
723 #| "In the event of an error, all operations return -1, and set I<errno> to "
724 #| "indicate the error."
725 msgid ""
726 "In the event of an error, all operations return -1, and set I<errno> to "
727 "indicate the error.  The return value on success depends on the operation, "
728 "as described in the following list:"
729 msgstr ""
730 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
731 "される。"
732
733 #. type: Plain text
734 #: build/C/man2/futex.2:222
735 msgid ""
736 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
737 "the various possible error returns."
738 msgstr ""
739
740 #. type: Plain text
741 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
742 msgid "Returns the number of processes woken up."
743 msgstr "wake したプロセスの数を返す。"
744
745 #. type: TP
746 #: build/C/man2/futex.2:225
747 #, no-wrap
748 msgid "B<FUTEX_FD>"
749 msgstr "B<FUTEX_FD>"
750
751 #. type: Plain text
752 #: build/C/man2/futex.2:228
753 msgid "Returns the new file descriptor associated with the futex."
754 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
755
756 #. type: TP
757 #: build/C/man2/futex.2:228
758 #, no-wrap
759 msgid "B<FUTEX_REQUEUE>"
760 msgstr "B<FUTEX_REQUEUE>"
761
762 #. type: TP
763 #: build/C/man2/futex.2:231
764 #, no-wrap
765 msgid "B<FUTEX_CMP_REQUEUE>"
766 msgstr "B<FUTEX_CMP_REQUEUE>"
767
768 #. type: TP
769 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
770 #, no-wrap
771 msgid "B<EACCES>"
772 msgstr "B<EACCES>"
773
774 #. type: Plain text
775 #: build/C/man2/futex.2:238
776 msgid "No read access to futex memory."
777 msgstr "futex メモリに読み込みアクセス権がなかった。"
778
779 #. type: TP
780 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
781 #, no-wrap
782 msgid "B<EAGAIN>"
783 msgstr "B<EAGAIN>"
784
785 #. type: Plain text
786 #: build/C/man2/futex.2:249
787 #, fuzzy
788 #| msgid ""
789 #| "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
790 #| "indicates a race; use the safe B<FUTEX_WAKE> now.)"
791 msgid ""
792 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
793 "equal to the expected value I<val3>.  (This probably indicates a race; use "
794 "the safe B<FUTEX_WAKE> now.)"
795 msgstr ""
796 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
797 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
798
799 #. type: Plain text
800 #: build/C/man2/futex.2:254
801 msgid "Error retrieving I<timeout> information from user space."
802 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
803
804 #. type: TP
805 #: build/C/man2/futex.2:254
806 #, no-wrap
807 msgid "B<EINTR>"
808 msgstr "B<EINTR>"
809
810 #. type: Plain text
811 #: build/C/man2/futex.2:261
812 msgid ""
813 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
814 "a spurious wakeup."
815 msgstr ""
816
817 #. type: Plain text
818 #: build/C/man2/futex.2:264
819 msgid "Invalid argument."
820 msgstr ""
821
822 #. type: TP
823 #: build/C/man2/futex.2:264
824 #, no-wrap
825 msgid "B<ENFILE>"
826 msgstr "B<ENFILE>"
827
828 #. type: Plain text
829 #: build/C/man2/futex.2:267
830 msgid "The system limit on the total number of open files has been reached."
831 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
832
833 #. type: TP
834 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
835 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
836 #: build/C/man2/vm86.2:62
837 #, no-wrap
838 msgid "B<ENOSYS>"
839 msgstr "B<ENOSYS>"
840
841 #. type: Plain text
842 #: build/C/man2/futex.2:271
843 msgid "Invalid operation specified in I<op>."
844 msgstr "I<op> に無効な操作が指定された。"
845
846 #. type: TP
847 #: build/C/man2/futex.2:271
848 #, no-wrap
849 msgid "B<ETIMEDOUT>"
850 msgstr "B<ETIMEDOUT>"
851
852 #. type: Plain text
853 #: build/C/man2/futex.2:276
854 msgid "Timeout during the B<FUTEX_WAIT> operation."
855 msgstr ""
856
857 #. type: TP
858 #: build/C/man2/futex.2:276
859 #, no-wrap
860 msgid "B<EWOULDBLOCK>"
861 msgstr "B<EWOULDBLOCK>"
862
863 #. type: Plain text
864 #: build/C/man2/futex.2:286
865 msgid ""
866 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
867 "to the expected value I<val> at the time of the call."
868 msgstr ""
869
870 #. type: SH
871 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
872 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
873 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
874 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
875 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
876 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
877 #: build/C/man2/vmsplice.2:138
878 #, no-wrap
879 msgid "VERSIONS"
880 msgstr "バージョン"
881
882 #. type: Plain text
883 #: build/C/man2/futex.2:296
884 msgid ""
885 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
886 "from what was described above.  A 4-argument system call with the semantics "
887 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
888 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
889 "especially on the s390 architecture."
890 msgstr ""
891 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
892 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
893 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
894 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
895 "上の特別のものである。"
896
897 #. type: Plain text
898 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
899 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
900 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
901 msgid "This system call is Linux-specific."
902 msgstr "このシステムコールは Linux 固有である。"
903
904 #.  .SH "AUTHORS"
905 #.  .PP
906 #.  Futexes were designed and worked on by
907 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
908 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
909 #.  and Rusty Russell (IBM Linux Technology Center).
910 #.  This page written by bert hubert.
911 #. type: Plain text
912 #: build/C/man2/futex.2:312
913 msgid ""
914 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
915 "for end-users.  (There is no wrapper function for this system call in "
916 "glibc.)  Implementors are expected to be assembly literate and to have read "
917 "the sources of the futex user-space library referenced below."
918 msgstr ""
919 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
920 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
921 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
922 "ブラリの ソースを読み終えていることが要求される。"
923
924 #. type: Plain text
925 #: build/C/man2/futex.2:314
926 msgid "B<futex>(7)"
927 msgstr "B<futex>(7)"
928
929 #. type: Plain text
930 #: build/C/man2/futex.2:317
931 msgid ""
932 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
933 "of the Ottawa Linux Symposium 2002), online at"
934 msgstr ""
935 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
936 "of the Ottawa Linux Symposium 2002), online at"
937
938 #. type: Plain text
939 #: build/C/man2/futex.2:320
940 msgid ""
941 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
942 "E<.UE>"
943 msgstr ""
944 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
945 "E<.UE>"
946
947 #. type: Plain text
948 #: build/C/man2/futex.2:322
949 msgid "Futex example library, futex-*.tar.bz2 at"
950 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
951
952 #. type: Plain text
953 #: build/C/man2/futex.2:325
954 msgid ""
955 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
956 "E<.UE>"
957 msgstr ""
958 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
959 "E<.UE>"
960
961 #. type: TH
962 #: build/C/man2/get_robust_list.2:29
963 #, no-wrap
964 msgid "GET_ROBUST_LIST"
965 msgstr "GET_ROBUST_LIST"
966
967 #. type: TH
968 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
969 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
970 #, no-wrap
971 msgid "2012-07-13"
972 msgstr "2012-07-13"
973
974 #. type: TH
975 #: build/C/man2/get_robust_list.2:29
976 #, no-wrap
977 msgid "Linux System Calls"
978 msgstr ""
979
980 #. type: Plain text
981 #: build/C/man2/get_robust_list.2:32
982 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
983 msgstr ""
984
985 #. type: Plain text
986 #: build/C/man2/get_robust_list.2:36
987 #, no-wrap
988 msgid ""
989 "B<#include E<lt>linux/futex.hE<gt>>\n"
990 "B<#include E<lt>syscall.hE<gt>>\n"
991 msgstr ""
992 "B<#include E<lt>linux/futex.hE<gt>>\n"
993 "B<#include E<lt>syscall.hE<gt>>\n"
994
995 #. type: Plain text
996 #: build/C/man2/get_robust_list.2:40
997 #, no-wrap
998 msgid ""
999 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
1000 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
1001 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
1002 msgstr ""
1003
1004 #. type: Plain text
1005 #: build/C/man2/get_robust_list.2:44
1006 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
1007 msgstr ""
1008
1009 #. type: Plain text
1010 #: build/C/man2/get_robust_list.2:49
1011 msgid ""
1012 "The robust futex implementation needs to maintain per-thread lists of robust "
1013 "futexes which are unlocked when the thread exits.  These lists are managed "
1014 "in user space; the kernel is notified about only the location of the head of "
1015 "the list."
1016 msgstr ""
1017
1018 #. type: Plain text
1019 #: build/C/man2/get_robust_list.2:65
1020 msgid ""
1021 "The B<get_robust_list>()  system call returns the head of the robust futex "
1022 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1023 "the head of the list for the calling thread is returned.  The list head is "
1024 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1025 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1026 msgstr ""
1027
1028 #. type: Plain text
1029 #: build/C/man2/get_robust_list.2:77
1030 msgid ""
1031 "The B<set_robust_list>()  system call requests the kernel to record the head "
1032 "of the list of robust futexes owned by the calling thread.  The I<head> "
1033 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1034 "(*head)>."
1035 msgstr ""
1036
1037 #. type: Plain text
1038 #: build/C/man2/get_robust_list.2:84
1039 msgid ""
1040 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1041 "when the operation is successful, an error code otherwise."
1042 msgstr ""
1043
1044 #. type: Plain text
1045 #: build/C/man2/get_robust_list.2:88
1046 msgid ""
1047 "The B<set_robust_list>()  system call can fail with the following error:"
1048 msgstr ""
1049
1050 #. type: Plain text
1051 #: build/C/man2/get_robust_list.2:94
1052 msgid ""
1053 "I<len> does not match the size of structure B<struct robust_list_head> "
1054 "expected by kernel."
1055 msgstr ""
1056
1057 #. type: Plain text
1058 #: build/C/man2/get_robust_list.2:98
1059 msgid ""
1060 "The B<get_robust_list>()  system call can fail with the following errors:"
1061 msgstr ""
1062
1063 #. type: Plain text
1064 #: build/C/man2/get_robust_list.2:106
1065 msgid ""
1066 "The calling process does not have permission to see the robust futex list of "
1067 "the thread with the thread ID I<pid>, and does not have the "
1068 "B<CAP_SYS_PTRACE> capability."
1069 msgstr ""
1070
1071 #. type: TP
1072 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1073 #: build/C/man2/ptrace.2:1766 build/C/man2/quotactl.2:461
1074 #: build/C/man2/quotactl.2:504
1075 #, no-wrap
1076 msgid "B<ESRCH>"
1077 msgstr "B<ESRCH>"
1078
1079 #. type: Plain text
1080 #: build/C/man2/get_robust_list.2:111
1081 msgid "No thread with the thread ID I<pid> could be found."
1082 msgstr ""
1083
1084 #. type: Plain text
1085 #: build/C/man2/get_robust_list.2:115
1086 msgid ""
1087 "The head of the robust futex list can't be stored at the location I<head>."
1088 msgstr ""
1089
1090 #. type: Plain text
1091 #: build/C/man2/get_robust_list.2:119
1092 msgid ""
1093 "These system calls were added in Linux 2.6.17.  No library support is "
1094 "provided; use B<syscall>(2)."
1095 msgstr ""
1096 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1097 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1098
1099 #. type: Plain text
1100 #: build/C/man2/get_robust_list.2:124
1101 msgid ""
1102 "These system calls are not needed by normal applications.  No support for "
1103 "them is provided in glibc.  In the unlikely event that you want to call them "
1104 "directly, use B<syscall>(2)."
1105 msgstr ""
1106 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1107 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1108 "呼び出したい場合は B<syscall>(2) を使うこと。"
1109
1110 #. type: Plain text
1111 #: build/C/man2/get_robust_list.2:128
1112 msgid ""
1113 "A thread can have only one robust futex list; therefore applications that "
1114 "wish to use this functionality should use the robust mutexes provided by "
1115 "glibc."
1116 msgstr ""
1117
1118 #.  .BR pthread_mutexattr_setrobust_np (3)
1119 #. type: Plain text
1120 #: build/C/man2/get_robust_list.2:131
1121 msgid "B<futex>(2)"
1122 msgstr "B<futex>(2)"
1123
1124 #.  http://lwn.net/Articles/172149/
1125 #. type: Plain text
1126 #: build/C/man2/get_robust_list.2:137
1127 msgid ""
1128 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1129 "txt> in the Linux kernel source tree"
1130 msgstr ""
1131
1132 #. type: TH
1133 #: build/C/man2/getunwind.2:27
1134 #, no-wrap
1135 msgid "GETUNWIND"
1136 msgstr ""
1137
1138 #. type: TH
1139 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1140 #, fuzzy, no-wrap
1141 #| msgid "2009-02-20"
1142 msgid "2013-02-13"
1143 msgstr "2009-02-20"
1144
1145 #. type: Plain text
1146 #: build/C/man2/getunwind.2:30
1147 msgid "getunwind - copy the unwind data to caller's buffer"
1148 msgstr ""
1149
1150 #. type: Plain text
1151 #: build/C/man2/getunwind.2:34
1152 #, fuzzy, no-wrap
1153 #| msgid ""
1154 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
1155 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1156 msgid ""
1157 "B<#include E<lt>syscall.hE<gt>>\n"
1158 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1159 msgstr ""
1160 "B<#include E<lt>sys/quota.hE<gt>>\n"
1161 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1162
1163 #. type: Plain text
1164 #: build/C/man2/getunwind.2:36
1165 #, no-wrap
1166 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1167 msgstr ""
1168
1169 #. type: Plain text
1170 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1171 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1172 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1173 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1174 msgstr ""
1175 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
1176 "を参照。"
1177
1178 #. type: Plain text
1179 #: build/C/man2/getunwind.2:42
1180 msgid "I<Note: this function is obsolete.>"
1181 msgstr ""
1182
1183 #. type: Plain text
1184 #: build/C/man2/getunwind.2:52
1185 msgid ""
1186 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1187 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1188 "of the unwind data; this data describes the gate page (kernel code that is "
1189 "mapped into user space)."
1190 msgstr ""
1191
1192 #. type: Plain text
1193 #: build/C/man2/getunwind.2:64
1194 msgid ""
1195 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1196 "copied only if I<buf_size> is greater than or equal to the size of the "
1197 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1198 "call succeeds, returning the size that would be needed to store the unwind "
1199 "data."
1200 msgstr ""
1201
1202 #. type: Plain text
1203 #: build/C/man2/getunwind.2:68
1204 msgid ""
1205 "The first part of the unwind data contains an unwind table.  The rest "
1206 "contains the associated unwind information, in no particular order.  The "
1207 "unwind table contains entries of the following form:"
1208 msgstr ""
1209
1210 #. type: Plain text
1211 #: build/C/man2/getunwind.2:73
1212 #, no-wrap
1213 msgid ""
1214 "\tu64 start;      (64-bit address of start of function)\n"
1215 "\tu64 end;        (64-bit address of end of function)\n"
1216 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1217 msgstr ""
1218
1219 #. type: Plain text
1220 #: build/C/man2/getunwind.2:81
1221 msgid ""
1222 "An entry whose I<start> value is zero indicates the end of the table.  For "
1223 "more information about the format, see the I<IA-64 Software Conventions and "
1224 "Runtime Architecture> manual."
1225 msgstr ""
1226
1227 #. type: Plain text
1228 #: build/C/man2/getunwind.2:88
1229 #, fuzzy
1230 #| msgid ""
1231 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1232 #| "I<errno> is set to indicate the error."
1233 msgid ""
1234 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1235 "is returned and I<errno> is set to indicate the error."
1236 msgstr ""
1237 "成功すると、 B<kexec_load> は 0 を返す。\n"
1238 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1239
1240 #. type: Plain text
1241 #: build/C/man2/getunwind.2:94
1242 msgid ""
1243 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1244 "stored in the space specified by I<buf>."
1245 msgstr ""
1246
1247 #. type: Plain text
1248 #: build/C/man2/getunwind.2:96
1249 #, fuzzy
1250 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1251 msgid "This system call is available since Linux 2.4."
1252 msgstr ""
1253 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1254 "である。"
1255
1256 #. type: Plain text
1257 #: build/C/man2/getunwind.2:99
1258 msgid ""
1259 "This system call is Linux specific, and is available only on the IA-64 "
1260 "architecture."
1261 msgstr ""
1262
1263 #. type: Plain text
1264 #: build/C/man2/getunwind.2:107
1265 msgid ""
1266 "This system call has been deprecated.  The modern way to obtain the kernel's "
1267 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1268 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1269 msgstr ""
1270
1271 #. type: Plain text
1272 #: build/C/man2/getunwind.2:111
1273 #, fuzzy
1274 msgid ""
1275 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1276 "that you want to call it, use B<syscall>(2)."
1277 msgstr ""
1278 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1279 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1280
1281 #. type: Plain text
1282 #: build/C/man2/getunwind.2:113
1283 msgid "B<getauxval>(3)"
1284 msgstr "B<getauxval>(3)"
1285
1286 #. type: TH
1287 #: build/C/man2/kexec_load.2:26
1288 #, no-wrap
1289 msgid "KEXEC_LOAD"
1290 msgstr "KEXEC_LOAD"
1291
1292 #. type: Plain text
1293 #: build/C/man2/kexec_load.2:29
1294 msgid "kexec_load - load a new kernel for later execution"
1295 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1296
1297 #. type: Plain text
1298 #: build/C/man2/kexec_load.2:31
1299 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1300 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1301
1302 #. type: Plain text
1303 #: build/C/man2/kexec_load.2:33
1304 msgid ""
1305 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1306 ">"
1307 msgstr ""
1308 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1309 ">"
1310
1311 #. type: Plain text
1312 #: build/C/man2/kexec_load.2:36
1313 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1314 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1315
1316 #. type: Plain text
1317 #: build/C/man2/kexec_load.2:44
1318 msgid ""
1319 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1320 "later by B<reboot>(2)."
1321 msgstr ""
1322 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1323 "その後の B<reboot>(2) で実行できるようにする。"
1324
1325 #. type: Plain text
1326 #: build/C/man2/kexec_load.2:50
1327 msgid ""
1328 "The I<flags> argument is a mask whose high-order bits control the operation "
1329 "of the call.  The following values can be specified in I<flags>:"
1330 msgstr ""
1331 "I<flags> 引き数はマスクビットで、\n"
1332 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1333 "I<flags> には以下の値を指定できる。"
1334
1335 #. type: TP
1336 #: build/C/man2/kexec_load.2:50
1337 #, no-wrap
1338 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1339 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1340
1341 #.  FIXME figure out how this is really used
1342 #. type: Plain text
1343 #: build/C/man2/kexec_load.2:54
1344 msgid "Execute the new kernel automatically on a system crash."
1345 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1346
1347 #. type: TP
1348 #: build/C/man2/kexec_load.2:54
1349 #, fuzzy, no-wrap
1350 #| msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
1351 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1352 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.7.27 以降)"
1353
1354 #. type: Plain text
1355 #: build/C/man2/kexec_load.2:64
1356 #, fuzzy
1357 #| msgid ""
1358 #| "Preserve the system hardware and software states before executing the new "
1359 #| "kernel.  This could be used for system suspend.  This flag is only "
1360 #| "available if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is "
1361 #| "only effective if I<nr_segments> is greater than 0."
1362 msgid ""
1363 "Preserve the system hardware and software states before executing the new "
1364 "kernel.  This could be used for system suspend.  This flag is available only "
1365 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1366 "only if I<nr_segments> is greater than 0."
1367 msgstr ""
1368 "新しいカーネルを実行する前に、\n"
1369 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1370 "システムの中断時 (suspend) などで使用できる。\n"
1371 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1372 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1373
1374 #. type: Plain text
1375 #: build/C/man2/kexec_load.2:84
1376 msgid ""
1377 "The low-order bits of I<flags> contain the architecture of the to-be-"
1378 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1379 "current architecture, or one of the following architecture constants "
1380 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1381 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1382 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1383 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1384 "the system."
1385 msgstr ""
1386 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1387 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1388 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1389 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1390 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1391 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1392 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1393 "システムの CPU で実行可能なものでなければならない。"
1394
1395 #. type: Plain text
1396 #: build/C/man2/kexec_load.2:98
1397 msgid ""
1398 "The I<entry> argument is the physical entry address in the kernel image.  "
1399 "The I<nr_segments> argument is the number of segments pointed to by the "
1400 "I<segments> pointer.  The I<segments> argument is an array of "
1401 "I<kexec_segment> structures which define the kernel layout:"
1402 msgstr ""
1403 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1404 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1405 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1406 "この構造体によりカーネルの配置が定義される。"
1407
1408 #. type: Plain text
1409 #: build/C/man2/kexec_load.2:107
1410 #, no-wrap
1411 msgid ""
1412 "struct kexec_segment {\n"
1413 "    void   *buf;        /* Buffer in user space */\n"
1414 "    size_t  bufsz;      /* Buffer length in user space */\n"
1415 "    void   *mem;        /* Physical address of kernel */\n"
1416 "    size_t  memsz;      /* Physical address length */\n"
1417 "};\n"
1418 msgstr ""
1419 "struct kexec_segment {\n"
1420 "    void   *buf;        /* Buffer in user space */\n"
1421 "    size_t  bufsz;      /* Buffer length in user space */\n"
1422 "    void   *mem;        /* Physical address of kernel */\n"
1423 "    size_t  memsz;      /* Physical address length */\n"
1424 "};\n"
1425
1426 #.  FIXME elaborate on the following:
1427 #. type: Plain text
1428 #: build/C/man2/kexec_load.2:114
1429 msgid ""
1430 "The kernel image defined by I<segments> is copied from the calling process "
1431 "into previously reserved memory."
1432 msgstr ""
1433 "I<segments> で定義されたカーネルイメージは、\n"
1434 "呼び出したプロセスから予約済みメモリにコピーされる。"
1435
1436 #. type: Plain text
1437 #: build/C/man2/kexec_load.2:121
1438 msgid ""
1439 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1440 "I<errno> is set to indicate the error."
1441 msgstr ""
1442 "成功すると、 B<kexec_load> は 0 を返す。\n"
1443 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1444
1445 #. type: TP
1446 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1447 #: build/C/man2/ptrace.2:1729 build/C/man2/quotactl.2:495
1448 #, no-wrap
1449 msgid "B<EBUSY>"
1450 msgstr "B<EBUSY>"
1451
1452 #. type: Plain text
1453 #: build/C/man2/kexec_load.2:126
1454 msgid ""
1455 "Another crash kernel is already being loaded or a crash kernel is already in "
1456 "use."
1457 msgstr ""
1458 "別のクラッシュカーネルがすでにロードされているか、\n"
1459 "クラッシュカーネルがすでに使用されている。"
1460
1461 #.  KEXEC_SEGMENT_MAX == 16
1462 #. type: Plain text
1463 #: build/C/man2/kexec_load.2:133
1464 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1465 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1466
1467 #. type: Plain text
1468 #: build/C/man2/kexec_load.2:138
1469 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1470 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1471
1472 #. type: Plain text
1473 #: build/C/man2/kexec_load.2:142
1474 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1475 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1476
1477 #. type: Plain text
1478 #: build/C/man2/kexec_load.2:149
1479 msgid ""
1480 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1481 "B<syscall>(2)."
1482 msgstr ""
1483 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1484 "B<syscall>(2) を使って呼び出すこと。"
1485
1486 #.  FIXME Andi submitted a patch for this.
1487 #.  Check if it got accepted later.
1488 #. type: Plain text
1489 #: build/C/man2/kexec_load.2:156
1490 #, fuzzy
1491 #| msgid ""
1492 #| "The required constants are in the kernel source file I<linux/kexec.h>, "
1493 #| "which is not currently exported to glibc.  Therefore, these constants "
1494 #| "must be defined manually."
1495 msgid ""
1496 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1497 "which is not currently exported to glibc.  Therefore, these constants must "
1498 "be defined manually."
1499 msgstr ""
1500 "必要な定数はカーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1501 "が、現在のところ glibc には公開されていない。\n"
1502 "そのため、これらの定数は手動で定義しなければならない。"
1503
1504 #. type: Plain text
1505 #: build/C/man2/kexec_load.2:159
1506 #, fuzzy
1507 #| msgid ""
1508 #| "This system call is only available if the kernel was configured with "
1509 #| "B<CONFIG_KEXEC>."
1510 msgid ""
1511 "This system call is available only if the kernel was configured with "
1512 "B<CONFIG_KEXEC>."
1513 msgstr ""
1514 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1515 "いる場合にのみ利用できる。"
1516
1517 #. type: Plain text
1518 #: build/C/man2/kexec_load.2:162
1519 msgid "B<reboot>(2), B<syscall>(2)"
1520 msgstr "B<reboot>(2), B<syscall>(2)"
1521
1522 #. type: TH
1523 #: build/C/man2/lookup_dcookie.2:27
1524 #, no-wrap
1525 msgid "LOOKUP_DCOOKIE"
1526 msgstr "LOOKUP_DCOOKIE"
1527
1528 #. type: TH
1529 #: build/C/man2/lookup_dcookie.2:27
1530 #, no-wrap
1531 msgid "2004-06-17"
1532 msgstr "2004-06-17"
1533
1534 #. type: Plain text
1535 #: build/C/man2/lookup_dcookie.2:30
1536 msgid "lookup_dcookie - return a directory entry's path"
1537 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1538
1539 #. type: Plain text
1540 #: build/C/man2/lookup_dcookie.2:32
1541 msgid ""
1542 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1543 ">"
1544 msgstr ""
1545 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1546 ">"
1547
1548 #. type: Plain text
1549 #: build/C/man2/lookup_dcookie.2:38
1550 msgid ""
1551 "Look up the full path of the directory entry specified by the value "
1552 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1553 "particular directory entry.  The buffer given is filled in with the full "
1554 "path of the directory entry."
1555 msgstr ""
1556 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1557 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1558 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1559 "ルパス名が格納される。"
1560
1561 #. type: Plain text
1562 #: build/C/man2/lookup_dcookie.2:43
1563 msgid ""
1564 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1565 "a cookie reference to the directory entry."
1566 msgstr ""
1567 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1568 "リへの cookie 参照を 保持していなければならない。"
1569
1570 #. type: Plain text
1571 #: build/C/man2/lookup_dcookie.2:50
1572 msgid ""
1573 "On success, B<lookup_dcookie>()  returns the length of the path string "
1574 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1575 "appropriately."
1576 msgstr ""
1577 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1578 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1579
1580 #. type: Plain text
1581 #: build/C/man2/lookup_dcookie.2:54
1582 msgid "The buffer was not valid."
1583 msgstr "バッファが有効でなかった。"
1584
1585 #. type: Plain text
1586 #: build/C/man2/lookup_dcookie.2:58
1587 msgid ""
1588 "The kernel has no registered cookie/directory entry mappings at the time of "
1589 "lookup, or the cookie does not refer to a valid directory entry."
1590 msgstr ""
1591 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1592 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1593 "いない。"
1594
1595 #. type: TP
1596 #: build/C/man2/lookup_dcookie.2:58
1597 #, no-wrap
1598 msgid "B<ENAMETOOLONG>"
1599 msgstr "B<ENAMETOOLONG>"
1600
1601 #. type: Plain text
1602 #: build/C/man2/lookup_dcookie.2:61
1603 msgid "The name could not fit in the buffer."
1604 msgstr "名前がバッファに入り切らなかった。"
1605
1606 #. type: TP
1607 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1608 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1609 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1610 #, no-wrap
1611 msgid "B<ENOMEM>"
1612 msgstr "B<ENOMEM>"
1613
1614 #. type: Plain text
1615 #: build/C/man2/lookup_dcookie.2:65
1616 msgid ""
1617 "The kernel could not allocate memory for the temporary buffer holding the "
1618 "path."
1619 msgstr ""
1620 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1621 "かった。"
1622
1623 #. type: Plain text
1624 #: build/C/man2/lookup_dcookie.2:70
1625 msgid ""
1626 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1627 "up cookie values."
1628 msgstr ""
1629 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1630 "持っていない。"
1631
1632 #. type: TP
1633 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1634 #, no-wrap
1635 msgid "B<ERANGE>"
1636 msgstr "B<ERANGE>"
1637
1638 #. type: Plain text
1639 #: build/C/man2/lookup_dcookie.2:73
1640 msgid ""
1641 "The buffer was not large enough to hold the path of the directory entry."
1642 msgstr ""
1643 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1644 "かった。"
1645
1646 #. type: Plain text
1647 #: build/C/man2/lookup_dcookie.2:78
1648 msgid ""
1649 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1650 "2.5.70."
1651 msgstr ""
1652 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1653 "追加された。"
1654
1655 #. type: Plain text
1656 #: build/C/man2/lookup_dcookie.2:81
1657 msgid "B<lookup_dcookie>()  is Linux-specific."
1658 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1659
1660 #. type: Plain text
1661 #: build/C/man2/lookup_dcookie.2:85
1662 msgid ""
1663 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1664 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1665 "for directory entries."
1666 msgstr ""
1667 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1668 "oprofile profiler で 使われているだけである。"
1669
1670 #. type: Plain text
1671 #: build/C/man2/lookup_dcookie.2:88
1672 msgid ""
1673 "The path returned may be suffixed by the string \" (deleted)\" if the "
1674 "directory entry has been removed."
1675 msgstr ""
1676 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1677 "\" (deleted)\" という文字列が付加されることがある。"
1678
1679 #. type: TH
1680 #: build/C/man2/modify_ldt.2:24
1681 #, no-wrap
1682 msgid "MODIFY_LDT"
1683 msgstr "MODIFY_LDT"
1684
1685 #. type: Plain text
1686 #: build/C/man2/modify_ldt.2:27
1687 msgid "modify_ldt - get or set ldt"
1688 msgstr "modify_ldt - ldt を設定または取得する"
1689
1690 #. type: Plain text
1691 #: build/C/man2/modify_ldt.2:30
1692 #, no-wrap
1693 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1694 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1695
1696 #. type: Plain text
1697 #: build/C/man2/modify_ldt.2:32
1698 #, no-wrap
1699 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1700 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1701
1702 #. type: Plain text
1703 #: build/C/man2/modify_ldt.2:41
1704 msgid ""
1705 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1706 "process.  The ldt is a per-process memory management table used by the i386 "
1707 "processor.  For more information on this table, see an Intel 386 processor "
1708 "handbook."
1709 msgstr ""
1710 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1711 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1712 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1713 "は Intel 386 processor handbook を 参照すること。"
1714
1715 #. type: Plain text
1716 #: build/C/man2/modify_ldt.2:51
1717 msgid ""
1718 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1719 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1720 "actual size of the ldt."
1721 msgstr ""
1722 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1723 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1724 "である。"
1725
1726 #.  FIXME ? say something about func == 2 and func == 0x11?
1727 #.  In Linux 2.4, func == 2 returned "the default ldt"
1728 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1729 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1730 #. type: Plain text
1731 #: build/C/man2/modify_ldt.2:69
1732 msgid ""
1733 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1734 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1735 "structure."
1736 msgstr ""
1737 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1738 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1739 "くなければならない。"
1740
1741 #. type: Plain text
1742 #: build/C/man2/modify_ldt.2:73
1743 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1744 msgstr ""
1745 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1746
1747 #. type: Plain text
1748 #: build/C/man2/modify_ldt.2:87
1749 #, no-wrap
1750 msgid ""
1751 "struct user_desc {\n"
1752 "    unsigned int  entry_number;\n"
1753 "    unsigned long base_addr;\n"
1754 "    unsigned int  limit;\n"
1755 "    unsigned int  seg_32bit:1;\n"
1756 "    unsigned int  contents:2;\n"
1757 "    unsigned int  read_exec_only:1;\n"
1758 "    unsigned int  limit_in_pages:1;\n"
1759 "    unsigned int  seg_not_present:1;\n"
1760 "    unsigned int  useable:1;\n"
1761 "};\n"
1762 msgstr ""
1763 "struct user_desc {\n"
1764 "    unsigned int  entry_number;\n"
1765 "    unsigned long base_addr;\n"
1766 "    unsigned int  limit;\n"
1767 "    unsigned int  seg_32bit:1;\n"
1768 "    unsigned int  contents:2;\n"
1769 "    unsigned int  read_exec_only:1;\n"
1770 "    unsigned int  limit_in_pages:1;\n"
1771 "    unsigned int  seg_not_present:1;\n"
1772 "    unsigned int  useable:1;\n"
1773 "};\n"
1774
1775 #.  .PP
1776 #.  The ldt is specific for the calling process. Any attempts to change
1777 #.  the ldt to include the address space of another process or the kernel
1778 #.  will result in a segmentation violation when trying to access the memory
1779 #.  outside of the process address space. The memory protection is enforced
1780 #.  at the paging layer.
1781 #. type: Plain text
1782 #: build/C/man2/modify_ldt.2:98
1783 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1784 msgstr ""
1785 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1786
1787 #. type: Plain text
1788 #: build/C/man2/modify_ldt.2:108
1789 msgid ""
1790 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1791 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1792 "and sets I<errno> to indicate the error."
1793 msgstr ""
1794 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1795 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1796 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1797
1798 #. type: Plain text
1799 #: build/C/man2/modify_ldt.2:113
1800 msgid "I<ptr> points outside the address space."
1801 msgstr "I<ptr> がアドレス空間の外を指している。"
1802
1803 #. type: Plain text
1804 #: build/C/man2/modify_ldt.2:126
1805 msgid ""
1806 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1807 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1808 "invalid values."
1809 msgstr ""
1810 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1811 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1812 "エントリが無効な値である。"
1813
1814 #. type: Plain text
1815 #: build/C/man2/modify_ldt.2:130
1816 msgid "I<func> is neither 0 nor 1."
1817 msgstr "I<func> が 0 でも 1 でもない。"
1818
1819 #. type: Plain text
1820 #: build/C/man2/modify_ldt.2:133
1821 msgid ""
1822 "This call is Linux-specific and should not be used in programs intended to "
1823 "be portable."
1824 msgstr ""
1825 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1826 "い。"
1827
1828 #. type: Plain text
1829 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1830 #: build/C/man2/pivot_root.2:134
1831 msgid ""
1832 "Glibc does not provide a wrapper for this system call; call it using "
1833 "B<syscall>(2)."
1834 msgstr ""
1835 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1836 "(2)  を使って呼び出すこと。"
1837
1838 #. type: Plain text
1839 #: build/C/man2/modify_ldt.2:138
1840 msgid "B<vm86>(2)"
1841 msgstr "B<vm86>(2)"
1842
1843 #. type: TH
1844 #: build/C/man2/nfsservctl.2:8
1845 #, no-wrap
1846 msgid "NFSSERVCTL"
1847 msgstr "NFSSERVCTL"
1848
1849 #. type: TH
1850 #: build/C/man2/nfsservctl.2:8
1851 #, no-wrap
1852 msgid "2012-03-05"
1853 msgstr "2012-03-05"
1854
1855 #. type: Plain text
1856 #: build/C/man2/nfsservctl.2:11
1857 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1858 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1859
1860 #. type: Plain text
1861 #: build/C/man2/nfsservctl.2:14
1862 #, no-wrap
1863 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1864 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1865
1866 #. type: Plain text
1867 #: build/C/man2/nfsservctl.2:17
1868 #, no-wrap
1869 msgid ""
1870 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1871 "B<                union nfsctl_res *>I<resp>B<);>\n"
1872 msgstr ""
1873 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1874 "B<                union nfsctl_res *>I<resp>B<);>\n"
1875
1876 #. type: Plain text
1877 #: build/C/man2/nfsservctl.2:21
1878 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1879 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1880
1881 #. type: Plain text
1882 #: build/C/man2/nfsservctl.2:33
1883 #, no-wrap
1884 msgid ""
1885 "/*\n"
1886 " * These are the commands understood by nfsctl().\n"
1887 " */\n"
1888 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1889 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1890 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1891 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1892 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1893 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1894 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1895 msgstr ""
1896 "/*\n"
1897 " * nfsctl() によって理解されるコマンド\n"
1898 " */\n"
1899 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1900 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1901 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1902 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1903 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1904 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1905 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1906
1907 #. type: Plain text
1908 #: build/C/man2/nfsservctl.2:45
1909 #, no-wrap
1910 msgid ""
1911 "struct nfsctl_arg {\n"
1912 "    int                       ca_version;     /* safeguard */\n"
1913 "    union {\n"
1914 "        struct nfsctl_svc     u_svc;\n"
1915 "        struct nfsctl_client  u_client;\n"
1916 "        struct nfsctl_export  u_export;\n"
1917 "        struct nfsctl_uidmap  u_umap;\n"
1918 "        struct nfsctl_fhparm  u_getfh;\n"
1919 "        unsigned int          u_debug;\n"
1920 "    } u;\n"
1921 "}\n"
1922 msgstr ""
1923 "struct nfsctl_arg {\n"
1924 "    int                       ca_version;     /* safeguard */\n"
1925 "    union {\n"
1926 "        struct nfsctl_svc     u_svc;\n"
1927 "        struct nfsctl_client  u_client;\n"
1928 "        struct nfsctl_export  u_export;\n"
1929 "        struct nfsctl_uidmap  u_umap;\n"
1930 "        struct nfsctl_fhparm  u_getfh;\n"
1931 "        unsigned int          u_debug;\n"
1932 "    } u;\n"
1933 "}\n"
1934
1935 #. type: Plain text
1936 #: build/C/man2/nfsservctl.2:50
1937 #, no-wrap
1938 msgid ""
1939 "union nfsctl_res {\n"
1940 "        struct knfs_fh          cr_getfh;\n"
1941 "        unsigned int            cr_debug;\n"
1942 "};\n"
1943 msgstr ""
1944 "union nfsctl_res {\n"
1945 "        struct knfs_fh          cr_getfh;\n"
1946 "        unsigned int            cr_debug;\n"
1947 "};\n"
1948
1949 #. type: Plain text
1950 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1951 #: build/C/man2/vm86.2:57
1952 msgid ""
1953 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1954 "appropriately."
1955 msgstr ""
1956 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1957 "定される。"
1958
1959 #. type: Plain text
1960 #: build/C/man2/nfsservctl.2:58
1961 msgid "This call is Linux-specific."
1962 msgstr "このコールは Linux 特有である。"
1963
1964 #. type: TH
1965 #: build/C/man2/outb.2:26
1966 #, no-wrap
1967 msgid "OUTB"
1968 msgstr "OUTB"
1969
1970 #. type: TH
1971 #: build/C/man2/outb.2:26
1972 #, no-wrap
1973 msgid "2012-12-31"
1974 msgstr "2012-12-31"
1975
1976 #. type: Plain text
1977 #: build/C/man2/outb.2:31
1978 msgid ""
1979 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1980 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1981 msgstr ""
1982 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1983 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1984
1985 #. type: Plain text
1986 #: build/C/man2/outb.2:34
1987 #, no-wrap
1988 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1989 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1990
1991 #. type: Plain text
1992 #: build/C/man2/outb.2:41
1993 #, no-wrap
1994 msgid ""
1995 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1996 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1997 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1998 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1999 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
2000 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2001 msgstr ""
2002 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
2003 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
2004 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
2005 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
2006 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
2007 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2008
2009 #. type: Plain text
2010 #: build/C/man2/outb.2:48
2011 #, no-wrap
2012 msgid ""
2013 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2014 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2015 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2016 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2017 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2018 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2019 msgstr ""
2020 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2021 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2022 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2023 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2024 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2025 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2026
2027 #. type: Plain text
2028 #: build/C/man2/outb.2:61
2029 #, no-wrap
2030 msgid ""
2031 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2032 "B<           unsigned long int >I<count>B<);>\n"
2033 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2034 "B<           unsigned long int >I<count>B<);>\n"
2035 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2036 "B<           unsigned long int >I<count>B<);>\n"
2037 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2038 "B<           unsigned long int >I<count>B<);>\n"
2039 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2040 "B<           unsigned long int >I<count>B<);>\n"
2041 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2042 "B<           unsigned long int >I<count>B<);>\n"
2043 msgstr ""
2044 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2045 "B<           unsigned long int >I<count>B<);>\n"
2046 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2047 "B<           unsigned long int >I<count>B<);>\n"
2048 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2049 "B<           unsigned long int >I<count>B<);>\n"
2050 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2051 "B<           unsigned long int >I<count>B<);>\n"
2052 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2053 "B<           unsigned long int >I<count>B<);>\n"
2054 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2055 "B<           unsigned long int >I<count>B<);>\n"
2056
2057 #. type: Plain text
2058 #: build/C/man2/outb.2:67
2059 msgid ""
2060 "This family of functions is used to do low-level port input and output.  The "
2061 "out* functions do port output, the in* functions do port input; the b-suffix "
2062 "functions are byte-width and the w-suffix functions word-width; the _p-"
2063 "suffix functions pause until the I/O completes."
2064 msgstr ""
2065 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2066 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2067 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2068 "待つ。"
2069
2070 #.  , given the following information
2071 #.  in addition to that given in
2072 #.  .BR outb (9).
2073 #. type: Plain text
2074 #: build/C/man2/outb.2:73
2075 msgid ""
2076 "They are primarily designed for internal kernel use, but can be used from "
2077 "user space."
2078 msgstr ""
2079 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2080 "ザー空間からでも使用できる。"
2081
2082 #. type: Plain text
2083 #: build/C/man2/outb.2:78
2084 #, fuzzy
2085 msgid ""
2086 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2087 "as inline macros, and will not be substituted in without optimization "
2088 "enabled, causing unresolved references at link time."
2089 msgstr ""
2090 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2091 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2092 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2093
2094 #. type: Plain text
2095 #: build/C/man2/outb.2:87
2096 msgid ""
2097 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2098 "allow the user space application to access the I/O ports in question.  "
2099 "Failure to do this will cause the application to receive a segmentation "
2100 "fault."
2101 msgstr ""
2102 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2103 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2104 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2105 "になる。"
2106
2107 #. type: Plain text
2108 #: build/C/man2/outb.2:96
2109 msgid ""
2110 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2111 "passed first and the I<port> argument is passed second, which is the "
2112 "opposite order from most DOS implementations."
2113 msgstr ""
2114 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2115 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2116 "である。"
2117
2118 #. type: Plain text
2119 #: build/C/man2/outb.2:99
2120 msgid "B<ioperm>(2), B<iopl>(2)"
2121 msgstr "B<ioperm>(2), B<iopl>(2)"
2122
2123 #. type: TH
2124 #: build/C/man2/pciconfig_read.2:8
2125 #, no-wrap
2126 msgid "PCICONFIG_READ"
2127 msgstr "PCICONFIG_READ"
2128
2129 #. type: TH
2130 #: build/C/man2/pciconfig_read.2:8
2131 #, no-wrap
2132 msgid "2003-07-14"
2133 msgstr "2003-07-14"
2134
2135 #. type: Plain text
2136 #: build/C/man2/pciconfig_read.2:11
2137 msgid ""
2138 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2139 "handling"
2140 msgstr ""
2141 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2142
2143 #. type: Plain text
2144 #: build/C/man2/pciconfig_read.2:14
2145 #, no-wrap
2146 msgid "B<#include E<lt>pci.hE<gt>>\n"
2147 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2148
2149 #. type: Plain text
2150 #: build/C/man2/pciconfig_read.2:21
2151 #, no-wrap
2152 msgid ""
2153 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2154 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2155 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2156 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2157 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2158 "B<          unsigned long >I<devfn>B<);>\n"
2159 msgstr ""
2160 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2161 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2162 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2163 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2164 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2165 "B<          unsigned long >I<devfn>B<);>\n"
2166
2167 #. type: Plain text
2168 #: build/C/man2/pciconfig_read.2:27
2169 #, fuzzy
2170 #| msgid ""
2171 #| "Most of the interaction with PCI devices is already handled by the kernel "
2172 #| "PCI layer, and thus these calls should not normally need to be accessed "
2173 #| "from userspace."
2174 msgid ""
2175 "Most of the interaction with PCI devices is already handled by the kernel "
2176 "PCI layer, and thus these calls should not normally need to be accessed from "
2177 "user space."
2178 msgstr ""
2179 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2180 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2181
2182 #. type: TP
2183 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2184 #, no-wrap
2185 msgid "B<pciconfig_read>()"
2186 msgstr "B<pciconfig_read>()"
2187
2188 #. type: Plain text
2189 #: build/C/man2/pciconfig_read.2:36
2190 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2191 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2192
2193 #. type: TP
2194 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2195 #, no-wrap
2196 msgid "B<pciconfig_write>()"
2197 msgstr "B<pciconfig_write>()"
2198
2199 #. type: Plain text
2200 #: build/C/man2/pciconfig_read.2:45
2201 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2202 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2203
2204 #. type: TP
2205 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2206 #, no-wrap
2207 msgid "B<pciconfig_iobase>()"
2208 msgstr "B<pciconfig_iobase>()"
2209
2210 #. type: Plain text
2211 #: build/C/man2/pciconfig_read.2:50
2212 msgid ""
2213 "You pass it a bus/devfn pair and get a physical address for either the "
2214 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2215 "PIO cycles, or the ISA holes if any."
2216 msgstr ""
2217 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2218 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2219 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2220
2221 #. type: Plain text
2222 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2223 msgid ""
2224 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2225 "appropriately."
2226 msgstr ""
2227 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2228 "定される。"
2229
2230 #. type: Plain text
2231 #: build/C/man2/pciconfig_read.2:77
2232 msgid ""
2233 "Returns information on locations of various I/O regions in physical memory "
2234 "according to the I<which> value.  Values for I<which> are: "
2235 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2236 "B<IOBASE_ISA_MEM>."
2237 msgstr ""
2238 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2239 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2240 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2241
2242 #. type: Plain text
2243 #: build/C/man2/pciconfig_read.2:84
2244 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2245 msgstr ""
2246 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2247 "い。"
2248
2249 #. type: TP
2250 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1746
2251 #: build/C/man2/sendfile.2:134
2252 #, no-wrap
2253 msgid "B<EIO>"
2254 msgstr "B<EIO>"
2255
2256 #. type: Plain text
2257 #: build/C/man2/pciconfig_read.2:87
2258 msgid "I/O error."
2259 msgstr "I/O エラー。"
2260
2261 #. type: TP
2262 #: build/C/man2/pciconfig_read.2:87
2263 #, no-wrap
2264 msgid "B<ENODEV>"
2265 msgstr "B<ENODEV>"
2266
2267 #. type: Plain text
2268 #: build/C/man2/pciconfig_read.2:93
2269 msgid ""
2270 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2271 "could not find a slot."
2272 msgstr ""
2273 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2274 "出しの場合、スロット (slot) が見つからない。"
2275
2276 #. type: Plain text
2277 #: build/C/man2/pciconfig_read.2:98
2278 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2279 msgstr ""
2280 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2281 "いない)。"
2282
2283 #. type: TP
2284 #: build/C/man2/pciconfig_read.2:98
2285 #, no-wrap
2286 msgid "B<EOPNOTSUPP>"
2287 msgstr "B<EOPNOTSUPP>"
2288
2289 #. type: Plain text
2290 #: build/C/man2/pciconfig_read.2:105
2291 #, fuzzy
2292 #| msgid ""
2293 #| "This return value is only valid for B<pciconfig_iobase>().  It is "
2294 #| "returned if the value for I<which> is invalid."
2295 msgid ""
2296 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2297 "if the value for I<which> is invalid."
2298 msgstr ""
2299 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2300 "の値が無効であるときに返される。"
2301
2302 #. type: Plain text
2303 #: build/C/man2/pciconfig_read.2:110
2304 msgid ""
2305 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2306 "B<pciconfig_iobase>()."
2307 msgstr ""
2308 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2309 "B<pciconfig_iobase>()  には適用されない。"
2310
2311 #. type: Plain text
2312 #: build/C/man2/pciconfig_read.2:112
2313 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2314 msgstr ""
2315 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2316 "である。"
2317
2318 #. type: Plain text
2319 #: build/C/man2/pciconfig_read.2:114
2320 msgid "B<capabilities>(7)"
2321 msgstr "B<capabilities>(7)"
2322
2323 #. type: TH
2324 #: build/C/man2/perf_event_open.2:27
2325 #, fuzzy, no-wrap
2326 #| msgid "B<PTRACE_EVENT_CLONE>"
2327 msgid "PERF_EVENT_OPEN"
2328 msgstr "B<PTRACE_EVENT_CLONE>"
2329
2330 #. type: TH
2331 #: build/C/man2/perf_event_open.2:27
2332 #, fuzzy, no-wrap
2333 #| msgid "2012-04-25"
2334 msgid "2013-02-04"
2335 msgstr "2012-04-25"
2336
2337 #. type: Plain text
2338 #: build/C/man2/perf_event_open.2:30
2339 msgid "perf_event_open - set up performance monitoring"
2340 msgstr ""
2341
2342 #. type: Plain text
2343 #: build/C/man2/perf_event_open.2:34
2344 #, no-wrap
2345 msgid ""
2346 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2347 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2348 msgstr ""
2349 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2350 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2351
2352 #. type: Plain text
2353 #: build/C/man2/perf_event_open.2:38
2354 #, no-wrap
2355 msgid ""
2356 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2357 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2358 "B<                    unsigned long >I<flags>B<);>\n"
2359 msgstr ""
2360 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2361 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2362 "B<                    unsigned long >I<flags>B<);>\n"
2363
2364 #. type: Plain text
2365 #: build/C/man2/perf_event_open.2:47
2366 msgid ""
2367 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2368 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2369 "B<fcntl>(2), etc.)."
2370 msgstr ""
2371
2372 #. type: Plain text
2373 #: build/C/man2/perf_event_open.2:55
2374 msgid ""
2375 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2376 "measuring performance information.  Each file descriptor corresponds to one "
2377 "event that is measured; these can be grouped together to measure multiple "
2378 "events simultaneously."
2379 msgstr ""
2380
2381 #. type: Plain text
2382 #: build/C/man2/perf_event_open.2:62
2383 msgid ""
2384 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2385 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2386 "overflows but does continue to exist and maintain its count value."
2387 msgstr ""
2388
2389 #. type: Plain text
2390 #: build/C/man2/perf_event_open.2:76
2391 msgid ""
2392 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2393 "one that is used for counting the aggregate number of events that occur.  In "
2394 "general, counting event results are gathered with a B<read>(2)  call.  A "
2395 "I<sampling> event periodically writes measurements to a buffer that can then "
2396 "be accessed via B<mmap>(2)B<.>"
2397 msgstr ""
2398
2399 #. type: SS
2400 #: build/C/man2/perf_event_open.2:76
2401 #, no-wrap
2402 msgid "Arguments"
2403 msgstr ""
2404
2405 #. type: Plain text
2406 #: build/C/man2/perf_event_open.2:90
2407 msgid ""
2408 "The argument I<pid> allows events to be attached to processes in various "
2409 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2410 "is greater than 0, the process indicated by I<pid> is measured, and if "
2411 "I<pid> is -1, all processes are counted."
2412 msgstr ""
2413
2414 #. type: Plain text
2415 #: build/C/man2/perf_event_open.2:101
2416 msgid ""
2417 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2418 "is greater than or equal to 0, measurements are restricted to the specified "
2419 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2420 msgstr ""
2421
2422 #. type: Plain text
2423 #: build/C/man2/perf_event_open.2:107
2424 msgid ""
2425 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2426 msgstr ""
2427
2428 #. type: Plain text
2429 #: build/C/man2/perf_event_open.2:115
2430 msgid ""
2431 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2432 "that process to whatever CPU the process gets scheduled to.  Per-process "
2433 "events can be created by any user."
2434 msgstr ""
2435
2436 #. type: Plain text
2437 #: build/C/man2/perf_event_open.2:126
2438 msgid ""
2439 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2440 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2441 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2442 msgstr ""
2443
2444 #. type: Plain text
2445 #: build/C/man2/perf_event_open.2:148
2446 msgid ""
2447 "The I<group_fd> argument allows event groups to be created.  An event group "
2448 "has one event which is the group leader.  The leader is created first, with "
2449 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2450 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2451 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2452 "and is considered to be a group with only 1 member.)  An event group is "
2453 "scheduled onto the CPU as a unit: it will be put onto the CPU ionly if all "
2454 "of the events in the group can be put onto the CPU.  This means that the "
2455 "values of the member events can be meaningfully compared, added, divided (to "
2456 "get ratios), etc., with each other, since they have counted events for the "
2457 "same set of executed instructions."
2458 msgstr ""
2459
2460 #. type: Plain text
2461 #: build/C/man2/perf_event_open.2:152
2462 #, fuzzy
2463 #| msgid "The I<subcmd> value is one of the following:"
2464 msgid "The I<flags> argument takes one of the following values:"
2465 msgstr "I<subcmd> の値は以下のいずれかである"
2466
2467 #. type: TP
2468 #: build/C/man2/perf_event_open.2:152
2469 #, no-wrap
2470 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2471 msgstr ""
2472
2473 #.  FIXME The following sentence is unclear
2474 #.  FIXME So, why is it useful?
2475 #. type: Plain text
2476 #: build/C/man2/perf_event_open.2:159
2477 msgid ""
2478 "This flag allows creating an event as part of an event group but having no "
2479 "group leader.  It is unclear why this is useful."
2480 msgstr ""
2481
2482 #. type: TP
2483 #: build/C/man2/perf_event_open.2:159
2484 #, no-wrap
2485 msgid "B<PERF_FLAG_FD_OUTPUT>"
2486 msgstr ""
2487
2488 #. type: Plain text
2489 #: build/C/man2/perf_event_open.2:162
2490 msgid "This flag re-routes the output from an event to the group leader."
2491 msgstr ""
2492
2493 #. type: TP
2494 #: build/C/man2/perf_event_open.2:162
2495 #, fuzzy, no-wrap
2496 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2497 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2498 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2499
2500 #. type: Plain text
2501 #: build/C/man2/perf_event_open.2:185
2502 msgid ""
2503 "This flag activates per-container system-wide monitoring.  A container is an "
2504 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2505 "memory, etc...).  In this mode, the event is measured only if the thread "
2506 "running on the monitored CPU belongs to the designated container (cgroup).  "
2507 "The cgroup is identified by passing a file descriptor opened on its "
2508 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2509 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2510 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2511 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2512 "events and may therefore require extra permissions."
2513 msgstr ""
2514
2515 #. type: Plain text
2516 #: build/C/man2/perf_event_open.2:190
2517 msgid ""
2518 "The I<perf_event_attr> structure provides detailed configuration information "
2519 "for the event being created."
2520 msgstr ""
2521
2522 #. type: Plain text
2523 #: build/C/man2/perf_event_open.2:197
2524 #, no-wrap
2525 msgid ""
2526 "struct perf_event_attr {\n"
2527 "    __u32     type;         /* Type of event */\n"
2528 "    __u32     size;         /* Size of attribute structure */\n"
2529 "    __u64     config;       /* Type-specific configuration */\n"
2530 msgstr ""
2531
2532 #. type: Plain text
2533 #: build/C/man2/perf_event_open.2:202
2534 #, no-wrap
2535 msgid ""
2536 "    union {\n"
2537 "        __u64 sample_period;    /* Period of sampling */\n"
2538 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2539 "    };\n"
2540 msgstr ""
2541
2542 #. type: Plain text
2543 #: build/C/man2/perf_event_open.2:205
2544 #, no-wrap
2545 msgid ""
2546 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2547 "    __u64     read_format;  /* Specifies values returned in read */\n"
2548 msgstr ""
2549
2550 #. type: Plain text
2551 #: build/C/man2/perf_event_open.2:231
2552 #, no-wrap
2553 msgid ""
2554 "    __u64     disabled       : 1,   /* off by default */\n"
2555 "              inherit        : 1,   /* children inherit it */\n"
2556 "              pinned         : 1,   /* must always be on PMU */\n"
2557 "              exclusive      : 1,   /* only group on PMU */\n"
2558 "              exclude_user   : 1,   /* don't count user */\n"
2559 "              exclude_kernel : 1,   /* don't count kernel */\n"
2560 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2561 "              exclude_idle   : 1,   /* don't count when idle */\n"
2562 "              mmap           : 1,   /* include mmap data */\n"
2563 "              comm           : 1,   /* include comm data */\n"
2564 "              freq           : 1,   /* use freq, not period */\n"
2565 "              inherit_stat   : 1,   /* per task counts */\n"
2566 "              enable_on_exec : 1,   /* next exec enables */\n"
2567 "              task           : 1,   /* trace fork/exit */\n"
2568 "              watermark      : 1,   /* wakeup_watermark */\n"
2569 "              precise_ip     : 2,   /* skid constraint */\n"
2570 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2571 "              sample_id_all  : 1,   /* sample_type all events */\n"
2572 "              exclude_host   : 1,   /* don't count in host */\n"
2573 "              exclude_guest  : 1,   /* don't count in guest */\n"
2574 "              exclude_callchain_kernel : 1,\n"
2575 "                                    /* exclude kernel callchains */\n"
2576 "              exclude_callchain_user   : 1,\n"
2577 "\t                            /* exclude user callchains */\n"
2578 "              __reserved_1   : 41;\n"
2579 msgstr ""
2580
2581 #. type: Plain text
2582 #: build/C/man2/perf_event_open.2:236
2583 #, no-wrap
2584 msgid ""
2585 "    union {\n"
2586 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2587 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2588 "    };\n"
2589 msgstr ""
2590
2591 #. type: Plain text
2592 #: build/C/man2/perf_event_open.2:238
2593 #, no-wrap
2594 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2595 msgstr ""
2596
2597 #. type: Plain text
2598 #: build/C/man2/perf_event_open.2:243
2599 #, no-wrap
2600 msgid ""
2601 "    union {\n"
2602 "        __u64 bp_addr;          /* breakpoint address */\n"
2603 "        __u64 config1;          /* extension of config */\n"
2604 "    };\n"
2605 msgstr ""
2606
2607 #. type: Plain text
2608 #: build/C/man2/perf_event_open.2:253
2609 #, no-wrap
2610 msgid ""
2611 "    union {\n"
2612 "        __u64 bp_len;           /* breakpoint length */\n"
2613 "        __u64 config2;          /* extension of config1 */\n"
2614 "    };\n"
2615 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2616 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2617 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2618 "                                   samples */\n"
2619 "    __u32   __reserved_2;       /* Align to u64 */\n"
2620 msgstr ""
2621
2622 #. type: Plain text
2623 #: build/C/man2/perf_event_open.2:255
2624 #, no-wrap
2625 msgid "};\n"
2626 msgstr ""
2627
2628 #. type: Plain text
2629 #: build/C/man2/perf_event_open.2:261
2630 msgid ""
2631 "The fields of the I<perf_event_attr> structure are described in more detail "
2632 "below:"
2633 msgstr ""
2634
2635 #. type: TP
2636 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2637 #, no-wrap
2638 msgid "I<type>"
2639 msgstr ""
2640
2641 #. type: Plain text
2642 #: build/C/man2/perf_event_open.2:265
2643 msgid ""
2644 "This field specifies the overall event type.  It has one of the following "
2645 "values:"
2646 msgstr ""
2647
2648 #. type: TP
2649 #: build/C/man2/perf_event_open.2:266
2650 #, no-wrap
2651 msgid "B<PERF_TYPE_HARDWARE>"
2652 msgstr ""
2653
2654 #. type: Plain text
2655 #: build/C/man2/perf_event_open.2:273
2656 msgid ""
2657 "This indicates one of the \"generalized\" hardware events provided by the "
2658 "kernel.  See the I<config> field definition for more details."
2659 msgstr ""
2660
2661 #. type: TP
2662 #: build/C/man2/perf_event_open.2:273
2663 #, no-wrap
2664 msgid "B<PERF_TYPE_SOFTWARE>"
2665 msgstr ""
2666
2667 #. type: Plain text
2668 #: build/C/man2/perf_event_open.2:277
2669 msgid ""
2670 "This indicates one of the software-defined events provided by the kernel "
2671 "(even if no hardware support is available)."
2672 msgstr ""
2673
2674 #. type: TP
2675 #: build/C/man2/perf_event_open.2:277
2676 #, fuzzy, no-wrap
2677 #| msgid "B<PTRACE_CONT>"
2678 msgid "B<PERF_TYPE_TRACEPOINT>"
2679 msgstr "B<PTRACE_CONT>"
2680
2681 #. type: Plain text
2682 #: build/C/man2/perf_event_open.2:281
2683 msgid ""
2684 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2685 msgstr ""
2686
2687 #. type: TP
2688 #: build/C/man2/perf_event_open.2:281
2689 #, no-wrap
2690 msgid "B<PERF_TYPE_HW_CACHE>"
2691 msgstr ""
2692
2693 #. type: Plain text
2694 #: build/C/man2/perf_event_open.2:287
2695 msgid ""
2696 "This indicates a hardware cache event.  This has a special encoding, "
2697 "described in the I<config> field definition."
2698 msgstr ""
2699
2700 #. type: TP
2701 #: build/C/man2/perf_event_open.2:287
2702 #, no-wrap
2703 msgid "B<PERF_TYPE_RAW>"
2704 msgstr ""
2705
2706 #. type: Plain text
2707 #: build/C/man2/perf_event_open.2:291
2708 msgid ""
2709 "This indicates a \"raw\" implementation-specific event in the I<config> "
2710 "field."
2711 msgstr ""
2712
2713 #. type: TP
2714 #: build/C/man2/perf_event_open.2:291
2715 #, fuzzy, no-wrap
2716 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2717 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2718 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2719
2720 #. type: Plain text
2721 #: build/C/man2/perf_event_open.2:296
2722 msgid ""
2723 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2724 "can be read/write accesses to an address as well as execution of an "
2725 "instruction address."
2726 msgstr ""
2727
2728 #. type: TP
2729 #: build/C/man2/perf_event_open.2:296
2730 #, no-wrap
2731 msgid "dynamic PMU"
2732 msgstr ""
2733
2734 #. type: Plain text
2735 #: build/C/man2/perf_event_open.2:315
2736 msgid ""
2737 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2738 "enable this, a value exported by the kernel can be used in the I<type> field "
2739 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2740 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2741 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2742 "content is an integer that can be used in the I<type> field.  For instance, "
2743 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2744 "CPU PMU, which is usually 4."
2745 msgstr ""
2746
2747 #. type: TP
2748 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2749 #, no-wrap
2750 msgid "I<size>"
2751 msgstr ""
2752
2753 #. type: Plain text
2754 #: build/C/man2/perf_event_open.2:325
2755 msgid ""
2756 "The size of the I<perf_event_attr> structure for forward/backward "
2757 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2758 "the kernel to see the struct size at the time of compilation."
2759 msgstr ""
2760
2761 #. type: Plain text
2762 #: build/C/man2/perf_event_open.2:340
2763 msgid ""
2764 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2765 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2766 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2767 "corresponding to the addition of branch sampling in Linux 3.4.  "
2768 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2769 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2770 msgstr ""
2771
2772 #. type: TP
2773 #: build/C/man2/perf_event_open.2:340
2774 #, no-wrap
2775 msgid "I<config>"
2776 msgstr ""
2777
2778 #. type: Plain text
2779 #: build/C/man2/perf_event_open.2:351
2780 msgid ""
2781 "This specifies which event you want, in conjunction with the I<type> field.  "
2782 "The I<config1> and I<config2> fields are also taken into account in cases "
2783 "where 64 bits is not enough to fully specify the event.  The encoding of "
2784 "these fields are event dependent."
2785 msgstr ""
2786
2787 #. type: Plain text
2788 #: build/C/man2/perf_event_open.2:357
2789 msgid ""
2790 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2791 "counter configuration data; if the most significant bit is unset, the next 7 "
2792 "bits are an event type and the rest of the bits are the event identifier."
2793 msgstr ""
2794
2795 #. type: Plain text
2796 #: build/C/man2/perf_event_open.2:368
2797 msgid ""
2798 "There are various ways to set the I<config> field that are dependent on the "
2799 "value of the previously described I<type> field.  What follows are various "
2800 "possible settings for I<config> separated out by I<type>."
2801 msgstr ""
2802
2803 #. type: Plain text
2804 #: build/C/man2/perf_event_open.2:378
2805 msgid ""
2806 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2807 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2808 "I<config> to one of the following:"
2809 msgstr ""
2810
2811 #. type: TP
2812 #: build/C/man2/perf_event_open.2:379
2813 #, no-wrap
2814 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2815 msgstr ""
2816
2817 #. type: Plain text
2818 #: build/C/man2/perf_event_open.2:383
2819 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2820 msgstr ""
2821
2822 #. type: TP
2823 #: build/C/man2/perf_event_open.2:383
2824 #, no-wrap
2825 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2826 msgstr ""
2827
2828 #. type: Plain text
2829 #: build/C/man2/perf_event_open.2:388
2830 msgid ""
2831 "Retired instructions.  Be careful, these can be affected by various issues, "
2832 "most notably hardware interrupt counts"
2833 msgstr ""
2834
2835 #. type: TP
2836 #: build/C/man2/perf_event_open.2:388
2837 #, no-wrap
2838 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2839 msgstr ""
2840
2841 #. type: Plain text
2842 #: build/C/man2/perf_event_open.2:395
2843 msgid ""
2844 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2845 "may vary depending on your CPU.  This may include prefetches and coherency "
2846 "messages; again this depends on the design of your CPU."
2847 msgstr ""
2848
2849 #. type: TP
2850 #: build/C/man2/perf_event_open.2:395
2851 #, no-wrap
2852 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2853 msgstr ""
2854
2855 #. type: Plain text
2856 #: build/C/man2/perf_event_open.2:402
2857 msgid ""
2858 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2859 "intended to be used in conjunction with the "
2860 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2861 msgstr ""
2862
2863 #. type: TP
2864 #: build/C/man2/perf_event_open.2:402
2865 #, no-wrap
2866 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2867 msgstr ""
2868
2869 #. type: Plain text
2870 #: build/C/man2/perf_event_open.2:407
2871 msgid ""
2872 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2873 "event on AMD processors."
2874 msgstr ""
2875
2876 #. type: TP
2877 #: build/C/man2/perf_event_open.2:407
2878 #, no-wrap
2879 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2880 msgstr ""
2881
2882 #. type: Plain text
2883 #: build/C/man2/perf_event_open.2:410
2884 msgid "Mispredicted branch instructions."
2885 msgstr ""
2886
2887 #. type: TP
2888 #: build/C/man2/perf_event_open.2:410
2889 #, no-wrap
2890 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2891 msgstr ""
2892
2893 #. type: Plain text
2894 #: build/C/man2/perf_event_open.2:413
2895 msgid "Bus cycles, which can be different from total cycles."
2896 msgstr ""
2897
2898 #. type: TP
2899 #: build/C/man2/perf_event_open.2:413
2900 #, fuzzy, no-wrap
2901 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2902 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2903 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2904
2905 #. type: Plain text
2906 #: build/C/man2/perf_event_open.2:416
2907 msgid "Stalled cycles during issue."
2908 msgstr ""
2909
2910 #. type: TP
2911 #: build/C/man2/perf_event_open.2:416
2912 #, no-wrap
2913 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2914 msgstr ""
2915
2916 #. type: Plain text
2917 #: build/C/man2/perf_event_open.2:419
2918 msgid "Stalled cycles during retirement."
2919 msgstr ""
2920
2921 #. type: TP
2922 #: build/C/man2/perf_event_open.2:419
2923 #, fuzzy, no-wrap
2924 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2925 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2926 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2927
2928 #. type: Plain text
2929 #: build/C/man2/perf_event_open.2:422
2930 msgid "Total cycles; not affected by CPU frequency scaling."
2931 msgstr ""
2932
2933 #. type: Plain text
2934 #: build/C/man2/perf_event_open.2:432
2935 msgid ""
2936 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2937 "provided by the kernel.  Set I<config> to one of the following:"
2938 msgstr ""
2939
2940 #. type: TP
2941 #: build/C/man2/perf_event_open.2:433
2942 #, no-wrap
2943 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2944 msgstr ""
2945
2946 #. type: Plain text
2947 #: build/C/man2/perf_event_open.2:436
2948 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2949 msgstr ""
2950
2951 #. type: TP
2952 #: build/C/man2/perf_event_open.2:436
2953 #, no-wrap
2954 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2955 msgstr ""
2956
2957 #. type: Plain text
2958 #: build/C/man2/perf_event_open.2:439
2959 msgid "This reports a clock count specific to the task that is running."
2960 msgstr ""
2961
2962 #. type: TP
2963 #: build/C/man2/perf_event_open.2:439
2964 #, no-wrap
2965 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2966 msgstr ""
2967
2968 #. type: Plain text
2969 #: build/C/man2/perf_event_open.2:442
2970 msgid "This reports the number of page faults."
2971 msgstr ""
2972
2973 #. type: TP
2974 #: build/C/man2/perf_event_open.2:442
2975 #, no-wrap
2976 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2977 msgstr ""
2978
2979 #. type: Plain text
2980 #: build/C/man2/perf_event_open.2:447
2981 msgid ""
2982 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2983 "as user-space events, after that they are reported as happening in the "
2984 "kernel."
2985 msgstr ""
2986
2987 #. type: TP
2988 #: build/C/man2/perf_event_open.2:447
2989 #, no-wrap
2990 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2991 msgstr ""
2992
2993 #. type: Plain text
2994 #: build/C/man2/perf_event_open.2:451
2995 msgid "This reports the number of times the process has migrated to a new CPU."
2996 msgstr ""
2997
2998 #. type: TP
2999 #: build/C/man2/perf_event_open.2:451
3000 #, no-wrap
3001 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3002 msgstr ""
3003
3004 #. type: Plain text
3005 #: build/C/man2/perf_event_open.2:455
3006 msgid ""
3007 "This counts the number of minor page faults.  These did not require disk I/O "
3008 "to handle."
3009 msgstr ""
3010
3011 #. type: TP
3012 #: build/C/man2/perf_event_open.2:455
3013 #, no-wrap
3014 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3015 msgstr ""
3016
3017 #. type: Plain text
3018 #: build/C/man2/perf_event_open.2:459
3019 msgid ""
3020 "This counts the number of major page faults.  These required disk I/O to "
3021 "handle."
3022 msgstr ""
3023
3024 #. type: TP
3025 #: build/C/man2/perf_event_open.2:459
3026 #, fuzzy, no-wrap
3027 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3028 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
3029 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3030
3031 #. type: Plain text
3032 #: build/C/man2/perf_event_open.2:465
3033 msgid ""
3034 "This counts the number of alignment faults.  These happen when unaligned "
3035 "memory accesses happen; the kernel can handle these but it reduces "
3036 "performance.  This happens only on some architectures (never on x86)."
3037 msgstr ""
3038
3039 #. type: TP
3040 #: build/C/man2/perf_event_open.2:465
3041 #, fuzzy, no-wrap
3042 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3043 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
3044 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3045
3046 #. type: Plain text
3047 #: build/C/man2/perf_event_open.2:471
3048 msgid ""
3049 "This counts the number of emulation faults.  The kernel sometimes traps on "
3050 "unimplemented instructions and emulates them for user space.  This can "
3051 "negatively impact performance."
3052 msgstr ""
3053
3054 #. type: Plain text
3055 #: build/C/man2/perf_event_open.2:484
3056 msgid ""
3057 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3058 "tracepoints.  The value to use in I<config> can be obtained from under "
3059 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3060 msgstr ""
3061
3062 #. type: Plain text
3063 #: build/C/man2/perf_event_open.2:495
3064 msgid ""
3065 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3066 "cache event.  To calculate the appropriate I<config> value use the following "
3067 "equation:"
3068 msgstr ""
3069
3070 #. type: Plain text
3071 #: build/C/man2/perf_event_open.2:500
3072 #, no-wrap
3073 msgid ""
3074 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3075 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3076 msgstr ""
3077
3078 #. type: Plain text
3079 #: build/C/man2/perf_event_open.2:505
3080 msgid "where I<perf_hw_cache_id> is one of:"
3081 msgstr ""
3082
3083 #. type: TP
3084 #: build/C/man2/perf_event_open.2:506
3085 #, no-wrap
3086 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3087 msgstr ""
3088
3089 #. type: Plain text
3090 #: build/C/man2/perf_event_open.2:509
3091 msgid "for measuring Level 1 Data Cache"
3092 msgstr ""
3093
3094 #. type: TP
3095 #: build/C/man2/perf_event_open.2:509
3096 #, no-wrap
3097 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3098 msgstr ""
3099
3100 #. type: Plain text
3101 #: build/C/man2/perf_event_open.2:512
3102 msgid "for measuring Level 1 Instruction Cache"
3103 msgstr ""
3104
3105 #. type: TP
3106 #: build/C/man2/perf_event_open.2:512
3107 #, no-wrap
3108 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3109 msgstr ""
3110
3111 #. type: Plain text
3112 #: build/C/man2/perf_event_open.2:515
3113 msgid "for measuring Last-Level Cache"
3114 msgstr ""
3115
3116 #. type: TP
3117 #: build/C/man2/perf_event_open.2:515
3118 #, no-wrap
3119 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3120 msgstr ""
3121
3122 #. type: Plain text
3123 #: build/C/man2/perf_event_open.2:518
3124 msgid "for measuring the Data TLB"
3125 msgstr ""
3126
3127 #. type: TP
3128 #: build/C/man2/perf_event_open.2:518
3129 #, no-wrap
3130 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3131 msgstr ""
3132
3133 #. type: Plain text
3134 #: build/C/man2/perf_event_open.2:521
3135 msgid "for measuring the Instruction TLB"
3136 msgstr ""
3137
3138 #. type: TP
3139 #: build/C/man2/perf_event_open.2:521
3140 #, no-wrap
3141 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3142 msgstr ""
3143
3144 #. type: Plain text
3145 #: build/C/man2/perf_event_open.2:524
3146 msgid "for measuring the branch prediction unit"
3147 msgstr ""
3148
3149 #. type: TP
3150 #: build/C/man2/perf_event_open.2:524
3151 #, fuzzy, no-wrap
3152 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3153 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3154 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3155
3156 #. type: Plain text
3157 #: build/C/man2/perf_event_open.2:527
3158 msgid "for measuring local memory accesses"
3159 msgstr ""
3160
3161 #. type: Plain text
3162 #: build/C/man2/perf_event_open.2:532
3163 msgid "and I<perf_hw_cache_op_id> is one of"
3164 msgstr ""
3165
3166 #. type: TP
3167 #: build/C/man2/perf_event_open.2:533
3168 #, no-wrap
3169 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man2/perf_event_open.2:536
3174 msgid "for read accesses"
3175 msgstr ""
3176
3177 #. type: TP
3178 #: build/C/man2/perf_event_open.2:536
3179 #, no-wrap
3180 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3181 msgstr ""
3182
3183 #. type: Plain text
3184 #: build/C/man2/perf_event_open.2:539
3185 msgid "for write accesses"
3186 msgstr ""
3187
3188 #. type: TP
3189 #: build/C/man2/perf_event_open.2:539
3190 #, no-wrap
3191 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3192 msgstr ""
3193
3194 #. type: Plain text
3195 #: build/C/man2/perf_event_open.2:542
3196 msgid "for prefetch accesses"
3197 msgstr ""
3198
3199 #. type: Plain text
3200 #: build/C/man2/perf_event_open.2:547
3201 msgid "and I<perf_hw_cache_op_result_id> is one of"
3202 msgstr ""
3203
3204 #. type: TP
3205 #: build/C/man2/perf_event_open.2:548
3206 #, no-wrap
3207 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3208 msgstr ""
3209
3210 #. type: Plain text
3211 #: build/C/man2/perf_event_open.2:551
3212 msgid "to measure accesses"
3213 msgstr ""
3214
3215 #. type: TP
3216 #: build/C/man2/perf_event_open.2:551
3217 #, no-wrap
3218 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3219 msgstr ""
3220
3221 #. type: Plain text
3222 #: build/C/man2/perf_event_open.2:554
3223 msgid "to measure misses"
3224 msgstr ""
3225
3226 #. type: Plain text
3227 #: build/C/man2/perf_event_open.2:572
3228 msgid ""
3229 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3230 "needed.  Most CPUs support events that are not covered by the \"generalized"
3231 "\" events.  These are implementation defined; see your CPU manual (for "
3232 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3233 "Developer Guide).  The libpfm4 library can be used to translate from the "
3234 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3235 "expects in this field."
3236 msgstr ""
3237
3238 #. type: Plain text
3239 #: build/C/man2/perf_event_open.2:581
3240 msgid ""
3241 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3242 "Its parameters are set in other places."
3243 msgstr ""
3244
3245 #. type: TP
3246 #: build/C/man2/perf_event_open.2:582
3247 #, no-wrap
3248 msgid "I<sample_period>, I<sample_freq>"
3249 msgstr ""
3250
3251 #. type: Plain text
3252 #: build/C/man2/perf_event_open.2:594
3253 msgid ""
3254 "A \"sampling\" counter is one that generates an interrupt every N events, "
3255 "where N is given by I<sample_period>.  A sampling counter has "
3256 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3257 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3258 "is recorded on each interrupt."
3259 msgstr ""
3260
3261 #. type: Plain text
3262 #: build/C/man2/perf_event_open.2:604
3263 msgid ""
3264 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3265 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3266 "period to try and achieve the desired rate.  The rate of adjustment is a "
3267 "timer tick."
3268 msgstr ""
3269
3270 #. type: TP
3271 #: build/C/man2/perf_event_open.2:604
3272 #, no-wrap
3273 msgid "I<sample_type>"
3274 msgstr ""
3275
3276 #. type: Plain text
3277 #: build/C/man2/perf_event_open.2:616
3278 msgid ""
3279 "The various bits in this field specify which values to include in the "
3280 "sample.  They will be recorded in a ring-buffer, which is available to user "
3281 "space using B<mmap>(2).  The order in which the values are saved in the "
3282 "sample are documented in the MMAP Layout subsection below; it is not the "
3283 "I<enum perf_event_sample_format> order."
3284 msgstr ""
3285
3286 #. type: TP
3287 #: build/C/man2/perf_event_open.2:617
3288 #, no-wrap
3289 msgid "B<PERF_SAMPLE_IP>"
3290 msgstr ""
3291
3292 #. type: Plain text
3293 #: build/C/man2/perf_event_open.2:620
3294 msgid "Records instruction pointer."
3295 msgstr ""
3296
3297 #. type: TP
3298 #: build/C/man2/perf_event_open.2:620
3299 #, no-wrap
3300 msgid "B<PERF_SAMPLE_TID>"
3301 msgstr ""
3302
3303 #. type: Plain text
3304 #: build/C/man2/perf_event_open.2:623
3305 msgid "Records the process and thread IDs."
3306 msgstr ""
3307
3308 #. type: TP
3309 #: build/C/man2/perf_event_open.2:623
3310 #, no-wrap
3311 msgid "B<PERF_SAMPLE_TIME>"
3312 msgstr ""
3313
3314 #. type: Plain text
3315 #: build/C/man2/perf_event_open.2:626
3316 msgid "Records a timestamp."
3317 msgstr ""
3318
3319 #. type: TP
3320 #: build/C/man2/perf_event_open.2:626
3321 #, no-wrap
3322 msgid "B<PERF_SAMPLE_ADDR>"
3323 msgstr ""
3324
3325 #. type: Plain text
3326 #: build/C/man2/perf_event_open.2:629
3327 msgid "Records an address, if applicable."
3328 msgstr ""
3329
3330 #. type: TP
3331 #: build/C/man2/perf_event_open.2:629
3332 #, no-wrap
3333 msgid "B<PERF_SAMPLE_READ>"
3334 msgstr ""
3335
3336 #. type: Plain text
3337 #: build/C/man2/perf_event_open.2:632
3338 msgid ""
3339 "Record counter values for all events in a group, not just the group leader."
3340 msgstr ""
3341
3342 #. type: TP
3343 #: build/C/man2/perf_event_open.2:632
3344 #, no-wrap
3345 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3346 msgstr ""
3347
3348 #. type: Plain text
3349 #: build/C/man2/perf_event_open.2:635
3350 msgid "Records the callchain (stack backtrace)."
3351 msgstr ""
3352
3353 #. type: TP
3354 #: build/C/man2/perf_event_open.2:635
3355 #, no-wrap
3356 msgid "B<PERF_SAMPLE_ID>"
3357 msgstr ""
3358
3359 #. type: Plain text
3360 #: build/C/man2/perf_event_open.2:638
3361 msgid "Records a unique ID for the opened event's group leader."
3362 msgstr ""
3363
3364 #. type: TP
3365 #: build/C/man2/perf_event_open.2:638
3366 #, no-wrap
3367 msgid "B<PERF_SAMPLE_CPU>"
3368 msgstr ""
3369
3370 #. type: Plain text
3371 #: build/C/man2/perf_event_open.2:641
3372 msgid "Records CPU number."
3373 msgstr ""
3374
3375 #. type: TP
3376 #: build/C/man2/perf_event_open.2:641
3377 #, no-wrap
3378 msgid "B<PERF_SAMPLE_PERIOD>"
3379 msgstr ""
3380
3381 #. type: Plain text
3382 #: build/C/man2/perf_event_open.2:644
3383 msgid "Records the current sampling period."
3384 msgstr ""
3385
3386 #. type: TP
3387 #: build/C/man2/perf_event_open.2:644
3388 #, no-wrap
3389 msgid "B<PERF_SAMPLE_STREAM_ID>"
3390 msgstr ""
3391
3392 #. type: Plain text
3393 #: build/C/man2/perf_event_open.2:651
3394 msgid ""
3395 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3396 "actual ID is returned, not the group leader.  This ID is the same as the one "
3397 "returned by PERF_FORMAT_ID."
3398 msgstr ""
3399
3400 #. type: TP
3401 #: build/C/man2/perf_event_open.2:651
3402 #, no-wrap
3403 msgid "B<PERF_SAMPLE_RAW>"
3404 msgstr ""
3405
3406 #. type: Plain text
3407 #: build/C/man2/perf_event_open.2:655
3408 msgid ""
3409 "Records additional data, if applicable.  Usually returned by tracepoint "
3410 "events."
3411 msgstr ""
3412
3413 #. type: TP
3414 #: build/C/man2/perf_event_open.2:655
3415 #, fuzzy, no-wrap
3416 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3417 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3418 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3419
3420 #. type: Plain text
3421 #: build/C/man2/perf_event_open.2:659
3422 msgid "Records the branch stack.  See branch_sample_type."
3423 msgstr ""
3424
3425 #. type: TP
3426 #: build/C/man2/perf_event_open.2:659
3427 #, fuzzy, no-wrap
3428 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3429 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3430 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3431
3432 #. type: Plain text
3433 #: build/C/man2/perf_event_open.2:662
3434 msgid "Records the current register state."
3435 msgstr ""
3436
3437 #. type: TP
3438 #: build/C/man2/perf_event_open.2:662
3439 #, fuzzy, no-wrap
3440 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3441 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3442 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3443
3444 #. type: Plain text
3445 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3446 #: build/C/man2/perf_event_open.2:1803
3447 msgid "[To be documented]"
3448 msgstr ""
3449
3450 #. type: TP
3451 #: build/C/man2/perf_event_open.2:666
3452 #, no-wrap
3453 msgid "I<read_format>"
3454 msgstr ""
3455
3456 #. type: Plain text
3457 #: build/C/man2/perf_event_open.2:673
3458 msgid ""
3459 "This field specifies the format of the data returned by B<read>(2)  on a "
3460 "B<perf_event_open>()  file descriptor."
3461 msgstr ""
3462
3463 #. type: TP
3464 #: build/C/man2/perf_event_open.2:674
3465 #, no-wrap
3466 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3467 msgstr ""
3468
3469 #. type: Plain text
3470 #: build/C/man2/perf_event_open.2:681
3471 msgid ""
3472 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3473 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3474 msgstr ""
3475
3476 #. type: TP
3477 #: build/C/man2/perf_event_open.2:681
3478 #, no-wrap
3479 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3480 msgstr ""
3481
3482 #. type: Plain text
3483 #: build/C/man2/perf_event_open.2:688
3484 msgid ""
3485 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3486 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3487 msgstr ""
3488
3489 #. type: TP
3490 #: build/C/man2/perf_event_open.2:688
3491 #, no-wrap
3492 msgid "B<PERF_FORMAT_ID>"
3493 msgstr ""
3494
3495 #. type: Plain text
3496 #: build/C/man2/perf_event_open.2:691
3497 msgid "Adds a 64-bit unique value that corresponds to the event group."
3498 msgstr ""
3499
3500 #. type: TP
3501 #: build/C/man2/perf_event_open.2:691
3502 #, no-wrap
3503 msgid "B<PERF_FORMAT_GROUP>"
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man2/perf_event_open.2:694
3508 msgid "Allows all counter values in an event group to be read with one read."
3509 msgstr ""
3510
3511 #. type: TP
3512 #: build/C/man2/perf_event_open.2:695
3513 #, no-wrap
3514 msgid "I<disabled>"
3515 msgstr ""
3516
3517 #. type: Plain text
3518 #: build/C/man2/perf_event_open.2:705
3519 msgid ""
3520 "The I<disabled> bit specifies whether the counter starts out disabled or "
3521 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3522 "B<prctl>(2), or I<enable_on_exec>."
3523 msgstr ""
3524
3525 #. type: TP
3526 #: build/C/man2/perf_event_open.2:705
3527 #, no-wrap
3528 msgid "I<inherit>"
3529 msgstr ""
3530
3531 #. type: Plain text
3532 #: build/C/man2/perf_event_open.2:714
3533 msgid ""
3534 "The I<inherit> bit specifies that this counter should count events of child "
3535 "tasks as well as the task specified.  This applies only to new children, not "
3536 "to any existing children at the time the counter is created (nor to any new "
3537 "children of existing children)."
3538 msgstr ""
3539
3540 #. type: Plain text
3541 #: build/C/man2/perf_event_open.2:719
3542 msgid ""
3543 "Inherit does not work for some combinations of I<read_format>s, such as "
3544 "B<PERF_FORMAT_GROUP>."
3545 msgstr ""
3546
3547 #. type: TP
3548 #: build/C/man2/perf_event_open.2:719
3549 #, no-wrap
3550 msgid "I<pinned>"
3551 msgstr ""
3552
3553 #. type: Plain text
3554 #: build/C/man2/perf_event_open.2:732
3555 msgid ""
3556 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3557 "at all possible.  It applies only to hardware counters and only to group "
3558 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3559 "there are not enough hardware counters or because of a conflict with some "
3560 "other event), then the counter goes into an 'error' state, where reads "
3561 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3562 "subsequently enabled or disabled."
3563 msgstr ""
3564
3565 #. type: TP
3566 #: build/C/man2/perf_event_open.2:732
3567 #, no-wrap
3568 msgid "I<exclusive>"
3569 msgstr ""
3570
3571 #. type: Plain text
3572 #: build/C/man2/perf_event_open.2:741
3573 msgid ""
3574 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3575 "it should be the only group using the CPU's counters.  In the future this "
3576 "may allow monitoring programs to support PMU features that need to run alone "
3577 "so that they do not disrupt other hardware counters."
3578 msgstr ""
3579
3580 #. type: TP
3581 #: build/C/man2/perf_event_open.2:741
3582 #, no-wrap
3583 msgid "I<exclude_user>"
3584 msgstr ""
3585
3586 #. type: Plain text
3587 #: build/C/man2/perf_event_open.2:744
3588 msgid ""
3589 "If this bit is set, the count excludes events that happen in user space."
3590 msgstr ""
3591
3592 #. type: TP
3593 #: build/C/man2/perf_event_open.2:744
3594 #, no-wrap
3595 msgid "I<exclude_kernel>"
3596 msgstr ""
3597
3598 #. type: Plain text
3599 #: build/C/man2/perf_event_open.2:747
3600 msgid ""
3601 "If this bit is set, the count excludes events that happen in kernel-space."
3602 msgstr ""
3603
3604 #. type: TP
3605 #: build/C/man2/perf_event_open.2:747
3606 #, no-wrap
3607 msgid "I<exclude_hv>"
3608 msgstr ""
3609
3610 #. type: Plain text
3611 #: build/C/man2/perf_event_open.2:755
3612 msgid ""
3613 "If this bit is set, the count excludes events that happen in the "
3614 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3615 "this (such as POWER).  Extra support is needed for handling hypervisor "
3616 "measurements on most machines."
3617 msgstr ""
3618
3619 #. type: TP
3620 #: build/C/man2/perf_event_open.2:755
3621 #, no-wrap
3622 msgid "I<exclude_idle>"
3623 msgstr ""
3624
3625 #. type: Plain text
3626 #: build/C/man2/perf_event_open.2:758
3627 msgid "If set, don't count when the CPU is idle."
3628 msgstr ""
3629
3630 #. type: TP
3631 #: build/C/man2/perf_event_open.2:758
3632 #, no-wrap
3633 msgid "I<mmap>"
3634 msgstr ""
3635
3636 #. type: Plain text
3637 #: build/C/man2/perf_event_open.2:763
3638 msgid "The I<mmap> bit enables recording of exec mmap events."
3639 msgstr ""
3640
3641 #. type: TP
3642 #: build/C/man2/perf_event_open.2:763
3643 #, no-wrap
3644 msgid "I<comm>"
3645 msgstr ""
3646
3647 #. type: Plain text
3648 #: build/C/man2/perf_event_open.2:774
3649 msgid ""
3650 "The I<comm> bit enables tracking of process command name as modified by the "
3651 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3652 "tools, there is no way to distinguish one system call versus the other."
3653 msgstr ""
3654
3655 #. type: TP
3656 #: build/C/man2/perf_event_open.2:774
3657 #, no-wrap
3658 msgid "I<freq>"
3659 msgstr ""
3660
3661 #. type: Plain text
3662 #: build/C/man2/perf_event_open.2:781
3663 msgid ""
3664 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3665 "when setting up the sampling interval."
3666 msgstr ""
3667
3668 #. type: TP
3669 #: build/C/man2/perf_event_open.2:781
3670 #, no-wrap
3671 msgid "I<inherit_stat>"
3672 msgstr ""
3673
3674 #. type: Plain text
3675 #: build/C/man2/perf_event_open.2:788
3676 msgid ""
3677 "This bit enables saving of event counts on context switch for inherited "
3678 "tasks.  This is meaningful only if the I<inherit> field is set."
3679 msgstr ""
3680
3681 #. type: TP
3682 #: build/C/man2/perf_event_open.2:788
3683 #, no-wrap
3684 msgid "I<enable_on_exec>"
3685 msgstr ""
3686
3687 #. type: Plain text
3688 #: build/C/man2/perf_event_open.2:793
3689 msgid ""
3690 "If this bit is set, a counter is automatically enabled after a call to "
3691 "B<exec>(2)."
3692 msgstr ""
3693
3694 #. type: TP
3695 #: build/C/man2/perf_event_open.2:793
3696 #, no-wrap
3697 msgid "I<task>"
3698 msgstr ""
3699
3700 #. type: Plain text
3701 #: build/C/man2/perf_event_open.2:797
3702 msgid ""
3703 "If this bit is set, then fork/exit notifications are included in the ring "
3704 "buffer."
3705 msgstr ""
3706
3707 #. type: TP
3708 #: build/C/man2/perf_event_open.2:797
3709 #, no-wrap
3710 msgid "I<watermark>"
3711 msgstr ""
3712
3713 #. type: Plain text
3714 #: build/C/man2/perf_event_open.2:805
3715 msgid ""
3716 "If set, have a sampling interrupt happen when we cross the "
3717 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3718 "I<wakeup_events> samples."
3719 msgstr ""
3720
3721 #. type: TP
3722 #: build/C/man2/perf_event_open.2:805
3723 #, fuzzy, no-wrap
3724 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3725 msgid "I<precise_ip> (Since Linux 2.6.35)"
3726 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3727
3728 #. type: Plain text
3729 #: build/C/man2/perf_event_open.2:815
3730 msgid ""
3731 "This controls the amount of skid.  Skid is how many instructions execute "
3732 "between an event of interest happening and the kernel being able to stop and "
3733 "record the event.  Smaller skid is better and allows more accurate reporting "
3734 "of which events correspond to which instructions, but hardware is often "
3735 "limited with how small this can be."
3736 msgstr ""
3737
3738 #. type: Plain text
3739 #: build/C/man2/perf_event_open.2:817
3740 #, fuzzy
3741 #| msgid "The I<subcmd> value is one of the following:"
3742 msgid "The values of this are the following:"
3743 msgstr "I<subcmd> の値は以下のいずれかである"
3744
3745 #. type: TP
3746 #: build/C/man2/perf_event_open.2:818
3747 #, no-wrap
3748 msgid "0 -"
3749 msgstr ""
3750
3751 #. type: Plain text
3752 #: build/C/man2/perf_event_open.2:822
3753 msgid "B<SAMPLE_IP> can have arbitrary skid"
3754 msgstr ""
3755
3756 #. type: TP
3757 #: build/C/man2/perf_event_open.2:822
3758 #, no-wrap
3759 msgid "1 -"
3760 msgstr ""
3761
3762 #. type: Plain text
3763 #: build/C/man2/perf_event_open.2:826
3764 msgid "B<SAMPLE_IP> must have constant skid"
3765 msgstr ""
3766
3767 #. type: TP
3768 #: build/C/man2/perf_event_open.2:826
3769 #, no-wrap
3770 msgid "2 -"
3771 msgstr ""
3772
3773 #. type: Plain text
3774 #: build/C/man2/perf_event_open.2:830
3775 msgid "B<SAMPLE_IP> requested to have 0 skid"
3776 msgstr ""
3777
3778 #. type: TP
3779 #: build/C/man2/perf_event_open.2:830
3780 #, no-wrap
3781 msgid "3 -"
3782 msgstr ""
3783
3784 #. type: Plain text
3785 #: build/C/man2/perf_event_open.2:836
3786 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3787 msgstr ""
3788
3789 #. type: TP
3790 #: build/C/man2/perf_event_open.2:837
3791 #, fuzzy, no-wrap
3792 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3793 msgid "I<mmap_data> (Since Linux 2.6.36)"
3794 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3795
3796 #. type: Plain text
3797 #: build/C/man2/perf_event_open.2:843
3798 msgid ""
3799 "The counterpart of the I<mmap> field, but enables including data mmap events "
3800 "in the ring-buffer."
3801 msgstr ""
3802
3803 #. type: TP
3804 #: build/C/man2/perf_event_open.2:843
3805 #, fuzzy, no-wrap
3806 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3807 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3808 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3809
3810 #. type: Plain text
3811 #: build/C/man2/perf_event_open.2:851
3812 msgid ""
3813 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3814 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3815 "selected."
3816 msgstr ""
3817
3818 #. type: TP
3819 #: build/C/man2/perf_event_open.2:851
3820 #, no-wrap
3821 msgid "I<exclude_host> (Since Linux 3.2)"
3822 msgstr ""
3823
3824 #. type: Plain text
3825 #: build/C/man2/perf_event_open.2:854
3826 msgid "Do not measure time spent in VM host"
3827 msgstr ""
3828
3829 #. type: TP
3830 #: build/C/man2/perf_event_open.2:854
3831 #, no-wrap
3832 msgid "I<exclude_guest> (Since Linux 3.2)"
3833 msgstr ""
3834
3835 #. type: Plain text
3836 #: build/C/man2/perf_event_open.2:857
3837 msgid "Do not measure time spent in VM guest"
3838 msgstr ""
3839
3840 #. type: TP
3841 #: build/C/man2/perf_event_open.2:857
3842 #, no-wrap
3843 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3844 msgstr ""
3845
3846 #. type: Plain text
3847 #: build/C/man2/perf_event_open.2:860
3848 msgid "Do not include kernel callchains."
3849 msgstr ""
3850
3851 #. type: TP
3852 #: build/C/man2/perf_event_open.2:860
3853 #, no-wrap
3854 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3855 msgstr ""
3856
3857 #. type: Plain text
3858 #: build/C/man2/perf_event_open.2:863
3859 msgid "Do not include user callchains."
3860 msgstr ""
3861
3862 #. type: TP
3863 #: build/C/man2/perf_event_open.2:863
3864 #, no-wrap
3865 msgid "I<wakeup_events>, I<wakeup_watermark>"
3866 msgstr ""
3867
3868 #. type: Plain text
3869 #: build/C/man2/perf_event_open.2:873
3870 msgid ""
3871 "This union sets how many samples (I<wakeup_events>)  or bytes "
3872 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3873 "is used is selected by the I<watermark> bitflag."
3874 msgstr ""
3875
3876 #. type: TP
3877 #: build/C/man2/perf_event_open.2:873
3878 #, fuzzy, no-wrap
3879 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3880 msgid "I<bp_type> (Since Linux 2.6.33)"
3881 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3882
3883 #. type: Plain text
3884 #: build/C/man2/perf_event_open.2:877
3885 msgid "This chooses the breakpoint type.  It is one of:"
3886 msgstr ""
3887
3888 #. type: TP
3889 #: build/C/man2/perf_event_open.2:878
3890 #, no-wrap
3891 msgid "B<HW_BREAKPOINT_EMPTY>"
3892 msgstr ""
3893
3894 #. type: Plain text
3895 #: build/C/man2/perf_event_open.2:881
3896 msgid "no breakpoint"
3897 msgstr ""
3898
3899 #. type: TP
3900 #: build/C/man2/perf_event_open.2:881
3901 #, no-wrap
3902 msgid "B<HW_BREAKPOINT_R>"
3903 msgstr ""
3904
3905 #. type: Plain text
3906 #: build/C/man2/perf_event_open.2:884
3907 msgid "count when we read the memory location"
3908 msgstr ""
3909
3910 #. type: TP
3911 #: build/C/man2/perf_event_open.2:884
3912 #, no-wrap
3913 msgid "B<HW_BREAKPOINT_W>"
3914 msgstr ""
3915
3916 #. type: Plain text
3917 #: build/C/man2/perf_event_open.2:887
3918 msgid "count when we write the memory location"
3919 msgstr ""
3920
3921 #. type: TP
3922 #: build/C/man2/perf_event_open.2:887
3923 #, no-wrap
3924 msgid "B<HW_BREAKPOINT_RW>"
3925 msgstr ""
3926
3927 #. type: Plain text
3928 #: build/C/man2/perf_event_open.2:890
3929 msgid "count when we read or write the memory location"
3930 msgstr ""
3931
3932 #. type: TP
3933 #: build/C/man2/perf_event_open.2:890
3934 #, no-wrap
3935 msgid "B<HW_BREAKPOINT_X>"
3936 msgstr ""
3937
3938 #. type: Plain text
3939 #: build/C/man2/perf_event_open.2:893
3940 msgid "count when we execute code at the memory location"
3941 msgstr ""
3942
3943 #. type: Plain text
3944 #: build/C/man2/perf_event_open.2:902
3945 msgid ""
3946 "The values can be combined via a bitwise or, but the combination of "
3947 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3948 "allowed."
3949 msgstr ""
3950
3951 #. type: TP
3952 #: build/C/man2/perf_event_open.2:903
3953 #, fuzzy, no-wrap
3954 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3955 msgid "I<bp_addr> (Since Linux 2.6.33)"
3956 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3957
3958 #. type: Plain text
3959 #: build/C/man2/perf_event_open.2:910
3960 msgid ""
3961 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3962 "memory address of the instruction of interest; for read and write "
3963 "breakpoints it is the memory address of the memory location of interest."
3964 msgstr ""
3965
3966 #. type: TP
3967 #: build/C/man2/perf_event_open.2:910
3968 #, fuzzy, no-wrap
3969 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3970 msgid "I<config1> (Since Linux 2.6.39)"
3971 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3972
3973 #. type: Plain text
3974 #: build/C/man2/perf_event_open.2:917
3975 msgid ""
3976 "I<config1> is used for setting events that need an extra register or "
3977 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3978 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3979 msgstr ""
3980
3981 #. type: TP
3982 #: build/C/man2/perf_event_open.2:917
3983 #, fuzzy, no-wrap
3984 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3985 msgid "I<bp_len> (Since Linux 2.6.33)"
3986 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3987
3988 #. type: Plain text
3989 #: build/C/man2/perf_event_open.2:931
3990 msgid ""
3991 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3992 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3993 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3994 "an execution breakpoint, set this to I<sizeof(long)>."
3995 msgstr ""
3996
3997 #. type: TP
3998 #: build/C/man2/perf_event_open.2:931
3999 #, fuzzy, no-wrap
4000 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
4001 msgid "I<config2> (Since Linux 2.6.39)"
4002 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
4003
4004 #. type: Plain text
4005 #: build/C/man2/perf_event_open.2:938
4006 msgid "I<config2> is a further extension of the I<config1> field."
4007 msgstr ""
4008
4009 #. type: TP
4010 #: build/C/man2/perf_event_open.2:938
4011 #, no-wrap
4012 msgid "I<branch_sample_type> (Since Linux 3.4)"
4013 msgstr ""
4014
4015 #. type: Plain text
4016 #: build/C/man2/perf_event_open.2:942
4017 msgid ""
4018 "This is used with the CPUs hardware branch sampling, if available.  It can "
4019 "have one of the following values:"
4020 msgstr ""
4021
4022 #. type: TP
4023 #: build/C/man2/perf_event_open.2:943
4024 #, no-wrap
4025 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4026 msgstr ""
4027
4028 #. type: Plain text
4029 #: build/C/man2/perf_event_open.2:946
4030 msgid "Branch target is in user space"
4031 msgstr ""
4032
4033 #. type: TP
4034 #: build/C/man2/perf_event_open.2:946
4035 #, no-wrap
4036 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4037 msgstr ""
4038
4039 #. type: Plain text
4040 #: build/C/man2/perf_event_open.2:949
4041 msgid "Branch target is in kernel space"
4042 msgstr ""
4043
4044 #. type: TP
4045 #: build/C/man2/perf_event_open.2:949
4046 #, no-wrap
4047 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4048 msgstr ""
4049
4050 #. type: Plain text
4051 #: build/C/man2/perf_event_open.2:952
4052 msgid "Branch target is in hypervisor"
4053 msgstr ""
4054
4055 #. type: TP
4056 #: build/C/man2/perf_event_open.2:952
4057 #, no-wrap
4058 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4059 msgstr ""
4060
4061 #. type: Plain text
4062 #: build/C/man2/perf_event_open.2:955
4063 msgid "Any branch type."
4064 msgstr ""
4065
4066 #. type: TP
4067 #: build/C/man2/perf_event_open.2:955
4068 #, no-wrap
4069 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4070 msgstr ""
4071
4072 #. type: Plain text
4073 #: build/C/man2/perf_event_open.2:958
4074 msgid "Any call branch"
4075 msgstr ""
4076
4077 #. type: TP
4078 #: build/C/man2/perf_event_open.2:958
4079 #, no-wrap
4080 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4081 msgstr ""
4082
4083 #. type: Plain text
4084 #: build/C/man2/perf_event_open.2:961
4085 msgid "Any return branch"
4086 msgstr ""
4087
4088 #. type: TP
4089 #: build/C/man2/perf_event_open.2:961
4090 #, no-wrap
4091 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4092 msgstr ""
4093
4094 #. type: Plain text
4095 #: build/C/man2/perf_event_open.2:964
4096 msgid "Indirect calls"
4097 msgstr ""
4098
4099 #. type: TP
4100 #: build/C/man2/perf_event_open.2:964
4101 #, no-wrap
4102 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man2/perf_event_open.2:967
4107 msgid "User, kernel, and hv"
4108 msgstr ""
4109
4110 #. type: TP
4111 #: build/C/man2/perf_event_open.2:968
4112 #, no-wrap
4113 msgid "I<sample_regs_user> (Since Linux 3.7)"
4114 msgstr ""
4115
4116 #.  FIXME: The following reference seems to be not quite right:
4117 #. type: Plain text
4118 #: build/C/man2/perf_event_open.2:974
4119 msgid ""
4120 "This defines the set of user registers to dump on samples.  See I<asm/"
4121 "perf_regs.h>."
4122 msgstr ""
4123
4124 #. type: TP
4125 #: build/C/man2/perf_event_open.2:974
4126 #, no-wrap
4127 msgid "I<sample_stack_user> (Since Linux 3.7)"
4128 msgstr ""
4129
4130 #. type: Plain text
4131 #: build/C/man2/perf_event_open.2:977
4132 msgid "This defines the size of the user stack to dump on samples."
4133 msgstr ""
4134
4135 #. type: SS
4136 #: build/C/man2/perf_event_open.2:977
4137 #, no-wrap
4138 msgid "Reading results"
4139 msgstr ""
4140
4141 #. type: Plain text
4142 #: build/C/man2/perf_event_open.2:987
4143 msgid ""
4144 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4145 "the events can be read from the file descriptor.  The values that are there "
4146 "are specified by the I<read_format> field in the I<attr> structure at open "
4147 "time."
4148 msgstr ""
4149
4150 #. type: Plain text
4151 #: build/C/man2/perf_event_open.2:992
4152 msgid ""
4153 "If you attempt to read into a buffer that is not big enough to hold the data "
4154 "B<ENOSPC> is returned"
4155 msgstr ""
4156
4157 #. type: Plain text
4158 #: build/C/man2/perf_event_open.2:994
4159 msgid "Here is the layout of the data returned by a read:"
4160 msgstr ""
4161
4162 #. type: IP
4163 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4164 #: build/C/man2/ptrace.2:1553 build/C/man2/ptrace.2:1563
4165 #: build/C/man2/ptrace.2:1571 build/C/man2/ptrace.2:1577
4166 #: build/C/man2/ptrace.2:1706
4167 #, no-wrap
4168 msgid "*"
4169 msgstr ""
4170
4171 #. type: Plain text
4172 #: build/C/man2/perf_event_open.2:998
4173 msgid ""
4174 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4175 "at once:"
4176 msgstr ""
4177
4178 #. type: Plain text
4179 #: build/C/man2/perf_event_open.2:1010
4180 #, no-wrap
4181 msgid ""
4182 "struct read_format {\n"
4183 "    u64 nr;            /* The number of events */\n"
4184 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4185 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4186 "    struct\n"
4187 "        u64 value;     /* The value of the event */\n"
4188 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4189 "    } values[nr];\n"
4190 "};\n"
4191 msgstr ""
4192
4193 #. type: Plain text
4194 #: build/C/man2/perf_event_open.2:1018
4195 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4196 msgstr ""
4197
4198 #. type: Plain text
4199 #: build/C/man2/perf_event_open.2:1027
4200 #, no-wrap
4201 msgid ""
4202 "struct read_format {\n"
4203 "    u64 value;         /* The value of the event */\n"
4204 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4205 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4206 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4207 "};\n"
4208 msgstr ""
4209
4210 #. type: Plain text
4211 #: build/C/man2/perf_event_open.2:1031
4212 msgid "The values read are as follows:"
4213 msgstr ""
4214
4215 #. type: TP
4216 #: build/C/man2/perf_event_open.2:1031
4217 #, no-wrap
4218 msgid "I<nr>"
4219 msgstr ""
4220
4221 #. type: Plain text
4222 #: build/C/man2/perf_event_open.2:1037
4223 msgid ""
4224 "The number of events in this file descriptor.  Only available if "
4225 "B<PERF_FORMAT_GROUP> was specified."
4226 msgstr ""
4227
4228 #. type: TP
4229 #: build/C/man2/perf_event_open.2:1037
4230 #, no-wrap
4231 msgid "I<time_enabled>, I<time_running>"
4232 msgstr ""
4233
4234 #. type: Plain text
4235 #: build/C/man2/perf_event_open.2:1049
4236 msgid ""
4237 "Total time the event was enabled and running.  Normally these are the same.  "
4238 "If more events are started than available counter slots on the PMU, then "
4239 "multiplexing happens and events run only part of the time.  In that case the "
4240 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4241 "value for the count."
4242 msgstr ""
4243
4244 #. type: TP
4245 #: build/C/man2/perf_event_open.2:1049
4246 #, no-wrap
4247 msgid "I<value>"
4248 msgstr ""
4249
4250 #. type: Plain text
4251 #: build/C/man2/perf_event_open.2:1052
4252 msgid "An unsigned 64-bit value containing the counter result."
4253 msgstr ""
4254
4255 #. type: TP
4256 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4257 #: build/C/man2/perf_event_open.2:1451
4258 #, no-wrap
4259 msgid "I<id>"
4260 msgstr ""
4261
4262 #. type: Plain text
4263 #: build/C/man2/perf_event_open.2:1058
4264 msgid ""
4265 "A globally unique value for this particular event, only there if "
4266 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4267 msgstr ""
4268
4269 #. type: SS
4270 #: build/C/man2/perf_event_open.2:1058
4271 #, no-wrap
4272 msgid "MMAP layout"
4273 msgstr ""
4274
4275 #. type: Plain text
4276 #: build/C/man2/perf_event_open.2:1068
4277 msgid ""
4278 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4279 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4280 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4281 msgstr ""
4282
4283 #. type: Plain text
4284 #: build/C/man2/perf_event_open.2:1074
4285 msgid ""
4286 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4287 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4288 "such as where the ring-buffer head is."
4289 msgstr ""
4290
4291 #. type: Plain text
4292 #: build/C/man2/perf_event_open.2:1077
4293 msgid ""
4294 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4295 "ring buffer when sampling even if you do not plan to access it."
4296 msgstr ""
4297
4298 #. type: Plain text
4299 #: build/C/man2/perf_event_open.2:1079
4300 msgid "The structure of the first metadata mmap page is as follows:"
4301 msgstr ""
4302
4303 #. type: Plain text
4304 #: build/C/man2/perf_event_open.2:1103
4305 #, no-wrap
4306 msgid ""
4307 "struct perf_event_mmap_page {\n"
4308 "    __u32 version;          /* version number of this structure */\n"
4309 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4310 "    __u32 lock;             /* seqlock for synchronization */\n"
4311 "    __u32 index;            /* hardware counter identifier */\n"
4312 "    __s64 offset;           /* add to hardware counter value */\n"
4313 "    __u64 time_enabled;     /* time event active */\n"
4314 "    __u64 time_running;     /* time event on CPU */\n"
4315 "    union {\n"
4316 "        __u64   capabilities;\n"
4317 "        __u64   cap_usr_time  : 1,\n"
4318 "                cap_usr_rdpmc : 1,\n"
4319 "    };\n"
4320 "    __u16   pmc_width;\n"
4321 "    __u16   time_shift;\n"
4322 "    __u32   time_mult;\n"
4323 "    __u64   time_offset;\n"
4324 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4325 "    __u64   data_head;         /* head in the data section */\n"
4326 "    __u64   data_tail;         /* user-space written tail */\n"
4327 "}\n"
4328 msgstr ""
4329
4330 #. type: Plain text
4331 #: build/C/man2/perf_event_open.2:1109
4332 msgid ""
4333 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4334 "in more detail:"
4335 msgstr ""
4336
4337 #. type: TP
4338 #: build/C/man2/perf_event_open.2:1109
4339 #, no-wrap
4340 msgid "I<version>"
4341 msgstr ""
4342
4343 #. type: Plain text
4344 #: build/C/man2/perf_event_open.2:1112
4345 msgid "Version number of this structure."
4346 msgstr ""
4347
4348 #. type: TP
4349 #: build/C/man2/perf_event_open.2:1112
4350 #, no-wrap
4351 msgid "I<compat_version>"
4352 msgstr ""
4353
4354 #. type: Plain text
4355 #: build/C/man2/perf_event_open.2:1115
4356 msgid "The lowest version this is compatible with."
4357 msgstr ""
4358
4359 #. type: TP
4360 #: build/C/man2/perf_event_open.2:1115
4361 #, no-wrap
4362 msgid "I<lock>"
4363 msgstr ""
4364
4365 #. type: Plain text
4366 #: build/C/man2/perf_event_open.2:1118
4367 msgid "A seqlock for synchronization."
4368 msgstr ""
4369
4370 #. type: TP
4371 #: build/C/man2/perf_event_open.2:1118
4372 #, no-wrap
4373 msgid "I<index>"
4374 msgstr ""
4375
4376 #. type: Plain text
4377 #: build/C/man2/perf_event_open.2:1121
4378 msgid "A unique hardware counter identifier."
4379 msgstr ""
4380
4381 #. type: TP
4382 #: build/C/man2/perf_event_open.2:1121
4383 #, no-wrap
4384 msgid "I<offset>"
4385 msgstr ""
4386
4387 #.  FIXME clarify
4388 #. type: Plain text
4389 #: build/C/man2/perf_event_open.2:1125
4390 msgid "Add this to hardware counter value??"
4391 msgstr ""
4392
4393 #. type: TP
4394 #: build/C/man2/perf_event_open.2:1125
4395 #, no-wrap
4396 msgid "I<time_enabled>"
4397 msgstr ""
4398
4399 #. type: Plain text
4400 #: build/C/man2/perf_event_open.2:1128
4401 msgid "Time the event was active."
4402 msgstr ""
4403
4404 #. type: TP
4405 #: build/C/man2/perf_event_open.2:1128
4406 #, no-wrap
4407 msgid "I<time_running>"
4408 msgstr ""
4409
4410 #. type: Plain text
4411 #: build/C/man2/perf_event_open.2:1131
4412 msgid "Time the event was running."
4413 msgstr ""
4414
4415 #. type: TP
4416 #: build/C/man2/perf_event_open.2:1131
4417 #, no-wrap
4418 msgid "I<cap_usr_time>"
4419 msgstr ""
4420
4421 #. type: Plain text
4422 #: build/C/man2/perf_event_open.2:1134
4423 msgid "User time capability"
4424 msgstr ""
4425
4426 #. type: TP
4427 #: build/C/man2/perf_event_open.2:1134
4428 #, no-wrap
4429 msgid "I<cap_usr_rdpmc>"
4430 msgstr ""
4431
4432 #. type: Plain text
4433 #: build/C/man2/perf_event_open.2:1139
4434 msgid ""
4435 "If the hardware supports user-space read of performance counters without "
4436 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4437 "can be used to do a read:"
4438 msgstr ""
4439
4440 #. type: Plain text
4441 #: build/C/man2/perf_event_open.2:1146
4442 #, no-wrap
4443 msgid ""
4444 "u32 seq, time_mult, time_shift, idx, width;\n"
4445 "u64 count, enabled, running;\n"
4446 "u64 cyc, time_offset;\n"
4447 "s64 pmc = 0;\n"
4448 msgstr ""
4449
4450 #. type: Plain text
4451 #: build/C/man2/perf_event_open.2:1152
4452 #, no-wrap
4453 msgid ""
4454 "do {\n"
4455 "    seq = pc-E<gt>lock;\n"
4456 "    barrier();\n"
4457 "    enabled = pc-E<gt>time_enabled;\n"
4458 "    running = pc-E<gt>time_running;\n"
4459 msgstr ""
4460
4461 #. type: Plain text
4462 #: build/C/man2/perf_event_open.2:1159
4463 #, no-wrap
4464 msgid ""
4465 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4466 "        cyc = rdtsc();\n"
4467 "        time_offset = pc-E<gt>time_offset;\n"
4468 "        time_mult   = pc-E<gt>time_mult;\n"
4469 "        time_shift  = pc-E<gt>time_shift;\n"
4470 "    }\n"
4471 msgstr ""
4472
4473 #. type: Plain text
4474 #: build/C/man2/perf_event_open.2:1162
4475 #, no-wrap
4476 msgid ""
4477 "    idx = pc-E<gt>index;\n"
4478 "    count = pc-E<gt>offset;\n"
4479 msgstr ""
4480
4481 #. type: Plain text
4482 #: build/C/man2/perf_event_open.2:1167
4483 #, no-wrap
4484 msgid ""
4485 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4486 "        width = pc-E<gt>pmc_width;\n"
4487 "        pmc = rdpmc(idx - 1);\n"
4488 "    }\n"
4489 msgstr ""
4490
4491 #. type: Plain text
4492 #: build/C/man2/perf_event_open.2:1170
4493 #, no-wrap
4494 msgid ""
4495 "    barrier();\n"
4496 "} while (pc-E<gt>lock != seq);\n"
4497 msgstr ""
4498
4499 #. type: TP
4500 #: build/C/man2/perf_event_open.2:1172
4501 #, no-wrap
4502 msgid "I<pmc_width>"
4503 msgstr ""
4504
4505 #. type: Plain text
4506 #: build/C/man2/perf_event_open.2:1179
4507 msgid ""
4508 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4509 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4510 "the result like:"
4511 msgstr ""
4512
4513 #. type: Plain text
4514 #: build/C/man2/perf_event_open.2:1185
4515 #, no-wrap
4516 msgid ""
4517 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4518 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4519 "count += pmc;\n"
4520 msgstr ""
4521
4522 #. type: TP
4523 #: build/C/man2/perf_event_open.2:1187
4524 #, no-wrap
4525 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4526 msgstr ""
4527
4528 #. type: Plain text
4529 #: build/C/man2/perf_event_open.2:1194
4530 msgid ""
4531 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4532 "time_enabled (in nanoseconds) using rdtsc or similar."
4533 msgstr ""
4534
4535 #. type: Plain text
4536 #: build/C/man2/perf_event_open.2:1202
4537 #, no-wrap
4538 msgid ""
4539 "    u64 quot, rem;\n"
4540 "    u64 delta;\n"
4541 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4542 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4543 "    delta = time_offset + quot * time_mult +\n"
4544 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4545 msgstr ""
4546
4547 #. type: Plain text
4548 #: build/C/man2/perf_event_open.2:1214
4549 msgid ""
4550 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4551 "the seqcount loop described above.  This delta can then be added to enabled "
4552 "and possible running (if idx), improving the scaling:"
4553 msgstr ""
4554
4555 #. type: Plain text
4556 #: build/C/man2/perf_event_open.2:1222
4557 #, no-wrap
4558 msgid ""
4559 "    enabled += delta;\n"
4560 "    if (idx)\n"
4561 "        running += delta;\n"
4562 "    quot = count / running;\n"
4563 "    rem  = count % running;\n"
4564 "    count = quot * enabled + (rem * enabled) / running;\n"
4565 msgstr ""
4566
4567 #. type: TP
4568 #: build/C/man2/perf_event_open.2:1223
4569 #, no-wrap
4570 msgid "I<data_head>"
4571 msgstr ""
4572
4573 #. type: Plain text
4574 #: build/C/man2/perf_event_open.2:1229
4575 msgid ""
4576 "This points to the head of the data section.  The value continuously "
4577 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4578 "size of the mmap buffer before accessing the samples."
4579 msgstr ""
4580
4581 #. type: Plain text
4582 #: build/C/man2/perf_event_open.2:1232
4583 msgid ""
4584 "On SMP-capable platforms, after reading the data_head value, user space "
4585 "should issue an rmb()."
4586 msgstr ""
4587
4588 #. type: TP
4589 #: build/C/man2/perf_event_open.2:1232
4590 #, no-wrap
4591 msgid "I<data_tail;>"
4592 msgstr ""
4593
4594 #. type: Plain text
4595 #: build/C/man2/perf_event_open.2:1240
4596 msgid ""
4597 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4598 "by user space to reflect the last read data.  In this case the kernel will "
4599 "not over-write unread data."
4600 msgstr ""
4601
4602 #. type: Plain text
4603 #: build/C/man2/perf_event_open.2:1242
4604 msgid "The following 2^n ring-buffer pages have the layout described below."
4605 msgstr ""
4606
4607 #. type: Plain text
4608 #: build/C/man2/perf_event_open.2:1256
4609 msgid ""
4610 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4611 "the sample_type selected fields related to where/when (identity)  an event "
4612 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4613 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4614 "I<perf_event_header> and the fields already present for the existing fields, "
4615 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4616 "supported by older perf tools, with these new optional fields being ignored."
4617 msgstr ""
4618
4619 #. type: Plain text
4620 #: build/C/man2/perf_event_open.2:1258
4621 msgid "The mmap values start with a header:"
4622 msgstr ""
4623
4624 #. type: Plain text
4625 #: build/C/man2/perf_event_open.2:1266
4626 #, no-wrap
4627 msgid ""
4628 "struct perf_event_header {\n"
4629 "    __u32   type;\n"
4630 "    __u16   misc;\n"
4631 "    __u16   size;\n"
4632 "};\n"
4633 msgstr ""
4634
4635 #. type: Plain text
4636 #: build/C/man2/perf_event_open.2:1272
4637 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4638 msgstr ""
4639
4640 #. type: Plain text
4641 #: build/C/man2/perf_event_open.2:1281
4642 msgid ""
4643 "The I<type> value is one of the below.  The values in the corresponding "
4644 "record (that follows the header)  depend on the I<type> selected as shown."
4645 msgstr ""
4646
4647 #. type: TP
4648 #: build/C/man2/perf_event_open.2:1282
4649 #, no-wrap
4650 msgid "B<PERF_RECORD_MMAP>"
4651 msgstr ""
4652
4653 #. type: Plain text
4654 #: build/C/man2/perf_event_open.2:1289
4655 msgid ""
4656 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4657 "user-space IPs to code.  They have the following structure:"
4658 msgstr ""
4659
4660 #. type: Plain text
4661 #: build/C/man2/perf_event_open.2:1300
4662 #, no-wrap
4663 msgid ""
4664 "struct {\n"
4665 "    struct perf_event_header header;\n"
4666 "    u32    pid, tid;\n"
4667 "    u64    addr;\n"
4668 "    u64    len;\n"
4669 "    u64    pgoff;\n"
4670 "    char   filename[];\n"
4671 "};\n"
4672 msgstr ""
4673
4674 #. type: TP
4675 #: build/C/man2/perf_event_open.2:1302
4676 #, no-wrap
4677 msgid "B<PERF_RECORD_LOST>"
4678 msgstr ""
4679
4680 #. type: Plain text
4681 #: build/C/man2/perf_event_open.2:1305
4682 msgid "This record indicates when events are lost."
4683 msgstr ""
4684
4685 #. type: Plain text
4686 #: build/C/man2/perf_event_open.2:1313
4687 #, no-wrap
4688 msgid ""
4689 "struct {\n"
4690 "    struct perf_event_header header;\n"
4691 "    u64 id;\n"
4692 "    u64 lost;\n"
4693 "};\n"
4694 msgstr ""
4695
4696 #. type: Plain text
4697 #: build/C/man2/perf_event_open.2:1319
4698 msgid "is the unique event ID for the samples that were lost."
4699 msgstr ""
4700
4701 #. type: TP
4702 #: build/C/man2/perf_event_open.2:1319
4703 #, no-wrap
4704 msgid "I<lost>"
4705 msgstr ""
4706
4707 #. type: Plain text
4708 #: build/C/man2/perf_event_open.2:1322
4709 #, fuzzy
4710 #| msgid "Returns the number of processes woken up."
4711 msgid "is the number of events that were lost."
4712 msgstr "wake したプロセスの数を返す。"
4713
4714 #. type: TP
4715 #: build/C/man2/perf_event_open.2:1323
4716 #, no-wrap
4717 msgid "B<PERF_RECORD_COMM>"
4718 msgstr ""
4719
4720 #. type: Plain text
4721 #: build/C/man2/perf_event_open.2:1326
4722 msgid "This record indicates a change in the process name."
4723 msgstr ""
4724
4725 #. type: Plain text
4726 #: build/C/man2/perf_event_open.2:1334
4727 #, no-wrap
4728 msgid ""
4729 "struct {\n"
4730 "    struct perf_event_header header;\n"
4731 "    u32 pid, tid;\n"
4732 "    char comm[];\n"
4733 "};\n"
4734 msgstr ""
4735
4736 #. type: TP
4737 #: build/C/man2/perf_event_open.2:1336
4738 #, fuzzy, no-wrap
4739 #| msgid "B<PTRACE_EVENT_EXIT>"
4740 msgid "B<PERF_RECORD_EXIT>"
4741 msgstr "B<PTRACE_EVENT_EXIT>"
4742
4743 #. type: Plain text
4744 #: build/C/man2/perf_event_open.2:1339
4745 msgid "This record indicates a process exit event."
4746 msgstr ""
4747
4748 #. type: Plain text
4749 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4750 #, no-wrap
4751 msgid ""
4752 "struct {\n"
4753 "    struct perf_event_header header;\n"
4754 "    u32 pid, ppid;\n"
4755 "    u32 tid, ptid;\n"
4756 "    u64 time;\n"
4757 "};\n"
4758 msgstr ""
4759
4760 #. type: TP
4761 #: build/C/man2/perf_event_open.2:1350
4762 #, no-wrap
4763 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4764 msgstr ""
4765
4766 #. type: Plain text
4767 #: build/C/man2/perf_event_open.2:1353
4768 msgid "This record indicates a throttle/unthrottle event."
4769 msgstr ""
4770
4771 #. type: Plain text
4772 #: build/C/man2/perf_event_open.2:1362
4773 #, no-wrap
4774 msgid ""
4775 "struct {\n"
4776 "    struct perf_event_header header;\n"
4777 "    u64 time;\n"
4778 "    u64 id;\n"
4779 "    u64 stream_id;\n"
4780 "};\n"
4781 msgstr ""
4782
4783 #. type: TP
4784 #: build/C/man2/perf_event_open.2:1364
4785 #, fuzzy, no-wrap
4786 #| msgid "B<PTRACE_EVENT_FORK>"
4787 msgid "B<PERF_RECORD_FORK>"
4788 msgstr "B<PTRACE_EVENT_FORK>"
4789
4790 #. type: Plain text
4791 #: build/C/man2/perf_event_open.2:1367
4792 msgid "This record indicates a fork event."
4793 msgstr ""
4794
4795 #. type: TP
4796 #: build/C/man2/perf_event_open.2:1378
4797 #, no-wrap
4798 msgid "B<PERF_RECORD_READ>"
4799 msgstr ""
4800
4801 #. type: Plain text
4802 #: build/C/man2/perf_event_open.2:1381
4803 msgid "This record indicates a read event."
4804 msgstr ""
4805
4806 #. type: Plain text
4807 #: build/C/man2/perf_event_open.2:1389
4808 #, no-wrap
4809 msgid ""
4810 "struct {\n"
4811 "    struct perf_event_header header;\n"
4812 "    u32 pid, tid;\n"
4813 "    struct read_format values;\n"
4814 "};\n"
4815 msgstr ""
4816
4817 #. type: TP
4818 #: build/C/man2/perf_event_open.2:1391
4819 #, no-wrap
4820 msgid "B<PERF_RECORD_SAMPLE>"
4821 msgstr ""
4822
4823 #. type: Plain text
4824 #: build/C/man2/perf_event_open.2:1394
4825 msgid "This record indicates a sample."
4826 msgstr ""
4827
4828 #. type: Plain text
4829 #: build/C/man2/perf_event_open.2:1422
4830 #, no-wrap
4831 msgid ""
4832 "struct {\n"
4833 "    struct perf_event_header header;\n"
4834 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4835 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4836 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4837 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4838 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4839 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4840 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4841 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4842 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4843 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4844 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4845 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4846 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4847 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4848 "    struct perf_branch_entry lbr[bnr];\n"
4849 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4850 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4851 "    u64   regs[weight(mask)];\n"
4852 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4853 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4854 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4855 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4856 "};\n"
4857 msgstr ""
4858
4859 #. type: TP
4860 #: build/C/man2/perf_event_open.2:1424
4861 #, no-wrap
4862 msgid "I<ip>"
4863 msgstr ""
4864
4865 #. type: Plain text
4866 #: build/C/man2/perf_event_open.2:1430
4867 msgid ""
4868 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4869 "included."
4870 msgstr ""
4871
4872 #. type: TP
4873 #: build/C/man2/perf_event_open.2:1430
4874 #, no-wrap
4875 msgid "I<pid>, I<tid>"
4876 msgstr ""
4877
4878 #. type: Plain text
4879 #: build/C/man2/perf_event_open.2:1436
4880 msgid ""
4881 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4882 "ID are included."
4883 msgstr ""
4884
4885 #. type: TP
4886 #: build/C/man2/perf_event_open.2:1436
4887 #, no-wrap
4888 msgid "I<time>"
4889 msgstr ""
4890
4891 #. type: Plain text
4892 #: build/C/man2/perf_event_open.2:1444
4893 msgid ""
4894 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4895 "This is obtained via local_clock() which is a hardware timestamp if "
4896 "available and the jiffies value if not."
4897 msgstr ""
4898
4899 #. type: TP
4900 #: build/C/man2/perf_event_open.2:1444
4901 #, no-wrap
4902 msgid "I<addr>"
4903 msgstr ""
4904
4905 #. type: Plain text
4906 #: build/C/man2/perf_event_open.2:1451
4907 msgid ""
4908 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4909 "is usually the address of a tracepoint, breakpoint, or software event; "
4910 "otherwise the value is 0."
4911 msgstr ""
4912
4913 #. type: Plain text
4914 #: build/C/man2/perf_event_open.2:1459
4915 msgid ""
4916 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4917 "event is a member of an event group, the group leader ID is returned.  This "
4918 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4919 msgstr ""
4920
4921 #. type: TP
4922 #: build/C/man2/perf_event_open.2:1459
4923 #, no-wrap
4924 msgid "I<stream_id>"
4925 msgstr ""
4926
4927 #. type: Plain text
4928 #: build/C/man2/perf_event_open.2:1469
4929 msgid ""
4930 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4931 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4932 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4933 msgstr ""
4934
4935 #. type: TP
4936 #: build/C/man2/perf_event_open.2:1469
4937 #, no-wrap
4938 msgid "I<cpu>, I<res>"
4939 msgstr ""
4940
4941 #. type: Plain text
4942 #: build/C/man2/perf_event_open.2:1476
4943 msgid ""
4944 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4945 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4946 msgstr ""
4947
4948 #. type: TP
4949 #: build/C/man2/perf_event_open.2:1476
4950 #, no-wrap
4951 msgid "I<period>"
4952 msgstr ""
4953
4954 #. type: Plain text
4955 #: build/C/man2/perf_event_open.2:1482
4956 msgid ""
4957 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4958 "sampling period is written."
4959 msgstr ""
4960
4961 #. type: TP
4962 #: build/C/man2/perf_event_open.2:1482
4963 #, no-wrap
4964 msgid "I<v>"
4965 msgstr ""
4966
4967 #. type: Plain text
4968 #: build/C/man2/perf_event_open.2:1493
4969 msgid ""
4970 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4971 "included which has values for all events in the event group.  The values "
4972 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4973 "time."
4974 msgstr ""
4975
4976 #. type: TP
4977 #: build/C/man2/perf_event_open.2:1493
4978 #, no-wrap
4979 msgid "I<nr>, I<ips[nr]>"
4980 msgstr ""
4981
4982 #. type: Plain text
4983 #: build/C/man2/perf_event_open.2:1501
4984 msgid ""
4985 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4986 "which indicates how many following 64-bit instruction pointers will follow.  "
4987 "This is the current callchain."
4988 msgstr ""
4989
4990 #. type: TP
4991 #: build/C/man2/perf_event_open.2:1501
4992 #, no-wrap
4993 msgid "I<size>, I<data[size]>"
4994 msgstr ""
4995
4996 #. type: Plain text
4997 #: build/C/man2/perf_event_open.2:1508
4998 msgid ""
4999 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
5000 "included followed by an array of 8-bit values of length size.  The values "
5001 "are padded with 0 to have 64-bit alignment."
5002 msgstr ""
5003
5004 #. type: Plain text
5005 #: build/C/man2/perf_event_open.2:1513
5006 msgid ""
5007 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
5008 "make any promises with respect to the stability of its content, it may vary "
5009 "depending on event, hardware, and kernel version."
5010 msgstr ""
5011
5012 #. type: TP
5013 #: build/C/man2/perf_event_open.2:1513
5014 #, no-wrap
5015 msgid "I<bnr>, I<lbr[bnr]>"
5016 msgstr ""
5017
5018 #. type: Plain text
5019 #: build/C/man2/perf_event_open.2:1524
5020 msgid ""
5021 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5022 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5023 "structures.  These structures have from, to, and flags values indicating the "
5024 "from and to addresses from the branches on the callstack."
5025 msgstr ""
5026
5027 #. type: TP
5028 #: build/C/man2/perf_event_open.2:1524
5029 #, no-wrap
5030 msgid "I<abi>, I<regs[weight(mask)]>"
5031 msgstr ""
5032
5033 #. type: Plain text
5034 #: build/C/man2/perf_event_open.2:1530
5035 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
5036 msgstr ""
5037
5038 #. type: Plain text
5039 #: build/C/man2/perf_event_open.2:1536
5040 msgid ""
5041 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5042 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5043 msgstr ""
5044
5045 #. type: TP
5046 #: build/C/man2/perf_event_open.2:1536
5047 #, no-wrap
5048 msgid "I<size>, I<data[size]>, I<dyn_size>"
5049 msgstr ""
5050
5051 #. type: Plain text
5052 #: build/C/man2/perf_event_open.2:1542
5053 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
5054 msgstr ""
5055
5056 #. type: TP
5057 #: build/C/man2/perf_event_open.2:1544
5058 #, no-wrap
5059 msgid "I<misc>"
5060 msgstr ""
5061
5062 #. type: Plain text
5063 #: build/C/man2/perf_event_open.2:1549
5064 msgid "The I<misc> field contains additional information about the sample."
5065 msgstr ""
5066
5067 #. type: Plain text
5068 #: build/C/man2/perf_event_open.2:1554
5069 msgid ""
5070 "The CPU mode can be determined from this value by masking with "
5071 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5072 "these are not bit masks, only one can be set at a time):"
5073 msgstr ""
5074
5075 #. type: TP
5076 #: build/C/man2/perf_event_open.2:1555
5077 #, no-wrap
5078 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5079 msgstr ""
5080
5081 #. type: Plain text
5082 #: build/C/man2/perf_event_open.2:1558
5083 msgid "Unknown CPU mode."
5084 msgstr ""
5085
5086 #. type: TP
5087 #: build/C/man2/perf_event_open.2:1558
5088 #, no-wrap
5089 msgid "B<PERF_RECORD_MISC_KERNEL>"
5090 msgstr ""
5091
5092 #. type: Plain text
5093 #: build/C/man2/perf_event_open.2:1561
5094 msgid "Sample happened in the kernel."
5095 msgstr ""
5096
5097 #. type: TP
5098 #: build/C/man2/perf_event_open.2:1561
5099 #, no-wrap
5100 msgid "B<PERF_RECORD_MISC_USER>"
5101 msgstr ""
5102
5103 #. type: Plain text
5104 #: build/C/man2/perf_event_open.2:1564
5105 msgid "Sample happened in user code."
5106 msgstr ""
5107
5108 #. type: TP
5109 #: build/C/man2/perf_event_open.2:1564
5110 #, no-wrap
5111 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5112 msgstr ""
5113
5114 #. type: Plain text
5115 #: build/C/man2/perf_event_open.2:1567
5116 msgid "Sample happened in the hypervisor."
5117 msgstr ""
5118
5119 #. type: TP
5120 #: build/C/man2/perf_event_open.2:1567
5121 #, no-wrap
5122 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5123 msgstr ""
5124
5125 #. type: Plain text
5126 #: build/C/man2/perf_event_open.2:1570
5127 msgid "Sample happened in the guest kernel."
5128 msgstr ""
5129
5130 #. type: TP
5131 #: build/C/man2/perf_event_open.2:1570
5132 #, no-wrap
5133 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5134 msgstr ""
5135
5136 #. type: Plain text
5137 #: build/C/man2/perf_event_open.2:1573
5138 msgid "Sample happened in guest user code."
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man2/perf_event_open.2:1576
5143 msgid "In addition, one of the following bits can be set:"
5144 msgstr ""
5145
5146 #. type: TP
5147 #: build/C/man2/perf_event_open.2:1577
5148 #, no-wrap
5149 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5150 msgstr ""
5151
5152 #. type: Plain text
5153 #: build/C/man2/perf_event_open.2:1585
5154 msgid ""
5155 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5156 "instruction that triggered the event.  See also I<perf_event_attr."
5157 "precise_ip>."
5158 msgstr ""
5159
5160 #. type: TP
5161 #: build/C/man2/perf_event_open.2:1585
5162 #, no-wrap
5163 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5164 msgstr ""
5165
5166 #. type: Plain text
5167 #: build/C/man2/perf_event_open.2:1588
5168 msgid "This indicates there is extended data available (currently not used)."
5169 msgstr ""
5170
5171 #. type: Plain text
5172 #: build/C/man2/perf_event_open.2:1591
5173 msgid "This indicates the size of the record."
5174 msgstr ""
5175
5176 #. type: SS
5177 #: build/C/man2/perf_event_open.2:1592
5178 #, no-wrap
5179 msgid "Signal overflow"
5180 msgstr ""
5181
5182 #. type: Plain text
5183 #: build/C/man2/perf_event_open.2:1601
5184 msgid ""
5185 "Events can be set to deliver a signal when a threshold is crossed.  The "
5186 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5187 "and B<fcntl>(2), system calls."
5188 msgstr ""
5189
5190 #. type: Plain text
5191 #: build/C/man2/perf_event_open.2:1605
5192 msgid ""
5193 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5194 "non-zero value)."
5195 msgstr ""
5196
5197 #. type: Plain text
5198 #: build/C/man2/perf_event_open.2:1607
5199 msgid "There are two ways to generate signals."
5200 msgstr ""
5201
5202 #. type: Plain text
5203 #: build/C/man2/perf_event_open.2:1617
5204 msgid ""
5205 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5206 "will generate a signal if a certain number of samples or bytes have been "
5207 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5208 "is sent."
5209 msgstr ""
5210
5211 #. type: Plain text
5212 #: build/C/man2/perf_event_open.2:1629
5213 msgid ""
5214 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5215 "adds to a counter that decrements each time the event overflows.  When non-"
5216 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5217 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5218 msgstr ""
5219
5220 #.  FIXME(Vince) : Find out when this was introduced
5221 #. type: Plain text
5222 #: build/C/man2/perf_event_open.2:1635
5223 msgid ""
5224 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5225 "for every overflow, even if I<wakeup_events> is not set."
5226 msgstr ""
5227
5228 #. type: SS
5229 #: build/C/man2/perf_event_open.2:1635
5230 #, no-wrap
5231 msgid "rdpmc instruction"
5232 msgstr ""
5233
5234 #. type: Plain text
5235 #: build/C/man2/perf_event_open.2:1642
5236 msgid ""
5237 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5238 "low-latency reads without having to enter the kernel.  Note that using "
5239 "I<rdpmc> is not necessarily faster than other methods for reading event "
5240 "values."
5241 msgstr ""
5242
5243 #. type: Plain text
5244 #: build/C/man2/perf_event_open.2:1647
5245 msgid ""
5246 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5247 "page; documentation on how to calculate event values can be found in that "
5248 "section."
5249 msgstr ""
5250
5251 #. type: SS
5252 #: build/C/man2/perf_event_open.2:1647
5253 #, no-wrap
5254 msgid "perf_event ioctl calls"
5255 msgstr ""
5256
5257 #. type: Plain text
5258 #: build/C/man2/perf_event_open.2:1652
5259 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5260 msgstr ""
5261
5262 #. type: TP
5263 #: build/C/man2/perf_event_open.2:1652
5264 #, fuzzy, no-wrap
5265 #| msgid "B<PTRACE_EVENT_CLONE>"
5266 msgid "B<PERF_EVENT_IOC_ENABLE>"
5267 msgstr "B<PTRACE_EVENT_CLONE>"
5268
5269 #. type: Plain text
5270 #: build/C/man2/perf_event_open.2:1656
5271 msgid ""
5272 "Enables the individual event or event group specified by the file descriptor "
5273 "argument."
5274 msgstr ""
5275
5276 #. type: Plain text
5277 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5278 #: build/C/man2/perf_event_open.2:1699
5279 msgid "The ioctl argument is ignored."
5280 msgstr ""
5281
5282 #. type: TP
5283 #: build/C/man2/perf_event_open.2:1658
5284 #, fuzzy, no-wrap
5285 #| msgid "B<PTRACE_EVENT_CLONE>"
5286 msgid "B<PERF_EVENT_IOC_DISABLE>"
5287 msgstr "B<PTRACE_EVENT_CLONE>"
5288
5289 #. type: Plain text
5290 #: build/C/man2/perf_event_open.2:1662
5291 msgid ""
5292 "Disables the individual counter or event group specified by the file "
5293 "descriptor argument."
5294 msgstr ""
5295
5296 #. type: Plain text
5297 #: build/C/man2/perf_event_open.2:1669
5298 msgid ""
5299 "Enabling or disabling the leader of a group enables or disables the entire "
5300 "group; that is, while the group leader is disabled, none of the counters in "
5301 "the group will count.  Enabling or disabling a member of a group other than "
5302 "the leader affects only that counter; disabling a non-leader stops that "
5303 "counter from counting but doesn't affect any other counter."
5304 msgstr ""
5305
5306 #. type: TP
5307 #: build/C/man2/perf_event_open.2:1671
5308 #, fuzzy, no-wrap
5309 #| msgid "B<PTRACE_EVENT_FORK>"
5310 msgid "B<PERF_EVENT_IOC_REFRESH>"
5311 msgstr "B<PTRACE_EVENT_FORK>"
5312
5313 #. type: Plain text
5314 #: build/C/man2/perf_event_open.2:1685
5315 msgid ""
5316 "Non-inherited overflow counters can use this to enable a counter for a "
5317 "number of overflows specified by the argument, after which it is disabled.  "
5318 "Subsequent calls of this ioctl add the argument value to the current count.  "
5319 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5320 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5321 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5322 msgstr ""
5323
5324 #. type: TP
5325 #: build/C/man2/perf_event_open.2:1685
5326 #, fuzzy, no-wrap
5327 #| msgid "B<PTRACE_EVENT_FORK>"
5328 msgid "B<PERF_EVENT_IOC_RESET>"
5329 msgstr "B<PTRACE_EVENT_FORK>"
5330
5331 #. type: Plain text
5332 #: build/C/man2/perf_event_open.2:1697
5333 msgid ""
5334 "Reset the event count specified by the file descriptor argumentto zero.  "
5335 "This resets only the counts; there is no way to reset the multiplexing "
5336 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5337 "only the leader is reset (child events are not)."
5338 msgstr ""
5339
5340 #. type: TP
5341 #: build/C/man2/perf_event_open.2:1699
5342 #, fuzzy, no-wrap
5343 #| msgid "B<PTRACE_EVENT_FORK>"
5344 msgid "B<PERF_EVENT_IOC_PERIOD>"
5345 msgstr "B<PTRACE_EVENT_FORK>"
5346
5347 #. type: Plain text
5348 #: build/C/man2/perf_event_open.2:1703
5349 msgid ""
5350 "IOC_PERIOD is the command to update the period; it does not update the "
5351 "current period but instead defers until next."
5352 msgstr ""
5353
5354 #. type: Plain text
5355 #: build/C/man2/perf_event_open.2:1706
5356 msgid ""
5357 "The argument is a pointer to a 64-bit value containing the desired new "
5358 "period."
5359 msgstr ""
5360
5361 #. type: TP
5362 #: build/C/man2/perf_event_open.2:1706
5363 #, no-wrap
5364 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5365 msgstr ""
5366
5367 #. type: Plain text
5368 #: build/C/man2/perf_event_open.2:1711
5369 msgid ""
5370 "This tells the kernel to report event notifications to the specified file "
5371 "descriptor rather than the default one.  The file descriptors must all be on "
5372 "the same CPU."
5373 msgstr ""
5374
5375 #. type: Plain text
5376 #: build/C/man2/perf_event_open.2:1714
5377 msgid ""
5378 "The argument specifies the desired file descriptor, or -1 if output should "
5379 "be ignored."
5380 msgstr ""
5381
5382 #. type: TP
5383 #: build/C/man2/perf_event_open.2:1714
5384 #, fuzzy, no-wrap
5385 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5386 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5387 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5388
5389 #. type: Plain text
5390 #: build/C/man2/perf_event_open.2:1717
5391 msgid "This adds an ftrace filter to this event."
5392 msgstr ""
5393
5394 #. type: Plain text
5395 #: build/C/man2/perf_event_open.2:1719
5396 msgid "The argument is a pointer to the desired ftrace filter."
5397 msgstr ""
5398
5399 #. type: SS
5400 #: build/C/man2/perf_event_open.2:1719
5401 #, no-wrap
5402 msgid "Using prctl"
5403 msgstr ""
5404
5405 #. type: Plain text
5406 #: build/C/man2/perf_event_open.2:1732
5407 msgid ""
5408 "A process can enable or disable all the event groups that are attached to it "
5409 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5410 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5411 "the current process, whether created by this process or by another, and does "
5412 "not affect any counters that this process has created on other processes.  "
5413 "It enables or disables only the group leaders, not any other members in the "
5414 "groups."
5415 msgstr ""
5416
5417 #. type: SS
5418 #: build/C/man2/perf_event_open.2:1732
5419 #, no-wrap
5420 msgid "perf_event related configuration files"
5421 msgstr ""
5422
5423 #. type: Plain text
5424 #: build/C/man2/perf_event_open.2:1735
5425 msgid "Files in I</proc/sys/kernel/>"
5426 msgstr ""
5427
5428 #. type: TP
5429 #: build/C/man2/perf_event_open.2:1736
5430 #, no-wrap
5431 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5432 msgstr ""
5433
5434 #. type: Plain text
5435 #: build/C/man2/perf_event_open.2:1742
5436 msgid ""
5437 "The I<perf_event_paranoid> file can be set to restrict access to the "
5438 "performance counters."
5439 msgstr ""
5440
5441 #. type: Plain text
5442 #: build/C/man2/perf_event_open.2:1744
5443 msgid "2 - only allow user-space measurements"
5444 msgstr ""
5445
5446 #. type: Plain text
5447 #: build/C/man2/perf_event_open.2:1746
5448 msgid "1 - (default) allow both kernel and user measurements"
5449 msgstr ""
5450
5451 #. type: Plain text
5452 #: build/C/man2/perf_event_open.2:1748
5453 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5454 msgstr ""
5455
5456 #. type: Plain text
5457 #: build/C/man2/perf_event_open.2:1750
5458 msgid "-1 - no restrictions"
5459 msgstr ""
5460
5461 #. type: Plain text
5462 #: build/C/man2/perf_event_open.2:1755
5463 msgid ""
5464 "The existence of the I<perf_event_paranoid> file is the official method for "
5465 "determining if a kernel supports B<perf_event_open>()."
5466 msgstr ""
5467
5468 #. type: TP
5469 #: build/C/man2/perf_event_open.2:1755
5470 #, no-wrap
5471 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5472 msgstr ""
5473
5474 #. type: Plain text
5475 #: build/C/man2/perf_event_open.2:1764
5476 msgid ""
5477 "This sets the maximum sample rate.  Setting this too high can allow users to "
5478 "sample at a rate that impacts overall machine performance and potentially "
5479 "lock up the machine.  The default value is 100000 (samples per second)."
5480 msgstr ""
5481
5482 #. type: TP
5483 #: build/C/man2/perf_event_open.2:1764
5484 #, no-wrap
5485 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5486 msgstr ""
5487
5488 #. type: Plain text
5489 #: build/C/man2/perf_event_open.2:1769
5490 msgid ""
5491 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5492 "516 (kB)."
5493 msgstr ""
5494
5495 #. type: Plain text
5496 #: build/C/man2/perf_event_open.2:1772
5497 msgid "Files in I</sys/bus/event_source/devices/>"
5498 msgstr ""
5499
5500 #. type: Plain text
5501 #: build/C/man2/perf_event_open.2:1778
5502 msgid ""
5503 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5504 "monitoring.  Information on how to program these PMUs can be found under I</"
5505 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5506 "different PMU."
5507 msgstr ""
5508
5509 #. type: TP
5510 #: build/C/man2/perf_event_open.2:1778
5511 #, no-wrap
5512 msgid "I</sys/bus/event_source/devices/*/type>"
5513 msgstr ""
5514
5515 #. type: Plain text
5516 #: build/C/man2/perf_event_open.2:1783
5517 msgid ""
5518 "This contains an integer that can be used in the I<type> field of "
5519 "perf_event_attr to indicate you wish to use this PMU."
5520 msgstr ""
5521
5522 #. type: TP
5523 #: build/C/man2/perf_event_open.2:1783
5524 #, no-wrap
5525 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5526 msgstr ""
5527
5528 #. type: TP
5529 #: build/C/man2/perf_event_open.2:1786
5530 #, no-wrap
5531 msgid "I</sys/bus/event_source/devices/*/format/>"
5532 msgstr ""
5533
5534 #. type: Plain text
5535 #: build/C/man2/perf_event_open.2:1791
5536 msgid ""
5537 "This sub-directory contains information on what bits in the I<config> field "
5538 "of perf_event_attr correspond to."
5539 msgstr ""
5540
5541 #. type: TP
5542 #: build/C/man2/perf_event_open.2:1791
5543 #, no-wrap
5544 msgid "I</sys/bus/event_source/devices/*/events/>"
5545 msgstr ""
5546
5547 #. type: Plain text
5548 #: build/C/man2/perf_event_open.2:1800
5549 msgid ""
5550 "This sub-directory contains files with pre-defined events.  The contents are "
5551 "strings describing the event settings expressed in terms of the fields found "
5552 "in the I<./format/> directory.  These are not necessarily complete lists of "
5553 "all events supported by a PMU, but usually a subset of events deemed useful "
5554 "or interesting."
5555 msgstr ""
5556
5557 #. type: TP
5558 #: build/C/man2/perf_event_open.2:1800
5559 #, no-wrap
5560 msgid "I</sys/bus/event_source/devices/*/uevent>"
5561 msgstr ""
5562
5563 #. type: Plain text
5564 #: build/C/man2/perf_event_open.2:1810
5565 msgid ""
5566 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5567 "occurred (in which case, I<errno> is set appropriately)."
5568 msgstr ""
5569
5570 #. type: Plain text
5571 #: build/C/man2/perf_event_open.2:1814
5572 msgid "Returned if the specified event is not available."
5573 msgstr ""
5574
5575 #. type: TP
5576 #: build/C/man2/perf_event_open.2:1814
5577 #, fuzzy, no-wrap
5578 #| msgid "B<ENOSYS>"
5579 msgid "B<ENOSPC>"
5580 msgstr "B<ENOSYS>"
5581
5582 #. type: Plain text
5583 #: build/C/man2/perf_event_open.2:1824
5584 msgid ""
5585 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5586 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5587 "B<ENOSPC> is still returned if you try to read results into too small of a "
5588 "buffer."
5589 msgstr ""
5590
5591 #. type: SH
5592 #: build/C/man2/perf_event_open.2:1824
5593 #, fuzzy, no-wrap
5594 #| msgid "VERSIONS"
5595 msgid "VERSION"
5596 msgstr "バージョン"
5597
5598 #. type: Plain text
5599 #: build/C/man2/perf_event_open.2:1829
5600 msgid ""
5601 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5602 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5603 msgstr ""
5604
5605 #. type: Plain text
5606 #: build/C/man2/perf_event_open.2:1834
5607 #, fuzzy
5608 #| msgid ""
5609 #| "B<personality>()  is Linux-specific and should not be used in programs "
5610 #| "intended to be portable."
5611 msgid ""
5612 "This B<perf_event_open>()  system call Linux- specific and should not be "
5613 "used in programs intended to be portable."
5614 msgstr ""
5615 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5616 "はない。"
5617
5618 #. type: Plain text
5619 #: build/C/man2/perf_event_open.2:1838
5620 #, fuzzy
5621 #| msgid ""
5622 #| "Glibc does not provide a wrapper for this system call; call it using "
5623 #| "B<syscall>(2)."
5624 msgid ""
5625 "Glibc does not provide a wrapper for this system call; call it using "
5626 "B<syscall>(2).  See the example below."
5627 msgstr ""
5628 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5629 "(2)  を使って呼び出すこと。"
5630
5631 #. type: Plain text
5632 #: build/C/man2/perf_event_open.2:1844
5633 msgid ""
5634 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5635 "checking for the existence of the file I</proc/sys/kernel/"
5636 "perf_event_paranoid>."
5637 msgstr ""
5638
5639 #. type: SH
5640 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5641 #: build/C/man2/ptrace.2:1811
5642 #, no-wrap
5643 msgid "BUGS"
5644 msgstr "バグ"
5645
5646 #. type: Plain text
5647 #: build/C/man2/perf_event_open.2:1851
5648 msgid ""
5649 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5650 "signals in threads.  This was introduced in Linux 2.6.32."
5651 msgstr ""
5652
5653 #. type: Plain text
5654 #: build/C/man2/perf_event_open.2:1859
5655 msgid ""
5656 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5657 "could be scheduled together until read time.  The same happens on all known "
5658 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5659 "events works you have to B<perf_event_open>(), start, then read before you "
5660 "know for sure you can get valid measurements."
5661 msgstr ""
5662
5663 #. type: Plain text
5664 #: build/C/man2/perf_event_open.2:1863
5665 msgid ""
5666 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5667 "that case, some events would silently return \"0\" if the kernel scheduled "
5668 "them in an improper counter slot."
5669 msgstr ""
5670
5671 #. type: Plain text
5672 #: build/C/man2/perf_event_open.2:1866
5673 msgid ""
5674 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5675 "results could be returned."
5676 msgstr ""
5677
5678 #. type: Plain text
5679 #: build/C/man2/perf_event_open.2:1869
5680 msgid ""
5681 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5682 "\"inherit\" is enabled and many threads are started."
5683 msgstr ""
5684
5685 #. type: Plain text
5686 #: build/C/man2/perf_event_open.2:1873
5687 msgid ""
5688 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5689 "processes."
5690 msgstr ""
5691
5692 #. type: Plain text
5693 #: build/C/man2/perf_event_open.2:1878
5694 msgid ""
5695 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5696 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5697 "This behavior is unsupported and should not be relied on."
5698 msgstr ""
5699
5700 #. type: Plain text
5701 #: build/C/man2/perf_event_open.2:1884
5702 msgid ""
5703 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5704 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5705 "the union has a non-zero value in it."
5706 msgstr ""
5707
5708 #. type: Plain text
5709 #: build/C/man2/perf_event_open.2:1889
5710 msgid ""
5711 "Always double-check your results! Various generalized events have had wrong "
5712 "values.  For example, retired branches measured the wrong thing on AMD "
5713 "machines until Linux 2.6.35."
5714 msgstr ""
5715
5716 #. type: SH
5717 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5718 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5719 #, no-wrap
5720 msgid "EXAMPLE"
5721 msgstr "例"
5722
5723 #. type: Plain text
5724 #: build/C/man2/perf_event_open.2:1893
5725 msgid ""
5726 "The following is a short example that measures the total instruction count "
5727 "of a call to B<printf>(3)."
5728 msgstr ""
5729
5730 #. type: Plain text
5731 #: build/C/man2/perf_event_open.2:1902
5732 #, fuzzy, no-wrap
5733 #| msgid ""
5734 #| "#define _GNU_SOURCE\n"
5735 #| "#include E<lt>fcntl.hE<gt>\n"
5736 #| "#include E<lt>stdio.hE<gt>\n"
5737 #| "#include E<lt>stdlib.hE<gt>\n"
5738 #| "#include E<lt>unistd.hE<gt>\n"
5739 #| "#include E<lt>errno.hE<gt>\n"
5740 #| "#include E<lt>limits.hE<gt>\n"
5741 msgid ""
5742 "#include E<lt>stdlib.hE<gt>\n"
5743 "#include E<lt>stdio.hE<gt>\n"
5744 "#include E<lt>unistd.hE<gt>\n"
5745 "#include E<lt>string.hE<gt>\n"
5746 "#include E<lt>sys/ioctl.hE<gt>\n"
5747 "#include E<lt>linux/perf_event.hE<gt>\n"
5748 "#include E<lt>asm/unistd.hE<gt>\n"
5749 msgstr ""
5750 "#define _GNU_SOURCE\n"
5751 "#include E<lt>fcntl.hE<gt>\n"
5752 "#include E<lt>stdio.hE<gt>\n"
5753 "#include E<lt>stdlib.hE<gt>\n"
5754 "#include E<lt>unistd.hE<gt>\n"
5755 "#include E<lt>errno.hE<gt>\n"
5756 "#include E<lt>limits.hE<gt>\n"
5757
5758 #. type: Plain text
5759 #: build/C/man2/perf_event_open.2:1908
5760 #, no-wrap
5761 msgid ""
5762 "long\n"
5763 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5764 "                int cpu, int group_fd, unsigned long flags)\n"
5765 "{\n"
5766 "    int ret;\n"
5767 msgstr ""
5768
5769 #. type: Plain text
5770 #: build/C/man2/perf_event_open.2:1913
5771 #, no-wrap
5772 msgid ""
5773 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5774 "                   group_fd, flags);\n"
5775 "    return ret;\n"
5776 "}\n"
5777 msgstr ""
5778
5779 #. type: Plain text
5780 #: build/C/man2/perf_event_open.2:1920
5781 #, fuzzy, no-wrap
5782 #| msgid ""
5783 #| "int\n"
5784 #| "main(int argc, char *argv[])\n"
5785 #| "{\n"
5786 #| "    int fd;\n"
5787 #| "    int len, slen;\n"
5788 msgid ""
5789 "int\n"
5790 "main(int argc, char **argv)\n"
5791 "{\n"
5792 "    struct perf_event_attr pe;\n"
5793 "    long long count;\n"
5794 "    int fd;\n"
5795 msgstr ""
5796 "int\n"
5797 "main(int argc, char *argv[])\n"
5798 "{\n"
5799 "    int fd;\n"
5800 "    int len, slen;\n"
5801
5802 #. type: Plain text
5803 #: build/C/man2/perf_event_open.2:1928
5804 #, no-wrap
5805 msgid ""
5806 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5807 "    pe.type = PERF_TYPE_HARDWARE;\n"
5808 "    pe.size = sizeof(struct perf_event_attr);\n"
5809 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5810 "    pe.disabled = 1;\n"
5811 "    pe.exclude_kernel = 1;\n"
5812 "    pe.exclude_hv = 1;\n"
5813 msgstr ""
5814
5815 #. type: Plain text
5816 #: build/C/man2/perf_event_open.2:1934
5817 #, fuzzy, no-wrap
5818 #| msgid ""
5819 #| "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5820 #| "    if (fd == -1) {\n"
5821 #| "        perror(\"open\");\n"
5822 #| "        exit(EXIT_FAILURE);\n"
5823 #| "    }\n"
5824 msgid ""
5825 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5826 "    if (fd == -1) {\n"
5827 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5828 "       exit(EXIT_FAILURE);\n"
5829 "    }\n"
5830 msgstr ""
5831 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5832 "    if (fd == -1) {\n"
5833 "        perror(\"open\");\n"
5834 "        exit(EXIT_FAILURE);\n"
5835 "    }\n"
5836
5837 #. type: Plain text
5838 #: build/C/man2/perf_event_open.2:1937
5839 #, no-wrap
5840 msgid ""
5841 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5842 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5843 msgstr ""
5844
5845 #. type: Plain text
5846 #: build/C/man2/perf_event_open.2:1939
5847 #, no-wrap
5848 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5849 msgstr ""
5850
5851 #. type: Plain text
5852 #: build/C/man2/perf_event_open.2:1942
5853 #, no-wrap
5854 msgid ""
5855 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5856 "    read(fd, &count, sizeof(long long));\n"
5857 msgstr ""
5858
5859 #. type: Plain text
5860 #: build/C/man2/perf_event_open.2:1944
5861 #, no-wrap
5862 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5863 msgstr ""
5864
5865 #. type: Plain text
5866 #: build/C/man2/perf_event_open.2:1947
5867 #, no-wrap
5868 msgid ""
5869 "    close(fd);\n"
5870 "}\n"
5871 msgstr ""
5872
5873 #. type: Plain text
5874 #: build/C/man2/perf_event_open.2:1954
5875 #, fuzzy
5876 #| msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5877 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5878 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5879
5880 #. type: TH
5881 #: build/C/man2/perfmonctl.2:27
5882 #, no-wrap
5883 msgid "PERFMONCTL"
5884 msgstr ""
5885
5886 #. type: Plain text
5887 #: build/C/man2/perfmonctl.2:30
5888 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5889 msgstr ""
5890
5891 #. type: Plain text
5892 #: build/C/man2/perfmonctl.2:34
5893 #, fuzzy, no-wrap
5894 #| msgid ""
5895 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
5896 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5897 msgid ""
5898 "B<#include E<lt>syscall.hE<gt>>\n"
5899 "B<#include E<lt>perfmon.hE<gt>>\n"
5900 msgstr ""
5901 "B<#include E<lt>sys/quota.hE<gt>>\n"
5902 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5903
5904 #. type: Plain text
5905 #: build/C/man2/perfmonctl.2:36
5906 #, fuzzy, no-wrap
5907 #| msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5908 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5909 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5910
5911 #. type: Plain text
5912 #: build/C/man2/perfmonctl.2:47
5913 msgid ""
5914 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5915 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5916 "monitoring data) registers and PMC (performance monitoring control) "
5917 "registers, which gather hardware statistics."
5918 msgstr ""
5919
5920 #. type: Plain text
5921 #: build/C/man2/perfmonctl.2:57
5922 msgid ""
5923 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5924 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5925 "I<fd> argument specifies the perfmon context to operate on."
5926 msgstr ""
5927
5928 #. type: Plain text
5929 #: build/C/man2/perfmonctl.2:61
5930 msgid "Supported values for I<cmd> are:"
5931 msgstr ""
5932
5933 #. type: TP
5934 #: build/C/man2/perfmonctl.2:61
5935 #, fuzzy, no-wrap
5936 #| msgid "B<PTRACE_CONT>"
5937 msgid "B<PFM_CREATE_CONTEXT>"
5938 msgstr "B<PTRACE_CONT>"
5939
5940 #. type: Plain text
5941 #: build/C/man2/perfmonctl.2:65
5942 #, no-wrap
5943 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5944 msgstr ""
5945
5946 #. type: Plain text
5947 #: build/C/man2/perfmonctl.2:67
5948 msgid "Set up a context."
5949 msgstr ""
5950
5951 #. type: Plain text
5952 #: build/C/man2/perfmonctl.2:74
5953 msgid ""
5954 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5955 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5956 "E<gt>ctx_fd>."
5957 msgstr ""
5958
5959 #. type: Plain text
5960 #: build/C/man2/perfmonctl.2:86
5961 msgid ""
5962 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5963 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5964 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5965 "B<epoll>(7)."
5966 msgstr ""
5967
5968 #. type: Plain text
5969 #: build/C/man2/perfmonctl.2:90
5970 msgid ""
5971 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5972 msgstr ""
5973
5974 #. type: TP
5975 #: build/C/man2/perfmonctl.2:90
5976 #, no-wrap
5977 msgid "B<PFM_WRITE_PMCS>"
5978 msgstr ""
5979
5980 #. type: Plain text
5981 #: build/C/man2/perfmonctl.2:95
5982 #, no-wrap
5983 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5984 msgstr ""
5985
5986 #. type: Plain text
5987 #: build/C/man2/perfmonctl.2:97
5988 msgid "Set PMC registers."
5989 msgstr ""
5990
5991 #. type: TP
5992 #: build/C/man2/perfmonctl.2:97
5993 #, no-wrap
5994 msgid "B<PFM_WRITE_PMDS>"
5995 msgstr ""
5996
5997 #. type: Plain text
5998 #: build/C/man2/perfmonctl.2:101
5999 #, no-wrap
6000 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6001 msgstr ""
6002
6003 #.  pfm_write_pmds()
6004 #. type: Plain text
6005 #: build/C/man2/perfmonctl.2:104
6006 msgid "Set PMD registers."
6007 msgstr ""
6008
6009 #. type: TP
6010 #: build/C/man2/perfmonctl.2:104
6011 #, no-wrap
6012 msgid "B<PFM_READ_PMDS>"
6013 msgstr ""
6014
6015 #. type: Plain text
6016 #: build/C/man2/perfmonctl.2:109
6017 #, no-wrap
6018 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6019 msgstr ""
6020
6021 #. type: Plain text
6022 #: build/C/man2/perfmonctl.2:111
6023 msgid "Read PMD registers."
6024 msgstr ""
6025
6026 #. type: TP
6027 #: build/C/man2/perfmonctl.2:111
6028 #, no-wrap
6029 msgid "B<PFM_START>"
6030 msgstr ""
6031
6032 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6033 #. type: Plain text
6034 #: build/C/man2/perfmonctl.2:117
6035 #, no-wrap
6036 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6037 msgstr ""
6038
6039 #. type: Plain text
6040 #: build/C/man2/perfmonctl.2:119
6041 msgid "Start monitoring."
6042 msgstr ""
6043
6044 #. type: TP
6045 #: build/C/man2/perfmonctl.2:119
6046 #, no-wrap
6047 msgid "B<PFM_STOP>"
6048 msgstr ""
6049
6050 #. type: Plain text
6051 #: build/C/man2/perfmonctl.2:124
6052 #, no-wrap
6053 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6054 msgstr ""
6055
6056 #. type: Plain text
6057 #: build/C/man2/perfmonctl.2:126
6058 msgid "Stop monitoring."
6059 msgstr ""
6060
6061 #. type: TP
6062 #: build/C/man2/perfmonctl.2:126
6063 #, fuzzy, no-wrap
6064 #| msgid "B<PTRACE_CONT>"
6065 msgid "B<PFM_LOAD_CONTEXT>"
6066 msgstr "B<PTRACE_CONT>"
6067
6068 #. type: Plain text
6069 #: build/C/man2/perfmonctl.2:131
6070 #, no-wrap
6071 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6072 msgstr ""
6073
6074 #. type: Plain text
6075 #: build/C/man2/perfmonctl.2:133
6076 msgid "Attach the context to a thread."
6077 msgstr ""
6078
6079 #. type: TP
6080 #: build/C/man2/perfmonctl.2:133
6081 #, no-wrap
6082 msgid "B<PFM_UNLOAD_CONTEXT>"
6083 msgstr ""
6084
6085 #. type: Plain text
6086 #: build/C/man2/perfmonctl.2:138
6087 #, no-wrap
6088 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6089 msgstr ""
6090
6091 #. type: Plain text
6092 #: build/C/man2/perfmonctl.2:140
6093 msgid "Detach the context from a thread."
6094 msgstr ""
6095
6096 #. type: TP
6097 #: build/C/man2/perfmonctl.2:140
6098 #, no-wrap
6099 msgid "B<PFM_RESTART>"
6100 msgstr ""
6101
6102 #. type: Plain text
6103 #: build/C/man2/perfmonctl.2:145
6104 #, no-wrap
6105 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6106 msgstr ""
6107
6108 #. type: Plain text
6109 #: build/C/man2/perfmonctl.2:147
6110 msgid "Restart monitoring after receiving an overflow notification."
6111 msgstr ""
6112
6113 #. type: TP
6114 #: build/C/man2/perfmonctl.2:147
6115 #, fuzzy, no-wrap
6116 #| msgid "B<Q_GETSTATS>"
6117 msgid "B<PFM_GET_FEATURES>"
6118 msgstr "B<Q_GETSTATS>"
6119
6120 #. type: Plain text
6121 #: build/C/man2/perfmonctl.2:152
6122 #, no-wrap
6123 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6124 msgstr ""
6125
6126 #. type: TP
6127 #: build/C/man2/perfmonctl.2:153
6128 #, no-wrap
6129 msgid "B<PFM_DEBUG>"
6130 msgstr ""
6131
6132 #. type: Plain text
6133 #: build/C/man2/perfmonctl.2:158
6134 #, no-wrap
6135 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6136 msgstr ""
6137
6138 #. type: Plain text
6139 #: build/C/man2/perfmonctl.2:162
6140 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6141 msgstr ""
6142
6143 #. type: TP
6144 #: build/C/man2/perfmonctl.2:162
6145 #, no-wrap
6146 msgid "B<PFM_GET_PMC_RESET_VAL>"
6147 msgstr ""
6148
6149 #. type: Plain text
6150 #: build/C/man2/perfmonctl.2:167
6151 #, no-wrap
6152 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6153 msgstr ""
6154
6155 #
6156 #
6157 #
6158 #.  .TP
6159 #.  .B PFM_CREATE_EVTSETS
6160 #.  create or modify event sets
6161 #.  .nf
6162 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6163 #.  .fi
6164 #.  .TP
6165 #.  .B PFM_DELETE_EVTSETS
6166 #.  delete event sets
6167 #.  .nf
6168 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6169 #.  .fi
6170 #.  .TP
6171 #.  .B PFM_GETINFO_EVTSETS
6172 #.  get information about event sets
6173 #.  .nf
6174 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6175 #.  .fi
6176 #. type: Plain text
6177 #: build/C/man2/perfmonctl.2:190
6178 msgid "Reset PMC registers to default values."
6179 msgstr ""
6180
6181 #. type: Plain text
6182 #: build/C/man2/perfmonctl.2:196
6183 #, fuzzy
6184 #| msgid ""
6185 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6186 #| "I<errno> is set to indicate the error."
6187 msgid ""
6188 "B<performctl>()  returns zero when the operation is successful.  On error, "
6189 "-1 is returned and I<errno> is set to indicate the cause of the error."
6190 msgstr ""
6191 "成功すると、 B<kexec_load> は 0 を返す。\n"
6192 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6193
6194 #. type: Plain text
6195 #: build/C/man2/perfmonctl.2:199
6196 #, fuzzy
6197 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6198 msgid "B<perfmonctl>()  is available since Linux 2.4."
6199 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6200
6201 #. type: Plain text
6202 #: build/C/man2/perfmonctl.2:202
6203 msgid ""
6204 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6205 "architecture."
6206 msgstr ""
6207
6208 #. type: Plain text
6209 #: build/C/man2/perfmonctl.2:207
6210 msgid "B<gprof>(1)"
6211 msgstr ""
6212
6213 #. type: Plain text
6214 #: build/C/man2/perfmonctl.2:209
6215 msgid "The perfmon2 interface specification"
6216 msgstr ""
6217
6218 #. type: TH
6219 #: build/C/man2/personality.2:32
6220 #, no-wrap
6221 msgid "PERSONALITY"
6222 msgstr "PERSONALITY"
6223
6224 #. type: TH
6225 #: build/C/man2/personality.2:32
6226 #, no-wrap
6227 msgid "2003-01-01"
6228 msgstr "2003-01-01"
6229
6230 #. type: Plain text
6231 #: build/C/man2/personality.2:35
6232 msgid "personality - set the process execution domain"
6233 msgstr "personality - プロセスを実行するドメインを設定する"
6234
6235 #. type: Plain text
6236 #: build/C/man2/personality.2:37
6237 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6238 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6239
6240 #. type: Plain text
6241 #: build/C/man2/personality.2:39
6242 msgid "B<int personality(unsigned long >I<persona>B<);>"
6243 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6244
6245 #. type: Plain text
6246 #: build/C/man2/personality.2:47
6247 msgid ""
6248 "Linux supports different execution domains, or personalities, for each "
6249 "process.  Among other things, execution domains tell Linux how to map signal "
6250 "numbers into signal actions.  The execution domain system allows Linux to "
6251 "provide limited support for binaries compiled under other UNIX-like "
6252 "operating systems."
6253 msgstr ""
6254 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6255 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6256 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6257 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6258 "対する限定的なサポートを提供している。"
6259
6260 #. type: Plain text
6261 #: build/C/man2/personality.2:57
6262 msgid ""
6263 "This function will return the current B<personality>()  when I<persona> "
6264 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6265 "by I<persona> the new execution domain of the calling process."
6266 msgstr ""
6267 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6268 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6269 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6270
6271 #. type: Plain text
6272 #: build/C/man2/personality.2:64
6273 msgid ""
6274 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6275 "and I<errno> is set appropriately."
6276 msgstr ""
6277 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6278 "I<errno> が適切に設定される。"
6279
6280 #. type: Plain text
6281 #: build/C/man2/personality.2:68
6282 msgid "The kernel was unable to change the personality."
6283 msgstr "カーネルがパーソナリティを変更できなかった。"
6284
6285 #. type: Plain text
6286 #: build/C/man2/personality.2:72
6287 msgid ""
6288 "B<personality>()  is Linux-specific and should not be used in programs "
6289 "intended to be portable."
6290 msgstr ""
6291 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6292 "はない。"
6293
6294 #. type: TH
6295 #: build/C/man2/pivot_root.2:10
6296 #, no-wrap
6297 msgid "PIVOT_ROOT"
6298 msgstr "PIVOT_ROOT"
6299
6300 #. type: Plain text
6301 #: build/C/man2/pivot_root.2:13
6302 msgid "pivot_root - change the root file system"
6303 msgstr "pivot_root - root ファイルシステムを変更する"
6304
6305 #. type: Plain text
6306 #: build/C/man2/pivot_root.2:15
6307 msgid ""
6308 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6309 msgstr ""
6310 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6311
6312 #.  The
6313 #.  .B CAP_SYS_ADMIN
6314 #.  capability is required.
6315 #. type: Plain text
6316 #: build/C/man2/pivot_root.2:27
6317 msgid ""
6318 "B<pivot_root>()  moves the root file system of the calling process to the "
6319 "directory I<put_old> and makes I<new_root> the new root file system of the "
6320 "calling process."
6321 msgstr ""
6322 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6323 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6324 "ルシステムにする。"
6325
6326 #. type: Plain text
6327 #: build/C/man2/pivot_root.2:34
6328 msgid ""
6329 "The typical use of B<pivot_root>()  is during system startup, when the "
6330 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6331 "the real root file system, and eventually turns the latter into the current "
6332 "root of all relevant processes or threads."
6333 msgstr ""
6334 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6335 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6336 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6337 "レント root に変更するような場合である。"
6338
6339 #. type: Plain text
6340 #: build/C/man2/pivot_root.2:46
6341 msgid ""
6342 "B<pivot_root>()  may or may not change the current root and the current "
6343 "working directory of any processes or threads which use the old root "
6344 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6345 "root or current working directory at the old root operate correctly in "
6346 "either case.  An easy way to ensure this is to change their root and current "
6347 "working directory to I<new_root> before invoking B<pivot_root>()."
6348 msgstr ""
6349 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6350 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6351 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6352 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6353 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6354 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6355 "更しておくことである。"
6356
6357 #. type: Plain text
6358 #: build/C/man2/pivot_root.2:64
6359 msgid ""
6360 "The paragraph above is intentionally vague because the implementation of "
6361 "B<pivot_root>()  may change in the future.  At the time of writing, "
6362 "B<pivot_root>()  changes root and current working directory of each process "
6363 "or thread to I<new_root> if they point to the old root directory.  This is "
6364 "necessary in order to prevent kernel threads from keeping the old root "
6365 "directory busy with their root and current working directory, even if they "
6366 "never access the file system in any way.  In the future, there may be a "
6367 "mechanism for kernel threads to explicitly relinquish any access to the file "
6368 "system, such that this fairly intrusive mechanism can be removed from "
6369 "B<pivot_root>()."
6370 msgstr ""
6371 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6372 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6373 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6374 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6375 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6376 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6377 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6378 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6379 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6380 "除されるかもしれない。"
6381
6382 #. type: Plain text
6383 #: build/C/man2/pivot_root.2:72
6384 msgid ""
6385 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6386 "may not affect its current working directory.  It is therefore recommended "
6387 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6388 msgstr ""
6389 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6390 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6391 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6392
6393 #. type: Plain text
6394 #: build/C/man2/pivot_root.2:74
6395 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6396 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6397
6398 #. type: IP
6399 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6400 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6401 #, no-wrap
6402 msgid "-"
6403 msgstr "-"
6404
6405 #. type: Plain text
6406 #: build/C/man2/pivot_root.2:76
6407 msgid "They must be directories."
6408 msgstr "ディレクトリでなければならない。"
6409
6410 #. type: Plain text
6411 #: build/C/man2/pivot_root.2:79
6412 msgid ""
6413 "I<new_root> and I<put_old> must not be on the same file system as the "
6414 "current root."
6415 msgstr ""
6416 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6417 "ない。"
6418
6419 #. type: Plain text
6420 #: build/C/man2/pivot_root.2:83
6421 msgid ""
6422 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6423 "of I</..> to the string pointed to by I<put_old> must yield the same "
6424 "directory as I<new_root>."
6425 msgstr ""
6426 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6427 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6428 "リが得られなければならない。"
6429
6430 #. type: Plain text
6431 #: build/C/man2/pivot_root.2:85
6432 msgid "No other file system may be mounted on I<put_old>."
6433 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6434
6435 #. type: Plain text
6436 #: build/C/man2/pivot_root.2:89
6437 msgid "See also B<pivot_root>(8)  for additional usage examples."
6438 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6439
6440 #. type: Plain text
6441 #: build/C/man2/pivot_root.2:96
6442 msgid ""
6443 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6444 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6445 "point of that file system is mounted on I<put_old>."
6446 msgstr ""
6447 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6448 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6449 "テムのマウントポイントが I<put_old> にマウントされる。"
6450
6451 #. type: Plain text
6452 #: build/C/man2/pivot_root.2:101
6453 msgid ""
6454 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6455 "mounts> will show the mount point of the file system containing I<new_root> "
6456 "as root (I</>)."
6457 msgstr ""
6458 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6459 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6460 "る。"
6461
6462 #. type: Plain text
6463 #: build/C/man2/pivot_root.2:110
6464 msgid ""
6465 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6466 "B<stat>(2).  Additionally, it may return:"
6467 msgstr ""
6468 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6469 "性がある。さらに以下を返すことがある:"
6470
6471 #. type: Plain text
6472 #: build/C/man2/pivot_root.2:114
6473 msgid ""
6474 "I<new_root> or I<put_old> are on the current root file system, or a file "
6475 "system is already mounted on I<put_old>."
6476 msgstr ""
6477 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6478 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6479
6480 #. type: Plain text
6481 #: build/C/man2/pivot_root.2:117
6482 msgid "I<put_old> is not underneath I<new_root>."
6483 msgstr "I<put_old> が I<new_root> の下層にない。"
6484
6485 #. type: TP
6486 #: build/C/man2/pivot_root.2:117
6487 #, no-wrap
6488 msgid "B<ENOTDIR>"
6489 msgstr "B<ENOTDIR>"
6490
6491 #. type: Plain text
6492 #: build/C/man2/pivot_root.2:120
6493 msgid "I<new_root> or I<put_old> is not a directory."
6494 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6495
6496 #. type: Plain text
6497 #: build/C/man2/pivot_root.2:125
6498 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6499 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6500
6501 #. type: Plain text
6502 #: build/C/man2/pivot_root.2:128
6503 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6504 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6505
6506 #. type: Plain text
6507 #: build/C/man2/pivot_root.2:131
6508 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6509 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6510
6511 #. type: Plain text
6512 #: build/C/man2/pivot_root.2:138
6513 msgid ""
6514 "B<pivot_root>()  should not have to change root and current working "
6515 "directory of all other processes in the system."
6516 msgstr ""
6517 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6518 "ディレクトリとを変更しなくてもよいはずである。"
6519
6520 #. type: Plain text
6521 #: build/C/man2/pivot_root.2:143
6522 msgid ""
6523 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6524 "insanity."
6525 msgstr ""
6526 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6527 "からない状態になってしまうだろう"
6528
6529 #. type: Plain text
6530 #: build/C/man2/pivot_root.2:149
6531 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6532 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6533
6534 #. type: TH
6535 #: build/C/man2/process_vm_readv.2:29
6536 #, no-wrap
6537 msgid "PROCESS_VM_READV"
6538 msgstr ""
6539
6540 #. type: TH
6541 #: build/C/man2/process_vm_readv.2:29
6542 #, no-wrap
6543 msgid "2012-04-25"
6544 msgstr "2012-04-25"
6545
6546 #. type: Plain text
6547 #: build/C/man2/process_vm_readv.2:32
6548 msgid ""
6549 "process_vm_readv, process_vm_writev - transfer data between process address "
6550 "spaces"
6551 msgstr ""
6552
6553 #. type: Plain text
6554 #: build/C/man2/process_vm_readv.2:35
6555 #, no-wrap
6556 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6557 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6558
6559 #. type: Plain text
6560 #: build/C/man2/process_vm_readv.2:42
6561 #, no-wrap
6562 msgid ""
6563 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6564 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6565 "B<                         unsigned long >I<liovcnt>B<,>\n"
6566 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6567 "B<                         unsigned long >I<riovcnt>B<,>\n"
6568 "B<                         unsigned long >I<flags>B<);>\n"
6569 msgstr ""
6570
6571 #. type: Plain text
6572 #: build/C/man2/process_vm_readv.2:49
6573 #, no-wrap
6574 msgid ""
6575 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6576 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6577 "B<                          unsigned long >I<liovcnt>B<,>\n"
6578 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6579 "B<                          unsigned long >I<riovcnt>B<,>\n"
6580 "B<                          unsigned long >I<flags>B<);>\n"
6581 msgstr ""
6582
6583 #. type: Plain text
6584 #: build/C/man2/process_vm_readv.2:57
6585 msgid ""
6586 "These system calls transfer data between the address space of the calling "
6587 "process (\"the local process\") and the process identified by I<pid> (\"the "
6588 "remote process\").  The data moves directly between the address spaces of "
6589 "the two processes, without passing through kernel space."
6590 msgstr ""
6591
6592 #. type: Plain text
6593 #: build/C/man2/process_vm_readv.2:82
6594 msgid ""
6595 "The B<process_vm_readv>()  system call transfers data from the remote "
6596 "process to the local process.  The data to be transferred is identified by "
6597 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6598 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6599 "the number of elements in I<remote_iov>.  The data is transferred to the "
6600 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6601 "pointer to an array describing address ranges in the calling process, and "
6602 "I<liovcnt> specifies the number of elements in I<local_iov>."
6603 msgstr ""
6604
6605 #. type: Plain text
6606 #: build/C/man2/process_vm_readv.2:96
6607 msgid ""
6608 "The B<process_vm_writev>()  system call is the converse of "
6609 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6610 "remote process.  Other than the direction of the transfer, the arguments "
6611 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6612 "meaning as for B<process_vm_readv>()."
6613 msgstr ""
6614
6615 #. type: Plain text
6616 #: build/C/man2/process_vm_readv.2:106
6617 msgid ""
6618 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6619 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6620 msgstr ""
6621 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6622 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6623 "されている:"
6624
6625 #. type: Plain text
6626 #: build/C/man2/process_vm_readv.2:113
6627 #, no-wrap
6628 msgid ""
6629 "struct iovec {\n"
6630 "    void  *iov_base;    /* Starting address */\n"
6631 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6632 "};\n"
6633 msgstr ""
6634 "struct iovec {\n"
6635 "    void  *iov_base;    /* Starting address */\n"
6636 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6637 "};\n"
6638
6639 #. type: Plain text
6640 #: build/C/man2/process_vm_readv.2:129
6641 msgid ""
6642 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6643 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6644 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6645 "to I<remote_iov[1]>, and so on."
6646 msgstr ""
6647 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6648 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6649 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6650 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6651 "以降も同様である。"
6652
6653 #. type: Plain text
6654 #: build/C/man2/process_vm_readv.2:140
6655 msgid ""
6656 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6657 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6658 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6659 msgstr ""
6660
6661 #. type: Plain text
6662 #: build/C/man2/process_vm_readv.2:148
6663 msgid ""
6664 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6665 "have to be the same.  Thus, it is possible to split a single local buffer "
6666 "into multiple remote buffers, or vice versa."
6667 msgstr ""
6668
6669 #. type: Plain text
6670 #: build/C/man2/process_vm_readv.2:152
6671 msgid "The I<flags> argument is currently unused and must be set to 0."
6672 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6673
6674 #.  In time, glibc might provide a wrapper that works around this limit,
6675 #.  as is done for readv()/writev()
6676 #. type: Plain text
6677 #: build/C/man2/process_vm_readv.2:165
6678 msgid ""
6679 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6680 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6681 "via the call I<sysconf(_SC_IOV_MAX)>)."
6682 msgstr ""
6683
6684 #. type: Plain text
6685 #: build/C/man2/process_vm_readv.2:175
6686 msgid ""
6687 "The count arguments and I<local_iov> are checked before doing any "
6688 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6689 "addresses refer to regions that are inaccessible to the local process, none "
6690 "of the vectors will be processed and an error will be returned immediately."
6691 msgstr ""
6692
6693 #. type: Plain text
6694 #: build/C/man2/process_vm_readv.2:195
6695 msgid ""
6696 "Note, however, that these system calls do not check the memory regions in "
6697 "the remote process until just before doing the read/write.  Consequently, a "
6698 "partial read/write (see RETURN VALUE)  may result if one of the "
6699 "I<remote_iov> elements points to an invalid memory region in the remote "
6700 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6701 "this in mind when attempting to read data of unknown length (such as C "
6702 "strings that are null-terminated) from a remote process, by avoiding "
6703 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6704 "(Instead, split the remote read into two I<remote_iov> elements and have "
6705 "them merge back into a single write I<local_iov> entry.  The first read "
6706 "entry goes up to the page boundary, while the second starts on the next page "
6707 "boundary.)"
6708 msgstr ""
6709
6710 #. type: Plain text
6711 #: build/C/man2/process_vm_readv.2:209
6712 msgid ""
6713 "In order to read from or write to another process, either the caller must "
6714 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6715 "ID, and saved set-user-ID of the remote process must match the real user ID "
6716 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6717 "group-ID of the remote process must match the real group ID of the caller.  "
6718 "(The permission required is exactly the same as that required to perform a "
6719 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6720 msgstr ""
6721
6722 #. type: Plain text
6723 #: build/C/man2/process_vm_readv.2:225
6724 msgid ""
6725 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6726 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6727 "value may be less than the total number of requested bytes, if a partial "
6728 "read/write occurred.  (Partial transfers apply at the granularity of "
6729 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6730 "splits a single I<iovec> element.)  The caller should check the return value "
6731 "to determine whether a partial read/write occurred."
6732 msgstr ""
6733
6734 #. type: Plain text
6735 #: build/C/man2/process_vm_readv.2:229
6736 msgid "On error, -1 is returned and I<errno> is set appropriately."
6737 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6738
6739 #. type: Plain text
6740 #: build/C/man2/process_vm_readv.2:241
6741 msgid ""
6742 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6743 "overflows a I<ssize_t> value."
6744 msgstr ""
6745
6746 #. type: Plain text
6747 #: build/C/man2/process_vm_readv.2:245
6748 msgid "I<flags> is not 0."
6749 msgstr "I<flags> が 0 でない。"
6750
6751 #. type: Plain text
6752 #: build/C/man2/process_vm_readv.2:251
6753 msgid "I<liovcnt> or I<riovcnt> is too large."
6754 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6755
6756 #. type: Plain text
6757 #: build/C/man2/process_vm_readv.2:256
6758 msgid ""
6759 "The memory described by I<local_iov> is outside the caller's accessible "
6760 "address space."
6761 msgstr ""
6762 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6763 "アドレス空間の外にある。"
6764
6765 #. type: Plain text
6766 #: build/C/man2/process_vm_readv.2:262
6767 msgid ""
6768 "The memory described by I<remote_iov> is outside the accessible address "
6769 "space of the process I<pid>."
6770 msgstr ""
6771
6772 #. type: Plain text
6773 #: build/C/man2/process_vm_readv.2:267
6774 msgid ""
6775 "Could not allocate memory for internal copies of the I<iovec> structures."
6776 msgstr ""
6777
6778 #. type: Plain text
6779 #: build/C/man2/process_vm_readv.2:271
6780 msgid ""
6781 "The caller does not have permission to access the address space of the "
6782 "process I<pid>."
6783 msgstr ""
6784 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6785 "持っていない。"
6786
6787 #. type: Plain text
6788 #: build/C/man2/process_vm_readv.2:276
6789 msgid "No process with ID I<pid> exists."
6790 msgstr "ID が I<pid> のプロセスが存在しない。"
6791
6792 #. type: Plain text
6793 #: build/C/man2/process_vm_readv.2:279
6794 msgid ""
6795 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6796 "since version 2.15."
6797 msgstr ""
6798 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6799 "サポートは glibc バージョン 2.15 以降で提供されている。"
6800
6801 #. type: Plain text
6802 #: build/C/man2/process_vm_readv.2:281
6803 msgid "These system calls are nonstandard Linux extensions."
6804 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6805
6806 #. type: Plain text
6807 #: build/C/man2/process_vm_readv.2:287
6808 msgid ""
6809 "The data transfers performed by B<process_vm_readv>()  and "
6810 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6811 msgstr ""
6812
6813 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6814 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6815 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6816 #. type: Plain text
6817 #: build/C/man2/process_vm_readv.2:295
6818 msgid ""
6819 "These system calls were designed to permit fast message passing by allowing "
6820 "messages to be exchanged with a single copy operation (rather than the "
6821 "double copy that would be required when using, for example, shared memory or "
6822 "pipes)."
6823 msgstr ""
6824
6825 #. type: Plain text
6826 #: build/C/man2/process_vm_readv.2:303
6827 msgid ""
6828 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6829 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6830 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6831 msgstr ""
6832
6833 #. type: Plain text
6834 #: build/C/man2/process_vm_readv.2:306
6835 #, no-wrap
6836 msgid "#include E<lt>sys/uio.hE<gt>\n"
6837 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6838
6839 #. type: Plain text
6840 #: build/C/man2/process_vm_readv.2:316
6841 #, no-wrap
6842 msgid ""
6843 "int\n"
6844 "main(void)\n"
6845 "{\n"
6846 "    struct iovec local[2];\n"
6847 "    struct iovec remote[1];\n"
6848 "    char buf1[10];\n"
6849 "    char buf2[10];\n"
6850 "    ssize_t nread;\n"
6851 "    pid_t pid = 10;             /* PID of remote process */\n"
6852 msgstr ""
6853 "int\n"
6854 "main(void)\n"
6855 "{\n"
6856 "    struct iovec local[2];\n"
6857 "    struct iovec remote[1];\n"
6858 "    char buf1[10];\n"
6859 "    char buf2[10];\n"
6860 "    ssize_t nread;\n"
6861 "    pid_t pid = 10;             /* PID of remote process */\n"
6862
6863 #. type: Plain text
6864 #: build/C/man2/process_vm_readv.2:323
6865 #, no-wrap
6866 msgid ""
6867 "    local[0].iov_base = buf1;\n"
6868 "    local[0].iov_len = 10;\n"
6869 "    local[1].iov_base = buf2;\n"
6870 "    local[1].iov_len = 10;\n"
6871 "    remote[0].iov_base = (void *) 0x10000;\n"
6872 "    remote[1].iov_len = 20;\n"
6873 msgstr ""
6874 "    local[0].iov_base = buf1;\n"
6875 "    local[0].iov_len = 10;\n"
6876 "    local[1].iov_base = buf2;\n"
6877 "    local[1].iov_len = 10;\n"
6878 "    remote[0].iov_base = (void *) 0x10000;\n"
6879 "    remote[1].iov_len = 20;\n"
6880
6881 #. type: Plain text
6882 #: build/C/man2/process_vm_readv.2:330
6883 #, no-wrap
6884 msgid ""
6885 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6886 "    if (nread != 20)\n"
6887 "        return 1;\n"
6888 "    else\n"
6889 "        return 0;\n"
6890 "}\n"
6891 msgstr ""
6892 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6893 "    if (nread != 20)\n"
6894 "        return 1;\n"
6895 "    else\n"
6896 "        return 0;\n"
6897 "}\n"
6898
6899 #. type: Plain text
6900 #: build/C/man2/process_vm_readv.2:334
6901 msgid "B<readv>(2), B<writev>(2)"
6902 msgstr "B<readv>(2), B<writev>(2)"
6903
6904 #. type: TH
6905 #: build/C/man2/ptrace.2:44
6906 #, no-wrap
6907 msgid "PTRACE"
6908 msgstr "PTRACE"
6909
6910 #. type: TH
6911 #: build/C/man2/ptrace.2:44
6912 #, fuzzy, no-wrap
6913 #| msgid "2009-02-20"
6914 msgid "2013-02-16"
6915 msgstr "2009-02-20"
6916
6917 #. type: Plain text
6918 #: build/C/man2/ptrace.2:47
6919 msgid "ptrace - process trace"
6920 msgstr "ptrace - プロセスのトレース"
6921
6922 #. type: Plain text
6923 #: build/C/man2/ptrace.2:50
6924 #, no-wrap
6925 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6926 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6927
6928 #. type: Plain text
6929 #: build/C/man2/ptrace.2:53
6930 #, no-wrap
6931 msgid ""
6932 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6933 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6934 msgstr ""
6935 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6936 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6937
6938 #. type: Plain text
6939 #: build/C/man2/ptrace.2:62
6940 #, fuzzy
6941 #| msgid ""
6942 #| "The B<ptrace>()  system call provides a means by which a parent process "
6943 #| "may observe and control the execution of another process, and examine and "
6944 #| "change its core image and registers.  It is primarily used to implement "
6945 #| "breakpoint debugging and system call tracing."
6946 msgid ""
6947 "The B<ptrace>()  system call provides a means by which one process (the "
6948 "\"tracer\")  may observe and control the execution of another process (the "
6949 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6950 "is primarily used to implement breakpoint debugging and system call tracing."
6951 msgstr ""
6952 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6953 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6954 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6955 "コールのトレースを 実装するのに用いられる。"
6956
6957 #. type: Plain text
6958 #: build/C/man2/ptrace.2:73
6959 msgid ""
6960 "A tracee first needs to be attached to the tracer.  Attachment and "
6961 "subsequent commands are per thread: in a multithreaded process, every thread "
6962 "can be individually attached to a (potentially different) tracer, or left "
6963 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6964 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6965 "commands are always sent to a specific tracee using a call of the form"
6966 msgstr ""
6967
6968 #. type: Plain text
6969 #: build/C/man2/ptrace.2:75
6970 #, no-wrap
6971 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6972 msgstr ""
6973
6974 #. type: Plain text
6975 #: build/C/man2/ptrace.2:79
6976 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6977 msgstr ""
6978
6979 #. type: Plain text
6980 #: build/C/man2/ptrace.2:85
6981 msgid ""
6982 "(Note that in this page, a \"multithreaded process\" means a thread group "
6983 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6984 msgstr ""
6985
6986 #. type: Plain text
6987 #: build/C/man2/ptrace.2:96
6988 #, fuzzy
6989 #| msgid ""
6990 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6991 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6992 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6993 #| "using B<PTRACE_ATTACH>."
6994 msgid ""
6995 "A process can initiate a trace by calling B<fork>(2)  and having the "
6996 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6997 "(2).  Alternatively, one process may commence tracing another process using "
6998 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6999 msgstr ""
7000 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
7001 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
7002 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
7003 "を使用し、トレースを開始する。"
7004
7005 #. type: Plain text
7006 #: build/C/man2/ptrace.2:113
7007 #, fuzzy
7008 #| msgid ""
7009 #| "While being traced, the child will stop each time a signal is delivered, "
7010 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
7011 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
7012 #| "(2)  and may inspect and modify the child process while it is stopped.  "
7013 #| "The parent then causes the child to continue, optionally ignoring the "
7014 #| "delivered signal (or even delivering a different signal instead)."
7015 msgid ""
7016 "While being traced, the tracee will stop each time a signal is delivered, "
7017 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
7018 "its usual effect.)  The tracer will be notified at its next call to "
7019 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
7020 "return a I<status> value containing information that indicates the cause of "
7021 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
7022 "various ptrace requests to inspect and modify the tracee.  The tracer then "
7023 "causes the tracee to continue, optionally ignoring the delivered signal (or "
7024 "even delivering a different signal instead)."
7025 msgstr ""
7026 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7027 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7028 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7029 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7030 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7031 "シグナルを 配送することもできる) 。"
7032
7033 #. type: Plain text
7034 #: build/C/man2/ptrace.2:123
7035 msgid ""
7036 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7037 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7038 "signal, giving the parent a chance to gain control before the new program "
7039 "begins execution."
7040 msgstr ""
7041
7042 #. type: Plain text
7043 #: build/C/man2/ptrace.2:127
7044 #, fuzzy
7045 #| msgid ""
7046 #| "When the parent is finished tracing, it can terminate the child with "
7047 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7048 #| "mode via B<PTRACE_DETACH>."
7049 msgid ""
7050 "When the tracer is finished tracing, it can cause the tracee to continue "
7051 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7052 msgstr ""
7053 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7054 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7055 "ドにして、 実行を継続させることもできる。"
7056
7057 #. type: Plain text
7058 #: build/C/man2/ptrace.2:131
7059 msgid "The value of I<request> determines the action to be performed:"
7060 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7061
7062 #. type: TP
7063 #: build/C/man2/ptrace.2:131
7064 #, no-wrap
7065 msgid "B<PTRACE_TRACEME>"
7066 msgstr "B<PTRACE_TRACEME>"
7067
7068 #. type: Plain text
7069 #: build/C/man2/ptrace.2:141
7070 msgid ""
7071 "Indicate that this process is to be traced by its parent.  A process "
7072 "probably shouldn't make this request if its parent isn't expecting to trace "
7073 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7074 msgstr ""
7075
7076 #. type: Plain text
7077 #: build/C/man2/ptrace.2:156
7078 #, fuzzy
7079 #| msgid ""
7080 #| "The above request is used only by the child process; the rest are used "
7081 #| "only by the parent.  In the following requests, I<pid> specifies the "
7082 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7083 #| "the child process must be stopped."
7084 msgid ""
7085 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7086 "requests are used only by the tracer.  In the following requests, I<pid> "
7087 "specifies the thread ID of the tracee to be acted on.  For requests other "
7088 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7089 "B<PTRACE_KILL>, the tracee must be stopped."
7090 msgstr ""
7091 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7092 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7093 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7094 "らない。"
7095
7096 #. type: TP
7097 #: build/C/man2/ptrace.2:156
7098 #, no-wrap
7099 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7100 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7101
7102 #. type: Plain text
7103 #: build/C/man2/ptrace.2:167
7104 #, fuzzy
7105 #| msgid ""
7106 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7107 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7108 #| "separate text and data address spaces, so the two requests are currently "
7109 #| "equivalent.  (The argument I<data> is ignored.)"
7110 msgid ""
7111 "Read a word at the address I<addr> in the tracee's memory, returning the "
7112 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7113 "text and data address spaces, so these two requests are currently "
7114 "equivalent.  (I<data> is ignored.)"
7115 msgstr ""
7116 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7117 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7118 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7119 "ものである。 (引き数 I<data> は無視される。)"
7120
7121 #. type: TP
7122 #: build/C/man2/ptrace.2:167
7123 #, no-wrap
7124 msgid "B<PTRACE_PEEKUSER>"
7125 msgstr "B<PTRACE_PEEKUSER>"
7126
7127 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7128 #.  and that is the name that seems common on other systems.
7129 #. type: Plain text
7130 #: build/C/man2/ptrace.2:185
7131 #, fuzzy
7132 #| msgid ""
7133 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7134 #| "registers and other information about the process (see I<E<lt>sys/user."
7135 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7136 #| "Typically the offset must be word-aligned, though this might vary by "
7137 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7138 msgid ""
7139 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7140 "registers and other information about the process (see I<E<lt>sys/user."
7141 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7142 "Typically, the offset must be word-aligned, though this might vary by "
7143 "architecture.  See NOTES.  (I<data> is ignored.)"
7144 msgstr ""
7145 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7146 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7147 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7148 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7149 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7150 "される。 )"
7151
7152 #. type: TP
7153 #: build/C/man2/ptrace.2:185
7154 #, no-wrap
7155 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7156 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7157
7158 #. type: Plain text
7159 #: build/C/man2/ptrace.2:197
7160 #, fuzzy
7161 #| msgid ""
7162 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7163 #| "above, the two requests are currently equivalent."
7164 msgid ""
7165 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7166 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7167 "equivalent."
7168 msgstr ""
7169 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7170 "に、現在のところ二つの 要求は同じものである。"
7171
7172 #. type: TP
7173 #: build/C/man2/ptrace.2:197
7174 #, no-wrap
7175 msgid "B<PTRACE_POKEUSER>"
7176 msgstr "B<PTRACE_POKEUSER>"
7177
7178 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7179 #.  and that is the name that seems common on other systems.
7180 #.  FIXME In the preceding sentence, which modifications are disallowed,
7181 #.  and when they are disallowed, how does user space discover that fact?
7182 #. type: Plain text
7183 #: build/C/man2/ptrace.2:213
7184 #, fuzzy
7185 #| msgid ""
7186 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7187 #| "above, the offset must typically be word-aligned.  In order to maintain "
7188 #| "the integrity of the kernel, some modifications to the USER area are "
7189 #| "disallowed."
7190 msgid ""
7191 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7192 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7193 "maintain the integrity of the kernel, some modifications to the USER area "
7194 "are disallowed."
7195 msgstr ""
7196 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7197 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7198 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7199 "されている。"
7200
7201 #. type: TP
7202 #: build/C/man2/ptrace.2:213
7203 #, no-wrap
7204 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7205 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7206
7207 #. type: Plain text
7208 #: build/C/man2/ptrace.2:236
7209 #, fuzzy
7210 #| msgid ""
7211 #| "Copies the child's general purpose or floating-point registers, "
7212 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7213 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7214 msgid ""
7215 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7216 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7217 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7218 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7219 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7220 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7221 "architectures."
7222 msgstr ""
7223 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7224 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7225 "すること。(I<addr> は無視される。)"
7226
7227 #. type: TP
7228 #: build/C/man2/ptrace.2:236
7229 #, fuzzy, no-wrap
7230 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7231 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7232 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7233
7234 #. type: Plain text
7235 #: build/C/man2/ptrace.2:257
7236 msgid ""
7237 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7238 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7239 "numerical value 1)  usually results in reading of general-purpose "
7240 "registers.  If the CPU has, for example, floating-point and/or vector "
7241 "registers, they can be retrieved by setting I<addr> to the corresponding "
7242 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7243 "the destination buffer's location and length.  On return, the kernel "
7244 "modifies B<iov.len> to indicate the actual number of bytes returned."
7245 msgstr ""
7246
7247 #. type: TP
7248 #: build/C/man2/ptrace.2:257
7249 #, no-wrap
7250 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7251 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7252
7253 #. type: Plain text
7254 #: build/C/man2/ptrace.2:269
7255 #, fuzzy
7256 #| msgid ""
7257 #| "Retrieve information about the signal that caused the stop.  Copies a "
7258 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7259 #| "I<data> in the parent.  (I<addr> is ignored.)"
7260 msgid ""
7261 "Retrieve information about the signal that caused the stop.  Copy a "
7262 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7263 "I<data> in the tracer.  (I<addr> is ignored.)"
7264 msgstr ""
7265 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7266 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7267 "る。 (I<addr> は無視される。)"
7268
7269 #. type: TP
7270 #: build/C/man2/ptrace.2:269
7271 #, no-wrap
7272 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7273 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7274
7275 #.  FIXME In the preceding sentence, which modifications are disallowed,
7276 #.  and when they are disallowed, how does user space discover that fact?
7277 #. type: Plain text
7278 #: build/C/man2/ptrace.2:294
7279 #, fuzzy
7280 #| msgid ""
7281 #| "Copies the child's general purpose or floating-point registers, "
7282 #| "respectively, from location I<data> in the parent.  As for "
7283 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7284 #| "disallowed.  (I<addr> is ignored.)"
7285 msgid ""
7286 "Modify the tracee's general-purpose or floating-point registers, "
7287 "respectively, from the address I<data> in the tracer.  As for "
7288 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7289 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7290 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7291 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7292 "B<PTRACE_SETFPREGS> are not present on all architectures."
7293 msgstr ""
7294 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7295 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7296 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7297
7298 #. type: TP
7299 #: build/C/man2/ptrace.2:294
7300 #, fuzzy, no-wrap
7301 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7302 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7303 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7304
7305 #. type: Plain text
7306 #: build/C/man2/ptrace.2:303
7307 msgid ""
7308 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7309 "analogous to B<PTRACE_GETREGSET>."
7310 msgstr ""
7311
7312 #. type: TP
7313 #: build/C/man2/ptrace.2:303
7314 #, no-wrap
7315 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7316 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7317
7318 #. type: Plain text
7319 #: build/C/man2/ptrace.2:319
7320 #, fuzzy
7321 #| msgid ""
7322 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7323 #| "I<data> in the parent to the child.  This will only affect signals that "
7324 #| "would normally be delivered to the child and were caught by the tracer.  "
7325 #| "It may be difficult to tell these normal signals from synthetic signals "
7326 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7327 msgid ""
7328 "Set signal information: copy a I<siginfo_t> structure from the address "
7329 "I<data> in the tracer to the tracee.  This will affect only signals that "
7330 "would normally be delivered to the tracee and were caught by the tracer.  It "
7331 "may be difficult to tell these normal signals from synthetic signals "
7332 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7333 msgstr ""
7334 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7335 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7336 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7337 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7338 "かもしれない。 (I<addr> は無視される。)"
7339
7340 #. type: TP
7341 #: build/C/man2/ptrace.2:319
7342 #, no-wrap
7343 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7344 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7345
7346 #. type: Plain text
7347 #: build/C/man2/ptrace.2:328
7348 #, fuzzy
7349 #| msgid ""
7350 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7351 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7352 #| "the following flags:"
7353 msgid ""
7354 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7355 "interpreted as a bit mask of options, which are specified by the following "
7356 "flags:"
7357 msgstr ""
7358 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7359 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7360 "下のフラグを指定できる:"
7361
7362 #. type: TP
7363 #: build/C/man2/ptrace.2:329
7364 #, fuzzy, no-wrap
7365 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7366 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7367 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7368
7369 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7370 #. type: Plain text
7371 #: build/C/man2/ptrace.2:337
7372 msgid ""
7373 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7374 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7375 "ensure that tracees can never escape the tracer's control."
7376 msgstr ""
7377
7378 #. type: TP
7379 #: build/C/man2/ptrace.2:337
7380 #, no-wrap
7381 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7382 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7383
7384 #. type: Plain text
7385 #: build/C/man2/ptrace.2:349
7386 #, fuzzy
7387 #| msgid ""
7388 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7389 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7390 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7391 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7392 msgid ""
7393 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7394 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7395 "by the tracer will return a I<status> value such that"
7396 msgstr ""
7397 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7398 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7399 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7400 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7401
7402 #. type: Plain text
7403 #: build/C/man2/ptrace.2:352
7404 #, no-wrap
7405 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7406 msgstr ""
7407
7408 #. type: Plain text
7409 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7410 #: build/C/man2/ptrace.2:465
7411 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7412 msgstr ""
7413
7414 #. type: Plain text
7415 #: build/C/man2/ptrace.2:377
7416 #, fuzzy
7417 #| msgid ""
7418 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7419 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7420 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7421 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7422 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7423 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7424 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7425 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7426 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7427 msgid ""
7428 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7429 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7430 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7431 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7432 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7433 msgstr ""
7434 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7435 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7436 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7437 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7438 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7439 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7440 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7441 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7442 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7443
7444 #. type: TP
7445 #: build/C/man2/ptrace.2:377
7446 #, no-wrap
7447 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7448 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7449
7450 #. type: Plain text
7451 #: build/C/man2/ptrace.2:386
7452 msgid ""
7453 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7454 "will return a I<status> value such that"
7455 msgstr ""
7456
7457 #. type: Plain text
7458 #: build/C/man2/ptrace.2:389
7459 #, no-wrap
7460 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7461 msgstr ""
7462
7463 #. type: Plain text
7464 #: build/C/man2/ptrace.2:395
7465 msgid ""
7466 "If the execing thread is not a thread group leader, the thread ID is reset "
7467 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7468 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7469 msgstr ""
7470
7471 #. type: TP
7472 #: build/C/man2/ptrace.2:395
7473 #, no-wrap
7474 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7475 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7476
7477 #. type: Plain text
7478 #: build/C/man2/ptrace.2:403
7479 msgid ""
7480 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7481 "I<status> value such that"
7482 msgstr ""
7483
7484 #. type: Plain text
7485 #: build/C/man2/ptrace.2:406
7486 #, no-wrap
7487 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7488 msgstr ""
7489
7490 #. type: Plain text
7491 #: build/C/man2/ptrace.2:410
7492 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7493 msgstr ""
7494
7495 #. type: Plain text
7496 #: build/C/man2/ptrace.2:418
7497 #, fuzzy
7498 #| msgid ""
7499 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7500 #| "8>.  The child's exit status can be retrieved with "
7501 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7502 #| "when registers are still available, allowing the tracer to see where the "
7503 #| "exit occurred, whereas the normal exit notification is done after the "
7504 #| "process is finished exiting.  Even though context is available, the "
7505 #| "tracer cannot prevent the exit from happening at this point."
7506 msgid ""
7507 "The tracee is stopped early during process exit, when registers are still "
7508 "available, allowing the tracer to see where the exit occurred, whereas the "
7509 "normal exit notification is done after the process is finished exiting.  "
7510 "Even though context is available, the tracer cannot prevent the exit from "
7511 "happening at this point."
7512 msgstr ""
7513 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7514 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7515 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7516 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7517 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7518 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7519 "できない。"
7520
7521 #. type: TP
7522 #: build/C/man2/ptrace.2:418
7523 #, no-wrap
7524 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7525 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7526
7527 #. type: Plain text
7528 #: build/C/man2/ptrace.2:430
7529 #, fuzzy
7530 #| msgid ""
7531 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7532 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7533 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7534 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7535 msgid ""
7536 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7537 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7538 "by the tracer will return a I<status> value such that"
7539 msgstr ""
7540 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7541 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7542 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7543 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7544
7545 #. type: Plain text
7546 #: build/C/man2/ptrace.2:433
7547 #, no-wrap
7548 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7549 msgstr ""
7550
7551 #. type: TP
7552 #: build/C/man2/ptrace.2:437
7553 #, no-wrap
7554 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7555 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7556
7557 #. type: Plain text
7558 #: build/C/man2/ptrace.2:446
7559 #, fuzzy
7560 #| msgid ""
7561 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7562 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7563 #| "the difference between normal traps and those caused by a syscall.  "
7564 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7565 msgid ""
7566 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7567 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7568 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7569 "may not work on all architectures.)"
7570 msgstr ""
7571 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7572 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7573 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7574 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7575
7576 #. type: TP
7577 #: build/C/man2/ptrace.2:446
7578 #, no-wrap
7579 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7580 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7581
7582 #. type: Plain text
7583 #: build/C/man2/ptrace.2:458
7584 #, fuzzy
7585 #| msgid ""
7586 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7587 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7588 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7589 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7590 msgid ""
7591 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7592 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7593 "by the tracer will return a I<status> value such that"
7594 msgstr ""
7595 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7596 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7597 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7598 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7599
7600 #. type: Plain text
7601 #: build/C/man2/ptrace.2:461
7602 #, no-wrap
7603 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7604 msgstr ""
7605
7606 #. type: TP
7607 #: build/C/man2/ptrace.2:465
7608 #, no-wrap
7609 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7610 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7611
7612 #. type: Plain text
7613 #: build/C/man2/ptrace.2:474
7614 msgid ""
7615 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7616 "by the tracer will return a I<status> value such that"
7617 msgstr ""
7618
7619 #. type: Plain text
7620 #: build/C/man2/ptrace.2:477
7621 #, no-wrap
7622 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7623 msgstr ""
7624
7625 #. type: Plain text
7626 #: build/C/man2/ptrace.2:481
7627 msgid ""
7628 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7629 "B<PTRACE_GETEVENTMSG>."
7630 msgstr ""
7631
7632 #. type: TP
7633 #: build/C/man2/ptrace.2:482
7634 #, no-wrap
7635 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7636 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7637
7638 #. type: Plain text
7639 #: build/C/man2/ptrace.2:502
7640 #, fuzzy
7641 #| msgid ""
7642 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7643 #| "just happened, placing it in the location I<data> in the parent.  For "
7644 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7645 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7646 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7647 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7648 #| "is ignored.)"
7649 msgid ""
7650 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7651 "just happened, placing it at the address I<data> in the tracer.  For "
7652 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7653 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7654 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7655 "ignored.)"
7656 msgstr ""
7657 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7658 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7659 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7660 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7661 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7662 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7663
7664 #. type: TP
7665 #: build/C/man2/ptrace.2:502
7666 #, no-wrap
7667 msgid "B<PTRACE_CONT>"
7668 msgstr "B<PTRACE_CONT>"
7669
7670 #. type: Plain text
7671 #: build/C/man2/ptrace.2:514
7672 #, fuzzy
7673 #| msgid ""
7674 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7675 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7676 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7677 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7678 #| "is ignored.)"
7679 msgid ""
7680 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7681 "interpreted as the number of a signal to be delivered to the tracee; "
7682 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7683 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7684 "is ignored.)"
7685 msgstr ""
7686 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7687 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7688 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7689 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7690 "は無視される。)"
7691
7692 #. type: TP
7693 #: build/C/man2/ptrace.2:514
7694 #, no-wrap
7695 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7696 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7697
7698 #. type: Plain text
7699 #: build/C/man2/ptrace.2:538
7700 #, fuzzy
7701 #| msgid ""
7702 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7703 #| "child to be stopped at the next entry to or exit from a system call, or "
7704 #| "after execution of a single instruction, respectively.  (The child will "
7705 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7706 #| "perspective, the child will appear to have been stopped by receipt of a "
7707 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7708 #| "inspect the arguments to the system call at the first stop, then do "
7709 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7710 #| "at the second stop.  The I<data> argument is treated as for "
7711 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7712 msgid ""
7713 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7714 "to be stopped at the next entry to or exit from a system call, or after "
7715 "execution of a single instruction, respectively.  (The tracee will also, as "
7716 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7717 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7718 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7719 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7720 "inspect the return value of the system call at the second stop.  The I<data> "
7721 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7722 msgstr ""
7723 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7724 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7725 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7726 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7727 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7728 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7729 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7730 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7731 "同じ様に解釈される。 (I<addr> は無視される。)"
7732
7733 #. type: TP
7734 #: build/C/man2/ptrace.2:538
7735 #, no-wrap
7736 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7737 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7738
7739 #.  As at 3.7
7740 #. type: Plain text
7741 #: build/C/man2/ptrace.2:559
7742 #, fuzzy
7743 #| msgid ""
7744 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7745 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7746 #| "but also singlestep if not a syscall.  This call is used by programs like "
7747 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7748 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7749 #| "not supported on all architectures.)"
7750 msgid ""
7751 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7752 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7753 "but also singlestep if not a system call.  This call is used by programs "
7754 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7755 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7756 "is ignored.  These requests are currently supported only on x86."
7757 msgstr ""
7758 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7759 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7760 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7761 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7762 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7763 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7764 "ポートされているわけではない。)"
7765
7766 #. type: TP
7767 #: build/C/man2/ptrace.2:559
7768 #, fuzzy, no-wrap
7769 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7770 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7771 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7772
7773 #. type: Plain text
7774 #: build/C/man2/ptrace.2:570
7775 msgid ""
7776 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7777 "state of the tracee is similar to a process which has been stopped by a "
7778 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7779 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
7780 "by B<PTRACE_SEIZE>."
7781 msgstr ""
7782
7783 #. type: TP
7784 #: build/C/man2/ptrace.2:570
7785 #, no-wrap
7786 msgid "B<PTRACE_KILL>"
7787 msgstr "B<PTRACE_KILL>"
7788
7789 #. type: Plain text
7790 #: build/C/man2/ptrace.2:579
7791 #, fuzzy
7792 #| msgid ""
7793 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7794 #| "ignored.)"
7795 msgid ""
7796 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7797 "ignored.)"
7798 msgstr ""
7799 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7800
7801 #.  [Note from Denys Vlasenko:
7802 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7803 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7804 #. type: Plain text
7805 #: build/C/man2/ptrace.2:598
7806 msgid ""
7807 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7808 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7809 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7810 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7811 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7812 msgstr ""
7813
7814 #. type: TP
7815 #: build/C/man2/ptrace.2:598
7816 #, fuzzy, no-wrap
7817 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7818 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7819 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7820
7821 #. type: Plain text
7822 #: build/C/man2/ptrace.2:612
7823 msgid ""
7824 "Stop a tracee.  If the tracee is running, it will stop with "
7825 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7826 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7827 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7828 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7829 msgstr ""
7830
7831 #. type: TP
7832 #: build/C/man2/ptrace.2:612
7833 #, no-wrap
7834 msgid "B<PTRACE_ATTACH>"
7835 msgstr "B<PTRACE_ATTACH>"
7836
7837 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7838 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7839 #.          Basically, it's not true for any Linux in practical use.
7840 #.  ; the behavior of the tracee is as if it had done a
7841 #.  .BR PTRACE_TRACEME .
7842 #.  The calling process actually becomes the parent of the tracee
7843 #.  process for most purposes (e.g., it will receive
7844 #.  notification of tracee events and appears in
7845 #.  .BR ps (1)
7846 #.  output as the tracee's parent), but a
7847 #.  .BR getppid (2)
7848 #.  by the tracee will still return the PID of the original parent.
7849 #. type: Plain text
7850 #: build/C/man2/ptrace.2:640
7851 msgid ""
7852 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7853 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7854 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7855 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7856 "additional information.  (I<addr> and I<data> are ignored.)"
7857 msgstr ""
7858
7859 #. type: TP
7860 #: build/C/man2/ptrace.2:640
7861 #, fuzzy, no-wrap
7862 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7863 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7864 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7865
7866 #. type: Plain text
7867 #: build/C/man2/ptrace.2:660
7868 msgid ""
7869 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7870 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7871 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7872 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7873 "mask of ptrace options to activate immediately."
7874 msgstr ""
7875
7876 #. type: TP
7877 #: build/C/man2/ptrace.2:660
7878 #, no-wrap
7879 msgid "B<PTRACE_DETACH>"
7880 msgstr "B<PTRACE_DETACH>"
7881
7882 #. type: Plain text
7883 #: build/C/man2/ptrace.2:669
7884 #, fuzzy
7885 #| msgid ""
7886 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7887 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7888 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7889 #| "a traced child can be detached in this way regardless of which method was "
7890 #| "used to initiate tracing.  (I<addr> is ignored.)"
7891 msgid ""
7892 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7893 "Under Linux, a tracee can be detached in this way regardless of which method "
7894 "was used to initiate tracing.  (I<addr> is ignored.)"
7895 msgstr ""
7896 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7897 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7898 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7899 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7900 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7901
7902 #. type: SS
7903 #: build/C/man2/ptrace.2:669
7904 #, no-wrap
7905 msgid "Death under ptrace"
7906 msgstr ""
7907
7908 #. type: Plain text
7909 #: build/C/man2/ptrace.2:678
7910 msgid ""
7911 "When a (possibly multithreaded) process receives a killing signal (one whose "
7912 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7913 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7914 "Notification of this event is delivered via B<waitpid>(2)."
7915 msgstr ""
7916
7917 #. type: Plain text
7918 #: build/C/man2/ptrace.2:687
7919 msgid ""
7920 "Note that the killing signal will first cause signal-delivery-stop (on one "
7921 "tracee only), and only after it is injected by the tracer (or after it was "
7922 "dispatched to a thread which isn't traced), will death from the signal "
7923 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7924 "delivery-stop\" is explained below.)"
7925 msgstr ""
7926
7927 #. type: Plain text
7928 #: build/C/man2/ptrace.2:699
7929 msgid ""
7930 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7931 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7932 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7933 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7934 "of the process are ptraced."
7935 msgstr ""
7936
7937 #. type: Plain text
7938 #: build/C/man2/ptrace.2:704
7939 msgid ""
7940 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7941 "Other threads are not affected."
7942 msgstr ""
7943
7944 #. type: Plain text
7945 #: build/C/man2/ptrace.2:708
7946 msgid ""
7947 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7948 "reports its death to its tracer."
7949 msgstr ""
7950
7951 #. type: Plain text
7952 #: build/C/man2/ptrace.2:722
7953 msgid ""
7954 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7955 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7956 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7957 "on B<execve>(2)  in a multithreaded process."
7958 msgstr ""
7959
7960 #. type: Plain text
7961 #: build/C/man2/ptrace.2:747
7962 msgid ""
7963 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7964 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7965 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7966 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7967 "exists but is not ptrace-stopped (for commands which require a stopped "
7968 "tracee), or if it is not traced by the process which issued the ptrace "
7969 "call.  The tracer needs to keep track of the stopped/running state of the "
7970 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7971 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7972 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7973 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7974 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7975 "yet fully dead\", but already refusing ptrace requests."
7976 msgstr ""
7977
7978 #. type: Plain text
7979 #: build/C/man2/ptrace.2:761
7980 msgid ""
7981 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7982 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7983 "does not occur.  For example, if a thread other than thread group leader "
7984 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7985 "any subsequent ptrace stops will be reported under the thread group leader's "
7986 "PID."
7987 msgstr ""
7988
7989 #. type: SS
7990 #: build/C/man2/ptrace.2:761
7991 #, no-wrap
7992 msgid "Stopped states"
7993 msgstr ""
7994
7995 #. type: Plain text
7996 #: build/C/man2/ptrace.2:763
7997 msgid "A tracee can be in two states: running or stopped."
7998 msgstr ""
7999
8000 #. type: Plain text
8001 #: build/C/man2/ptrace.2:767
8002 msgid ""
8003 "There are many kinds of states when the tracee is stopped, and in ptrace "
8004 "discussions they are often conflated.  Therefore, it is important to use "
8005 "precise terms."
8006 msgstr ""
8007
8008 #. type: Plain text
8009 #: build/C/man2/ptrace.2:778
8010 msgid ""
8011 "In this manual page, any stopped state in which the tracee is ready to "
8012 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
8013 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
8014 "I<syscall-stop>, and so on.  These stopped states are described in detail "
8015 "below."
8016 msgstr ""
8017
8018 #. type: Plain text
8019 #: build/C/man2/ptrace.2:783
8020 msgid ""
8021 "When the running tracee enters ptrace-stop, it notifies its tracer using "
8022 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
8023 "manual page assumes that the tracer waits with:"
8024 msgstr ""
8025
8026 #. type: Plain text
8027 #: build/C/man2/ptrace.2:785
8028 #, no-wrap
8029 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8030 msgstr ""
8031
8032 #.  Denys Vlasenko:
8033 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8034 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8035 #.      rules different if user wants to use waitid? Will waitid require
8036 #.      WEXITED?
8037 #. type: Plain text
8038 #: build/C/man2/ptrace.2:797
8039 msgid ""
8040 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8041 "and I<WIFSTOPPED(status)> true."
8042 msgstr ""
8043
8044 #. type: Plain text
8045 #: build/C/man2/ptrace.2:805
8046 msgid ""
8047 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8048 "but implies their functionality."
8049 msgstr ""
8050
8051 #. type: Plain text
8052 #: build/C/man2/ptrace.2:812
8053 msgid ""
8054 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8055 "recommended: the \"continued\" state is per-process and consuming it can "
8056 "confuse the real parent of the tracee."
8057 msgstr ""
8058
8059 #. type: Plain text
8060 #: build/C/man2/ptrace.2:820
8061 msgid ""
8062 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8063 "results available yet\")  even if the tracer knows there should be a "
8064 "notification.  Example:"
8065 msgstr ""
8066
8067 #. type: Plain text
8068 #: build/C/man2/ptrace.2:829
8069 #, no-wrap
8070 msgid ""
8071 "    errno = 0;\n"
8072 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8073 "    if (errno == ESRCH) {\n"
8074 "        /* tracee is dead */\n"
8075 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8076 "        /* r can still be 0 here! */\n"
8077 "    }\n"
8078 msgstr ""
8079
8080 #. type: Plain text
8081 #: build/C/man2/ptrace.2:852
8082 msgid ""
8083 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8084 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8085 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8086 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8087 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8088 "> macro can't be used to perform this examination, because it returns the "
8089 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8090 msgstr ""
8091
8092 #. type: SS
8093 #: build/C/man2/ptrace.2:852
8094 #, no-wrap
8095 msgid "Signal-delivery-stop"
8096 msgstr ""
8097
8098 #. type: Plain text
8099 #: build/C/man2/ptrace.2:872
8100 msgid ""
8101 "When a (possibly multithreaded) process receives any signal except "
8102 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8103 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8104 "can be explicitly selected by the caller.)  If the selected thread is "
8105 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8106 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8107 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8108 "the next ptrace restart request.  This second step of signal delivery is "
8109 "called I<signal injection> in this manual page.  Note that if the signal is "
8110 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8111 "with the usual exception that B<SIGSTOP> can't be blocked."
8112 msgstr ""
8113
8114 #. type: Plain text
8115 #: build/C/man2/ptrace.2:886
8116 msgid ""
8117 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8118 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8119 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8120 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8121 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8122 "group-stop; see below."
8123 msgstr ""
8124
8125 #. type: SS
8126 #: build/C/man2/ptrace.2:886
8127 #, no-wrap
8128 msgid "Signal injection and suppression"
8129 msgstr ""
8130
8131 #. type: Plain text
8132 #: build/C/man2/ptrace.2:889
8133 msgid ""
8134 "After signal-delivery-stop is observed by the tracer, the tracer should "
8135 "restart the tracee with the call"
8136 msgstr ""
8137
8138 #. type: Plain text
8139 #: build/C/man2/ptrace.2:891
8140 #, no-wrap
8141 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8142 msgstr ""
8143
8144 #. type: Plain text
8145 #: build/C/man2/ptrace.2:904
8146 msgid ""
8147 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8148 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8149 "delivered.  This operation is called I<signal injection> in this manual "
8150 "page, to distinguish it from signal-delivery-stop."
8151 msgstr ""
8152
8153 #. type: Plain text
8154 #: build/C/man2/ptrace.2:910
8155 msgid ""
8156 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8157 "tracer can cause a different signal to be injected."
8158 msgstr ""
8159
8160 #. type: Plain text
8161 #: build/C/man2/ptrace.2:926
8162 msgid ""
8163 "Note that a suppressed signal still causes system calls to return "
8164 "prematurely.  In this case system calls will be restarted: the tracer will "
8165 "observe the tracee to reexecute the interrupted system call (or "
8166 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8167 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8168 "calls (such as B<poll>(2))  which are not restartable after signal are "
8169 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8170 "some syscalls to fail with B<EINTR> even though no observable signal is "
8171 "injected to the tracee."
8172 msgstr ""
8173
8174 #. type: Plain text
8175 #: build/C/man2/ptrace.2:937
8176 msgid ""
8177 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8178 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8179 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8180 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8181 "instead."
8182 msgstr ""
8183
8184 #. type: Plain text
8185 #: build/C/man2/ptrace.2:944
8186 msgid ""
8187 "The fact that signal injection requests may be ignored when restarting the "
8188 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8189 "confusion among ptrace users.  One typical scenario is that the tracer "
8190 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8191 "tracee with"
8192 msgstr ""
8193
8194 #. type: Plain text
8195 #: build/C/man2/ptrace.2:946
8196 #, no-wrap
8197 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8198 msgstr ""
8199
8200 #. type: Plain text
8201 #: build/C/man2/ptrace.2:952
8202 msgid ""
8203 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8204 "the tracee continues to run."
8205 msgstr ""
8206
8207 #. type: Plain text
8208 #: build/C/man2/ptrace.2:972
8209 msgid ""
8210 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8211 "group-stopped process.  This side effect happens before signal-delivery-"
8212 "stop.  The tracer can't suppress this side effect (it can only suppress "
8213 "signal injection, which only causes the B<SIGCONT> handler to not be "
8214 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8215 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8216 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8217 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8218 "by the tracee after it was sent."
8219 msgstr ""
8220
8221 #. type: Plain text
8222 #: build/C/man2/ptrace.2:976
8223 msgid ""
8224 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8225 "side effect happens after signal injection, and therefore can be suppressed "
8226 "by the tracer."
8227 msgstr ""
8228
8229 #
8230 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8231 #.  there is:
8232 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8233 #.              if (signr == SIGSTOP)
8234 #.                      continue;
8235 #. type: Plain text
8236 #: build/C/man2/ptrace.2:986
8237 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8238 msgstr ""
8239
8240 #. type: Plain text
8241 #: build/C/man2/ptrace.2:1003
8242 msgid ""
8243 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8244 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8245 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8246 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8247 "match, otherwise the result is undefined."
8248 msgstr ""
8249
8250 #. type: SS
8251 #: build/C/man2/ptrace.2:1003
8252 #, no-wrap
8253 msgid "Group-stop"
8254 msgstr ""
8255
8256 #. type: Plain text
8257 #: build/C/man2/ptrace.2:1015
8258 msgid ""
8259 "When a (possibly multithreaded) process receives a stopping signal, all "
8260 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8261 "that the stopping signal will first cause signal-delivery-stop (on one "
8262 "tracee only), and only after it is injected by the tracer (or after it was "
8263 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8264 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8265 "reports its group-stop separately to the corresponding tracer."
8266 msgstr ""
8267
8268 #. type: Plain text
8269 #: build/C/man2/ptrace.2:1024
8270 msgid ""
8271 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8272 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8273 "(status)>.  The same result is returned by some other classes of ptrace-"
8274 "stops, therefore the recommended practice is to perform the call"
8275 msgstr ""
8276
8277 #. type: Plain text
8278 #: build/C/man2/ptrace.2:1026
8279 #, no-wrap
8280 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8281 msgstr ""
8282
8283 #. type: Plain text
8284 #: build/C/man2/ptrace.2:1047
8285 msgid ""
8286 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8287 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8288 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8289 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8290 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8291 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8292 "the tracee.)"
8293 msgstr ""
8294
8295 #. type: Plain text
8296 #: build/C/man2/ptrace.2:1056
8297 msgid ""
8298 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8299 "it restarts or kills it, the tracee will not run, and will not send "
8300 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8301 "enters into another B<waitpid>(2)  call."
8302 msgstr ""
8303
8304 #. type: Plain text
8305 #: build/C/man2/ptrace.2:1070
8306 msgid ""
8307 "The kernel behavior described in the previous paragraph causes a problem "
8308 "with transparent handling of stopping signals.  If the tracer restarts the "
8309 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8310 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8311 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8312 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8313 "signals to have no effect on the tracee."
8314 msgstr ""
8315
8316 #. type: Plain text
8317 #: build/C/man2/ptrace.2:1081
8318 msgid ""
8319 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8320 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8321 "in a way where it does not execute, but waits for a new event which it can "
8322 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8323 msgstr ""
8324
8325 #. type: SS
8326 #: build/C/man2/ptrace.2:1081
8327 #, no-wrap
8328 msgid "PTRACE_EVENT stops"
8329 msgstr ""
8330
8331 #. type: Plain text
8332 #: build/C/man2/ptrace.2:1087
8333 msgid ""
8334 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8335 "stops called B<PTRACE_EVENT> stops."
8336 msgstr ""
8337
8338 #. type: Plain text
8339 #: build/C/man2/ptrace.2:1101
8340 msgid ""
8341 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8342 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8343 "additional bit is set in the higher byte of the status word: the value "
8344 "I<statusE<gt>E<gt>8> will be"
8345 msgstr ""
8346
8347 #. type: Plain text
8348 #: build/C/man2/ptrace.2:1103
8349 #, no-wrap
8350 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8351 msgstr ""
8352
8353 #. type: Plain text
8354 #: build/C/man2/ptrace.2:1105
8355 msgid "The following events exist:"
8356 msgstr ""
8357
8358 #. type: TP
8359 #: build/C/man2/ptrace.2:1105
8360 #, no-wrap
8361 msgid "B<PTRACE_EVENT_VFORK>"
8362 msgstr "B<PTRACE_EVENT_VFORK>"
8363
8364 #. type: Plain text
8365 #: build/C/man2/ptrace.2:1118
8366 msgid ""
8367 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8368 "flag.  When the tracee is continued after this stop, it will wait for child "
8369 "to exit/exec before continuing its execution (in other words, the usual "
8370 "behavior on B<vfork>(2))."
8371 msgstr ""
8372
8373 #. type: TP
8374 #: build/C/man2/ptrace.2:1118
8375 #, no-wrap
8376 msgid "B<PTRACE_EVENT_FORK>"
8377 msgstr "B<PTRACE_EVENT_FORK>"
8378
8379 #. type: Plain text
8380 #: build/C/man2/ptrace.2:1126
8381 msgid ""
8382 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8383 "to B<SIGCHLD>."
8384 msgstr ""
8385
8386 #. type: TP
8387 #: build/C/man2/ptrace.2:1126
8388 #, no-wrap
8389 msgid "B<PTRACE_EVENT_CLONE>"
8390 msgstr "B<PTRACE_EVENT_CLONE>"
8391
8392 #. type: Plain text
8393 #: build/C/man2/ptrace.2:1130
8394 msgid "Stop before return from B<clone>(2)."
8395 msgstr ""
8396
8397 #. type: TP
8398 #: build/C/man2/ptrace.2:1130
8399 #, no-wrap
8400 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8401 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8402
8403 #. type: Plain text
8404 #: build/C/man2/ptrace.2:1140
8405 msgid ""
8406 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8407 "flag, but after the child unblocked this tracee by exiting or execing."
8408 msgstr ""
8409
8410 #. type: Plain text
8411 #: build/C/man2/ptrace.2:1146
8412 msgid ""
8413 "For all four stops described above, the stop occurs in the parent (i.e., the "
8414 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8415 "to retrieve the new thread's ID."
8416 msgstr ""
8417
8418 #. type: TP
8419 #: build/C/man2/ptrace.2:1146
8420 #, no-wrap
8421 msgid "B<PTRACE_EVENT_EXEC>"
8422 msgstr "B<PTRACE_EVENT_EXEC>"
8423
8424 #. type: Plain text
8425 #: build/C/man2/ptrace.2:1153
8426 msgid ""
8427 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8428 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8429 msgstr ""
8430
8431 #. type: TP
8432 #: build/C/man2/ptrace.2:1153
8433 #, no-wrap
8434 msgid "B<PTRACE_EVENT_EXIT>"
8435 msgstr "B<PTRACE_EVENT_EXIT>"
8436
8437 #. type: Plain text
8438 #: build/C/man2/ptrace.2:1169
8439 msgid ""
8440 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8441 "exit caused by B<execve>(2)  in a multithreaded process.  "
8442 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8443 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8444 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8445 msgstr ""
8446
8447 #. type: TP
8448 #: build/C/man2/ptrace.2:1169
8449 #, fuzzy, no-wrap
8450 #| msgid "B<PTRACE_EVENT_FORK>"
8451 msgid "B<PTRACE_EVENT_STOP>"
8452 msgstr "B<PTRACE_EVENT_FORK>"
8453
8454 #. type: Plain text
8455 #: build/C/man2/ptrace.2:1174
8456 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8457 msgstr ""
8458
8459 #. type: Plain text
8460 #: build/C/man2/ptrace.2:1186
8461 msgid ""
8462 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8463 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8464 msgstr ""
8465
8466 #. type: SS
8467 #: build/C/man2/ptrace.2:1186
8468 #, no-wrap
8469 msgid "Syscall-stops"
8470 msgstr ""
8471
8472 #. type: Plain text
8473 #: build/C/man2/ptrace.2:1199
8474 msgid ""
8475 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8476 "enter-stop just prior to entering any system call.  If the tracer restarts "
8477 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8478 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8479 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8480 "exit-stop; it happens I<after> syscall-exit-stop.)"
8481 msgstr ""
8482
8483 #. type: Plain text
8484 #: build/C/man2/ptrace.2:1213
8485 msgid ""
8486 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8487 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8488 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8489 "(2)  happened in another thread, and that thread is not traced by the same "
8490 "tracer; this situation is discussed later)."
8491 msgstr ""
8492
8493 #. type: Plain text
8494 #: build/C/man2/ptrace.2:1228
8495 msgid ""
8496 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8497 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8498 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8499 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8500 "0x80)>."
8501 msgstr ""
8502
8503 #. type: Plain text
8504 #: build/C/man2/ptrace.2:1234
8505 msgid ""
8506 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8507 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8508 msgstr ""
8509
8510 #. type: TP
8511 #: build/C/man2/ptrace.2:1234
8512 #, no-wrap
8513 msgid "I<si_code> E<lt>= 0"
8514 msgstr ""
8515
8516 #. type: Plain text
8517 #: build/C/man2/ptrace.2:1246
8518 msgid ""
8519 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8520 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8521 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8522 "asynchronous I/O request."
8523 msgstr ""
8524
8525 #. type: TP
8526 #: build/C/man2/ptrace.2:1246
8527 #, no-wrap
8528 msgid "I<si_code> == SI_KERNEL (0x80)"
8529 msgstr ""
8530
8531 #. type: Plain text
8532 #: build/C/man2/ptrace.2:1250
8533 msgid "B<SIGTRAP> was sent by the kernel."
8534 msgstr ""
8535
8536 #. type: TP
8537 #: build/C/man2/ptrace.2:1250
8538 #, no-wrap
8539 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8540 msgstr ""
8541
8542 #. type: Plain text
8543 #: build/C/man2/ptrace.2:1253
8544 msgid "This is a syscall-stop."
8545 msgstr ""
8546
8547 #. type: Plain text
8548 #: build/C/man2/ptrace.2:1258
8549 msgid ""
8550 "However, syscall-stops happen very often (twice per system call), and "
8551 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8552 "expensive."
8553 msgstr ""
8554
8555 #. type: Plain text
8556 #: build/C/man2/ptrace.2:1281
8557 msgid ""
8558 "Some architectures allow the cases to be distinguished by examining "
8559 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8560 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8561 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8562 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8563 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8564 "and can be detected this way.  But such detection is fragile and is best "
8565 "avoided."
8566 msgstr ""
8567
8568 #. type: Plain text
8569 #: build/C/man2/ptrace.2:1287
8570 msgid ""
8571 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8572 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8573 "reliable and does not incur a performance penalty."
8574 msgstr ""
8575
8576 #. type: Plain text
8577 #: build/C/man2/ptrace.2:1298
8578 msgid ""
8579 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8580 "other by the tracer.  The tracer needs to keep track of the sequence of "
8581 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8582 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8583 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8584 "kinds of ptrace-stop can occur in between."
8585 msgstr ""
8586
8587 #. type: Plain text
8588 #: build/C/man2/ptrace.2:1303
8589 msgid ""
8590 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8591 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8592 msgstr ""
8593
8594 #. type: Plain text
8595 #: build/C/man2/ptrace.2:1315
8596 msgid ""
8597 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8598 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8599 msgstr ""
8600
8601 #. type: SS
8602 #: build/C/man2/ptrace.2:1315
8603 #, no-wrap
8604 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8605 msgstr ""
8606
8607 #
8608 #.  FIXME
8609 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8610 #.  PTRACE_SYSEMU_SINGLESTEP
8611 #. type: Plain text
8612 #: build/C/man2/ptrace.2:1321
8613 msgid "[Details of these kinds of stops are yet to be documented.]"
8614 msgstr ""
8615
8616 #. type: SS
8617 #: build/C/man2/ptrace.2:1321
8618 #, no-wrap
8619 msgid "Informational and restarting ptrace commands"
8620 msgstr ""
8621
8622 #. type: Plain text
8623 #: build/C/man2/ptrace.2:1331
8624 msgid ""
8625 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8626 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8627 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8628 msgstr ""
8629
8630 #. type: Plain text
8631 #: build/C/man2/ptrace.2:1336
8632 msgid ""
8633 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8634 "tracee using informational commands.  These commands leave the tracee in "
8635 "ptrace-stopped state:"
8636 msgstr ""
8637
8638 #. type: Plain text
8639 #: build/C/man2/ptrace.2:1348
8640 #, no-wrap
8641 msgid ""
8642 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8643 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8644 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8645 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8646 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8647 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8648 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8649 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8650 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8651 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8652 msgstr ""
8653
8654 #. type: Plain text
8655 #: build/C/man2/ptrace.2:1360
8656 msgid ""
8657 "Note that some errors are not reported.  For example, setting signal "
8658 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8659 "call may succeed (return 0 and not set I<errno>); querying "
8660 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8661 "ptrace-stop is not documented as returning a meaningful event message."
8662 msgstr ""
8663
8664 #. type: Plain text
8665 #: build/C/man2/ptrace.2:1362
8666 msgid "The call"
8667 msgstr ""
8668
8669 #. type: Plain text
8670 #: build/C/man2/ptrace.2:1364
8671 #, no-wrap
8672 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8673 msgstr ""
8674
8675 #. type: Plain text
8676 #: build/C/man2/ptrace.2:1373
8677 msgid ""
8678 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8679 "inherited by new tracees created and \"auto-attached\" via active "
8680 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8681 "options."
8682 msgstr ""
8683
8684 #. type: Plain text
8685 #: build/C/man2/ptrace.2:1376
8686 msgid ""
8687 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8688 "the form:"
8689 msgstr ""
8690
8691 #. type: Plain text
8692 #: build/C/man2/ptrace.2:1378
8693 #, no-wrap
8694 msgid "    ptrace(cmd, pid, 0, sig);\n"
8695 msgstr ""
8696
8697 #. type: Plain text
8698 #: build/C/man2/ptrace.2:1399
8699 msgid ""
8700 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8701 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8702 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8703 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8704 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8705 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8706 msgstr ""
8707
8708 #. type: SS
8709 #: build/C/man2/ptrace.2:1399
8710 #, no-wrap
8711 msgid "Attaching and detaching"
8712 msgstr ""
8713
8714 #. type: Plain text
8715 #: build/C/man2/ptrace.2:1401
8716 msgid "A thread can be attached to the tracer using the call"
8717 msgstr ""
8718
8719 #. type: Plain text
8720 #: build/C/man2/ptrace.2:1403
8721 #, no-wrap
8722 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8723 msgstr ""
8724
8725 #. type: Plain text
8726 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1895
8727 msgid "or"
8728 msgstr ""
8729
8730 #. type: Plain text
8731 #: build/C/man2/ptrace.2:1407
8732 #, no-wrap
8733 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8734 msgstr ""
8735
8736 #
8737 #.  FIXME: Describe how to attach to a thread which is already
8738 #.         group-stopped.
8739 #. type: Plain text
8740 #: build/C/man2/ptrace.2:1432
8741 msgid ""
8742 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8743 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8744 "signals are concurrently sent to this thread during attach, the tracer may "
8745 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8746 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8747 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8748 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8749 "B<SIGSTOP> may be lost."
8750 msgstr ""
8751
8752 #. type: Plain text
8753 #: build/C/man2/ptrace.2:1439
8754 msgid ""
8755 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8756 "may cause a stray B<EINTR> return from the currently executing system call "
8757 "in the tracee, as described in the \"Signal injection and suppression\" "
8758 "section."
8759 msgstr ""
8760
8761 #. type: Plain text
8762 #: build/C/man2/ptrace.2:1451
8763 msgid ""
8764 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8765 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
8766 "after attach (or at any other time) without sending it any signals, use "
8767 "B<PTRACE_INTERRUPT> command."
8768 msgstr ""
8769
8770 #. type: Plain text
8771 #: build/C/man2/ptrace.2:1453
8772 msgid "The request"
8773 msgstr ""
8774
8775 #. type: Plain text
8776 #: build/C/man2/ptrace.2:1455
8777 #, no-wrap
8778 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8779 msgstr ""
8780
8781 #. type: Plain text
8782 #: build/C/man2/ptrace.2:1461
8783 msgid ""
8784 "turns the calling thread into a tracee.  The thread continues to run "
8785 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8786 "B<PTRACE_TRACEME> with"
8787 msgstr ""
8788
8789 #. type: Plain text
8790 #: build/C/man2/ptrace.2:1463
8791 #, no-wrap
8792 msgid "    raise(SIGSTOP);\n"
8793 msgstr ""
8794
8795 #. type: Plain text
8796 #: build/C/man2/ptrace.2:1466
8797 msgid ""
8798 "and allow the parent (which is our tracer now) to observe our signal-"
8799 "delivery-stop."
8800 msgstr ""
8801
8802 #. type: Plain text
8803 #: build/C/man2/ptrace.2:1490
8804 msgid ""
8805 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8806 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8807 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8808 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8809 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8810 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8811 "them to enter signal-delivery-stop after they exit the system call which "
8812 "created them."
8813 msgstr ""
8814
8815 #. type: Plain text
8816 #: build/C/man2/ptrace.2:1492
8817 msgid "Detaching of the tracee is performed by:"
8818 msgstr ""
8819
8820 #. type: Plain text
8821 #: build/C/man2/ptrace.2:1494
8822 #, no-wrap
8823 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8824 msgstr ""
8825
8826 #. type: Plain text
8827 #: build/C/man2/ptrace.2:1502
8828 msgid ""
8829 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8830 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8831 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8832 msgstr ""
8833
8834 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8835 #.         doesn't run, but continues to wait for SIGCONT.
8836 #. type: Plain text
8837 #: build/C/man2/ptrace.2:1526
8838 msgid ""
8839 "If the tracee is running when the tracer wants to detach it, the usual "
8840 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8841 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8842 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8843 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8844 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8845 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8846 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8847 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8848 msgstr ""
8849
8850 #. type: Plain text
8851 #: build/C/man2/ptrace.2:1534
8852 msgid ""
8853 "If the tracer dies, all tracees are automatically detached and restarted, "
8854 "unless they were in group-stop.  Handling of restart from group-stop is "
8855 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8856 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8857 "stop, the pending signal is injected."
8858 msgstr ""
8859
8860 #. type: SS
8861 #: build/C/man2/ptrace.2:1534
8862 #, no-wrap
8863 msgid "execve(2) under ptrace"
8864 msgstr ""
8865
8866 #
8867 #.  clone(2) CLONE_THREAD says:
8868 #.      If  any  of the threads in a thread group performs an execve(2),
8869 #.      then all threads other than the thread group leader are terminated,
8870 #.      and the new program is executed in the thread group leader.
8871 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8872 #. type: Plain text
8873 #: build/C/man2/ptrace.2:1553
8874 msgid ""
8875 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8876 "destroys all other threads in the process, and resets the thread ID of the "
8877 "execing thread to the thread group ID (process ID).  (Or, to put things "
8878 "another way, when a multithreaded process does an B<execve>(2), at "
8879 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8880 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8881 "This resetting of the thread ID looks very confusing to tracers:"
8882 msgstr ""
8883
8884 #. type: Plain text
8885 #: build/C/man2/ptrace.2:1563
8886 msgid ""
8887 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8888 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8889 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8890 "exit code 0."
8891 msgstr ""
8892
8893 #. type: Plain text
8894 #: build/C/man2/ptrace.2:1571
8895 msgid ""
8896 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8897 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8898 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8899 "ID is reset to be the same as its process ID, which is the same as the "
8900 "thread group leader's thread ID."
8901 msgstr ""
8902
8903 #. type: Plain text
8904 #: build/C/man2/ptrace.2:1577
8905 msgid ""
8906 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8907 "option was turned on."
8908 msgstr ""
8909
8910 #. type: Plain text
8911 #: build/C/man2/ptrace.2:1598
8912 msgid ""
8913 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8914 "this time, it appears to the tracer that the dead thread leader \"reappears "
8915 "from nowhere\".  (Note: the thread group leader does not report death via "
8916 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8917 "eliminates the possibility that the tracer will see it dying and then "
8918 "reappearing.)  If the thread group leader was still alive, for the tracer "
8919 "this may look as if thread group leader returns from a different system call "
8920 "than it entered, or even \"returned from a system call even though it was "
8921 "not in any system call\".  If the thread group leader was not traced (or was "
8922 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8923 "if it has become a tracee of the tracer of the execing tracee."
8924 msgstr ""
8925
8926 #. type: Plain text
8927 #: build/C/man2/ptrace.2:1601
8928 msgid ""
8929 "All of the above effects are the artifacts of the thread ID change in the "
8930 "tracee."
8931 msgstr ""
8932
8933 #. type: Plain text
8934 #: build/C/man2/ptrace.2:1621
8935 msgid ""
8936 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8937 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8938 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8939 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8940 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8941 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8942 msgstr ""
8943
8944 #. type: Plain text
8945 #: build/C/man2/ptrace.2:1627
8946 msgid ""
8947 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8948 "guaranteed that except this tracee and the thread group leader, no other "
8949 "threads from the process are alive."
8950 msgstr ""
8951
8952 #. type: Plain text
8953 #: build/C/man2/ptrace.2:1635
8954 msgid ""
8955 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8956 "clean up all its internal data structures describing the threads of this "
8957 "process, and retain only one data structure\\(emone which describes the "
8958 "single still running tracee, with"
8959 msgstr ""
8960
8961 #. type: Plain text
8962 #: build/C/man2/ptrace.2:1637
8963 #, no-wrap
8964 msgid "    thread ID == thread group ID == process ID.\n"
8965 msgstr ""
8966
8967 #. type: Plain text
8968 #: build/C/man2/ptrace.2:1641
8969 msgid "Example: two threads call B<execve>(2)  at the same time:"
8970 msgstr ""
8971
8972 #. type: Plain text
8973 #: build/C/man2/ptrace.2:1652
8974 #, no-wrap
8975 msgid ""
8976 "*** we get syscall-enter-stop in thread 1: **\n"
8977 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8978 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8979 "*** we get syscall-enter-stop in thread 2: **\n"
8980 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8981 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8982 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8983 "*** we get syscall-exit-stop for PID0: **\n"
8984 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8985 msgstr ""
8986
8987 #. type: Plain text
8988 #: build/C/man2/ptrace.2:1675
8989 msgid ""
8990 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8991 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8992 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8993 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8994 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8995 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8996 "delivered (much) later."
8997 msgstr ""
8998
8999 #. type: Plain text
9000 #: build/C/man2/ptrace.2:1694
9001 msgid ""
9002 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
9003 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
9004 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
9005 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
9006 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
9007 "B<SIGTRAP> is the recommended approach."
9008 msgstr ""
9009
9010 #. type: SS
9011 #: build/C/man2/ptrace.2:1694
9012 #, no-wrap
9013 msgid "Real parent"
9014 msgstr ""
9015
9016 #. type: Plain text
9017 #: build/C/man2/ptrace.2:1701
9018 msgid ""
9019 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
9020 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
9021 "receiving several kinds of B<waitpid>(2)  notifications when the child "
9022 "process is traced by some other process."
9023 msgstr ""
9024
9025 #. type: Plain text
9026 #: build/C/man2/ptrace.2:1704
9027 msgid ""
9028 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9029 "exist; see BUGS below."
9030 msgstr ""
9031
9032 #. type: Plain text
9033 #: build/C/man2/ptrace.2:1706
9034 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9035 msgstr ""
9036
9037 #. type: Plain text
9038 #: build/C/man2/ptrace.2:1714
9039 msgid ""
9040 "exit/death by signal is reported first to the tracer, then, when the tracer "
9041 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9042 "only when the whole multithreaded process exits).  If the tracer and the "
9043 "real parent are the same process, the report is sent only once."
9044 msgstr ""
9045
9046 #. type: Plain text
9047 #: build/C/man2/ptrace.2:1728
9048 #, fuzzy
9049 #| msgid ""
9050 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9051 #| "other requests return zero.  On error, all requests return -1, and "
9052 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9053 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9054 #| "such requests to determine whether or not an error occurred."
9055 msgid ""
9056 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9057 "requests return zero.  On error, all requests return -1, and I<errno> is set "
9058 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
9059 "request may be -1, the caller must clear I<errno> before the call, and then "
9060 "check it afterward to determine whether or not an error occurred."
9061 msgstr ""
9062 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9063 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9064 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9065 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9066 "なければならない。"
9067
9068 #. type: Plain text
9069 #: build/C/man2/ptrace.2:1732
9070 msgid ""
9071 "(i386 only) There was an error with allocating or freeing a debug register."
9072 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9073
9074 #. type: Plain text
9075 #: build/C/man2/ptrace.2:1743
9076 #, fuzzy
9077 #| msgid ""
9078 #| "There was an attempt to read from or write to an invalid area in the "
9079 #| "parent's or child's memory, probably because the area wasn't mapped or "
9080 #| "accessible.  Unfortunately, under Linux, different variations of this "
9081 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9082 msgid ""
9083 "There was an attempt to read from or write to an invalid area in the "
9084 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9085 "accessible.  Unfortunately, under Linux, different variations of this fault "
9086 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9087 msgstr ""
9088 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9089 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9090 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9091 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9092
9093 #. type: Plain text
9094 #: build/C/man2/ptrace.2:1746
9095 msgid "An attempt was made to set an invalid option."
9096 msgstr "不正なオプションを設定しようとした。"
9097
9098 #. type: Plain text
9099 #: build/C/man2/ptrace.2:1753
9100 #, fuzzy
9101 #| msgid ""
9102 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9103 #| "invalid area in the parent's or child's memory, or there was a word-"
9104 #| "alignment violation, or an invalid signal was specified during a restart "
9105 #| "request."
9106 msgid ""
9107 "I<request> is invalid, or an attempt was made to read from or write to an "
9108 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9109 "alignment violation, or an invalid signal was specified during a restart "
9110 "request."
9111 msgstr ""
9112 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9113 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9114 "開の要求で不正なシグナルを指定した。"
9115
9116 #. type: Plain text
9117 #: build/C/man2/ptrace.2:1766
9118 #, fuzzy
9119 #| msgid ""
9120 #| "The specified process cannot be traced.  This could be because the parent "
9121 #| "has insufficient privileges (the required capability is "
9122 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9123 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9124 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9125 #| "being traced, or be B<init>(8)  (PID 1)."
9126 msgid ""
9127 "The specified process cannot be traced.  This could be because the tracer "
9128 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9129 "unprivileged processes cannot trace processes that they cannot send signals "
9130 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9131 "Alternatively, the process may already be being traced, or (on kernels "
9132 "before 2.6.26) be B<init>(8)  (PID 1)."
9133 msgstr ""
9134 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9135 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9136 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9137 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9138 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9139 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9140
9141 #. type: Plain text
9142 #: build/C/man2/ptrace.2:1771
9143 #, fuzzy
9144 #| msgid ""
9145 #| "The specified process does not exist, or is not currently being traced by "
9146 #| "the caller, or is not stopped (for requests that require that)."
9147 msgid ""
9148 "The specified process does not exist, or is not currently being traced by "
9149 "the caller, or is not stopped (for requests that require a stopped tracee)."
9150 msgstr ""
9151 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9152 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9153 "ない (停止していることが必要な要求の場合)。"
9154
9155 #. type: Plain text
9156 #: build/C/man2/ptrace.2:1773
9157 msgid "SVr4, 4.3BSD."
9158 msgstr "SVr4, 4.3BSD."
9159
9160 #. type: Plain text
9161 #: build/C/man2/ptrace.2:1788
9162 #, fuzzy
9163 #| msgid ""
9164 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9165 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9166 #| "function with only the I<request> argument fixed.  This means that "
9167 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9168 #| "undocumented B<gcc>(1)  behavior."
9169 msgid ""
9170 "Although arguments to B<ptrace>()  are interpreted according to the "
9171 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9172 "function with only the I<request> argument fixed.  It is recommended to "
9173 "always supply four arguments, even if the requested operation does not use "
9174 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9175 msgstr ""
9176 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9177 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9178 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9179 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9180 "になる。"
9181
9182 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9183 #. type: Plain text
9184 #: build/C/man2/ptrace.2:1793
9185 #, fuzzy
9186 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9187 msgid ""
9188 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9189 "be traced."
9190 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9191
9192 #.  See http://lkml.org/lkml/2008/5/8/375
9193 #. type: Plain text
9194 #: build/C/man2/ptrace.2:1800
9195 #, fuzzy
9196 #| msgid ""
9197 #| "The layout of the contents of memory and the USER area are quite OS- and "
9198 #| "architecture-specific.  The offset supplied, and the data returned, might "
9199 #| "not entirely match with the definition of I<struct user>."
9200 msgid ""
9201 "The layout of the contents of memory and the USER area are quite operating-"
9202 "system- and architecture-specific.  The offset supplied, and the data "
9203 "returned, might not entirely match with the definition of I<struct user>."
9204 msgstr ""
9205 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9206 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9207 "に一致しないこともありえる。"
9208
9209 #. type: Plain text
9210 #: build/C/man2/ptrace.2:1803
9211 #, fuzzy
9212 #| msgid ""
9213 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9214 #| "Linux it is 32 bits, etc.)."
9215 msgid ""
9216 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9217 "for 32-bit Linux it is 32 bits)."
9218 msgstr ""
9219 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9220 "では 32 ビットである、など。)"
9221
9222 #. type: Plain text
9223 #: build/C/man2/ptrace.2:1811
9224 #, fuzzy
9225 #| msgid ""
9226 #| "This page documents the way the B<ptrace>()  call works currently in "
9227 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9228 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9229 msgid ""
9230 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9231 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9232 "of B<ptrace>()  is highly specific to the operating system and architecture."
9233 msgstr ""
9234 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9235 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9236 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9237
9238 #. type: Plain text
9239 #: build/C/man2/ptrace.2:1822
9240 #, fuzzy
9241 #| msgid ""
9242 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9243 #| "different value than the one for 2.4.  This leads to applications "
9244 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9245 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9246 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9247 msgid ""
9248 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9249 "different value than the one for 2.4.  This leads to applications compiled "
9250 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9251 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9252 "that is defined."
9253 msgstr ""
9254 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9255 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9256 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9257 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9258 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9259
9260 #. type: Plain text
9261 #: build/C/man2/ptrace.2:1825
9262 msgid ""
9263 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9264 "Last confirmed on 2.6.38.6."
9265 msgstr ""
9266
9267 #.  Note from Denys Vlasenko:
9268 #.      Here "exits" means any kind of death - _exit, exit_group,
9269 #.      signal death. Signal death and exit_group cases are trivial,
9270 #.      though: since signal death and exit_group kill all other threads
9271 #.      too, "until all other threads exit" thing happens rather soon
9272 #.      in these cases. Therefore, only _exit presents observably
9273 #.      puzzling behavior to ptrace users: thread leader _exit's,
9274 #.      but WIFEXITED isn't reported! We are trying to explain here
9275 #.      why it is so.
9276 #.   FIXME: ^^^ need to test/verify this scenario
9277 #. type: Plain text
9278 #: build/C/man2/ptrace.2:1856
9279 msgid ""
9280 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9281 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9282 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9283 "threads exit.  As explained above, if one of other threads calls B<execve>"
9284 "(2), the death of the thread group leader will I<never> be reported.  If the "
9285 "execed thread is not traced by this tracer, the tracer will never know that "
9286 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9287 "thread group leader instead of restarting it in this case.  Last confirmed "
9288 "on 2.6.38.6."
9289 msgstr ""
9290
9291 #. type: Plain text
9292 #: build/C/man2/ptrace.2:1866
9293 msgid ""
9294 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9295 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9296 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9297 "2.6.38.6."
9298 msgstr ""
9299
9300 #. type: Plain text
9301 #: build/C/man2/ptrace.2:1884
9302 msgid ""
9303 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9304 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9305 "is usually done by debuggers on every attach, in order to not introduce a "
9306 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9307 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9308 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9309 "that when you attach to a quiescent process with the command"
9310 msgstr ""
9311
9312 #. type: Plain text
9313 #: build/C/man2/ptrace.2:1886
9314 #, no-wrap
9315 msgid "    strace -p E<lt>process-IDE<gt>\n"
9316 msgstr ""
9317
9318 #. type: Plain text
9319 #: build/C/man2/ptrace.2:1889
9320 msgid "then, instead of the usual and expected one-line output such as"
9321 msgstr ""
9322
9323 #. type: Plain text
9324 #: build/C/man2/ptrace.2:1892
9325 #, no-wrap
9326 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9327 msgstr ""
9328
9329 #. type: Plain text
9330 #: build/C/man2/ptrace.2:1898
9331 #, no-wrap
9332 msgid "    select(6, [5], NULL, [5], NULL_\n"
9333 msgstr ""
9334
9335 #. type: Plain text
9336 #: build/C/man2/ptrace.2:1902
9337 msgid ""
9338 "('_' denotes the cursor position), you observe more than one line.  For "
9339 "example:"
9340 msgstr ""
9341
9342 #. type: Plain text
9343 #: build/C/man2/ptrace.2:1906
9344 #, no-wrap
9345 msgid ""
9346 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9347 "    epoll_wait(4,_\n"
9348 msgstr ""
9349
9350 #. type: Plain text
9351 #: build/C/man2/ptrace.2:1927
9352 msgid ""
9353 "What is not visible here is that the process was blocked in B<epoll_wait>"
9354 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9355 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9356 "case, the program reacted to B<EINTR> by checking the current time, and then "
9357 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9358 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9359 "(1)  attach.)"
9360 msgstr ""
9361
9362 #. type: Plain text
9363 #: build/C/man2/ptrace.2:1941
9364 msgid ""
9365 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9366 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9367 "B<capabilities>(7), B<signal>(7)"
9368 msgstr ""
9369 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9370 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9371 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9372
9373 #. type: TH
9374 #: build/C/man2/quotactl.2:27
9375 #, no-wrap
9376 msgid "QUOTACTL"
9377 msgstr "QUOTACTL"
9378
9379 #. type: TH
9380 #: build/C/man2/quotactl.2:27
9381 #, no-wrap
9382 msgid "2010-06-16"
9383 msgstr "2010-06-16"
9384
9385 #. type: Plain text
9386 #: build/C/man2/quotactl.2:30
9387 msgid "quotactl - manipulate disk quotas"
9388 msgstr "quotactl - ディスク quota を操作する"
9389
9390 #. type: Plain text
9391 #: build/C/man2/quotactl.2:34
9392 #, no-wrap
9393 msgid ""
9394 "B<#include E<lt>sys/quota.hE<gt>>\n"
9395 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9396 msgstr ""
9397 "B<#include E<lt>sys/quota.hE<gt>>\n"
9398 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9399
9400 #. type: Plain text
9401 #: build/C/man2/quotactl.2:37
9402 #, no-wrap
9403 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9404 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9405
9406 #. type: Plain text
9407 #: build/C/man2/quotactl.2:49
9408 #, fuzzy
9409 #| msgid ""
9410 #| "The quota system defines for each user and/or group a soft limit and a "
9411 #| "hard limit bounding the amount of disk space that can be used on a given "
9412 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9413 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9414 #| "soft limit for more than one week (by default)  at a time: after this "
9415 #| "week the soft limit counts as hard limit."
9416 msgid ""
9417 "The quota system can be used to set per-user and per-group limits on the "
9418 "amount of disk space used on a file system.  For each user and/or group, a "
9419 "soft limit and a hard limit can be set for each file system.  The hard limit "
9420 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9421 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9422 "week (by default) at a time; after this time, the soft limit counts as a "
9423 "hard limit."
9424 msgstr ""
9425 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9426 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9427 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9428 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9429 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9430 "過した後はハード・リミットを超過したと みなされる。"
9431
9432 #. type: Plain text
9433 #: build/C/man2/quotactl.2:74
9434 #, fuzzy
9435 #| msgid ""
9436 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9437 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9438 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9439 #| "respectively), and I<subcmd> is described below."
9440 msgid ""
9441 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9442 "indicates a command to be applied to the user or group ID specified in "
9443 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9444 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9445 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9446 msgstr ""
9447 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9448 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9449 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9450 "を指定する。 I<subcmd> は以下で説明する。"
9451
9452 #. type: Plain text
9453 #: build/C/man2/quotactl.2:79
9454 msgid ""
9455 "The I<special> argument is a pointer to a null-terminated string containing "
9456 "the pathname of the (mounted) block special device for the file system being "
9457 "manipulated."
9458 msgstr ""
9459
9460 #. type: Plain text
9461 #: build/C/man2/quotactl.2:87
9462 msgid ""
9463 "The I<addr> argument is the address of an optional, command-specific, data "
9464 "structure that is copied in or out of the system.  The interpretation of "
9465 "I<addr> is given with each command below."
9466 msgstr ""
9467
9468 #. type: Plain text
9469 #: build/C/man2/quotactl.2:91
9470 msgid "The I<subcmd> value is one of the following:"
9471 msgstr "I<subcmd> の値は以下のいずれかである"
9472
9473 #. type: TP
9474 #: build/C/man2/quotactl.2:91
9475 #, no-wrap
9476 msgid "B<Q_QUOTAON>"
9477 msgstr "B<Q_QUOTAON>"
9478
9479 #. type: Plain text
9480 #: build/C/man2/quotactl.2:98
9481 msgid ""
9482 "Turn on quotas for a file system.  The I<id> argument is the identification "
9483 "number of the quota format to be used.  Currently, there are three supported "
9484 "quota formats:"
9485 msgstr ""
9486
9487 #. type: TP
9488 #: build/C/man2/quotactl.2:99
9489 #, no-wrap
9490 msgid "B<QFMT_VFS_OLD>"
9491 msgstr ""
9492
9493 #. type: Plain text
9494 #: build/C/man2/quotactl.2:102
9495 msgid "The original quota format."
9496 msgstr ""
9497
9498 #. type: TP
9499 #: build/C/man2/quotactl.2:102
9500 #, no-wrap
9501 msgid "B<QFMT_VFS_V0>"
9502 msgstr ""
9503
9504 #. type: Plain text
9505 #: build/C/man2/quotactl.2:106
9506 msgid ""
9507 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9508 "quota limits up to 2^42 bytes and 2^32 inodes."
9509 msgstr ""
9510
9511 #. type: TP
9512 #: build/C/man2/quotactl.2:106
9513 #, no-wrap
9514 msgid "B<QFMT_VFS_V1>"
9515 msgstr ""
9516
9517 #. type: Plain text
9518 #: build/C/man2/quotactl.2:110
9519 msgid ""
9520 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9521 "bytes and 2^64 inodes."
9522 msgstr ""
9523
9524 #. type: Plain text
9525 #: build/C/man2/quotactl.2:121
9526 msgid ""
9527 "The I<addr> argument points to the pathname of a file containing the quotas "
9528 "for the file system.  The quota file must exist; it is normally created with "
9529 "the B<quotacheck>(8)  program.  This operation requires privilege "
9530 "(B<CAP_SYS_ADMIN>)."
9531 msgstr ""
9532
9533 #. type: TP
9534 #: build/C/man2/quotactl.2:121
9535 #, no-wrap
9536 msgid "B<Q_QUOTAOFF>"
9537 msgstr "B<Q_QUOTAOFF>"
9538
9539 #. type: Plain text
9540 #: build/C/man2/quotactl.2:131
9541 msgid ""
9542 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9543 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9544 msgstr ""
9545
9546 #. type: TP
9547 #: build/C/man2/quotactl.2:131
9548 #, no-wrap
9549 msgid "B<Q_GETQUOTA>"
9550 msgstr "B<Q_GETQUOTA>"
9551
9552 #. type: Plain text
9553 #: build/C/man2/quotactl.2:142
9554 #, fuzzy
9555 #| msgid ""
9556 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9557 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9558 msgid ""
9559 "Get disk quota limits and current usage for user or group I<id>.  The "
9560 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9561 "quota.hE<gt>> as follows:"
9562 msgstr ""
9563 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9564 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9565
9566 #. type: Plain text
9567 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9568 #, no-wrap
9569 msgid ""
9570 "/* uint64_t is an unsigned 64-bit integer;\n"
9571 "   uint32_t is an unsigned 32-bit integer */\n"
9572 msgstr ""
9573
9574 #. type: Plain text
9575 #: build/C/man2/quotactl.2:167
9576 #, no-wrap
9577 msgid ""
9578 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9579 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9580 "                                  quota blocks alloc */\n"
9581 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9582 "                                  disk quota blocks */\n"
9583 "    uint64_t dqb_curspace;     /* current quota block\n"
9584 "                                  count */\n"
9585 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9586 "                                  allocated inodes */\n"
9587 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9588 "    uint64_t dqb_curinodes;    /* current number of\n"
9589 "                                  allocated inodes */\n"
9590 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9591 "                                  disk use */\n"
9592 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9593 "                                  files */\n"
9594 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9595 "                                  constants */\n"
9596 "};\n"
9597 msgstr ""
9598
9599 #. type: Plain text
9600 #: build/C/man2/quotactl.2:170
9601 #, no-wrap
9602 msgid ""
9603 "/* Flags in dqb_valid that indicate which fields in\n"
9604 "   dqblk structure are valid. */\n"
9605 msgstr ""
9606
9607 #. type: Plain text
9608 #: build/C/man2/quotactl.2:181
9609 #, no-wrap
9610 msgid ""
9611 "#define QIF_BLIMITS   1\n"
9612 "#define QIF_SPACE     2\n"
9613 "#define QIF_ILIMITS   4\n"
9614 "#define QIF_INODES    8\n"
9615 "#define QIF_BTIME     16\n"
9616 "#define QIF_ITIME     32\n"
9617 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9618 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9619 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9620 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9621 msgstr ""
9622
9623 #. type: Plain text
9624 #: build/C/man2/quotactl.2:198
9625 msgid ""
9626 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9627 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9628 "entries of the I<dqblk> structure and marks them as valid in the "
9629 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9630 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9631 msgstr ""
9632
9633 #. type: TP
9634 #: build/C/man2/quotactl.2:198
9635 #, no-wrap
9636 msgid "B<Q_SETQUOTA>"
9637 msgstr "B<Q_SETQUOTA>"
9638
9639 #. type: Plain text
9640 #: build/C/man2/quotactl.2:218
9641 msgid ""
9642 "Set quota information for user or group I<id>, using the information "
9643 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9644 "field of the I<dqblk> structure indicates which entries in the structure "
9645 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9646 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9647 "requires privilege (B<CAP_SYS_ADMIN>)."
9648 msgstr ""
9649
9650 #. type: TP
9651 #: build/C/man2/quotactl.2:218
9652 #, no-wrap
9653 msgid "B<Q_GETINFO>"
9654 msgstr "B<Q_GETINFO>"
9655
9656 #. type: Plain text
9657 #: build/C/man2/quotactl.2:229
9658 #, fuzzy
9659 #| msgid ""
9660 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9661 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9662 msgid ""
9663 "Get information (like grace times) about quotafile.  The I<addr> argument "
9664 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9665 "I<E<lt>sys/quota.hE<gt>> as follows:"
9666 msgstr ""
9667 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9668 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9669
9670 #. type: Plain text
9671 #: build/C/man2/quotactl.2:238
9672 #, no-wrap
9673 msgid ""
9674 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9675 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9676 "                               becomes hard limit */\n"
9677 msgstr ""
9678
9679 #. type: Plain text
9680 #: build/C/man2/quotactl.2:245
9681 #, no-wrap
9682 msgid ""
9683 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9684 "                               becomes hard limit */\n"
9685 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9686 "                               (DQF_*) */\n"
9687 "    uint32_t dqi_valid;\n"
9688 "};\n"
9689 msgstr ""
9690
9691 #. type: Plain text
9692 #: build/C/man2/quotactl.2:247
9693 #, no-wrap
9694 msgid "/* Bits for dqi_flags */\n"
9695 msgstr ""
9696
9697 #. type: Plain text
9698 #: build/C/man2/quotactl.2:249
9699 #, no-wrap
9700 msgid "/* Quota format QFMT_VFS_OLD */\n"
9701 msgstr ""
9702
9703 #. type: Plain text
9704 #: build/C/man2/quotactl.2:251
9705 #, no-wrap
9706 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9707 msgstr ""
9708
9709 #. type: Plain text
9710 #: build/C/man2/quotactl.2:253
9711 #, no-wrap
9712 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9713 msgstr ""
9714
9715 #. type: Plain text
9716 #: build/C/man2/quotactl.2:256
9717 #, no-wrap
9718 msgid ""
9719 "/* Flags in dqi_valid that indicate which fields in\n"
9720 "   dqinfo structure are valid. */\n"
9721 msgstr ""
9722
9723 #. type: Plain text
9724 #: build/C/man2/quotactl.2:261
9725 #, no-wrap
9726 msgid ""
9727 "# define IIF_BGRACE\t1\n"
9728 "# define IIF_IGRACE\t2\n"
9729 "# define IIF_FLAGS\t4\n"
9730 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9731 msgstr ""
9732
9733 #. type: Plain text
9734 #: build/C/man2/quotactl.2:277
9735 msgid ""
9736 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9737 "the structure that are valid.  Currently, the kernel fills in all entries of "
9738 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9739 "field.  The I<id> argument is ignored."
9740 msgstr ""
9741
9742 #. type: TP
9743 #: build/C/man2/quotactl.2:277
9744 #, no-wrap
9745 msgid "B<Q_SETINFO>"
9746 msgstr "B<Q_SETINFO>"
9747
9748 #. type: Plain text
9749 #: build/C/man2/quotactl.2:301
9750 msgid ""
9751 "Set information about quotafile.  The I<addr> argument should be a pointer "
9752 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9753 "indicates the entries in the structure that have been set by the caller.  "
9754 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9755 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9756 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9757 msgstr ""
9758
9759 #. type: TP
9760 #: build/C/man2/quotactl.2:301
9761 #, no-wrap
9762 msgid "B<Q_GETFMT>"
9763 msgstr "B<Q_GETFMT>"
9764
9765 #. type: Plain text
9766 #: build/C/man2/quotactl.2:308
9767 msgid ""
9768 "Get quota format used on the specified file system.  The I<addr> argument "
9769 "should be a pointer to a 4-byte buffer where the format number will be "
9770 "stored."
9771 msgstr ""
9772
9773 #. type: TP
9774 #: build/C/man2/quotactl.2:308
9775 #, no-wrap
9776 msgid "B<Q_SYNC>"
9777 msgstr "B<Q_SYNC>"
9778
9779 #. type: Plain text
9780 #: build/C/man2/quotactl.2:319
9781 msgid ""
9782 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9783 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9784 "I<id> arguments are ignored."
9785 msgstr ""
9786
9787 #. type: TP
9788 #: build/C/man2/quotactl.2:319
9789 #, no-wrap
9790 msgid "B<Q_GETSTATS>"
9791 msgstr "B<Q_GETSTATS>"
9792
9793 #.  Q_GETSTATS was removed in kernel 2.4.22.
9794 #. type: Plain text
9795 #: build/C/man2/quotactl.2:339
9796 msgid ""
9797 "Get statistics and other generic information about the quota subsystem.  The "
9798 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9799 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9800 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9801 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9802 "the information instead."
9803 msgstr ""
9804
9805 #. type: Plain text
9806 #: build/C/man2/quotactl.2:342
9807 msgid ""
9808 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9809 "commands are bypassed and the following commands are used:"
9810 msgstr ""
9811
9812 #. type: TP
9813 #: build/C/man2/quotactl.2:342
9814 #, no-wrap
9815 msgid "B<Q_XQUOTAON>"
9816 msgstr "B<Q_XQUOTAON>"
9817
9818 #. type: Plain text
9819 #: build/C/man2/quotactl.2:363
9820 msgid ""
9821 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9822 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9823 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9824 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9825 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9826 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9827 "(B<CAP_SYS_ADMIN>)."
9828 msgstr ""
9829
9830 #. type: TP
9831 #: build/C/man2/quotactl.2:363
9832 #, no-wrap
9833 msgid "B<Q_XQUOTAOFF>"
9834 msgstr "B<Q_XQUOTAOFF>"
9835
9836 #. type: Plain text
9837 #: build/C/man2/quotactl.2:374
9838 msgid ""
9839 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9840 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9841 "accounting and/or limit enforcement need to be turned off.  This operation "
9842 "requires privilege (B<CAP_SYS_ADMIN>)."
9843 msgstr ""
9844
9845 #. type: TP
9846 #: build/C/man2/quotactl.2:374
9847 #, no-wrap
9848 msgid "B<Q_XGETQUOTA>"
9849 msgstr "B<Q_XGETQUOTA>"
9850
9851 #. type: Plain text
9852 #: build/C/man2/quotactl.2:388
9853 msgid ""
9854 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9855 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9856 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9857 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9858 "user."
9859 msgstr ""
9860
9861 #. type: TP
9862 #: build/C/man2/quotactl.2:388
9863 #, no-wrap
9864 msgid "B<Q_XSETQLIM>"
9865 msgstr "B<Q_XSETQLIM>"
9866
9867 #. type: Plain text
9868 #: build/C/man2/quotactl.2:400
9869 msgid ""
9870 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9871 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9872 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9873 msgstr ""
9874
9875 #. type: TP
9876 #: build/C/man2/quotactl.2:400
9877 #, no-wrap
9878 msgid "B<Q_XGETQSTAT>"
9879 msgstr "B<Q_XGETQSTAT>"
9880
9881 #. type: Plain text
9882 #: build/C/man2/quotactl.2:408
9883 msgid ""
9884 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9885 "quota information.  This is useful for finding out how much space is used to "
9886 "store quota information, and also to get quotaon/off status of a given local "
9887 "XFS file system."
9888 msgstr ""
9889
9890 #. type: TP
9891 #: build/C/man2/quotactl.2:408
9892 #, no-wrap
9893 msgid "B<Q_XQUOTARM>"
9894 msgstr "B<Q_XQUOTARM>"
9895
9896 #. type: Plain text
9897 #: build/C/man2/quotactl.2:412
9898 msgid ""
9899 "Free the disk space taken by disk quotas.  Quotas must have already been "
9900 "turned off."
9901 msgstr ""
9902
9903 #. type: Plain text
9904 #: build/C/man2/quotactl.2:419
9905 msgid ""
9906 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9907 "quota information to disk (in addition to the other file system metadata "
9908 "that it writes out)."
9909 msgstr ""
9910
9911 #. type: Plain text
9912 #: build/C/man2/quotactl.2:427
9913 msgid ""
9914 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9915 "is set to indicate the error."
9916 msgstr ""
9917 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9918 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9919
9920 #. type: Plain text
9921 #: build/C/man2/quotactl.2:434
9922 msgid "I<addr> or I<special> is invalid."
9923 msgstr ""
9924
9925 #. type: Plain text
9926 #: build/C/man2/quotactl.2:440
9927 msgid "I<cmd> or I<type> is invalid."
9928 msgstr ""
9929
9930 #. type: TP
9931 #: build/C/man2/quotactl.2:440
9932 #, no-wrap
9933 msgid "B<ENOENT>"
9934 msgstr "B<ENOENT>"
9935
9936 #. type: Plain text
9937 #: build/C/man2/quotactl.2:447
9938 msgid "The file specified by I<special> or I<addr> does not exist."
9939 msgstr ""
9940
9941 #. type: Plain text
9942 #: build/C/man2/quotactl.2:452
9943 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9944 msgstr ""
9945
9946 #. type: TP
9947 #: build/C/man2/quotactl.2:452
9948 #, no-wrap
9949 msgid "B<ENOTBLK>"
9950 msgstr "B<ENOTBLK>"
9951
9952 #. type: Plain text
9953 #: build/C/man2/quotactl.2:456
9954 msgid "I<special> is not a block device."
9955 msgstr "I<special> がブロックデバイスではない。"
9956
9957 #. type: Plain text
9958 #: build/C/man2/quotactl.2:461
9959 msgid ""
9960 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9961 "specified operation."
9962 msgstr ""
9963
9964 #. type: Plain text
9965 #: build/C/man2/quotactl.2:465
9966 msgid ""
9967 "No disk quota is found for the indicated user.  Quotas have not been turned "
9968 "on for this file system."
9969 msgstr ""
9970
9971 #. type: Plain text
9972 #: build/C/man2/quotactl.2:474
9973 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9974 msgstr ""
9975
9976 #. type: Plain text
9977 #: build/C/man2/quotactl.2:477
9978 msgid "Specified limits are out of range allowed by quota format."
9979 msgstr ""
9980
9981 #. type: Plain text
9982 #: build/C/man2/quotactl.2:486
9983 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9984 msgstr ""
9985
9986 #. type: Plain text
9987 #: build/C/man2/quotactl.2:495
9988 msgid ""
9989 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9990 "the quota file pointed to by I<addr> exists, but is not on the file system "
9991 "pointed to by I<special>."
9992 msgstr ""
9993
9994 #. type: Plain text
9995 #: build/C/man2/quotactl.2:501
9996 msgid ""
9997 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9998 msgstr ""
9999
10000 #. type: Plain text
10001 #: build/C/man2/quotactl.2:504
10002 msgid "The quota file is corrupted."
10003 msgstr "quota ファイルが壊れている。"
10004
10005 #. type: Plain text
10006 #: build/C/man2/quotactl.2:507
10007 msgid "Specified quota format was not found."
10008 msgstr ""
10009
10010 #. type: Plain text
10011 #: build/C/man2/quotactl.2:512
10012 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10013 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10014
10015 #. type: TH
10016 #: build/C/man2/sendfile.2:19
10017 #, no-wrap
10018 msgid "SENDFILE"
10019 msgstr "SENDFILE"
10020
10021 #. type: TH
10022 #: build/C/man2/sendfile.2:19
10023 #, no-wrap
10024 msgid "2011-09-14"
10025 msgstr "2011-09-14"
10026
10027 #. type: Plain text
10028 #: build/C/man2/sendfile.2:22
10029 msgid "sendfile - transfer data between file descriptors"
10030 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10031
10032 #. type: Plain text
10033 #: build/C/man2/sendfile.2:24
10034 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10035 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10036
10037 #.  The below is too ugly. Comments about glibc versions belong
10038 #.  in the notes, not in the header.
10039 #.  .B #include <features.h>
10040 #.  .br
10041 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10042 #.  .br
10043 #.  .B #include <sys/sendfile.h>
10044 #.  .br
10045 #.  #else
10046 #.  .br
10047 #.  .B #include <sys/types.h>
10048 #.  .br
10049 #.  .B /* No system prototype before glibc 2.1. */
10050 #.  .br
10051 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10052 #.  .br
10053 #.  .B #endif
10054 #. type: Plain text
10055 #: build/C/man2/sendfile.2:47
10056 msgid ""
10057 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10058 "size_t>I< count>B<);>"
10059 msgstr ""
10060 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10061 "size_t>I< count>B<);>"
10062
10063 #. type: Plain text
10064 #: build/C/man2/sendfile.2:57
10065 msgid ""
10066 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10067 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10068 "than the combination of B<read>(2)  and B<write>(2), which would require "
10069 "transferring data to and from user space."
10070 msgstr ""
10071 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10072 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10073 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10074 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10075 "るからである。"
10076
10077 #. type: Plain text
10078 #: build/C/man2/sendfile.2:62
10079 msgid ""
10080 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10081 "be a descriptor opened for writing."
10082 msgstr ""
10083 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10084 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10085
10086 #. type: Plain text
10087 #: build/C/man2/sendfile.2:83
10088 msgid ""
10089 "If I<offset> is not NULL, then it points to a variable holding the file "
10090 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10091 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10092 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10093 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10094 "otherwise the current file offset is adjusted to reflect the number of bytes "
10095 "read from I<in_fd>."
10096 msgstr ""
10097 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10098 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10099 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10100 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10101 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10102 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10103 "整する。"
10104
10105 #. type: Plain text
10106 #: build/C/man2/sendfile.2:90
10107 msgid ""
10108 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10109 "current file offset, and the file offset will be updated by the call."
10110 msgstr ""
10111 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10112 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10113
10114 #. type: Plain text
10115 #: build/C/man2/sendfile.2:93
10116 msgid "I<count> is the number of bytes to copy between the file descriptors."
10117 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10118
10119 #. type: Plain text
10120 #: build/C/man2/sendfile.2:100
10121 msgid ""
10122 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10123 "like operations (i.e., it cannot be a socket)."
10124 msgstr ""
10125 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10126 "な\n"
10127 "い (ソケットを指定することはできない)。"
10128
10129 #. type: Plain text
10130 #: build/C/man2/sendfile.2:108
10131 msgid ""
10132 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10133 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10134 "()  changes the file offset appropriately."
10135 msgstr ""
10136 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10137 "な\n"
10138 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10139 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10140
10141 #. type: Plain text
10142 #: build/C/man2/sendfile.2:115
10143 msgid ""
10144 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10145 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10146 msgstr ""
10147 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10148 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10149
10150 #. type: Plain text
10151 #: build/C/man2/sendfile.2:121
10152 msgid ""
10153 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10154 "block."
10155 msgstr ""
10156 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10157 "た。"
10158
10159 #. type: TP
10160 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10161 #: build/C/man2/vmsplice.2:123
10162 #, no-wrap
10163 msgid "B<EBADF>"
10164 msgstr "B<EBADF>"
10165
10166 #. type: Plain text
10167 #: build/C/man2/sendfile.2:125
10168 msgid ""
10169 "The input file was not opened for reading or the output file was not opened "
10170 "for writing."
10171 msgstr ""
10172 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10173 "のためにオープンされていない。"
10174
10175 #. type: Plain text
10176 #: build/C/man2/sendfile.2:128
10177 msgid "Bad address."
10178 msgstr "アドレスがおかしい。"
10179
10180 #. type: Plain text
10181 #: build/C/man2/sendfile.2:134
10182 msgid ""
10183 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10184 "available for I<in_fd>."
10185 msgstr ""
10186 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10187 "が I<in_fd> では利用できない。"
10188
10189 #. type: Plain text
10190 #: build/C/man2/sendfile.2:138
10191 msgid "Unspecified error while reading from I<in_fd>."
10192 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10193
10194 #. type: Plain text
10195 #: build/C/man2/sendfile.2:142
10196 msgid "Insufficient memory to read from I<in_fd>."
10197 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10198
10199 #. type: Plain text
10200 #: build/C/man2/sendfile.2:148
10201 msgid ""
10202 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10203 "sendfile.hE<gt>> is present since glibc 2.1."
10204 msgstr ""
10205 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10206 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10207
10208 #. type: Plain text
10209 #: build/C/man2/sendfile.2:150
10210 msgid "Not specified in POSIX.1-2001, or other standards."
10211 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10212
10213 #. type: Plain text
10214 #: build/C/man2/sendfile.2:155
10215 msgid ""
10216 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10217 "prototypes.  It should not be used in portable programs."
10218 msgstr ""
10219 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10220 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10221
10222 #. type: Plain text
10223 #: build/C/man2/sendfile.2:165
10224 msgid ""
10225 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10226 "need to send some header data in front of the file contents, you will find "
10227 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10228 "minimize the number of packets and to tune performance."
10229 msgstr ""
10230 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10231 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10232 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10233 "いいだろう。"
10234
10235 #. type: Plain text
10236 #: build/C/man2/sendfile.2:171
10237 msgid ""
10238 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10239 "B<sendfile>()  changed the current offset of that file."
10240 msgstr ""
10241 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10242 "き、\n"
10243 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10244
10245 #. type: Plain text
10246 #: build/C/man2/sendfile.2:183
10247 msgid ""
10248 "The original Linux B<sendfile>()  system call was not designed to handle "
10249 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10250 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10251 "function transparently deals with the kernel differences."
10252 msgstr ""
10253 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10254 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10255 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10256 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10257
10258 #. type: Plain text
10259 #: build/C/man2/sendfile.2:192
10260 msgid ""
10261 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10262 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10263 msgstr ""
10264 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10265 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10266
10267 #. type: Plain text
10268 #: build/C/man2/sendfile.2:197
10269 msgid ""
10270 "The Linux-specific B<splice>(2)  call supports transferring data between "
10271 "arbitrary files (e.g., a pair of sockets)."
10272 msgstr ""
10273 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10274 "ソケット同士) でのデータ転送をサポートしている。"
10275
10276 #. type: Plain text
10277 #: build/C/man2/sendfile.2:202
10278 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10279 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10280
10281 #. type: TH
10282 #: build/C/man2/set_tid_address.2:25
10283 #, no-wrap
10284 msgid "SET_TID_ADDRESS"
10285 msgstr "SET_TID_ADDRESS"
10286
10287 #. type: TH
10288 #: build/C/man2/set_tid_address.2:25
10289 #, no-wrap
10290 msgid "2012-07-19"
10291 msgstr "2012-07-19"
10292
10293 #. type: Plain text
10294 #: build/C/man2/set_tid_address.2:28
10295 msgid "set_tid_address - set pointer to thread ID"
10296 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10297
10298 #. type: Plain text
10299 #: build/C/man2/set_tid_address.2:31
10300 #, no-wrap
10301 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10302 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10303
10304 #. type: Plain text
10305 #: build/C/man2/set_tid_address.2:33
10306 #, no-wrap
10307 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10308 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10309
10310 #. type: Plain text
10311 #: build/C/man2/set_tid_address.2:40
10312 msgid ""
10313 "For each process, the kernel maintains two attributes (addresses) called "
10314 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10315 "value NULL by default."
10316 msgstr ""
10317 "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
10318 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10319
10320 #. type: TP
10321 #: build/C/man2/set_tid_address.2:40
10322 #, no-wrap
10323 msgid "I<set_child_tid>"
10324 msgstr "I<set_child_tid>"
10325
10326 #. type: Plain text
10327 #: build/C/man2/set_tid_address.2:51
10328 msgid ""
10329 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10330 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10331 "that system call."
10332 msgstr ""
10333 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10334 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
10335 "で渡された値に設定される。"
10336
10337 #. type: Plain text
10338 #: build/C/man2/set_tid_address.2:56
10339 msgid ""
10340 "When I<set_child_tid> is set, the very first thing the new process does is "
10341 "writing its PID at this address."
10342 msgstr ""
10343 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10344 "のアドレスに自身の PID を書き込むことである。"
10345
10346 #. type: TP
10347 #: build/C/man2/set_tid_address.2:56
10348 #, no-wrap
10349 msgid "I<clear_child_tid>"
10350 msgstr "I<clear_child_tid>"
10351
10352 #. type: Plain text
10353 #: build/C/man2/set_tid_address.2:67
10354 msgid ""
10355 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10356 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10357 "of that system call."
10358 msgstr ""
10359 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
10360 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
10361 "き数で渡された値に設定される。"
10362
10363 #. type: Plain text
10364 #: build/C/man2/set_tid_address.2:74
10365 msgid ""
10366 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10367 "the calling process to I<tidptr>."
10368 msgstr ""
10369 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10370 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10371
10372 #. type: Plain text
10373 #: build/C/man2/set_tid_address.2:82
10374 #, fuzzy
10375 #| msgid ""
10376 #| "When I<clear_child_tid> is set, and the process exits, and the process "
10377 #| "was sharing memory with other processes or threads, then 0 is written at "
10378 #| "this address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> "
10379 #| "call is done.  (That is, wake a single process waiting on this futex.)  "
10380 #| "Errors are ignored."
10381 msgid ""
10382 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10383 "process is sharing memory with other processes or threads, then 0 is written "
10384 "at the address specified in I<clear_child_tid> and the kernel performs the "
10385 "following operation:"
10386 msgstr ""
10387 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
10388 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
10389 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
10390 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
10391 "(wake))。 エラーは無視される。"
10392
10393 #. type: Plain text
10394 #: build/C/man2/set_tid_address.2:84
10395 #, no-wrap
10396 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10397 msgstr ""
10398
10399 #. type: Plain text
10400 #: build/C/man2/set_tid_address.2:88
10401 msgid ""
10402 "The effect of this operation is to wake a single process that is performing "
10403 "a futex wait on the memory location.  Errors from the futex wake operation "
10404 "are ignored."
10405 msgstr ""
10406
10407 #. type: Plain text
10408 #: build/C/man2/set_tid_address.2:91
10409 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10410 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10411
10412 #. type: Plain text
10413 #: build/C/man2/set_tid_address.2:94
10414 msgid "B<set_tid_address>()  always succeeds."
10415 msgstr "B<set_tid_address>()  は常に成功する。"
10416
10417 #. type: Plain text
10418 #: build/C/man2/set_tid_address.2:97
10419 msgid ""
10420 "This call is present since Linux 2.5.48.  Details as given here are valid "
10421 "since Linux 2.5.49."
10422 msgstr ""
10423 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10424 "2.5.49 以降で有効である。"
10425
10426 #. type: Plain text
10427 #: build/C/man2/set_tid_address.2:102
10428 msgid "B<clone>(2), B<futex>(2)"
10429 msgstr "B<clone>(2), B<futex>(2)"
10430
10431 #. type: TH
10432 #: build/C/man2/splice.2:26
10433 #, no-wrap
10434 msgid "SPLICE"
10435 msgstr "SPLICE"
10436
10437 #. type: TH
10438 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10439 #, no-wrap
10440 msgid "2012-05-04"
10441 msgstr "2012-05-04"
10442
10443 #. type: Plain text
10444 #: build/C/man2/splice.2:29
10445 msgid "splice - splice data to/from a pipe"
10446 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10447
10448 #. type: Plain text
10449 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10450 #, no-wrap
10451 msgid ""
10452 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10453 "B<#include E<lt>fcntl.hE<gt>>\n"
10454 msgstr ""
10455 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10456 "B<#include E<lt>fcntl.hE<gt>>\n"
10457
10458 #.  Return type was long before glibc 2.7
10459 #. type: Plain text
10460 #: build/C/man2/splice.2:38
10461 #, no-wrap
10462 msgid ""
10463 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10464 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10465 msgstr ""
10466 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10467 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10468
10469 #. type: Plain text
10470 #: build/C/man2/splice.2:50
10471 msgid ""
10472 "B<splice>()  moves data between two file descriptors without copying between "
10473 "kernel address space and user address space.  It transfers up to I<len> "
10474 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10475 "I<fd_out>, where one of the descriptors must refer to a pipe."
10476 msgstr ""
10477 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10478 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10479 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10480 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10481 "ならない。"
10482
10483 #. type: Plain text
10484 #: build/C/man2/splice.2:80
10485 msgid ""
10486 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10487 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10488 "starting from the current file offset, and the current file offset is "
10489 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10490 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10491 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10492 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10493 "apply for I<fd_out> and I<off_out>."
10494 msgstr ""
10495 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10496 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10497 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10498 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10499 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10500 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10501 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10502 "る。"
10503
10504 #. type: Plain text
10505 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10506 msgid ""
10507 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10508 "or more of the following values:"
10509 msgstr ""
10510 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10511
10512 #. type: TP
10513 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10514 #, no-wrap
10515 msgid "B<SPLICE_F_MOVE>"
10516 msgstr "B<SPLICE_F_MOVE>"
10517
10518 #. type: Plain text
10519 #: build/C/man2/splice.2:98
10520 msgid ""
10521 "Attempt to move pages instead of copying.  This is only a hint to the "
10522 "kernel: pages may still be copied if the kernel cannot move the pages from "
10523 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10524 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10525 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10526 "correct implementation may be restored."
10527 msgstr ""
10528 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10529 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10530 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10531 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10532 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10533 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10534
10535 #. type: TP
10536 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10537 #, no-wrap
10538 msgid "B<SPLICE_F_NONBLOCK>"
10539 msgstr "B<SPLICE_F_NONBLOCK>"
10540
10541 #. type: Plain text
10542 #: build/C/man2/splice.2:107
10543 msgid ""
10544 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10545 "B<splice>()  may nevertheless block because the file descriptors that are "
10546 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10547 msgstr ""
10548 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10549 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10550 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10551 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10552 "らである。"
10553
10554 #. type: TP
10555 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10556 #, no-wrap
10557 msgid "B<SPLICE_F_MORE>"
10558 msgstr "B<SPLICE_F_MORE>"
10559
10560 #. type: Plain text
10561 #: build/C/man2/splice.2:121
10562 msgid ""
10563 "More data will be coming in a subsequent splice.  This is a helpful hint "
10564 "when the I<fd_out> refers to a socket (see also the description of "
10565 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10566 msgstr ""
10567 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10568 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10569 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10570
10571 #. type: TP
10572 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10573 #, no-wrap
10574 msgid "B<SPLICE_F_GIFT>"
10575 msgstr "B<SPLICE_F_GIFT>"
10576
10577 #. type: Plain text
10578 #: build/C/man2/splice.2:127
10579 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10580 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10581
10582 #. type: Plain text
10583 #: build/C/man2/splice.2:136
10584 msgid ""
10585 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10586 "to or from the pipe.  A return value of 0 means that there was no data to "
10587 "transfer, and it would not make sense to block, because there are no writers "
10588 "connected to the write end of the pipe referred to by I<fd_in>."
10589 msgstr ""
10590 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10591 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10592 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10593 "れている者がいないからである。"
10594
10595 #. type: Plain text
10596 #: build/C/man2/splice.2:142
10597 msgid ""
10598 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10599 msgstr ""
10600 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10601 "る。"
10602
10603 #. type: Plain text
10604 #: build/C/man2/splice.2:147
10605 msgid ""
10606 "One or both file descriptors are not valid, or do not have proper read-write "
10607 "mode."
10608 msgstr ""
10609 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10610 "write モードではない。"
10611
10612 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10613 #.  splice() in append mode was broken
10614 #. type: Plain text
10615 #: build/C/man2/splice.2:155
10616 msgid ""
10617 "Target file system doesn't support splicing; target file is opened in append "
10618 "mode; neither of the descriptors refers to a pipe; or offset given for "
10619 "nonseekable device."
10620 msgstr ""
10621 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10622 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10623 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10624
10625 #. type: Plain text
10626 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10627 #: build/C/man2/vmsplice.2:138
10628 msgid "Out of memory."
10629 msgstr "メモリ不足。"
10630
10631 #. type: TP
10632 #: build/C/man2/splice.2:158
10633 #, no-wrap
10634 msgid "B<ESPIPE>"
10635 msgstr "B<ESPIPE>"
10636
10637 #. type: Plain text
10638 #: build/C/man2/splice.2:165
10639 msgid ""
10640 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10641 "descriptor refers to a pipe."
10642 msgstr ""
10643 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10644 "クリプタが パイプを参照している。"
10645
10646 #. type: Plain text
10647 #: build/C/man2/splice.2:170
10648 msgid ""
10649 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10650 "was added to glibc in version 2.5."
10651 msgstr ""
10652 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10653 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10654
10655 #. type: Plain text
10656 #: build/C/man2/splice.2:182
10657 msgid ""
10658 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10659 "user-space programs with full control over an arbitrary kernel buffer, "
10660 "implemented within the kernel using the same type of buffer that is used for "
10661 "a pipe.  In overview, these system calls perform the following tasks:"
10662 msgstr ""
10663 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10664 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10665 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10666 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10667
10668 #. type: TP
10669 #: build/C/man2/splice.2:182
10670 #, no-wrap
10671 msgid "B<splice>()"
10672 msgstr "B<splice>()"
10673
10674 #. type: Plain text
10675 #: build/C/man2/splice.2:186
10676 msgid ""
10677 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10678 "or from one buffer to another."
10679 msgstr ""
10680 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10681 "から別のバッファへの、データ移動を行う。"
10682
10683 #. type: TP
10684 #: build/C/man2/splice.2:186
10685 #, no-wrap
10686 msgid "B<tee>(2)"
10687 msgstr "B<tee>(2)"
10688
10689 #. type: Plain text
10690 #: build/C/man2/splice.2:189
10691 msgid "\"copies\" the data from one buffer to another."
10692 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10693
10694 #. type: TP
10695 #: build/C/man2/splice.2:189
10696 #, no-wrap
10697 msgid "B<vmsplice>(2)"
10698 msgstr "B<vmsplice>(2)"
10699
10700 #. type: Plain text
10701 #: build/C/man2/splice.2:192
10702 msgid "\"copies\" data from user space into the buffer."
10703 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10704
10705 #.  Linus: Now, imagine using the above in a media server, for example.
10706 #.  Let's say that a year or two has passed, so that the video drivers
10707 #.  have been updated to be able to do the splice thing, and what can
10708 #.  you do? You can:
10709 #.  - splice from the (mpeg or whatever - let's just assume that the video
10710 #.    input is either digital or does the encoding on its own - like they
10711 #.    pretty much all do) video input into a pipe (remember: no copies - the
10712 #.    video input will just DMA directly into memory, and splice will just
10713 #.    set up the pages in the pipe buffer)
10714 #.  - tee that pipe to split it up
10715 #.  - splice one end to a file (ie "save the compressed stream to disk")
10716 #.  - splice the other end to a real-time video decoder window for your
10717 #.    real-time viewing pleasure.
10718 #.  Linus: Now, the advantage of splice()/tee() is that you can
10719 #.  do zero-copy movement of data, and unlike sendfile() you can
10720 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10721 #.  than just sending the data to somebody else: you can duplicate
10722 #.  the data and choose to forward it to two or more different
10723 #.  users - for things like logging etc.).
10724 #. type: Plain text
10725 #: build/C/man2/splice.2:223
10726 msgid ""
10727 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10728 "does this by implementing a pipe buffer as a set of reference-counted "
10729 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10730 "in a buffer by creating new pointers (for the output buffer) referring to "
10731 "the pages, and increasing the reference counts for the pages: only pointers "
10732 "are copied, not the pages of the buffer."
10733 msgstr ""
10734 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10735 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10736 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10737 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10738 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10739 "タだけがコピーされ、 バッファのページはコピーされない。"
10740
10741 #. type: Plain text
10742 #: build/C/man2/splice.2:226
10743 msgid "See B<tee>(2)."
10744 msgstr "B<tee>(2)  参照。"
10745
10746 #. type: Plain text
10747 #: build/C/man2/splice.2:230
10748 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10749 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10750
10751 #. type: TH
10752 #: build/C/man2/tee.2:26
10753 #, no-wrap
10754 msgid "TEE"
10755 msgstr "TEE"
10756
10757 #. type: Plain text
10758 #: build/C/man2/tee.2:29
10759 msgid "tee - duplicating pipe content"
10760 msgstr "tee - パイプの中身を複製する"
10761
10762 #. type: Plain text
10763 #: build/C/man2/tee.2:36
10764 #, no-wrap
10765 msgid "B<ssize_t tee(int >I<fd_in>B<, int >I<fd_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10766 msgstr "B<ssize_t tee(int >I<fd_in>B<, int >I<fd_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10767
10768 #.  Example programs http://brick.kernel.dk/snaps
10769 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10770 #.  (again, incrementing their reference count, not copying the data) from
10771 #.  one pipe to two other pipes.
10772 #. type: Plain text
10773 #: build/C/man2/tee.2:56
10774 msgid ""
10775 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10776 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10777 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10778 "therefore, that data can be copied by a subsequent B<splice>(2)."
10779 msgstr ""
10780 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10781 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10782 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10783 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10784
10785 #. type: Plain text
10786 #: build/C/man2/tee.2:62
10787 msgid ""
10788 "I<flags> is a series of modifier flags, which share the name space with "
10789 "B<splice>(2)  and B<vmsplice>(2):"
10790 msgstr ""
10791 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10792 "名前である。"
10793
10794 #. type: Plain text
10795 #: build/C/man2/tee.2:68
10796 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10797 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10798
10799 #.  Not used for vmsplice
10800 #.  May be in the future -- therefore EAGAIN
10801 #. type: Plain text
10802 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10803 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10804 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10805
10806 #. type: Plain text
10807 #: build/C/man2/tee.2:79
10808 msgid ""
10809 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10810 "see B<splice>(2)."
10811 msgstr ""
10812 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10813 "る。 B<splice>(2)  参照。"
10814
10815 #. type: Plain text
10816 #: build/C/man2/tee.2:85
10817 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10818 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10819
10820 #. type: Plain text
10821 #: build/C/man2/tee.2:94
10822 msgid ""
10823 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10824 "duplicated between the input and output.  A return value of 0 means that "
10825 "there was no data to transfer, and it would not make sense to block, because "
10826 "there are no writers connected to the write end of the pipe referred to by "
10827 "I<fd_in>."
10828 msgstr ""
10829 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10830 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10831 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10832 "ている者がいないからである。"
10833
10834 #. type: Plain text
10835 #: build/C/man2/tee.2:100
10836 msgid ""
10837 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10838 msgstr ""
10839 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10840
10841 #. type: Plain text
10842 #: build/C/man2/tee.2:111
10843 msgid ""
10844 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10845 "refer to the same pipe."
10846 msgstr ""
10847 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10848 "と I<fd_out> が同じパイプを参照している。"
10849
10850 #. type: Plain text
10851 #: build/C/man2/tee.2:119
10852 msgid ""
10853 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10854 "was added to glibc in version 2.5."
10855 msgstr ""
10856 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10857 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10858
10859 #. type: Plain text
10860 #: build/C/man2/tee.2:130
10861 msgid ""
10862 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10863 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10864 "data in the output by merely grabbing a reference to the input."
10865 msgstr ""
10866 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10867 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10868 "照だけを作成することで出力側にデータを 追加する。"
10869
10870 #. type: Plain text
10871 #: build/C/man2/tee.2:136
10872 msgid ""
10873 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10874 "()  system call."
10875 msgstr ""
10876 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10877 "ムを実装したものである。"
10878
10879 #. type: Plain text
10880 #: build/C/man2/tee.2:145
10881 #, no-wrap
10882 msgid ""
10883 "#define _GNU_SOURCE\n"
10884 "#include E<lt>fcntl.hE<gt>\n"
10885 "#include E<lt>stdio.hE<gt>\n"
10886 "#include E<lt>stdlib.hE<gt>\n"
10887 "#include E<lt>unistd.hE<gt>\n"
10888 "#include E<lt>errno.hE<gt>\n"
10889 "#include E<lt>limits.hE<gt>\n"
10890 msgstr ""
10891 "#define _GNU_SOURCE\n"
10892 "#include E<lt>fcntl.hE<gt>\n"
10893 "#include E<lt>stdio.hE<gt>\n"
10894 "#include E<lt>stdlib.hE<gt>\n"
10895 "#include E<lt>unistd.hE<gt>\n"
10896 "#include E<lt>errno.hE<gt>\n"
10897 "#include E<lt>limits.hE<gt>\n"
10898
10899 #. type: Plain text
10900 #: build/C/man2/tee.2:151
10901 #, no-wrap
10902 msgid ""
10903 "int\n"
10904 "main(int argc, char *argv[])\n"
10905 "{\n"
10906 "    int fd;\n"
10907 "    int len, slen;\n"
10908 msgstr ""
10909 "int\n"
10910 "main(int argc, char *argv[])\n"
10911 "{\n"
10912 "    int fd;\n"
10913 "    int len, slen;\n"
10914
10915 #. type: Plain text
10916 #: build/C/man2/tee.2:156
10917 #, no-wrap
10918 msgid ""
10919 "    if (argc != 2) {\n"
10920 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10921 "        exit(EXIT_FAILURE);\n"
10922 "    }\n"
10923 msgstr ""
10924 "    if (argc != 2) {\n"
10925 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10926 "        exit(EXIT_FAILURE);\n"
10927 "    }\n"
10928
10929 #. type: Plain text
10930 #: build/C/man2/tee.2:162
10931 #, no-wrap
10932 msgid ""
10933 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10934 "    if (fd == -1) {\n"
10935 "        perror(\"open\");\n"
10936 "        exit(EXIT_FAILURE);\n"
10937 "    }\n"
10938 msgstr ""
10939 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10940 "    if (fd == -1) {\n"
10941 "        perror(\"open\");\n"
10942 "        exit(EXIT_FAILURE);\n"
10943 "    }\n"
10944
10945 #. type: Plain text
10946 #: build/C/man2/tee.2:169
10947 #, no-wrap
10948 msgid ""
10949 "    do {\n"
10950 "        /*\n"
10951 "         * tee stdin to stdout.\n"
10952 "         */\n"
10953 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10954 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10955 msgstr ""
10956 "    do {\n"
10957 "        /*\n"
10958 "         * tee stdin to stdout.\n"
10959 "         */\n"
10960 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10961 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10962
10963 #. type: Plain text
10964 #: build/C/man2/tee.2:178
10965 #, no-wrap
10966 msgid ""
10967 "        if (len E<lt> 0) {\n"
10968 "            if (errno == EAGAIN)\n"
10969 "                continue;\n"
10970 "            perror(\"tee\");\n"
10971 "            exit(EXIT_FAILURE);\n"
10972 "        } else\n"
10973 "            if (len == 0)\n"
10974 "                break;\n"
10975 msgstr ""
10976 "        if (len E<lt> 0) {\n"
10977 "            if (errno == EAGAIN)\n"
10978 "                continue;\n"
10979 "            perror(\"tee\");\n"
10980 "            exit(EXIT_FAILURE);\n"
10981 "        } else\n"
10982 "            if (len == 0)\n"
10983 "                break;\n"
10984
10985 #. type: Plain text
10986 #: build/C/man2/tee.2:192
10987 #, no-wrap
10988 msgid ""
10989 "        /*\n"
10990 "         * Consume stdin by splicing it to a file.\n"
10991 "         */\n"
10992 "        while (len E<gt> 0) {\n"
10993 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10994 "                          len, SPLICE_F_MOVE);\n"
10995 "            if (slen E<lt> 0) {\n"
10996 "                perror(\"splice\");\n"
10997 "                break;\n"
10998 "            }\n"
10999 "            len -= slen;\n"
11000 "        }\n"
11001 "    } while (1);\n"
11002 msgstr ""
11003 "        /*\n"
11004 "         * Consume stdin by splicing it to a file.\n"
11005 "         */\n"
11006 "        while (len E<gt> 0) {\n"
11007 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11008 "                          len, SPLICE_F_MOVE);\n"
11009 "            if (slen E<lt> 0) {\n"
11010 "                perror(\"splice\");\n"
11011 "                break;\n"
11012 "            }\n"
11013 "            len -= slen;\n"
11014 "        }\n"
11015 "    } while (1);\n"
11016
11017 #. type: Plain text
11018 #: build/C/man2/tee.2:196
11019 #, no-wrap
11020 msgid ""
11021 "    close(fd);\n"
11022 "    exit(EXIT_SUCCESS);\n"
11023 "}\n"
11024 msgstr ""
11025 "    close(fd);\n"
11026 "    exit(EXIT_SUCCESS);\n"
11027 "}\n"
11028
11029 #. type: Plain text
11030 #: build/C/man2/tee.2:200
11031 msgid "B<splice>(2), B<vmsplice>(2)"
11032 msgstr "B<splice>(2), B<vmsplice>(2)"
11033
11034 #. type: TH
11035 #: build/C/man2/vm86.2:26
11036 #, no-wrap
11037 msgid "VM86"
11038 msgstr "VM86"
11039
11040 #. type: TH
11041 #: build/C/man2/vm86.2:26
11042 #, no-wrap
11043 msgid "2009-02-20"
11044 msgstr "2009-02-20"
11045
11046 #. type: Plain text
11047 #: build/C/man2/vm86.2:29
11048 msgid "vm86old, vm86 - enter virtual 8086 mode"
11049 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11050
11051 #. type: Plain text
11052 #: build/C/man2/vm86.2:31
11053 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11054 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11055
11056 #. type: Plain text
11057 #: build/C/man2/vm86.2:33
11058 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11059 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11060
11061 #. type: Plain text
11062 #: build/C/man2/vm86.2:35
11063 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11064 msgstr ""
11065 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11066
11067 #. type: Plain text
11068 #: build/C/man2/vm86.2:46
11069 msgid ""
11070 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11071 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11072 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11073 "and 1.1.9."
11074 msgstr ""
11075 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11076 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11077 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11078
11079 #. type: Plain text
11080 #: build/C/man2/vm86.2:50
11081 msgid ""
11082 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11083 "literature), and are used by B<dosemu>."
11084 msgstr ""
11085 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11086 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11087
11088 #. type: Plain text
11089 #: build/C/man2/vm86.2:52
11090 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11091 msgstr ""
11092 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11093 "ある。"
11094
11095 #. type: Plain text
11096 #: build/C/man2/vm86.2:62
11097 msgid ""
11098 "This return value is specific to i386 and indicates a problem with getting "
11099 "user-space data."
11100 msgstr ""
11101 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11102 "あったことを示す。"
11103
11104 #. type: Plain text
11105 #: build/C/man2/vm86.2:66
11106 msgid ""
11107 "This return value indicates the call is not implemented on the present "
11108 "architecture."
11109 msgstr ""
11110 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11111
11112 #. type: Plain text
11113 #: build/C/man2/vm86.2:71
11114 #, fuzzy
11115 #| msgid ""
11116 #| "Saved kernel stack exists.  (This is a kernel sanity check; the saved "
11117 #| "stack should only exist within vm86 mode itself.)"
11118 msgid ""
11119 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11120 "should exist only within vm86 mode itself.)"
11121 msgstr ""
11122 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11123 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11124 "い。)"
11125
11126 #. type: Plain text
11127 #: build/C/man2/vm86.2:74
11128 msgid ""
11129 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11130 "used in programs intended to be portable."
11131 msgstr ""
11132 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11133 "したプログラムでは使用すべきでない。"
11134
11135 #. type: TH
11136 #: build/C/man2/vmsplice.2:26
11137 #, no-wrap
11138 msgid "VMSPLICE"
11139 msgstr "VMSPLICE"
11140
11141 #. type: Plain text
11142 #: build/C/man2/vmsplice.2:29
11143 msgid "vmsplice - splice user pages into a pipe"
11144 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11145
11146 #. type: Plain text
11147 #: build/C/man2/vmsplice.2:34
11148 #, no-wrap
11149 msgid ""
11150 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11151 "B<#include E<lt>fcntl.hE<gt>>\n"
11152 "B<#include E<lt>sys/uio.hE<gt>>\n"
11153 msgstr ""
11154 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11155 "B<#include E<lt>fcntl.hE<gt>>\n"
11156 "B<#include E<lt>sys/uio.hE<gt>>\n"
11157
11158 #. type: Plain text
11159 #: build/C/man2/vmsplice.2:37
11160 #, no-wrap
11161 msgid ""
11162 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11163 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11164 msgstr ""
11165 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11166 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11167
11168 #.  Linus: vmsplice() system call to basically do a "write to
11169 #.  the buffer", but using the reference counting and VM traversal
11170 #.  to actually fill the buffer. This means that the user needs to
11171 #.  be careful not to reuse the user-space buffer it spliced into
11172 #.  the kernel-space one (contrast this to "write()", which copies
11173 #.  the actual data, and you can thus reuse the buffer immediately
11174 #.  after a successful write), but that is often easy to do.
11175 #. type: Plain text
11176 #: build/C/man2/vmsplice.2:57
11177 msgid ""
11178 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11179 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11180 "pipe."
11181 msgstr ""
11182 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11183 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11184 "ばならない。"
11185
11186 #. type: Plain text
11187 #: build/C/man2/vmsplice.2:64
11188 msgid ""
11189 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11190 "I<E<lt>sys/uio.hE<gt>>:"
11191 msgstr ""
11192 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11193 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11194
11195 #. type: Plain text
11196 #: build/C/man2/vmsplice.2:71
11197 #, no-wrap
11198 msgid ""
11199 "struct iovec {\n"
11200 "    void  *iov_base;            /* Starting address */\n"
11201 "    size_t iov_len;             /* Number of bytes */\n"
11202 "};\n"
11203 msgstr ""
11204 "struct iovec {\n"
11205 "    void  *iov_base;            /* 開始アドレス */\n"
11206 "    size_t iov_len;             /* バイト数 */\n"
11207 "};\n"
11208
11209 #. type: Plain text
11210 #: build/C/man2/vmsplice.2:84
11211 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11212 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11213
11214 #. type: Plain text
11215 #: build/C/man2/vmsplice.2:97
11216 msgid ""
11217 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11218 "future; see B<splice>(2)."
11219 msgstr ""
11220 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11221 "がある。 B<splice>(2)  参照。"
11222
11223 #.  FIXME Explain the following line in a little more detail:
11224 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11225 #. type: Plain text
11226 #: build/C/man2/vmsplice.2:113
11227 msgid ""
11228 "The user pages are a gift to the kernel.  The application may not modify "
11229 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11230 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11231 "successfully move the pages; if this flag is not specified, then a "
11232 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11233 "also be properly page aligned, both in memory and length."
11234 msgstr ""
11235 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11236 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11237 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11238 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11239 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11240 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11241 "なければならず、 長さもページ境界の倍数でなければならない。"
11242
11243 #. type: Plain text
11244 #: build/C/man2/vmsplice.2:122
11245 msgid ""
11246 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11247 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11248 "is set to indicate the error."
11249 msgstr ""
11250 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11251 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11252
11253 #. type: Plain text
11254 #: build/C/man2/vmsplice.2:127
11255 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11256 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11257
11258 #. type: Plain text
11259 #: build/C/man2/vmsplice.2:135
11260 msgid ""
11261 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11262 "B<SPLICE_F_GIFT> set."
11263 msgstr ""
11264 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11265 "設定されたがメモリがページ境界にあっていない。"
11266
11267 #. type: Plain text
11268 #: build/C/man2/vmsplice.2:143
11269 msgid ""
11270 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11271 "support was added to glibc in version 2.5."
11272 msgstr ""
11273 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11274 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11275
11276 #. type: Plain text
11277 #: build/C/man2/vmsplice.2:154
11278 msgid ""
11279 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11280 "it comes to limitations on number of segments being passed in.  This limit "
11281 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11282 "writing, that limit is 1024."
11283 msgstr ""
11284 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11285 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11286 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11287 "は 1024 である。"
11288
11289 #. type: Plain text
11290 #: build/C/man2/vmsplice.2:157
11291 msgid "B<splice>(2), B<tee>(2)"
11292 msgstr "B<splice>(2), B<tee>(2)"
11293
11294 #~ msgid "RETURN VALUES"
11295 #~ msgstr "返り値"
11296
11297 #~ msgid "2010-08-29"
11298 #~ msgstr "2010-08-29"
11299
11300 #~ msgid ""
11301 #~ "Depending on which operation was executed, the returned value for a "
11302 #~ "successful call can have differing meanings."
11303 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11304
11305 #~ msgid ""
11306 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11307 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11308 #~ "was not equal to the expected value, the operation fails with the error "
11309 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11310 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11311 #~ msgstr ""
11312 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11313 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11314 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11315 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11316 #~ "敗する。"
11317
11318 #~ msgid "An operation was not defined or error in page alignment."
11319 #~ msgstr ""
11320 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11321
11322 #~ msgid "2010-11-04"
11323 #~ msgstr "2010-11-04"
11324
11325 #~ msgid "2007-06-01"
11326 #~ msgstr "2007-06-01"
11327
11328 #~ msgid "1995-11-29"
11329 #~ msgstr "1995-11-29"
11330
11331 #~ msgid "2012-04-26"
11332 #~ msgstr "2012-04-26"
11333
11334 #~ msgid "2004-09-10"
11335 #~ msgstr "2004-09-10"
11336
11337 #~ msgid "2009-09-15"
11338 #~ msgstr "2009-09-15"
11339
11340 #~ msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
11341 #~ msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
11342
11343 #~ msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
11344 #~ msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
11345
11346 #, fuzzy
11347 #~| msgid ""
11348 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11349 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11350 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11351 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11352 #~| "giving the parent a chance to gain control before the new program begins "
11353 #~| "execution.  A process probably shouldn't make this request if its parent "
11354 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11355 #~ msgid ""
11356 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11357 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11358 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11359 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11360 #~ "be sent to it, giving the parent a chance to gain control before the new "
11361 #~ "program begins execution.  A process probably shouldn't make this request "
11362 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11363 #~ "are ignored.)"
11364 #~ msgstr ""
11365 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11366 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11367 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11368 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11369 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11370 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11371 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11372 #~ "は無視される。)"
11373
11374 #~ msgid ""
11375 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11376 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11377 #~ msgstr ""
11378 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11379 #~ "\\ 8> で子プロセスの動作を停止させる。"
11380
11381 #~ msgid ""
11382 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11383 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11384 #~ msgstr ""
11385 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11386 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11387
11388 #~ msgid ""
11389 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11390 #~ "of the calling process; the behavior of the child is as if it had done a "
11391 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11392 #~ "the child process for most purposes (e.g., it will receive notification "
11393 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11394 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11395 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11396 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11397 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11398 #~ msgstr ""
11399 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11400 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11401 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11402 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11403 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11404 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11405 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11406 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11407 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11408
11409 #~ msgid ""
11410 #~ "Tracing causes a few subtle differences in the semantics of traced "
11411 #~ "processes.  For example, if a process is attached to with "
11412 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11413 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11414 #~ "effectively simulate this notification."
11415 #~ msgstr ""
11416 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11417 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11418 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11419 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11420
11421 #~ msgid ""
11422 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11423 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11424 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11425 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11426 #~ "child process after receiving one of these messages."
11427 #~ msgstr ""
11428 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11429 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11430 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11431 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11432 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11433 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11434
11435 #~ msgid ""
11436 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11437 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11438 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11439 #~ "and uniform way."
11440 #~ msgstr ""
11441 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11442 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11443 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11444 #~ "るものとなっている。"
11445
11446 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
11447 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
11448
11449 #~ msgid ""
11450 #~ "The second argument I<special> is the block special device these quota "
11451 #~ "apply to.  It must be mounted."
11452 #~ msgstr ""
11453 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11454 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11455
11456 #~ msgid ""
11457 #~ "The third argument I<id> is the user or group ID these quota apply to "
11458 #~ "(when relevant)."
11459 #~ msgstr ""
11460 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11461 #~ "グループの ID を指定する。"
11462
11463 #~ msgid ""
11464 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11465 #~ "on the command."
11466 #~ msgstr ""
11467 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11468 #~ "指定する。"
11469
11470 #~ msgid ""
11471 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11472 #~ "containing the quota for the file system."
11473 #~ msgstr ""
11474 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11475 #~ "記録されているファイルの パス名を指定する。"
11476
11477 #~ msgid "Disable quota."
11478 #~ msgstr "quota を無効にする。"
11479
11480 #~ msgid "Set limits and current usage; I<addr> is as before."
11481 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11482
11483 #~ msgid "Set limits; I<addr> is as before."
11484 #~ msgstr "制限値を設定する; I<addr> は同上。"
11485
11486 #~ msgid "B<Q_SETUSE>"
11487 #~ msgstr "B<Q_SETUSE>"
11488
11489 #~ msgid "Set usage."
11490 #~ msgstr "使用量を設定する。"
11491
11492 #~ msgid "Sync disk copy of a file system's quota."
11493 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11494
11495 #~ msgid "Get collected stats."
11496 #~ msgstr "収集された統計を取得する。"
11497
11498 #~ msgid ""
11499 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11500 #~ "I<errno> is set appropriately."
11501 #~ msgstr ""
11502 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11503 #~ "I<errno> が適切な値に設定される。"
11504
11505 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11506 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11507
11508 #~ msgid "Bad I<addr> value."
11509 #~ msgstr "I<addr> の値に誤りがある。"
11510
11511 #~ msgid ""
11512 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11513 #~ msgstr ""
11514 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11515 #~ "付からなかった。"
11516
11517 #~ msgid "Cannot read or write the quota file."
11518 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11519
11520 #~ msgid "B<EMFILE>"
11521 #~ msgstr "B<EMFILE>"
11522
11523 #~ msgid "Too many open files: cannot open quota file."
11524 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11525
11526 #~ msgid "I<special> cannot be found in the mount table."
11527 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11528
11529 #~ msgid "B<ENOPKG>"
11530 #~ msgstr "B<ENOPKG>"
11531
11532 #~ msgid "The kernel was compiled without quota support."
11533 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11534
11535 #~ msgid ""
11536 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11537 #~ "asked for another I<id> than that of the process itself, or anything "
11538 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11539 #~ msgstr ""
11540 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11541 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11542 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11543
11544 #~ msgid ""
11545 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11546 #~ "for a file system that didn't have quota enabled."
11547 #~ msgstr ""
11548 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11549 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
11550
11551 #~ msgid "BSD."
11552 #~ msgstr "BSD."