OSDN Git Service

Translation snapshot for LDP v3.76
[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: 2015-01-04 23:49+0900\n"
10 "PO-Revision-Date: 2015-01-05 03:45+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:70
122 #: build/C/man2/get_robust_list.2:45 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:66 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 msgid "Subfunctions for x86-64 are:"
152 msgstr "x86-64 の副機能は以下の通り:"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:54
156 #, no-wrap
157 msgid "B<ARCH_SET_FS>"
158 msgstr "B<ARCH_SET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:60
162 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
163 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
164
165 #. type: TP
166 #: build/C/man2/arch_prctl.2:60
167 #, no-wrap
168 msgid "B<ARCH_GET_FS>"
169 msgstr "B<ARCH_GET_FS>"
170
171 #. type: Plain text
172 #: build/C/man2/arch_prctl.2:68
173 msgid ""
174 "Return the 64-bit base value for the I<FS> register of the current thread in "
175 "the I<unsigned long> pointed to by I<addr>."
176 msgstr ""
177 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
178 "I<unsigned long> の領域に格納する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:68
182 #, no-wrap
183 msgid "B<ARCH_SET_GS>"
184 msgstr "B<ARCH_SET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:74
188 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
189 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
190
191 #. type: TP
192 #: build/C/man2/arch_prctl.2:74
193 #, no-wrap
194 msgid "B<ARCH_GET_GS>"
195 msgstr "B<ARCH_GET_GS>"
196
197 #. type: Plain text
198 #: build/C/man2/arch_prctl.2:82
199 msgid ""
200 "Return the 64-bit base value for the I<GS> register of the current thread in "
201 "the I<unsigned long> pointed to by I<addr>."
202 msgstr ""
203 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
204 "I<unsigned long> の領域に格納する。"
205
206 #. type: SH
207 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:216
208 #: build/C/man2/get_robust_list.2:78 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:117 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:53
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:2523
212 #: build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:62
213 #: build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:225
214 #: build/C/man2/ptrace.2:1852 build/C/man2/quotactl.2:419
215 #: build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88
216 #: build/C/man2/splice.2:135 build/C/man2/tee.2:85 build/C/man2/vm86.2:54
217 #: build/C/man2/vmsplice.2:117
218 #, no-wrap
219 msgid "RETURN VALUE"
220 msgstr "返り値"
221
222 #. type: Plain text
223 #: build/C/man2/arch_prctl.2:88
224 msgid ""
225 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
226 "I<errno> is set to indicate the error."
227 msgstr ""
228 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
229 "I<errno> をエラーを示す値に設定する。"
230
231 #. type: SH
232 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:241
233 #: build/C/man2/get_robust_list.2:85 build/C/man2/getunwind.2:88
234 #: build/C/man2/kexec_load.2:124 build/C/man2/lookup_dcookie.2:50
235 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
236 #: build/C/man2/perf_event_open.2:2529 build/C/man2/personality.2:69
237 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:245
238 #: build/C/man2/ptrace.2:1867 build/C/man2/quotactl.2:427
239 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
240 #: build/C/man2/splice.2:150 build/C/man2/tee.2:100 build/C/man2/vm86.2:59
241 #: build/C/man2/vmsplice.2:126
242 #, no-wrap
243 msgid "ERRORS"
244 msgstr "エラー"
245
246 #. type: TP
247 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:256
248 #: build/C/man2/get_robust_list.2:112 build/C/man2/lookup_dcookie.2:51
249 #: build/C/man2/modify_ldt.2:109 build/C/man2/perf_event_open.2:2575
250 #: build/C/man2/process_vm_readv.2:267 build/C/man2/process_vm_readv.2:272
251 #: build/C/man2/ptrace.2:1871 build/C/man2/quotactl.2:428
252 #: build/C/man2/sendfile.2:125 build/C/man2/vm86.2:60
253 #, no-wrap
254 msgid "B<EFAULT>"
255 msgstr "B<EFAULT>"
256
257 #. type: Plain text
258 #: build/C/man2/arch_prctl.2:93
259 msgid ""
260 "I<addr> points to an unmapped address or is outside the process address "
261 "space."
262 msgstr ""
263 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
264 "にある。"
265
266 #. type: TP
267 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:268
268 #: build/C/man2/get_robust_list.2:89 build/C/man2/kexec_load.2:129
269 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
270 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:2580
271 #: build/C/man2/personality.2:70 build/C/man2/pivot_root.2:114
272 #: build/C/man2/process_vm_readv.2:246 build/C/man2/process_vm_readv.2:257
273 #: build/C/man2/process_vm_readv.2:261 build/C/man2/ptrace.2:1882
274 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
275 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:161
276 #: build/C/man2/tee.2:107 build/C/man2/vmsplice.2:137
277 #, no-wrap
278 msgid "B<EINVAL>"
279 msgstr "B<EINVAL>"
280
281 #. type: Plain text
282 #: build/C/man2/arch_prctl.2:97
283 msgid "I<code> is not a valid subcommand."
284 msgstr "I<code> が有効なサブコマンドでない。"
285
286 #. type: TP
287 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:99
288 #: build/C/man2/kexec_load.2:136 build/C/man2/lookup_dcookie.2:65
289 #: build/C/man2/pciconfig_read.2:105 build/C/man2/perf_event_open.2:2647
290 #: build/C/man2/pivot_root.2:120 build/C/man2/process_vm_readv.2:283
291 #: build/C/man2/ptrace.2:1892 build/C/man2/quotactl.2:456
292 #: build/C/man2/vm86.2:68
293 #, no-wrap
294 msgid "B<EPERM>"
295 msgstr "B<EPERM>"
296
297 #.  .SH AUTHOR
298 #.  Man page written by Andi Kleen.
299 #. type: Plain text
300 #: build/C/man2/arch_prctl.2:103
301 msgid "I<addr> is outside the process address space."
302 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
303
304 #. type: SH
305 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:303
306 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:145
307 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
308 #: build/C/man2/nfsservctl.2:58 build/C/man2/outb.2:87
309 #: build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:2668
310 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:73
311 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:295
312 #: build/C/man2/ptrace.2:1910 build/C/man2/sendfile.2:148
313 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:184
314 #: build/C/man2/tee.2:125 build/C/man2/vm86.2:73 build/C/man2/vmsplice.2:153
315 #, no-wrap
316 msgid "CONFORMING TO"
317 msgstr "準拠"
318
319 #. type: Plain text
320 #: build/C/man2/arch_prctl.2:107
321 msgid ""
322 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
323 "programs intended to be portable."
324 msgstr ""
325 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
326 "うべきでない。"
327
328 #. type: SH
329 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:305
330 #: build/C/man2/get_robust_list.2:120 build/C/man2/getunwind.2:99
331 #: build/C/man2/kexec_load.2:147 build/C/man2/lookup_dcookie.2:81
332 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:2673
333 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
334 #: build/C/man2/process_vm_readv.2:297 build/C/man2/ptrace.2:1912
335 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:186
336 #: build/C/man2/tee.2:127 build/C/man2/vmsplice.2:155
337 #, no-wrap
338 msgid "NOTES"
339 msgstr "注意"
340
341 #. type: Plain text
342 #: build/C/man2/arch_prctl.2:110
343 msgid ""
344 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
345 "currently."
346 msgstr ""
347 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
348 "ポートされている。"
349
350 #. type: Plain text
351 #: build/C/man2/arch_prctl.2:112
352 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
353 msgstr ""
354 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
355 "される。"
356
357 #. type: Plain text
358 #: build/C/man2/arch_prctl.2:115
359 msgid "B<ARCH_SET_GS> is disabled in some kernels."
360 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
361
362 #. type: Plain text
363 #: build/C/man2/arch_prctl.2:130
364 msgid ""
365 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
366 "faster alternative to set a 32-bit base using a segment selector by setting "
367 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
368 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
369 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
370 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
371 msgstr ""
372 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
373 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
374 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
375 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
376 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
377 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
378
379 #. type: Plain text
380 #: build/C/man2/arch_prctl.2:135
381 msgid ""
382 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
383 "have to declare it yourself for now.  This may be fixed in future glibc "
384 "versions."
385 msgstr ""
386 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
387 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
388 "ジョンで修正されるかもしれない。"
389
390 #. type: Plain text
391 #: build/C/man2/arch_prctl.2:138
392 msgid "I<FS> may be already used by the threading library."
393 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
394
395 #. type: SH
396 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:319
397 #: build/C/man2/get_robust_list.2:129 build/C/man2/getunwind.2:111
398 #: build/C/man2/kexec_load.2:162 build/C/man2/modify_ldt.2:136
399 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:114
400 #: build/C/man2/perf_event_open.2:2804 build/C/man2/perfmonctl.2:205
401 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:347
402 #: build/C/man2/ptrace.2:2078 build/C/man2/quotactl.2:507
403 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
404 #: build/C/man2/splice.2:240 build/C/man2/tee.2:214
405 #: build/C/man2/vmsplice.2:164
406 #, no-wrap
407 msgid "SEE ALSO"
408 msgstr "関連項目"
409
410 #. type: Plain text
411 #: build/C/man2/arch_prctl.2:143
412 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
413 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
414
415 #. type: Plain text
416 #: build/C/man2/arch_prctl.2:145
417 msgid "AMD X86-64 Programmer's manual"
418 msgstr "AMD X86-64 Programmer's manual"
419
420 #. type: SH
421 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:333
422 #: build/C/man2/get_robust_list.2:138 build/C/man2/getunwind.2:113
423 #: build/C/man2/kexec_load.2:165 build/C/man2/lookup_dcookie.2:88
424 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:60
425 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:116
426 #: build/C/man2/perf_event_open.2:2810 build/C/man2/perfmonctl.2:209
427 #: build/C/man2/personality.2:77 build/C/man2/pivot_root.2:149
428 #: build/C/man2/process_vm_readv.2:350 build/C/man2/ptrace.2:2092
429 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
430 #: build/C/man2/set_tid_address.2:103 build/C/man2/splice.2:244
431 #: build/C/man2/tee.2:217 build/C/man2/vm86.2:76 build/C/man2/vmsplice.2:167
432 #, no-wrap
433 msgid "COLOPHON"
434 msgstr "この文書について"
435
436 #. type: Plain text
437 #: build/C/man2/arch_prctl.2:153 build/C/man2/futex.2:341
438 #: build/C/man2/get_robust_list.2:146 build/C/man2/getunwind.2:121
439 #: build/C/man2/kexec_load.2:173 build/C/man2/lookup_dcookie.2:96
440 #: build/C/man2/modify_ldt.2:146 build/C/man2/nfsservctl.2:68
441 #: build/C/man2/outb.2:107 build/C/man2/pciconfig_read.2:124
442 #: build/C/man2/perf_event_open.2:2818 build/C/man2/perfmonctl.2:217
443 #: build/C/man2/personality.2:85 build/C/man2/pivot_root.2:157
444 #: build/C/man2/process_vm_readv.2:358 build/C/man2/ptrace.2:2100
445 #: build/C/man2/quotactl.2:520 build/C/man2/sendfile.2:211
446 #: build/C/man2/set_tid_address.2:111 build/C/man2/splice.2:252
447 #: build/C/man2/tee.2:225 build/C/man2/vm86.2:84 build/C/man2/vmsplice.2:175
448 msgid ""
449 "This page is part of release 3.76 of the Linux I<man-pages> project.  A "
450 "description of the project, information about reporting bugs, and the latest "
451 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
452 "pages/."
453 msgstr ""
454 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.76 の一部\n"
455 "である。プロジェクトの説明とバグ報告に関する情報は\n"
456 "http://www.kernel.org/doc/man-pages/ に書かれている。"
457
458 #. type: TH
459 #: build/C/man2/futex.2:53
460 #, no-wrap
461 msgid "FUTEX"
462 msgstr "FUTEX"
463
464 #. type: TH
465 #: build/C/man2/futex.2:53
466 #, no-wrap
467 msgid "2014-05-21"
468 msgstr "2014-05-21"
469
470 #. type: Plain text
471 #: build/C/man2/futex.2:56
472 msgid "futex - fast user-space locking"
473 msgstr "futex - 高速ユーザ空間ロック"
474
475 #. type: Plain text
476 #: build/C/man2/futex.2:61
477 #, no-wrap
478 msgid ""
479 "B<#include E<lt>linux/futex.hE<gt>>\n"
480 "B<#include E<lt>sys/time.hE<gt>>\n"
481 msgstr ""
482 "B<#include E<lt>linux/futex.hE<gt>>\n"
483 "B<#include E<lt>sys/time.hE<gt>>\n"
484
485 #. type: Plain text
486 #: build/C/man2/futex.2:64
487 #, no-wrap
488 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
489 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
490
491 #.  int *? void *? u32 *?
492 #. type: Plain text
493 #: build/C/man2/futex.2:67
494 #, no-wrap
495 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
496 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
497
498 #. type: Plain text
499 #: build/C/man2/futex.2:70 build/C/man2/getunwind.2:40
500 #: build/C/man2/kexec_load.2:39 build/C/man2/modify_ldt.2:36
501 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
502 #: build/C/man2/pivot_root.2:18
503 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
504 msgstr ""
505 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
506 "を参照。"
507
508 #. type: Plain text
509 #: build/C/man2/futex.2:86
510 msgid ""
511 "The B<futex>()  system call provides a method for a program to wait for a "
512 "value at a given address to change, and a method to wake up anyone waiting "
513 "on a particular address (while the addresses for the same memory in separate "
514 "processes may not be equal, the kernel maps them internally so the same "
515 "memory mapped in different locations will correspond for B<futex>()  "
516 "calls).  This system call is typically used to implement the contended case "
517 "of a lock in shared memory, as described in B<futex>(7)."
518 msgstr ""
519 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
520 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
521 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
522 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
523 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
524 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
525 "る。"
526
527 #. type: Plain text
528 #: build/C/man2/futex.2:93
529 msgid ""
530 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
531 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
532 "mean putting the calling process to sleep or, conversely, waking a waiting "
533 "process."
534 msgstr ""
535 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
536 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
537 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
538 "味する。"
539
540 #. type: Plain text
541 #: build/C/man2/futex.2:100
542 msgid ""
543 "Callers of this function are expected to adhere to the semantics as set out "
544 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
545 "instructions, this in turn probably means that most users will in fact be "
546 "library authors and not general application developers."
547 msgstr ""
548 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
549 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
550 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
551 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
552 "る。"
553
554 #. type: Plain text
555 #: build/C/man2/futex.2:108
556 msgid ""
557 "The I<uaddr> argument needs to point to an aligned integer which stores the "
558 "counter.  The operation to execute is passed via the I<op> argument, along "
559 "with a value I<val>."
560 msgstr ""
561 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
562 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
563 "渡される。"
564
565 #. type: Plain text
566 #: build/C/man2/futex.2:110
567 msgid "Five operations are currently defined:"
568 msgstr "現在のところ 5 つの操作が定義されている:"
569
570 #. type: TP
571 #: build/C/man2/futex.2:110 build/C/man2/futex.2:223
572 #, no-wrap
573 msgid "B<FUTEX_WAIT>"
574 msgstr "B<FUTEX_WAIT>"
575
576 #. type: Plain text
577 #: build/C/man2/futex.2:133
578 msgid ""
579 "This operation atomically verifies that the futex address I<uaddr> still "
580 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
581 "address.  If the I<timeout> argument is non-NULL, its contents specify the "
582 "duration of the wait.  (This interval will be rounded up to the system clock "
583 "granularity, and kernel scheduling delays mean that the blocking interval "
584 "may overrun by a small amount.)  If I<timeout> is NULL, the call blocks "
585 "indefinitely.  The arguments I<uaddr2> and I<val3> are ignored."
586 msgstr ""
587 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
588 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
589 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
590 "の内容は待ち時間の最大値を表す (この停止時間はシステムクロックの粒度に切り上"
591 "げられ、 カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 "
592 "NULL の場合、 呼び出しは無限に停止する。 引き数 I<uaddr2> と I<val3> は無視さ"
593 "れる。"
594
595 #. type: Plain text
596 #: build/C/man2/futex.2:141
597 msgid ""
598 "For B<futex>(7), this call is executed if decrementing the count gave a "
599 "negative value (indicating contention), and will sleep until another process "
600 "releases the futex and executes the B<FUTEX_WAKE> operation."
601 msgstr ""
602 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
603 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
604 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
605
606 #. type: TP
607 #: build/C/man2/futex.2:141 build/C/man2/futex.2:229
608 #, no-wrap
609 msgid "B<FUTEX_WAKE>"
610 msgstr "B<FUTEX_WAKE>"
611
612 #. type: Plain text
613 #: build/C/man2/futex.2:152
614 msgid ""
615 "This operation wakes at most I<val> processes waiting on this futex address "
616 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
617 "I<val3> are ignored."
618 msgstr ""
619 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
620 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
621 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
622
623 #. type: Plain text
624 #: build/C/man2/futex.2:158
625 msgid ""
626 "For B<futex>(7), this is executed if incrementing the count showed that "
627 "there were waiters, once the futex value has been set to 1 (indicating that "
628 "it is available)."
629 msgstr ""
630 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
631 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
632 "場合に実行される。"
633
634 #. type: TP
635 #: build/C/man2/futex.2:158
636 #, no-wrap
637 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
638 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
639
640 #.  , suitable for .BR poll (2).
641 #. type: Plain text
642 #: build/C/man2/futex.2:174
643 msgid ""
644 "To support asynchronous wakeups, this operation associates a file descriptor "
645 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
646 "receive the signal number that was passed in I<val>.  The calling process "
647 "must close the returned file descriptor after use.  The arguments "
648 "I<timeout>, I<uaddr2> and I<val3> are ignored."
649 msgstr ""
650 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
651 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
652 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
653 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
654 "I<uaddr2>, I<val3> は無視される。"
655
656 #. type: Plain text
657 #: build/C/man2/futex.2:179
658 msgid ""
659 "To prevent race conditions, the caller should test if the futex has been "
660 "upped after B<FUTEX_FD> returns."
661 msgstr ""
662 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
663 "up されたかどうかを確認しなければならない。"
664
665 #. type: Plain text
666 #: build/C/man2/futex.2:183
667 msgid ""
668 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
669 "2.6.26 onward."
670 msgstr ""
671 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
672 "ている。"
673
674 #. type: TP
675 #: build/C/man2/futex.2:183
676 #, no-wrap
677 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
678 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
679
680 #. type: Plain text
681 #: build/C/man2/futex.2:198
682 msgid ""
683 "This operation was introduced in order to avoid a \"thundering herd\" effect "
684 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
685 "another futex.  This call wakes up I<val> processes, and requeues all other "
686 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
687 "I<val3> are ignored."
688 msgstr ""
689 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
690 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
691 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
692 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
693 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
694
695 #. type: TP
696 #: build/C/man2/futex.2:198
697 #, no-wrap
698 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
699 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
700
701 #. type: Plain text
702 #: build/C/man2/futex.2:216
703 msgid ""
704 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
705 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
706 "but first checks whether the location I<uaddr> still contains the value "
707 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
708 "argument I<timeout> is ignored."
709 msgstr ""
710 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
711 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
712 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
713 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
714
715 #. type: Plain text
716 #: build/C/man2/futex.2:223
717 msgid ""
718 "In the event of an error, all operations return -1, and set I<errno> to "
719 "indicate the error.  The return value on success depends on the operation, "
720 "as described in the following list:"
721 msgstr ""
722 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
723 "される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りで"
724 "ある。"
725
726 #. type: Plain text
727 #: build/C/man2/futex.2:229
728 msgid ""
729 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
730 "the various possible error returns."
731 msgstr ""
732 "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性"
733 "があるエラーについては「エラー」の節を参照。"
734
735 #. type: Plain text
736 #: build/C/man2/futex.2:232 build/C/man2/futex.2:238 build/C/man2/futex.2:241
737 msgid "Returns the number of processes woken up."
738 msgstr "wake したプロセスの数を返す。"
739
740 #. type: TP
741 #: build/C/man2/futex.2:232
742 #, no-wrap
743 msgid "B<FUTEX_FD>"
744 msgstr "B<FUTEX_FD>"
745
746 #. type: Plain text
747 #: build/C/man2/futex.2:235
748 msgid "Returns the new file descriptor associated with the futex."
749 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
750
751 #. type: TP
752 #: build/C/man2/futex.2:235
753 #, no-wrap
754 msgid "B<FUTEX_REQUEUE>"
755 msgstr "B<FUTEX_REQUEUE>"
756
757 #. type: TP
758 #: build/C/man2/futex.2:238
759 #, no-wrap
760 msgid "B<FUTEX_CMP_REQUEUE>"
761 msgstr "B<FUTEX_CMP_REQUEUE>"
762
763 #. type: TP
764 #: build/C/man2/futex.2:242 build/C/man2/perf_event_open.2:2551
765 #: build/C/man2/quotactl.2:486
766 #, no-wrap
767 msgid "B<EACCES>"
768 msgstr "B<EACCES>"
769
770 #. type: Plain text
771 #: build/C/man2/futex.2:245
772 msgid "No read access to futex memory."
773 msgstr "futex メモリに読み込みアクセス権がなかった。"
774
775 #. type: TP
776 #: build/C/man2/futex.2:245 build/C/man2/sendfile.2:116
777 #: build/C/man2/splice.2:151 build/C/man2/tee.2:101
778 #: build/C/man2/vmsplice.2:127
779 #, no-wrap
780 msgid "B<EAGAIN>"
781 msgstr "B<EAGAIN>"
782
783 #. type: Plain text
784 #: build/C/man2/futex.2:256
785 msgid ""
786 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
787 "equal to the expected value I<val3>.  (This probably indicates a race; use "
788 "the safe B<FUTEX_WAKE> now.)"
789 msgstr ""
790 "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出"
791 "された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> "
792 "を使うこと。)"
793
794 #. type: Plain text
795 #: build/C/man2/futex.2:261
796 msgid "Error retrieving I<timeout> information from user space."
797 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
798
799 #. type: TP
800 #: build/C/man2/futex.2:261
801 #, no-wrap
802 msgid "B<EINTR>"
803 msgstr "B<EINTR>"
804
805 #. type: Plain text
806 #: build/C/man2/futex.2:268
807 msgid ""
808 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
809 "a spurious wakeup."
810 msgstr ""
811 "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中"
812 "断された。"
813
814 #. type: Plain text
815 #: build/C/man2/futex.2:271
816 msgid "Invalid argument."
817 msgstr "無効な引き数。"
818
819 #. type: TP
820 #: build/C/man2/futex.2:271
821 #, no-wrap
822 msgid "B<ENFILE>"
823 msgstr "B<ENFILE>"
824
825 #. type: Plain text
826 #: build/C/man2/futex.2:274
827 msgid "The system limit on the total number of open files has been reached."
828 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
829
830 #. type: TP
831 #: build/C/man2/futex.2:274 build/C/man2/modify_ldt.2:126
832 #: build/C/man2/pciconfig_read.2:93 build/C/man2/perf_event_open.2:2633
833 #: build/C/man2/quotactl.2:447 build/C/man2/vm86.2:64
834 #, no-wrap
835 msgid "B<ENOSYS>"
836 msgstr "B<ENOSYS>"
837
838 #. type: Plain text
839 #: build/C/man2/futex.2:278
840 msgid "Invalid operation specified in I<op>."
841 msgstr "I<op> に無効な操作が指定された。"
842
843 #. type: TP
844 #: build/C/man2/futex.2:278
845 #, no-wrap
846 msgid "B<ETIMEDOUT>"
847 msgstr "B<ETIMEDOUT>"
848
849 #. type: Plain text
850 #: build/C/man2/futex.2:283
851 msgid "Timeout during the B<FUTEX_WAIT> operation."
852 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
853
854 #. type: TP
855 #: build/C/man2/futex.2:283
856 #, no-wrap
857 msgid "B<EWOULDBLOCK>"
858 msgstr "B<EWOULDBLOCK>"
859
860 #. type: Plain text
861 #: build/C/man2/futex.2:293
862 msgid ""
863 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
864 "to the expected value I<val> at the time of the call."
865 msgstr ""
866 "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 "
867 "I<val> と異なっていた。"
868
869 #. type: SH
870 #: build/C/man2/futex.2:293 build/C/man2/get_robust_list.2:116
871 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:141
872 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
873 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:292
874 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
875 #: build/C/man2/splice.2:179 build/C/man2/tee.2:120
876 #: build/C/man2/vmsplice.2:148
877 #, no-wrap
878 msgid "VERSIONS"
879 msgstr "バージョン"
880
881 #. type: Plain text
882 #: build/C/man2/futex.2:303
883 msgid ""
884 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
885 "from what was described above.  A 4-argument system call with the semantics "
886 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70, one "
887 "argument was added.  In Linux 2.6.7, a sixth argument was added\\(emmessy, "
888 "especially on the s390 architecture."
889 msgstr ""
890 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
891 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
892 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
893 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
894 "上の特別のものである。"
895
896 #. type: Plain text
897 #: build/C/man2/futex.2:305 build/C/man2/kexec_load.2:147
898 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:186
899 #: build/C/man2/tee.2:127 build/C/man2/vmsplice.2:155
900 msgid "This system call is Linux-specific."
901 msgstr "このシステムコールは Linux 固有である。"
902
903 #.  .SH "AUTHORS"
904 #.  .PP
905 #.  Futexes were designed and worked on by
906 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
907 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
908 #.  and Rusty Russell (IBM Linux Technology Center).
909 #.  This page written by bert hubert.
910 #. type: Plain text
911 #: build/C/man2/futex.2:319
912 msgid ""
913 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
914 "for end-users.  (There is no wrapper function for this system call in "
915 "glibc.)  Implementors are expected to be assembly literate and to have read "
916 "the sources of the futex user-space library referenced below."
917 msgstr ""
918 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
919 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
920 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
921 "ブラリの ソースを読み終えていることが要求される。"
922
923 #. type: Plain text
924 #: build/C/man2/futex.2:322
925 msgid "B<restart_syscall>(2), B<futex>(7)"
926 msgstr "B<restart_syscall>(2), B<futex>(7)"
927
928 #. type: Plain text
929 #: build/C/man2/futex.2:325
930 msgid ""
931 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
932 "of the Ottawa Linux Symposium 2002), online at"
933 msgstr ""
934 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
935 "of the Ottawa Linux Symposium 2002), online at"
936
937 #. type: Plain text
938 #: build/C/man2/futex.2:328
939 msgid ""
940 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
941 "E<.UE>"
942 msgstr ""
943 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
944 "E<.UE>"
945
946 #. type: Plain text
947 #: build/C/man2/futex.2:330
948 msgid "Futex example library, futex-*.tar.bz2 at"
949 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
950
951 #. type: Plain text
952 #: build/C/man2/futex.2:333
953 msgid ""
954 "E<.UR ftp://ftp.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<."
955 "UE>"
956 msgstr ""
957 "E<.UR ftp://ftp.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<."
958 "UE>"
959
960 #. type: TH
961 #: build/C/man2/get_robust_list.2:29
962 #, no-wrap
963 msgid "GET_ROBUST_LIST"
964 msgstr "GET_ROBUST_LIST"
965
966 #. type: TH
967 #: build/C/man2/get_robust_list.2:29
968 #, no-wrap
969 msgid "2014-05-10"
970 msgstr "2014-05-10"
971
972 #. type: TH
973 #: build/C/man2/get_robust_list.2:29
974 #, no-wrap
975 msgid "Linux System Calls"
976 msgstr "Linux System Calls"
977
978 #. type: Plain text
979 #: build/C/man2/get_robust_list.2:32
980 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
981 msgstr ""
982
983 #. type: Plain text
984 #: build/C/man2/get_robust_list.2:37
985 #, no-wrap
986 msgid ""
987 "B<#include E<lt>linux/futex.hE<gt>>\n"
988 "B<#include E<lt>sys/types.hE<gt>>\n"
989 "B<#include E<lt>syscall.hE<gt>>\n"
990 msgstr ""
991 "B<#include E<lt>linux/futex.hE<gt>>\n"
992 "B<#include E<lt>sys/types.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:41
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<                     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:45
1006 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
1007 msgstr ""
1008 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
1009 "の節を参照。"
1010
1011 #. type: Plain text
1012 #: build/C/man2/get_robust_list.2:50
1013 msgid ""
1014 "The robust futex implementation needs to maintain per-thread lists of robust "
1015 "futexes which are unlocked when the thread exits.  These lists are managed "
1016 "in user space; the kernel is notified about only the location of the head of "
1017 "the list."
1018 msgstr ""
1019
1020 #. type: Plain text
1021 #: build/C/man2/get_robust_list.2:66
1022 msgid ""
1023 "The B<get_robust_list>()  system call returns the head of the robust futex "
1024 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1025 "the head of the list for the calling thread is returned.  The list head is "
1026 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1027 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1028 msgstr ""
1029
1030 #. type: Plain text
1031 #: build/C/man2/get_robust_list.2:78
1032 msgid ""
1033 "The B<set_robust_list>()  system call requests the kernel to record the head "
1034 "of the list of robust futexes owned by the calling thread.  The I<head> "
1035 "argument is the list head to record.  The I<len> argument should be "
1036 "I<sizeof(*head)>."
1037 msgstr ""
1038
1039 #. type: Plain text
1040 #: build/C/man2/get_robust_list.2:85
1041 msgid ""
1042 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1043 "when the operation is successful, an error code otherwise."
1044 msgstr ""
1045
1046 #. type: Plain text
1047 #: build/C/man2/get_robust_list.2:89
1048 msgid ""
1049 "The B<set_robust_list>()  system call can fail with the following error:"
1050 msgstr ""
1051
1052 #. type: Plain text
1053 #: build/C/man2/get_robust_list.2:95
1054 msgid ""
1055 "I<len> does not match the size of structure B<struct robust_list_head> "
1056 "expected by kernel."
1057 msgstr ""
1058
1059 #. type: Plain text
1060 #: build/C/man2/get_robust_list.2:99
1061 msgid ""
1062 "The B<get_robust_list>()  system call can fail with the following errors:"
1063 msgstr ""
1064
1065 #. type: Plain text
1066 #: build/C/man2/get_robust_list.2:107
1067 msgid ""
1068 "The calling process does not have permission to see the robust futex list of "
1069 "the thread with the thread ID I<pid>, and does not have the "
1070 "B<CAP_SYS_PTRACE> capability."
1071 msgstr ""
1072
1073 #. type: TP
1074 #: build/C/man2/get_robust_list.2:107 build/C/man2/perf_event_open.2:2660
1075 #: build/C/man2/process_vm_readv.2:287 build/C/man2/ptrace.2:1905
1076 #: build/C/man2/quotactl.2:461 build/C/man2/quotactl.2:504
1077 #, no-wrap
1078 msgid "B<ESRCH>"
1079 msgstr "B<ESRCH>"
1080
1081 #. type: Plain text
1082 #: build/C/man2/get_robust_list.2:112
1083 msgid "No thread with the thread ID I<pid> could be found."
1084 msgstr ""
1085
1086 #. type: Plain text
1087 #: build/C/man2/get_robust_list.2:116
1088 msgid ""
1089 "The head of the robust futex list can't be stored at the location I<head>."
1090 msgstr ""
1091
1092 #. type: Plain text
1093 #: build/C/man2/get_robust_list.2:120
1094 msgid ""
1095 "These system calls were added in Linux 2.6.17.  No library support is "
1096 "provided; use B<syscall>(2)."
1097 msgstr ""
1098 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1099 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1100
1101 #. type: Plain text
1102 #: build/C/man2/get_robust_list.2:125
1103 msgid ""
1104 "These system calls are not needed by normal applications.  No support for "
1105 "them is provided in glibc.  In the unlikely event that you want to call them "
1106 "directly, use B<syscall>(2)."
1107 msgstr ""
1108 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1109 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1110 "呼び出したい場合は B<syscall>(2) を使うこと。"
1111
1112 #. type: Plain text
1113 #: build/C/man2/get_robust_list.2:129
1114 msgid ""
1115 "A thread can have only one robust futex list; therefore applications that "
1116 "wish to use this functionality should use the robust mutexes provided by "
1117 "glibc."
1118 msgstr ""
1119
1120 #.  .BR pthread_mutexattr_setrobust_np (3)
1121 #. type: Plain text
1122 #: build/C/man2/get_robust_list.2:132
1123 msgid "B<futex>(2)"
1124 msgstr "B<futex>(2)"
1125
1126 #.  http://lwn.net/Articles/172149/
1127 #. type: Plain text
1128 #: build/C/man2/get_robust_list.2:138
1129 msgid ""
1130 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1131 "txt> in the Linux kernel source tree"
1132 msgstr ""
1133
1134 #. type: TH
1135 #: build/C/man2/getunwind.2:27
1136 #, no-wrap
1137 msgid "GETUNWIND"
1138 msgstr ""
1139
1140 #. type: TH
1141 #: build/C/man2/getunwind.2:27
1142 #, no-wrap
1143 msgid "2014-09-21"
1144 msgstr "2014-09-21"
1145
1146 #. type: Plain text
1147 #: build/C/man2/getunwind.2:30
1148 msgid "getunwind - copy the unwind data to caller's buffer"
1149 msgstr ""
1150
1151 #. type: Plain text
1152 #: build/C/man2/getunwind.2:34
1153 #, no-wrap
1154 msgid ""
1155 "B<#include E<lt>syscall.hE<gt>>\n"
1156 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1157 msgstr ""
1158 "B<#include E<lt>syscall.hE<gt>>\n"
1159 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1160
1161 #. type: Plain text
1162 #: build/C/man2/getunwind.2:36
1163 #, no-wrap
1164 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1165 msgstr ""
1166
1167 #. type: Plain text
1168 #: build/C/man2/getunwind.2:42
1169 msgid "I<Note: this function is obsolete.>"
1170 msgstr ""
1171
1172 #. type: Plain text
1173 #: build/C/man2/getunwind.2:52
1174 msgid ""
1175 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1176 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1177 "of the unwind data; this data describes the gate page (kernel code that is "
1178 "mapped into user space)."
1179 msgstr ""
1180
1181 #. type: Plain text
1182 #: build/C/man2/getunwind.2:64
1183 msgid ""
1184 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1185 "copied only if I<buf_size> is greater than or equal to the size of the "
1186 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1187 "call succeeds, returning the size that would be needed to store the unwind "
1188 "data."
1189 msgstr ""
1190
1191 #. type: Plain text
1192 #: build/C/man2/getunwind.2:68
1193 msgid ""
1194 "The first part of the unwind data contains an unwind table.  The rest "
1195 "contains the associated unwind information, in no particular order.  The "
1196 "unwind table contains entries of the following form:"
1197 msgstr ""
1198
1199 #. type: Plain text
1200 #: build/C/man2/getunwind.2:73
1201 #, no-wrap
1202 msgid ""
1203 "    u64 start;      (64-bit address of start of function)\n"
1204 "    u64 end;        (64-bit address of end of function)\n"
1205 "    u64 info;       (BUF-relative offset to unwind info)\n"
1206 msgstr ""
1207
1208 #. type: Plain text
1209 #: build/C/man2/getunwind.2:81
1210 msgid ""
1211 "An entry whose I<start> value is zero indicates the end of the table.  For "
1212 "more information about the format, see the I<IA-64 Software Conventions and "
1213 "Runtime Architecture> manual."
1214 msgstr ""
1215
1216 #. type: Plain text
1217 #: build/C/man2/getunwind.2:88
1218 msgid ""
1219 "On success, B<getunwind>()  returns the size of the unwind data.  On error, "
1220 "-1 is returned and I<errno> is set to indicate the error."
1221 msgstr ""
1222 "成功すると、 B<getunwind> は unwind されたデータのサイズを返す。 エラーの場"
1223 "合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1224
1225 #. type: Plain text
1226 #: build/C/man2/getunwind.2:94
1227 msgid ""
1228 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1229 "stored in the space specified by I<buf>."
1230 msgstr ""
1231
1232 #. type: Plain text
1233 #: build/C/man2/getunwind.2:96
1234 msgid "This system call is available since Linux 2.4."
1235 msgstr ""
1236
1237 #. type: Plain text
1238 #: build/C/man2/getunwind.2:99
1239 msgid ""
1240 "This system call is Linux-specific, and is available only on the IA-64 "
1241 "architecture."
1242 msgstr ""
1243
1244 #. type: Plain text
1245 #: build/C/man2/getunwind.2:107
1246 msgid ""
1247 "This system call has been deprecated.  The modern way to obtain the kernel's "
1248 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1249 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1250 msgstr ""
1251
1252 #. type: Plain text
1253 #: build/C/man2/getunwind.2:111
1254 msgid ""
1255 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1256 "that you want to call it, use B<syscall>(2)."
1257 msgstr ""
1258 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1259 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1260
1261 #. type: Plain text
1262 #: build/C/man2/getunwind.2:113
1263 msgid "B<getauxval>(3)"
1264 msgstr "B<getauxval>(3)"
1265
1266 #. type: TH
1267 #: build/C/man2/kexec_load.2:26
1268 #, no-wrap
1269 msgid "KEXEC_LOAD"
1270 msgstr "KEXEC_LOAD"
1271
1272 #. type: TH
1273 #: build/C/man2/kexec_load.2:26 build/C/man2/perf_event_open.2:27
1274 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
1275 #, no-wrap
1276 msgid "2014-08-19"
1277 msgstr "2014-08-19"
1278
1279 #. type: Plain text
1280 #: build/C/man2/kexec_load.2:29
1281 msgid "kexec_load - load a new kernel for later execution"
1282 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1283
1284 #. type: Plain text
1285 #: build/C/man2/kexec_load.2:31
1286 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1287 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1288
1289 #. type: Plain text
1290 #: build/C/man2/kexec_load.2:33
1291 msgid ""
1292 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1293 ">"
1294 msgstr ""
1295 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1296 ">"
1297
1298 #. type: Plain text
1299 #: build/C/man2/kexec_load.2:36
1300 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1301 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1302
1303 #. type: Plain text
1304 #: build/C/man2/kexec_load.2:44
1305 msgid ""
1306 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1307 "later by B<reboot>(2)."
1308 msgstr ""
1309 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1310 "その後の B<reboot>(2) で実行できるようにする。"
1311
1312 #. type: Plain text
1313 #: build/C/man2/kexec_load.2:50
1314 msgid ""
1315 "The I<flags> argument is a bit mask that controls the operation of the "
1316 "call.  The following values can be specified in I<flags>:"
1317 msgstr ""
1318 "I<flags> 引き数は、システムコールの呼び出しの動作を制御するマスクビットであ"
1319 "る。 I<flags> には以下の値を指定できる。"
1320
1321 #. type: TP
1322 #: build/C/man2/kexec_load.2:50
1323 #, no-wrap
1324 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1325 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1326
1327 #.  FIXME Explain in more detail how KEXEC_ON_CRASH is actually used
1328 #. type: Plain text
1329 #: build/C/man2/kexec_load.2:54
1330 msgid "Execute the new kernel automatically on a system crash."
1331 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1332
1333 #. type: TP
1334 #: build/C/man2/kexec_load.2:54
1335 #, no-wrap
1336 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1337 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1338
1339 #. type: Plain text
1340 #: build/C/man2/kexec_load.2:64
1341 msgid ""
1342 "Preserve the system hardware and software states before executing the new "
1343 "kernel.  This could be used for system suspend.  This flag is available only "
1344 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1345 "only if I<nr_segments> is greater than 0."
1346 msgstr ""
1347 "新しいカーネルを実行する前に、\n"
1348 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1349 "システムの中断時 (suspend) などで使用できる。\n"
1350 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1351 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1352
1353 #. type: Plain text
1354 #: build/C/man2/kexec_load.2:85
1355 msgid ""
1356 "The high-order bits (corresponding to the mask 0xffff0000) of I<flags> "
1357 "contain the architecture of the to-be-executed kernel.  Specify (OR) the "
1358 "constant B<KEXEC_ARCH_DEFAULT> to use the current architecture, or one of "
1359 "the following architecture constants B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1360 "B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, "
1361 "B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, "
1362 "B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and B<KEXEC_ARCH_MIPS_LE>.  The "
1363 "architecture must be executable on the CPU of the system."
1364 msgstr ""
1365 "I<flags> の上位ビット (マスク 0xffff0000 に対応) には、\n"
1366 "実行されるカーネルのアーキテクチャが入る。\n"
1367 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1368 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1369 "B<KEXEC_ARCH_X86_64>,\n"
1370 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1371 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1372 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1373 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1374 "システムの CPU で実行可能なものでなければならない。"
1375
1376 #. type: Plain text
1377 #: build/C/man2/kexec_load.2:100
1378 #, fuzzy
1379 #| msgid ""
1380 #| "The I<entry> argument is the physical entry address in the kernel image.  "
1381 #| "The I<nr_segments> argument is the number of segments pointed to by the "
1382 #| "I<segments> pointer.  The I<segments> argument is an array of "
1383 #| "I<kexec_segment> structures which define the kernel layout:"
1384 msgid ""
1385 "The I<entry> argument is the physical entry address in the kernel image.  "
1386 "The I<nr_segments> argument is the number of segments pointed to by the "
1387 "I<segments> pointer; the kernel imposes an (arbitrary) limit of 16 on the "
1388 "number of segments.  The I<segments> argument is an array of "
1389 "I<kexec_segment> structures which define the kernel layout:"
1390 msgstr ""
1391 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1392 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1393 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1394 "この構造体によりカーネルの配置が定義される。"
1395
1396 #. type: Plain text
1397 #: build/C/man2/kexec_load.2:109
1398 #, no-wrap
1399 msgid ""
1400 "struct kexec_segment {\n"
1401 "    void   *buf;        /* Buffer in user space */\n"
1402 "    size_t  bufsz;      /* Buffer length in user space */\n"
1403 "    void   *mem;        /* Physical address of kernel */\n"
1404 "    size_t  memsz;      /* Physical address length */\n"
1405 "};\n"
1406 msgstr ""
1407 "struct kexec_segment {\n"
1408 "    void   *buf;        /* Buffer in user space */\n"
1409 "    size_t  bufsz;      /* Buffer length in user space */\n"
1410 "    void   *mem;        /* Physical address of kernel */\n"
1411 "    size_t  memsz;      /* Physical address length */\n"
1412 "};\n"
1413
1414 #.  FIXME Explain the details of how the kernel image defined by segments
1415 #.  is copied from the calling process into previously reserved memory.
1416 #. type: Plain text
1417 #: build/C/man2/kexec_load.2:117
1418 msgid ""
1419 "The kernel image defined by I<segments> is copied from the calling process "
1420 "into previously reserved memory."
1421 msgstr ""
1422 "I<segments> で定義されたカーネルイメージは、\n"
1423 "呼び出したプロセスから予約済みメモリにコピーされる。"
1424
1425 #. type: Plain text
1426 #: build/C/man2/kexec_load.2:124
1427 msgid ""
1428 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1429 "I<errno> is set to indicate the error."
1430 msgstr ""
1431 "成功すると、 B<kexec_load> は 0 を返す。\n"
1432 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1433
1434 #. type: TP
1435 #: build/C/man2/kexec_load.2:125 build/C/man2/pivot_root.2:110
1436 #: build/C/man2/ptrace.2:1868 build/C/man2/quotactl.2:495
1437 #, no-wrap
1438 msgid "B<EBUSY>"
1439 msgstr "B<EBUSY>"
1440
1441 #. type: Plain text
1442 #: build/C/man2/kexec_load.2:129
1443 msgid ""
1444 "Another crash kernel is already being loaded or a crash kernel is already in "
1445 "use."
1446 msgstr ""
1447 "別のクラッシュカーネルがすでにロードされているか、\n"
1448 "クラッシュカーネルがすでに使用されている。"
1449
1450 #.  KEXEC_SEGMENT_MAX == 16
1451 #. type: Plain text
1452 #: build/C/man2/kexec_load.2:136
1453 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1454 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1455
1456 #. type: Plain text
1457 #: build/C/man2/kexec_load.2:141
1458 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1459 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1460
1461 #. type: Plain text
1462 #: build/C/man2/kexec_load.2:145
1463 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1464 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1465
1466 #. type: Plain text
1467 #: build/C/man2/kexec_load.2:152
1468 msgid ""
1469 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1470 "B<syscall>(2)."
1471 msgstr ""
1472 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1473 "B<syscall>(2) を使って呼び出すこと。"
1474
1475 #.  FIXME . Andi submitted a patch for this.
1476 #.  Check if it got accepted later.
1477 #. type: Plain text
1478 #: build/C/man2/kexec_load.2:159
1479 msgid ""
1480 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1481 "which is not currently exported to glibc.  Therefore, these constants must "
1482 "be defined manually."
1483 msgstr ""
1484 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されてい"
1485 "る\n"
1486 "が、現在のところ glibc には公開されていない。\n"
1487 "そのため、これらの定数は手動で定義しなければならない。"
1488
1489 #. type: Plain text
1490 #: build/C/man2/kexec_load.2:162
1491 msgid ""
1492 "This system call is available only if the kernel was configured with "
1493 "B<CONFIG_KEXEC>."
1494 msgstr ""
1495 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1496 "いる場合にのみ利用できる。"
1497
1498 #. type: Plain text
1499 #: build/C/man2/kexec_load.2:165
1500 msgid "B<reboot>(2), B<syscall>(2)"
1501 msgstr "B<reboot>(2), B<syscall>(2)"
1502
1503 #. type: TH
1504 #: build/C/man2/lookup_dcookie.2:27
1505 #, no-wrap
1506 msgid "LOOKUP_DCOOKIE"
1507 msgstr "LOOKUP_DCOOKIE"
1508
1509 #. type: TH
1510 #: build/C/man2/lookup_dcookie.2:27
1511 #, no-wrap
1512 msgid "2004-06-17"
1513 msgstr "2004-06-17"
1514
1515 #. type: Plain text
1516 #: build/C/man2/lookup_dcookie.2:30
1517 msgid "lookup_dcookie - return a directory entry's path"
1518 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1519
1520 #. type: Plain text
1521 #: build/C/man2/lookup_dcookie.2:32
1522 msgid ""
1523 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1524 ">"
1525 msgstr ""
1526 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1527 ">"
1528
1529 #. type: Plain text
1530 #: build/C/man2/lookup_dcookie.2:38
1531 msgid ""
1532 "Look up the full path of the directory entry specified by the value "
1533 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1534 "particular directory entry.  The buffer given is filled in with the full "
1535 "path of the directory entry."
1536 msgstr ""
1537 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1538 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1539 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1540 "ルパス名が格納される。"
1541
1542 #. type: Plain text
1543 #: build/C/man2/lookup_dcookie.2:43
1544 msgid ""
1545 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1546 "a cookie reference to the directory entry."
1547 msgstr ""
1548 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1549 "リへの cookie 参照を 保持していなければならない。"
1550
1551 #. type: Plain text
1552 #: build/C/man2/lookup_dcookie.2:50
1553 msgid ""
1554 "On success, B<lookup_dcookie>()  returns the length of the path string "
1555 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1556 "appropriately."
1557 msgstr ""
1558 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1559 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1560
1561 #. type: Plain text
1562 #: build/C/man2/lookup_dcookie.2:54
1563 msgid "The buffer was not valid."
1564 msgstr "バッファが有効でなかった。"
1565
1566 #. type: Plain text
1567 #: build/C/man2/lookup_dcookie.2:58
1568 msgid ""
1569 "The kernel has no registered cookie/directory entry mappings at the time of "
1570 "lookup, or the cookie does not refer to a valid directory entry."
1571 msgstr ""
1572 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1573 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1574 "いない。"
1575
1576 #. type: TP
1577 #: build/C/man2/lookup_dcookie.2:58
1578 #, no-wrap
1579 msgid "B<ENAMETOOLONG>"
1580 msgstr "B<ENAMETOOLONG>"
1581
1582 #. type: Plain text
1583 #: build/C/man2/lookup_dcookie.2:61
1584 msgid "The name could not fit in the buffer."
1585 msgstr "名前がバッファに入り切らなかった。"
1586
1587 #. type: TP
1588 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:278
1589 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:169
1590 #: build/C/man2/tee.2:117 build/C/man2/vmsplice.2:145
1591 #, no-wrap
1592 msgid "B<ENOMEM>"
1593 msgstr "B<ENOMEM>"
1594
1595 #. type: Plain text
1596 #: build/C/man2/lookup_dcookie.2:65
1597 msgid ""
1598 "The kernel could not allocate memory for the temporary buffer holding the "
1599 "path."
1600 msgstr ""
1601 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1602 "かった。"
1603
1604 #. type: Plain text
1605 #: build/C/man2/lookup_dcookie.2:70
1606 msgid ""
1607 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1608 "up cookie values."
1609 msgstr ""
1610 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1611 "持っていない。"
1612
1613 #. type: TP
1614 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1615 #, no-wrap
1616 msgid "B<ERANGE>"
1617 msgstr "B<ERANGE>"
1618
1619 #. type: Plain text
1620 #: build/C/man2/lookup_dcookie.2:73
1621 msgid ""
1622 "The buffer was not large enough to hold the path of the directory entry."
1623 msgstr ""
1624 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1625 "かった。"
1626
1627 #. type: Plain text
1628 #: build/C/man2/lookup_dcookie.2:78
1629 msgid ""
1630 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1631 "2.5.70."
1632 msgstr ""
1633 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1634 "追加された。"
1635
1636 #. type: Plain text
1637 #: build/C/man2/lookup_dcookie.2:81
1638 msgid "B<lookup_dcookie>()  is Linux-specific."
1639 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1640
1641 #. type: Plain text
1642 #: build/C/man2/lookup_dcookie.2:85
1643 msgid ""
1644 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1645 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1646 "for directory entries."
1647 msgstr ""
1648 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1649 "oprofile profiler で 使われているだけである。"
1650
1651 #. type: Plain text
1652 #: build/C/man2/lookup_dcookie.2:88
1653 msgid ""
1654 "The path returned may be suffixed by the string \" (deleted)\" if the "
1655 "directory entry has been removed."
1656 msgstr ""
1657 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1658 "\" (deleted)\" という文字列が付加されることがある。"
1659
1660 #. type: TH
1661 #: build/C/man2/modify_ldt.2:24
1662 #, no-wrap
1663 msgid "MODIFY_LDT"
1664 msgstr "MODIFY_LDT"
1665
1666 #. type: TH
1667 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
1668 #, no-wrap
1669 msgid "2012-07-13"
1670 msgstr "2012-07-13"
1671
1672 #. type: Plain text
1673 #: build/C/man2/modify_ldt.2:27
1674 msgid "modify_ldt - get or set ldt"
1675 msgstr "modify_ldt - ldt を設定または取得する"
1676
1677 #. type: Plain text
1678 #: build/C/man2/modify_ldt.2:30
1679 #, no-wrap
1680 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1681 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1682
1683 #. type: Plain text
1684 #: build/C/man2/modify_ldt.2:32
1685 #, no-wrap
1686 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1687 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1688
1689 #. type: Plain text
1690 #: build/C/man2/modify_ldt.2:41
1691 msgid ""
1692 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1693 "process.  The ldt is a per-process memory management table used by the i386 "
1694 "processor.  For more information on this table, see an Intel 386 processor "
1695 "handbook."
1696 msgstr ""
1697 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1698 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1699 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1700 "は Intel 386 processor handbook を 参照すること。"
1701
1702 #. type: Plain text
1703 #: build/C/man2/modify_ldt.2:51
1704 msgid ""
1705 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1706 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1707 "actual size of the ldt."
1708 msgstr ""
1709 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1710 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1711 "である。"
1712
1713 #.  FIXME Should this page say something about func == 2 and func == 0x11?
1714 #.  In Linux 2.4, func == 2 returned "the default ldt"
1715 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1716 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1717 #. type: Plain text
1718 #: build/C/man2/modify_ldt.2:69
1719 msgid ""
1720 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1721 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1722 "structure."
1723 msgstr ""
1724 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1725 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1726 "くなければならない。"
1727
1728 #. type: Plain text
1729 #: build/C/man2/modify_ldt.2:73
1730 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1731 msgstr ""
1732 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1733
1734 #. type: Plain text
1735 #: build/C/man2/modify_ldt.2:87
1736 #, no-wrap
1737 msgid ""
1738 "struct user_desc {\n"
1739 "    unsigned int  entry_number;\n"
1740 "    unsigned long base_addr;\n"
1741 "    unsigned int  limit;\n"
1742 "    unsigned int  seg_32bit:1;\n"
1743 "    unsigned int  contents:2;\n"
1744 "    unsigned int  read_exec_only:1;\n"
1745 "    unsigned int  limit_in_pages:1;\n"
1746 "    unsigned int  seg_not_present:1;\n"
1747 "    unsigned int  useable:1;\n"
1748 "};\n"
1749 msgstr ""
1750 "struct user_desc {\n"
1751 "    unsigned int  entry_number;\n"
1752 "    unsigned long base_addr;\n"
1753 "    unsigned int  limit;\n"
1754 "    unsigned int  seg_32bit:1;\n"
1755 "    unsigned int  contents:2;\n"
1756 "    unsigned int  read_exec_only:1;\n"
1757 "    unsigned int  limit_in_pages:1;\n"
1758 "    unsigned int  seg_not_present:1;\n"
1759 "    unsigned int  useable:1;\n"
1760 "};\n"
1761
1762 #.  .PP
1763 #.  The ldt is specific for the calling process. Any attempts to change
1764 #.  the ldt to include the address space of another process or the kernel
1765 #.  will result in a segmentation violation when trying to access the memory
1766 #.  outside of the process address space. The memory protection is enforced
1767 #.  at the paging layer.
1768 #. type: Plain text
1769 #: build/C/man2/modify_ldt.2:98
1770 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1771 msgstr ""
1772 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1773
1774 #. type: Plain text
1775 #: build/C/man2/modify_ldt.2:108
1776 msgid ""
1777 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1778 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1779 "and sets I<errno> to indicate the error."
1780 msgstr ""
1781 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1782 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1783 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1784
1785 #. type: Plain text
1786 #: build/C/man2/modify_ldt.2:113
1787 msgid "I<ptr> points outside the address space."
1788 msgstr "I<ptr> がアドレス空間の外を指している。"
1789
1790 #. type: Plain text
1791 #: build/C/man2/modify_ldt.2:126
1792 msgid ""
1793 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1794 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1795 "invalid values."
1796 msgstr ""
1797 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1798 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1799 "エントリが無効な値である。"
1800
1801 #. type: Plain text
1802 #: build/C/man2/modify_ldt.2:130
1803 msgid "I<func> is neither 0 nor 1."
1804 msgstr "I<func> が 0 でも 1 でもない。"
1805
1806 #. type: Plain text
1807 #: build/C/man2/modify_ldt.2:133
1808 msgid ""
1809 "This call is Linux-specific and should not be used in programs intended to "
1810 "be portable."
1811 msgstr ""
1812 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1813 "い。"
1814
1815 #. type: Plain text
1816 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1817 #: build/C/man2/pivot_root.2:134
1818 msgid ""
1819 "Glibc does not provide a wrapper for this system call; call it using "
1820 "B<syscall>(2)."
1821 msgstr ""
1822 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
1823 "B<syscall>(2)  を使って呼び出すこと。"
1824
1825 #. type: Plain text
1826 #: build/C/man2/modify_ldt.2:138
1827 msgid "B<vm86>(2)"
1828 msgstr "B<vm86>(2)"
1829
1830 #. type: TH
1831 #: build/C/man2/nfsservctl.2:8
1832 #, no-wrap
1833 msgid "NFSSERVCTL"
1834 msgstr "NFSSERVCTL"
1835
1836 #. type: TH
1837 #: build/C/man2/nfsservctl.2:8
1838 #, no-wrap
1839 msgid "2013-09-17"
1840 msgstr "2013-09-17"
1841
1842 #. type: Plain text
1843 #: build/C/man2/nfsservctl.2:11
1844 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1845 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1846
1847 #. type: Plain text
1848 #: build/C/man2/nfsservctl.2:14
1849 #, no-wrap
1850 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1851 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1852
1853 #. type: Plain text
1854 #: build/C/man2/nfsservctl.2:17
1855 #, no-wrap
1856 msgid ""
1857 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1858 "B<                union nfsctl_res *>I<resp>B<);>\n"
1859 msgstr ""
1860 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1861 "B<                union nfsctl_res *>I<resp>B<);>\n"
1862
1863 #. type: Plain text
1864 #: build/C/man2/nfsservctl.2:21
1865 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1866 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1867
1868 #. type: Plain text
1869 #: build/C/man2/nfsservctl.2:35
1870 #, no-wrap
1871 msgid ""
1872 "/*\n"
1873 " * These are the commands understood by nfsctl().\n"
1874 " */\n"
1875 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1876 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1877 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1878 "#define NFSCTL_EXPORT       3    /* Export a filesystem. */\n"
1879 "#define NFSCTL_UNEXPORT     4    /* Unexport a filesystem. */\n"
1880 "#define NFSCTL_UGIDUPDATE   5    /* Update a client's UID/GID map\n"
1881 "                                    (only in Linux 2.4.x and earlier). */\n"
1882 "#define NFSCTL_GETFH        6    /* Get a file handle (used by mountd)\n"
1883 "                                    (only in Linux 2.4.x and earlier). */\n"
1884 msgstr ""
1885 "/*\n"
1886 " * nfsctl() によって理解されるコマンド\n"
1887 " */\n"
1888 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1889 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1890 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1891 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1892 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1893 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新\n"
1894 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
1895 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得\n"
1896 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
1897
1898 #. type: Plain text
1899 #: build/C/man2/nfsservctl.2:47
1900 #, no-wrap
1901 msgid ""
1902 "struct nfsctl_arg {\n"
1903 "    int                       ca_version;     /* safeguard */\n"
1904 "    union {\n"
1905 "        struct nfsctl_svc     u_svc;\n"
1906 "        struct nfsctl_client  u_client;\n"
1907 "        struct nfsctl_export  u_export;\n"
1908 "        struct nfsctl_uidmap  u_umap;\n"
1909 "        struct nfsctl_fhparm  u_getfh;\n"
1910 "        unsigned int          u_debug;\n"
1911 "    } u;\n"
1912 "}\n"
1913 msgstr ""
1914 "struct nfsctl_arg {\n"
1915 "    int                       ca_version;     /* safeguard */\n"
1916 "    union {\n"
1917 "        struct nfsctl_svc     u_svc;\n"
1918 "        struct nfsctl_client  u_client;\n"
1919 "        struct nfsctl_export  u_export;\n"
1920 "        struct nfsctl_uidmap  u_umap;\n"
1921 "        struct nfsctl_fhparm  u_getfh;\n"
1922 "        unsigned int          u_debug;\n"
1923 "    } u;\n"
1924 "}\n"
1925
1926 #. type: Plain text
1927 #: build/C/man2/nfsservctl.2:52
1928 #, no-wrap
1929 msgid ""
1930 "union nfsctl_res {\n"
1931 "        struct knfs_fh          cr_getfh;\n"
1932 "        unsigned int            cr_debug;\n"
1933 "};\n"
1934 msgstr ""
1935 "union nfsctl_res {\n"
1936 "        struct knfs_fh          cr_getfh;\n"
1937 "        unsigned int            cr_debug;\n"
1938 "};\n"
1939
1940 #. type: Plain text
1941 #: build/C/man2/nfsservctl.2:58 build/C/man2/pivot_root.2:105
1942 #: build/C/man2/vm86.2:59
1943 msgid ""
1944 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1945 "appropriately."
1946 msgstr ""
1947 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1948 "定される。"
1949
1950 #. type: Plain text
1951 #: build/C/man2/nfsservctl.2:60
1952 msgid "This call is Linux-specific."
1953 msgstr "このコールは Linux 特有である。"
1954
1955 #. type: TH
1956 #: build/C/man2/outb.2:26
1957 #, no-wrap
1958 msgid "OUTB"
1959 msgstr "OUTB"
1960
1961 #. type: TH
1962 #: build/C/man2/outb.2:26
1963 #, no-wrap
1964 msgid "2012-12-31"
1965 msgstr "2012-12-31"
1966
1967 #. type: Plain text
1968 #: build/C/man2/outb.2:31
1969 msgid ""
1970 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1971 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1972 msgstr ""
1973 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1974 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1975
1976 #. type: Plain text
1977 #: build/C/man2/outb.2:34
1978 #, no-wrap
1979 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1980 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1981
1982 #. type: Plain text
1983 #: build/C/man2/outb.2:41
1984 #, no-wrap
1985 msgid ""
1986 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1987 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1988 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1989 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1990 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1991 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1992 msgstr ""
1993 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1994 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1995 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1996 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1997 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1998 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1999
2000 #. type: Plain text
2001 #: build/C/man2/outb.2:48
2002 #, no-wrap
2003 msgid ""
2004 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2005 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2006 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2007 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2008 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2009 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2010 msgstr ""
2011 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2012 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2013 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2014 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2015 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2016 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2017
2018 #. type: Plain text
2019 #: build/C/man2/outb.2:61
2020 #, no-wrap
2021 msgid ""
2022 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2023 "B<           unsigned long int >I<count>B<);>\n"
2024 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2025 "B<           unsigned long int >I<count>B<);>\n"
2026 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2027 "B<           unsigned long int >I<count>B<);>\n"
2028 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2029 "B<           unsigned long int >I<count>B<);>\n"
2030 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2031 "B<           unsigned long int >I<count>B<);>\n"
2032 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2033 "B<           unsigned long int >I<count>B<);>\n"
2034 msgstr ""
2035 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2036 "B<           unsigned long int >I<count>B<);>\n"
2037 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2038 "B<           unsigned long int >I<count>B<);>\n"
2039 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2040 "B<           unsigned long int >I<count>B<);>\n"
2041 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2042 "B<           unsigned long int >I<count>B<);>\n"
2043 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2044 "B<           unsigned long int >I<count>B<);>\n"
2045 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2046 "B<           unsigned long int >I<count>B<);>\n"
2047
2048 #. type: Plain text
2049 #: build/C/man2/outb.2:67
2050 msgid ""
2051 "This family of functions is used to do low-level port input and output.  The "
2052 "out* functions do port output, the in* functions do port input; the b-suffix "
2053 "functions are byte-width and the w-suffix functions word-width; the _p-"
2054 "suffix functions pause until the I/O completes."
2055 msgstr ""
2056 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2057 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2058 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2059 "待つ。"
2060
2061 #.  , given the following information
2062 #.  in addition to that given in
2063 #.  .BR outb (9).
2064 #. type: Plain text
2065 #: build/C/man2/outb.2:73
2066 msgid ""
2067 "They are primarily designed for internal kernel use, but can be used from "
2068 "user space."
2069 msgstr ""
2070 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2071 "ザー空間からでも使用できる。"
2072
2073 #. type: Plain text
2074 #: build/C/man2/outb.2:78
2075 msgid ""
2076 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2077 "as inline macros, and will not be substituted in without optimization "
2078 "enabled, causing unresolved references at link time."
2079 msgstr ""
2080 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2081 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2082 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2083
2084 #. type: Plain text
2085 #: build/C/man2/outb.2:87
2086 msgid ""
2087 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2088 "allow the user space application to access the I/O ports in question.  "
2089 "Failure to do this will cause the application to receive a segmentation "
2090 "fault."
2091 msgstr ""
2092 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2093 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2094 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2095 "になる。"
2096
2097 #. type: Plain text
2098 #: build/C/man2/outb.2:96
2099 msgid ""
2100 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2101 "passed first and the I<port> argument is passed second, which is the "
2102 "opposite order from most DOS implementations."
2103 msgstr ""
2104 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2105 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2106 "である。"
2107
2108 #. type: Plain text
2109 #: build/C/man2/outb.2:99
2110 msgid "B<ioperm>(2), B<iopl>(2)"
2111 msgstr "B<ioperm>(2), B<iopl>(2)"
2112
2113 #. type: TH
2114 #: build/C/man2/pciconfig_read.2:8
2115 #, no-wrap
2116 msgid "PCICONFIG_READ"
2117 msgstr "PCICONFIG_READ"
2118
2119 #. type: TH
2120 #: build/C/man2/pciconfig_read.2:8
2121 #, no-wrap
2122 msgid "2003-07-14"
2123 msgstr "2003-07-14"
2124
2125 #. type: Plain text
2126 #: build/C/man2/pciconfig_read.2:11
2127 msgid ""
2128 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2129 "handling"
2130 msgstr ""
2131 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2132
2133 #. type: Plain text
2134 #: build/C/man2/pciconfig_read.2:14
2135 #, no-wrap
2136 msgid "B<#include E<lt>pci.hE<gt>>\n"
2137 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2138
2139 #. type: Plain text
2140 #: build/C/man2/pciconfig_read.2:21
2141 #, no-wrap
2142 msgid ""
2143 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2144 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2145 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2146 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2147 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2148 "B<          unsigned long >I<devfn>B<);>\n"
2149 msgstr ""
2150 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2151 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2152 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2153 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2154 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2155 "B<          unsigned long >I<devfn>B<);>\n"
2156
2157 #. type: Plain text
2158 #: build/C/man2/pciconfig_read.2:27
2159 msgid ""
2160 "Most of the interaction with PCI devices is already handled by the kernel "
2161 "PCI layer, and thus these calls should not normally need to be accessed from "
2162 "user space."
2163 msgstr ""
2164 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2165 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2166
2167 #. type: TP
2168 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2169 #, no-wrap
2170 msgid "B<pciconfig_read>()"
2171 msgstr "B<pciconfig_read>()"
2172
2173 #. type: Plain text
2174 #: build/C/man2/pciconfig_read.2:36
2175 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2176 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2177
2178 #. type: TP
2179 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2180 #, no-wrap
2181 msgid "B<pciconfig_write>()"
2182 msgstr "B<pciconfig_write>()"
2183
2184 #. type: Plain text
2185 #: build/C/man2/pciconfig_read.2:45
2186 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2187 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2188
2189 #. type: TP
2190 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2191 #, no-wrap
2192 msgid "B<pciconfig_iobase>()"
2193 msgstr "B<pciconfig_iobase>()"
2194
2195 #. type: Plain text
2196 #: build/C/man2/pciconfig_read.2:50
2197 msgid ""
2198 "You pass it a bus/devfn pair and get a physical address for either the "
2199 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2200 "PIO cycles, or the ISA holes if any."
2201 msgstr ""
2202 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2203 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2204 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2205
2206 #. type: Plain text
2207 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2208 msgid ""
2209 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2210 "appropriately."
2211 msgstr ""
2212 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2213 "定される。"
2214
2215 #. type: Plain text
2216 #: build/C/man2/pciconfig_read.2:77
2217 msgid ""
2218 "Returns information on locations of various I/O regions in physical memory "
2219 "according to the I<which> value.  Values for I<which> are: "
2220 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2221 "B<IOBASE_ISA_MEM>."
2222 msgstr ""
2223 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2224 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2225 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2226
2227 #. type: Plain text
2228 #: build/C/man2/pciconfig_read.2:84
2229 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2230 msgstr ""
2231 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2232 "い。"
2233
2234 #. type: TP
2235 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1885
2236 #: build/C/man2/sendfile.2:134
2237 #, no-wrap
2238 msgid "B<EIO>"
2239 msgstr "B<EIO>"
2240
2241 #. type: Plain text
2242 #: build/C/man2/pciconfig_read.2:87
2243 msgid "I/O error."
2244 msgstr "I/O エラー。"
2245
2246 #. type: TP
2247 #: build/C/man2/pciconfig_read.2:87 build/C/man2/perf_event_open.2:2612
2248 #, no-wrap
2249 msgid "B<ENODEV>"
2250 msgstr "B<ENODEV>"
2251
2252 #. type: Plain text
2253 #: build/C/man2/pciconfig_read.2:93
2254 msgid ""
2255 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2256 "could not find a slot."
2257 msgstr ""
2258 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2259 "出しの場合、スロット (slot) が見つからない。"
2260
2261 #. type: Plain text
2262 #: build/C/man2/pciconfig_read.2:98
2263 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2264 msgstr ""
2265 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2266 "いない)。"
2267
2268 #. type: TP
2269 #: build/C/man2/pciconfig_read.2:98 build/C/man2/perf_event_open.2:2640
2270 #, no-wrap
2271 msgid "B<EOPNOTSUPP>"
2272 msgstr "B<EOPNOTSUPP>"
2273
2274 #. type: Plain text
2275 #: build/C/man2/pciconfig_read.2:105
2276 msgid ""
2277 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2278 "if the value for I<which> is invalid."
2279 msgstr ""
2280 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2281 "の値が無効であるときに返される。"
2282
2283 #. type: Plain text
2284 #: build/C/man2/pciconfig_read.2:112
2285 msgid ""
2286 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2287 "B<pciconfig_iobase>()."
2288 msgstr ""
2289 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2290 "B<pciconfig_iobase>()  には適用されない。"
2291
2292 #. type: Plain text
2293 #: build/C/man2/pciconfig_read.2:114
2294 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2295 msgstr ""
2296 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2297 "である。"
2298
2299 #. type: Plain text
2300 #: build/C/man2/pciconfig_read.2:116
2301 msgid "B<capabilities>(7)"
2302 msgstr "B<capabilities>(7)"
2303
2304 #. type: TH
2305 #: build/C/man2/perf_event_open.2:27
2306 #, no-wrap
2307 msgid "PERF_EVENT_OPEN"
2308 msgstr "PERF_EVENT_OPEN"
2309
2310 #. type: Plain text
2311 #: build/C/man2/perf_event_open.2:30
2312 msgid "perf_event_open - set up performance monitoring"
2313 msgstr ""
2314
2315 #. type: Plain text
2316 #: build/C/man2/perf_event_open.2:34
2317 #, no-wrap
2318 msgid ""
2319 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2320 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2321 msgstr ""
2322 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2323 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2324
2325 #. type: Plain text
2326 #: build/C/man2/perf_event_open.2:38
2327 #, no-wrap
2328 msgid ""
2329 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2330 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2331 "B<                    unsigned long >I<flags>B<);>\n"
2332 msgstr ""
2333 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2334 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2335 "B<                    unsigned long >I<flags>B<);>\n"
2336
2337 #. type: Plain text
2338 #: build/C/man2/perf_event_open.2:47
2339 msgid ""
2340 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2341 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2342 "B<fcntl>(2), etc.)."
2343 msgstr ""
2344
2345 #. type: Plain text
2346 #: build/C/man2/perf_event_open.2:55
2347 msgid ""
2348 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2349 "measuring performance information.  Each file descriptor corresponds to one "
2350 "event that is measured; these can be grouped together to measure multiple "
2351 "events simultaneously."
2352 msgstr ""
2353
2354 #. type: Plain text
2355 #: build/C/man2/perf_event_open.2:62
2356 msgid ""
2357 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2358 "B<prctl>(2).  When an event is disabled it does not count or generate "
2359 "overflows but does continue to exist and maintain its count value."
2360 msgstr ""
2361
2362 #. type: Plain text
2363 #: build/C/man2/perf_event_open.2:76
2364 msgid ""
2365 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2366 "one that is used for counting the aggregate number of events that occur.  In "
2367 "general, counting event results are gathered with a B<read>(2)  call.  A "
2368 "I<sampling> event periodically writes measurements to a buffer that can then "
2369 "be accessed via B<mmap>(2)."
2370 msgstr ""
2371
2372 #. type: SS
2373 #: build/C/man2/perf_event_open.2:76
2374 #, no-wrap
2375 msgid "Arguments"
2376 msgstr ""
2377
2378 #. type: Plain text
2379 #: build/C/man2/perf_event_open.2:83
2380 msgid ""
2381 "The I<pid> and I<cpu> arguments allow specifying which process and CPU to "
2382 "monitor:"
2383 msgstr ""
2384
2385 #. type: TP
2386 #: build/C/man2/perf_event_open.2:83
2387 #, no-wrap
2388 msgid "B<pid == 0> and B<cpu == -1>"
2389 msgstr ""
2390
2391 #. type: Plain text
2392 #: build/C/man2/perf_event_open.2:86
2393 msgid "This measures the calling process/thread on any CPU."
2394 msgstr ""
2395
2396 #. type: TP
2397 #: build/C/man2/perf_event_open.2:86
2398 #, no-wrap
2399 msgid "B<pid == 0> and B<cpu E<gt>= 0>"
2400 msgstr ""
2401
2402 #. type: Plain text
2403 #: build/C/man2/perf_event_open.2:90
2404 msgid ""
2405 "This measures the calling process/thread only when running on the specified "
2406 "CPU."
2407 msgstr ""
2408
2409 #. type: TP
2410 #: build/C/man2/perf_event_open.2:90
2411 #, no-wrap
2412 msgid "B<pid E<gt> 0> and B<cpu == -1>"
2413 msgstr ""
2414
2415 #. type: Plain text
2416 #: build/C/man2/perf_event_open.2:93
2417 msgid "This measures the specified process/thread on any CPU."
2418 msgstr ""
2419
2420 #. type: TP
2421 #: build/C/man2/perf_event_open.2:93
2422 #, no-wrap
2423 msgid "B<pid E<gt> 0> and B<cpu E<gt>= 0>"
2424 msgstr ""
2425
2426 #. type: Plain text
2427 #: build/C/man2/perf_event_open.2:97
2428 msgid ""
2429 "This measures the specified process/thread only when running on the "
2430 "specified CPU."
2431 msgstr ""
2432
2433 #. type: TP
2434 #: build/C/man2/perf_event_open.2:97
2435 #, no-wrap
2436 msgid "B<pid == -1> and B<cpu E<gt>= 0>"
2437 msgstr ""
2438
2439 #. type: Plain text
2440 #: build/C/man2/perf_event_open.2:105
2441 msgid ""
2442 "This measures all processes/threads on the specified CPU.  This requires "
2443 "B<CAP_SYS_ADMIN> capability or a I</proc/sys/kernel/perf_event_paranoid> "
2444 "value of less than 1."
2445 msgstr ""
2446
2447 #. type: TP
2448 #: build/C/man2/perf_event_open.2:105
2449 #, no-wrap
2450 msgid "B<pid == -1> and B<cpu == -1>"
2451 msgstr ""
2452
2453 #. type: Plain text
2454 #: build/C/man2/perf_event_open.2:108
2455 msgid "This setting is invalid and will return an error."
2456 msgstr ""
2457
2458 #. type: Plain text
2459 #: build/C/man2/perf_event_open.2:130
2460 msgid ""
2461 "The I<group_fd> argument allows event groups to be created.  An event group "
2462 "has one event which is the group leader.  The leader is created first, with "
2463 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2464 "B<perf_event_open>()  calls with I<group_fd> being set to the file "
2465 "descriptor of the group leader.  (A single event on its own is created with "
2466 "I<group_fd> = -1 and is considered to be a group with only 1 member.)  An "
2467 "event group is scheduled onto the CPU as a unit: it will be put onto the CPU "
2468 "only if all of the events in the group can be put onto the CPU.  This means "
2469 "that the values of the member events can be meaningfully compared\\(emadded, "
2470 "divided (to get ratios), and so on\\(emwith each other, since they have "
2471 "counted events for the same set of executed instructions."
2472 msgstr ""
2473
2474 #. type: Plain text
2475 #: build/C/man2/perf_event_open.2:134
2476 msgid ""
2477 "The I<flags> argument is formed by ORing together zero or more of the "
2478 "following values:"
2479 msgstr ""
2480 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2481
2482 #. type: TP
2483 #: build/C/man2/perf_event_open.2:134
2484 #, no-wrap
2485 msgid "B<PERF_FLAG_FD_CLOEXEC> (since Linux 3.14)."
2486 msgstr "B<PERF_FLAG_FD_CLOEXEC> (Linux 3.14 以降)."
2487
2488 #. type: Plain text
2489 #: build/C/man2/perf_event_open.2:150
2490 msgid ""
2491 "This flag enables the close-on-exec flag for the created event file "
2492 "descriptor, so that the file descriptor is automatically closed on "
2493 "B<execve>(2).  Setting the close-on-exec flags at creation time, rather than "
2494 "later with B<fcntl>(2), avoids potential race conditions where the calling "
2495 "thread invokes B<perf_event_open>()  and B<fcntl>(2)  at the same time as "
2496 "another thread calls B<fork>(2)  then B<execve>(2)."
2497 msgstr ""
2498
2499 #. type: TP
2500 #: build/C/man2/perf_event_open.2:150
2501 #, no-wrap
2502 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2503 msgstr "B<PERF_FLAG_FD_NO_GROUP>"
2504
2505 #.  FIXME . The following sentence is unclear
2506 #.  FIXME . So, why is it useful?
2507 #. type: Plain text
2508 #: build/C/man2/perf_event_open.2:157
2509 msgid ""
2510 "This flag allows creating an event as part of an event group but having no "
2511 "group leader.  It is unclear why this is useful."
2512 msgstr ""
2513
2514 #. type: TP
2515 #: build/C/man2/perf_event_open.2:157
2516 #, no-wrap
2517 msgid "B<PERF_FLAG_FD_OUTPUT>"
2518 msgstr "B<PERF_FLAG_FD_OUTPUT>"
2519
2520 #. type: Plain text
2521 #: build/C/man2/perf_event_open.2:160
2522 msgid "This flag reroutes the output from an event to the group leader."
2523 msgstr ""
2524
2525 #. type: TP
2526 #: build/C/man2/perf_event_open.2:160
2527 #, no-wrap
2528 msgid "B<PERF_FLAG_PID_CGROUP> (since Linux 2.6.39)."
2529 msgstr "B<PERF_FLAG_PID_CGROUP> (Linux 2.6.39 以降)."
2530
2531 #. type: Plain text
2532 #: build/C/man2/perf_event_open.2:183
2533 msgid ""
2534 "This flag activates per-container system-wide monitoring.  A container is an "
2535 "abstraction that isolates a set of resources for finer-grained control "
2536 "(CPUs, memory, etc.).  In this mode, the event is measured only if the "
2537 "thread running on the monitored CPU belongs to the designated container "
2538 "(cgroup).  The cgroup is identified by passing a file descriptor opened on "
2539 "its directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2540 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2541 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2542 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2543 "events and may therefore require extra permissions."
2544 msgstr ""
2545
2546 #. type: Plain text
2547 #: build/C/man2/perf_event_open.2:188
2548 msgid ""
2549 "The I<perf_event_attr> structure provides detailed configuration information "
2550 "for the event being created."
2551 msgstr ""
2552
2553 #. type: Plain text
2554 #: build/C/man2/perf_event_open.2:195
2555 #, no-wrap
2556 msgid ""
2557 "struct perf_event_attr {\n"
2558 "    __u32 type;         /* Type of event */\n"
2559 "    __u32 size;         /* Size of attribute structure */\n"
2560 "    __u64 config;       /* Type-specific configuration */\n"
2561 msgstr ""
2562 "struct perf_event_attr {\n"
2563 "    __u32 type;         /* Type of event */\n"
2564 "    __u32 size;         /* Size of attribute structure */\n"
2565 "    __u64 config;       /* Type-specific configuration */\n"
2566
2567 #. type: Plain text
2568 #: build/C/man2/perf_event_open.2:200
2569 #, no-wrap
2570 msgid ""
2571 "    union {\n"
2572 "        __u64 sample_period;    /* Period of sampling */\n"
2573 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2574 "    };\n"
2575 msgstr ""
2576 "    union {\n"
2577 "        __u64 sample_period;    /* Period of sampling */\n"
2578 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2579 "    };\n"
2580
2581 #. type: Plain text
2582 #: build/C/man2/perf_event_open.2:203
2583 #, no-wrap
2584 msgid ""
2585 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2586 "    __u64 read_format;  /* Specifies values returned in read */\n"
2587 msgstr ""
2588 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2589 "    __u64 read_format;  /* Specifies values returned in read */\n"
2590
2591 #. type: Plain text
2592 #: build/C/man2/perf_event_open.2:231
2593 #, no-wrap
2594 msgid ""
2595 "    __u64 disabled       : 1,   /* off by default */\n"
2596 "          inherit        : 1,   /* children inherit it */\n"
2597 "          pinned         : 1,   /* must always be on PMU */\n"
2598 "          exclusive      : 1,   /* only group on PMU */\n"
2599 "          exclude_user   : 1,   /* don't count user */\n"
2600 "          exclude_kernel : 1,   /* don't count kernel */\n"
2601 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2602 "          exclude_idle   : 1,   /* don't count when idle */\n"
2603 "          mmap           : 1,   /* include mmap data */\n"
2604 "          comm           : 1,   /* include comm data */\n"
2605 "          freq           : 1,   /* use freq, not period */\n"
2606 "          inherit_stat   : 1,   /* per task counts */\n"
2607 "          enable_on_exec : 1,   /* next exec enables */\n"
2608 "          task           : 1,   /* trace fork/exit */\n"
2609 "          watermark      : 1,   /* wakeup_watermark */\n"
2610 "          precise_ip     : 2,   /* skid constraint */\n"
2611 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2612 "          sample_id_all  : 1,   /* sample_type all events */\n"
2613 "          exclude_host   : 1,   /* don't count in host */\n"
2614 "          exclude_guest  : 1,   /* don't count in guest */\n"
2615 "          exclude_callchain_kernel : 1,\n"
2616 "                                /* exclude kernel callchains */\n"
2617 "          exclude_callchain_user   : 1,\n"
2618 "                                /* exclude user callchains */\n"
2619 "          mmap2          :  1,  /* include mmap with inode data */\n"
2620 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2621 "          __reserved_1   : 39;\n"
2622 msgstr ""
2623 "    __u64 disabled       : 1,   /* off by default */\n"
2624 "          inherit        : 1,   /* children inherit it */\n"
2625 "          pinned         : 1,   /* must always be on PMU */\n"
2626 "          exclusive      : 1,   /* only group on PMU */\n"
2627 "          exclude_user   : 1,   /* don't count user */\n"
2628 "          exclude_kernel : 1,   /* don't count kernel */\n"
2629 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2630 "          exclude_idle   : 1,   /* don't count when idle */\n"
2631 "          mmap           : 1,   /* include mmap data */\n"
2632 "          comm           : 1,   /* include comm data */\n"
2633 "          freq           : 1,   /* use freq, not period */\n"
2634 "          inherit_stat   : 1,   /* per task counts */\n"
2635 "          enable_on_exec : 1,   /* next exec enables */\n"
2636 "          task           : 1,   /* trace fork/exit */\n"
2637 "          watermark      : 1,   /* wakeup_watermark */\n"
2638 "          precise_ip     : 2,   /* skid constraint */\n"
2639 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2640 "          sample_id_all  : 1,   /* sample_type all events */\n"
2641 "          exclude_host   : 1,   /* don't count in host */\n"
2642 "          exclude_guest  : 1,   /* don't count in guest */\n"
2643 "          exclude_callchain_kernel : 1,\n"
2644 "                                /* exclude kernel callchains */\n"
2645 "          exclude_callchain_user   : 1,\n"
2646 "                                /* exclude user callchains */\n"
2647 "          mmap2          :  1,  /* include mmap with inode data */\n"
2648 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2649 "          __reserved_1   : 39;\n"
2650
2651 #. type: Plain text
2652 #: build/C/man2/perf_event_open.2:236
2653 #, no-wrap
2654 msgid ""
2655 "    union {\n"
2656 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2657 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2658 "    };\n"
2659 msgstr ""
2660 "    union {\n"
2661 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2662 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2663 "    };\n"
2664
2665 #. type: Plain text
2666 #: build/C/man2/perf_event_open.2:238
2667 #, no-wrap
2668 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2669 msgstr "    __u32     bp_type;          /* breakpoint type */\n"
2670
2671 #. type: Plain text
2672 #: build/C/man2/perf_event_open.2:243
2673 #, no-wrap
2674 msgid ""
2675 "    union {\n"
2676 "        __u64 bp_addr;          /* breakpoint address */\n"
2677 "        __u64 config1;          /* extension of config */\n"
2678 "    };\n"
2679 msgstr ""
2680 "    union {\n"
2681 "        __u64 bp_addr;          /* breakpoint address */\n"
2682 "        __u64 config1;          /* extension of config */\n"
2683 "    };\n"
2684
2685 #. type: Plain text
2686 #: build/C/man2/perf_event_open.2:253
2687 #, no-wrap
2688 msgid ""
2689 "    union {\n"
2690 "        __u64 bp_len;           /* breakpoint length */\n"
2691 "        __u64 config2;          /* extension of config1 */\n"
2692 "    };\n"
2693 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2694 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2695 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2696 "                                   samples */\n"
2697 "    __u32 __reserved_2;         /* Align to u64 */\n"
2698 msgstr ""
2699 "    union {\n"
2700 "        __u64 bp_len;           /* breakpoint length */\n"
2701 "        __u64 config2;          /* extension of config1 */\n"
2702 "    };\n"
2703 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2704 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2705 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2706 "                                   samples */\n"
2707 "    __u32 __reserved_2;         /* Align to u64 */\n"
2708
2709 #. type: Plain text
2710 #: build/C/man2/perf_event_open.2:255
2711 #, no-wrap
2712 msgid "};\n"
2713 msgstr "};\n"
2714
2715 #. type: Plain text
2716 #: build/C/man2/perf_event_open.2:261
2717 msgid ""
2718 "The fields of the I<perf_event_attr> structure are described in more detail "
2719 "below:"
2720 msgstr ""
2721
2722 #. type: TP
2723 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1601
2724 #, no-wrap
2725 msgid "I<type>"
2726 msgstr "I<type>"
2727
2728 #. type: Plain text
2729 #: build/C/man2/perf_event_open.2:265
2730 msgid ""
2731 "This field specifies the overall event type.  It has one of the following "
2732 "values:"
2733 msgstr ""
2734
2735 #. type: TP
2736 #: build/C/man2/perf_event_open.2:266
2737 #, no-wrap
2738 msgid "B<PERF_TYPE_HARDWARE>"
2739 msgstr "B<PERF_TYPE_HARDWARE>"
2740
2741 #. type: Plain text
2742 #: build/C/man2/perf_event_open.2:273
2743 msgid ""
2744 "This indicates one of the \"generalized\" hardware events provided by the "
2745 "kernel.  See the I<config> field definition for more details."
2746 msgstr ""
2747
2748 #. type: TP
2749 #: build/C/man2/perf_event_open.2:273
2750 #, no-wrap
2751 msgid "B<PERF_TYPE_SOFTWARE>"
2752 msgstr "B<PERF_TYPE_SOFTWARE>"
2753
2754 #. type: Plain text
2755 #: build/C/man2/perf_event_open.2:277
2756 msgid ""
2757 "This indicates one of the software-defined events provided by the kernel "
2758 "(even if no hardware support is available)."
2759 msgstr ""
2760
2761 #. type: TP
2762 #: build/C/man2/perf_event_open.2:277
2763 #, no-wrap
2764 msgid "B<PERF_TYPE_TRACEPOINT>"
2765 msgstr "B<PERF_TYPE_TRACEPOINT>"
2766
2767 #. type: Plain text
2768 #: build/C/man2/perf_event_open.2:281
2769 msgid ""
2770 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2771 msgstr ""
2772
2773 #. type: TP
2774 #: build/C/man2/perf_event_open.2:281
2775 #, no-wrap
2776 msgid "B<PERF_TYPE_HW_CACHE>"
2777 msgstr "B<PERF_TYPE_HW_CACHE>"
2778
2779 #. type: Plain text
2780 #: build/C/man2/perf_event_open.2:287
2781 msgid ""
2782 "This indicates a hardware cache event.  This has a special encoding, "
2783 "described in the I<config> field definition."
2784 msgstr ""
2785
2786 #. type: TP
2787 #: build/C/man2/perf_event_open.2:287
2788 #, no-wrap
2789 msgid "B<PERF_TYPE_RAW>"
2790 msgstr "B<PERF_TYPE_RAW>"
2791
2792 #. type: Plain text
2793 #: build/C/man2/perf_event_open.2:291
2794 msgid ""
2795 "This indicates a \"raw\" implementation-specific event in the I<config> "
2796 "field."
2797 msgstr ""
2798
2799 #. type: TP
2800 #: build/C/man2/perf_event_open.2:291
2801 #, no-wrap
2802 msgid "B<PERF_TYPE_BREAKPOINT> (since Linux 2.6.33)"
2803 msgstr "B<PERF_TYPE_BREAKPOINT> (Linux 2.6.33 以降)"
2804
2805 #. type: Plain text
2806 #: build/C/man2/perf_event_open.2:296
2807 msgid ""
2808 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2809 "can be read/write accesses to an address as well as execution of an "
2810 "instruction address."
2811 msgstr ""
2812
2813 #. type: TP
2814 #: build/C/man2/perf_event_open.2:296
2815 #, no-wrap
2816 msgid "dynamic PMU"
2817 msgstr ""
2818
2819 #. type: Plain text
2820 #: build/C/man2/perf_event_open.2:315
2821 msgid ""
2822 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2823 "enable this, a value exported by the kernel can be used in the I<type> field "
2824 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2825 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2826 "event_source/devices>.  In each subdirectory there is a I<type> file whose "
2827 "content is an integer that can be used in the I<type> field.  For instance, "
2828 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2829 "CPU PMU, which is usually 4."
2830 msgstr ""
2831
2832 #. type: TP
2833 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1538
2834 #, no-wrap
2835 msgid "I<size>"
2836 msgstr "I<size>"
2837
2838 #. type: Plain text
2839 #: build/C/man2/perf_event_open.2:325
2840 msgid ""
2841 "The size of the I<perf_event_attr> structure for forward/backward "
2842 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2843 "the kernel to see the struct size at the time of compilation."
2844 msgstr ""
2845
2846 #. type: Plain text
2847 #: build/C/man2/perf_event_open.2:340
2848 msgid ""
2849 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2850 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2851 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2852 "corresponding to the addition of branch sampling in Linux 3.4.  "
2853 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2854 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2855 msgstr ""
2856
2857 #. type: TP
2858 #: build/C/man2/perf_event_open.2:340
2859 #, no-wrap
2860 msgid "I<config>"
2861 msgstr "I<config>"
2862
2863 #. type: Plain text
2864 #: build/C/man2/perf_event_open.2:351
2865 msgid ""
2866 "This specifies which event you want, in conjunction with the I<type> field.  "
2867 "The I<config1> and I<config2> fields are also taken into account in cases "
2868 "where 64 bits is not enough to fully specify the event.  The encoding of "
2869 "these fields are event dependent."
2870 msgstr ""
2871
2872 #. type: Plain text
2873 #: build/C/man2/perf_event_open.2:357
2874 msgid ""
2875 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2876 "counter configuration data; if the most significant bit is unset, the next 7 "
2877 "bits are an event type and the rest of the bits are the event identifier."
2878 msgstr ""
2879
2880 #. type: Plain text
2881 #: build/C/man2/perf_event_open.2:368
2882 msgid ""
2883 "There are various ways to set the I<config> field that are dependent on the "
2884 "value of the previously described I<type> field.  What follows are various "
2885 "possible settings for I<config> separated out by I<type>."
2886 msgstr ""
2887
2888 #. type: Plain text
2889 #: build/C/man2/perf_event_open.2:378
2890 msgid ""
2891 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2892 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2893 "I<config> to one of the following:"
2894 msgstr ""
2895
2896 #. type: TP
2897 #: build/C/man2/perf_event_open.2:379
2898 #, no-wrap
2899 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2900 msgstr "B<PERF_COUNT_HW_CPU_CYCLES>"
2901
2902 #. type: Plain text
2903 #: build/C/man2/perf_event_open.2:383
2904 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling."
2905 msgstr ""
2906
2907 #. type: TP
2908 #: build/C/man2/perf_event_open.2:383
2909 #, no-wrap
2910 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2911 msgstr "B<PERF_COUNT_HW_INSTRUCTIONS>"
2912
2913 #. type: Plain text
2914 #: build/C/man2/perf_event_open.2:388
2915 msgid ""
2916 "Retired instructions.  Be careful, these can be affected by various issues, "
2917 "most notably hardware interrupt counts."
2918 msgstr ""
2919
2920 #. type: TP
2921 #: build/C/man2/perf_event_open.2:388
2922 #, no-wrap
2923 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2924 msgstr "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2925
2926 #. type: Plain text
2927 #: build/C/man2/perf_event_open.2:395
2928 msgid ""
2929 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2930 "may vary depending on your CPU.  This may include prefetches and coherency "
2931 "messages; again this depends on the design of your CPU."
2932 msgstr ""
2933
2934 #. type: TP
2935 #: build/C/man2/perf_event_open.2:395
2936 #, no-wrap
2937 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2938 msgstr "B<PERF_COUNT_HW_CACHE_MISSES>"
2939
2940 #. type: Plain text
2941 #: build/C/man2/perf_event_open.2:402
2942 msgid ""
2943 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2944 "intended to be used in conjunction with the "
2945 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2946 msgstr ""
2947
2948 #. type: TP
2949 #: build/C/man2/perf_event_open.2:402
2950 #, no-wrap
2951 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2952 msgstr "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2953
2954 #. type: Plain text
2955 #: build/C/man2/perf_event_open.2:407
2956 msgid ""
2957 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2958 "event on AMD processors."
2959 msgstr ""
2960
2961 #. type: TP
2962 #: build/C/man2/perf_event_open.2:407
2963 #, no-wrap
2964 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2965 msgstr "B<PERF_COUNT_HW_BRANCH_MISSES>"
2966
2967 #. type: Plain text
2968 #: build/C/man2/perf_event_open.2:410
2969 msgid "Mispredicted branch instructions."
2970 msgstr ""
2971
2972 #. type: TP
2973 #: build/C/man2/perf_event_open.2:410
2974 #, no-wrap
2975 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2976 msgstr "B<PERF_COUNT_HW_BUS_CYCLES>"
2977
2978 #. type: Plain text
2979 #: build/C/man2/perf_event_open.2:413
2980 msgid "Bus cycles, which can be different from total cycles."
2981 msgstr ""
2982
2983 #. type: TP
2984 #: build/C/man2/perf_event_open.2:413
2985 #, no-wrap
2986 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (since Linux 3.0)"
2987 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Linux 3.0 以降)"
2988
2989 #. type: Plain text
2990 #: build/C/man2/perf_event_open.2:416
2991 msgid "Stalled cycles during issue."
2992 msgstr ""
2993
2994 #. type: TP
2995 #: build/C/man2/perf_event_open.2:416
2996 #, no-wrap
2997 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (since Linux 3.0)"
2998 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Linux 3.0 以降)"
2999
3000 #. type: Plain text
3001 #: build/C/man2/perf_event_open.2:419
3002 msgid "Stalled cycles during retirement."
3003 msgstr ""
3004
3005 #. type: TP
3006 #: build/C/man2/perf_event_open.2:419
3007 #, no-wrap
3008 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (since Linux 3.3)"
3009 msgstr "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Linux 3.3 以降)"
3010
3011 #. type: Plain text
3012 #: build/C/man2/perf_event_open.2:422
3013 msgid "Total cycles; not affected by CPU frequency scaling."
3014 msgstr ""
3015
3016 #. type: Plain text
3017 #: build/C/man2/perf_event_open.2:432
3018 msgid ""
3019 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
3020 "provided by the kernel.  Set I<config> to one of the following:"
3021 msgstr ""
3022
3023 #. type: TP
3024 #: build/C/man2/perf_event_open.2:433
3025 #, no-wrap
3026 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
3027 msgstr "B<PERF_COUNT_SW_CPU_CLOCK>"
3028
3029 #. type: Plain text
3030 #: build/C/man2/perf_event_open.2:436
3031 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
3032 msgstr ""
3033
3034 #. type: TP
3035 #: build/C/man2/perf_event_open.2:436
3036 #, no-wrap
3037 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
3038 msgstr "B<PERF_COUNT_SW_TASK_CLOCK>"
3039
3040 #. type: Plain text
3041 #: build/C/man2/perf_event_open.2:439
3042 msgid "This reports a clock count specific to the task that is running."
3043 msgstr ""
3044
3045 #. type: TP
3046 #: build/C/man2/perf_event_open.2:439
3047 #, no-wrap
3048 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
3049 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS>"
3050
3051 #. type: Plain text
3052 #: build/C/man2/perf_event_open.2:442
3053 msgid "This reports the number of page faults."
3054 msgstr ""
3055
3056 #. type: TP
3057 #: build/C/man2/perf_event_open.2:442
3058 #, no-wrap
3059 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3060 msgstr "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3061
3062 #. type: Plain text
3063 #: build/C/man2/perf_event_open.2:447
3064 msgid ""
3065 "This counts context switches.  Until Linux 2.6.34, these were all reported "
3066 "as user-space events, after that they are reported as happening in the "
3067 "kernel."
3068 msgstr ""
3069
3070 #. type: TP
3071 #: build/C/man2/perf_event_open.2:447
3072 #, no-wrap
3073 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3074 msgstr "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3075
3076 #. type: Plain text
3077 #: build/C/man2/perf_event_open.2:451
3078 msgid "This reports the number of times the process has migrated to a new CPU."
3079 msgstr ""
3080
3081 #. type: TP
3082 #: build/C/man2/perf_event_open.2:451
3083 #, no-wrap
3084 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3085 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3086
3087 #. type: Plain text
3088 #: build/C/man2/perf_event_open.2:455
3089 msgid ""
3090 "This counts the number of minor page faults.  These did not require disk I/O "
3091 "to handle."
3092 msgstr ""
3093
3094 #. type: TP
3095 #: build/C/man2/perf_event_open.2:455
3096 #, no-wrap
3097 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3098 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3099
3100 #. type: Plain text
3101 #: build/C/man2/perf_event_open.2:459
3102 msgid ""
3103 "This counts the number of major page faults.  These required disk I/O to "
3104 "handle."
3105 msgstr ""
3106
3107 #. type: TP
3108 #: build/C/man2/perf_event_open.2:459
3109 #, no-wrap
3110 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (since Linux 2.6.33)"
3111 msgstr "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Linux 2.6.33 以降)"
3112
3113 #. type: Plain text
3114 #: build/C/man2/perf_event_open.2:465
3115 msgid ""
3116 "This counts the number of alignment faults.  These happen when unaligned "
3117 "memory accesses happen; the kernel can handle these but it reduces "
3118 "performance.  This happens only on some architectures (never on x86)."
3119 msgstr ""
3120
3121 #. type: TP
3122 #: build/C/man2/perf_event_open.2:465
3123 #, no-wrap
3124 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (since Linux 2.6.33)"
3125 msgstr "B<PERF_COUNT_SW_EMULATION_FAULTS> (Linux 2.6.33 以降)"
3126
3127 #. type: Plain text
3128 #: build/C/man2/perf_event_open.2:471
3129 msgid ""
3130 "This counts the number of emulation faults.  The kernel sometimes traps on "
3131 "unimplemented instructions and emulates them for user space.  This can "
3132 "negatively impact performance."
3133 msgstr ""
3134
3135 #. type: TP
3136 #: build/C/man2/perf_event_open.2:471
3137 #, no-wrap
3138 msgid "B<PERF_COUNT_SW_DUMMY> (since Linux 3.12)"
3139 msgstr "B<PERF_COUNT_SW_DUMMY> (Linux 3.12 以降)"
3140
3141 #. type: Plain text
3142 #: build/C/man2/perf_event_open.2:478
3143 msgid ""
3144 "This is a placeholder event that counts nothing.  Informational sample "
3145 "record types such as mmap or comm must be associated with an active event.  "
3146 "This dummy event allows gathering such records without requiring a counting "
3147 "event."
3148 msgstr ""
3149
3150 #. type: Plain text
3151 #: build/C/man2/perf_event_open.2:491
3152 msgid ""
3153 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3154 "tracepoints.  The value to use in I<config> can be obtained from under "
3155 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3156 msgstr ""
3157
3158 #. type: Plain text
3159 #: build/C/man2/perf_event_open.2:502
3160 msgid ""
3161 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3162 "cache event.  To calculate the appropriate I<config> value use the following "
3163 "equation:"
3164 msgstr ""
3165
3166 #. type: Plain text
3167 #: build/C/man2/perf_event_open.2:507
3168 #, no-wrap
3169 msgid ""
3170 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3171 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3172 msgstr ""
3173 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3174 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3175
3176 #. type: Plain text
3177 #: build/C/man2/perf_event_open.2:512
3178 msgid "where I<perf_hw_cache_id> is one of:"
3179 msgstr ""
3180
3181 #. type: TP
3182 #: build/C/man2/perf_event_open.2:513
3183 #, no-wrap
3184 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3185 msgstr "B<PERF_COUNT_HW_CACHE_L1D>"
3186
3187 #. type: Plain text
3188 #: build/C/man2/perf_event_open.2:516
3189 msgid "for measuring Level 1 Data Cache"
3190 msgstr ""
3191
3192 #. type: TP
3193 #: build/C/man2/perf_event_open.2:516
3194 #, no-wrap
3195 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3196 msgstr "B<PERF_COUNT_HW_CACHE_L1I>"
3197
3198 #. type: Plain text
3199 #: build/C/man2/perf_event_open.2:519
3200 msgid "for measuring Level 1 Instruction Cache"
3201 msgstr ""
3202
3203 #. type: TP
3204 #: build/C/man2/perf_event_open.2:519
3205 #, no-wrap
3206 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3207 msgstr "B<PERF_COUNT_HW_CACHE_LL>"
3208
3209 #. type: Plain text
3210 #: build/C/man2/perf_event_open.2:522
3211 msgid "for measuring Last-Level Cache"
3212 msgstr ""
3213
3214 #. type: TP
3215 #: build/C/man2/perf_event_open.2:522
3216 #, no-wrap
3217 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3218 msgstr "B<PERF_COUNT_HW_CACHE_DTLB>"
3219
3220 #. type: Plain text
3221 #: build/C/man2/perf_event_open.2:525
3222 msgid "for measuring the Data TLB"
3223 msgstr ""
3224
3225 #. type: TP
3226 #: build/C/man2/perf_event_open.2:525
3227 #, no-wrap
3228 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3229 msgstr "B<PERF_COUNT_HW_CACHE_ITLB>"
3230
3231 #. type: Plain text
3232 #: build/C/man2/perf_event_open.2:528
3233 msgid "for measuring the Instruction TLB"
3234 msgstr ""
3235
3236 #. type: TP
3237 #: build/C/man2/perf_event_open.2:528
3238 #, no-wrap
3239 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3240 msgstr "B<PERF_COUNT_HW_CACHE_BPU>"
3241
3242 #. type: Plain text
3243 #: build/C/man2/perf_event_open.2:531
3244 msgid "for measuring the branch prediction unit"
3245 msgstr ""
3246
3247 #. type: TP
3248 #: build/C/man2/perf_event_open.2:531
3249 #, no-wrap
3250 msgid "B<PERF_COUNT_HW_CACHE_NODE> (since Linux 3.0)"
3251 msgstr "B<PERF_COUNT_HW_CACHE_NODE> (Linux 3.0 以降)"
3252
3253 #. type: Plain text
3254 #: build/C/man2/perf_event_open.2:534
3255 msgid "for measuring local memory accesses"
3256 msgstr ""
3257
3258 #. type: Plain text
3259 #: build/C/man2/perf_event_open.2:539
3260 msgid "and I<perf_hw_cache_op_id> is one of"
3261 msgstr ""
3262
3263 #. type: TP
3264 #: build/C/man2/perf_event_open.2:540
3265 #, no-wrap
3266 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3267 msgstr "B<PERF_COUNT_HW_CACHE_OP_READ>"
3268
3269 #. type: Plain text
3270 #: build/C/man2/perf_event_open.2:543
3271 msgid "for read accesses"
3272 msgstr ""
3273
3274 #. type: TP
3275 #: build/C/man2/perf_event_open.2:543
3276 #, no-wrap
3277 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3278 msgstr "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3279
3280 #. type: Plain text
3281 #: build/C/man2/perf_event_open.2:546
3282 msgid "for write accesses"
3283 msgstr ""
3284
3285 #. type: TP
3286 #: build/C/man2/perf_event_open.2:546
3287 #, no-wrap
3288 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3289 msgstr "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3290
3291 #. type: Plain text
3292 #: build/C/man2/perf_event_open.2:549
3293 msgid "for prefetch accesses"
3294 msgstr ""
3295
3296 #. type: Plain text
3297 #: build/C/man2/perf_event_open.2:554
3298 msgid "and I<perf_hw_cache_op_result_id> is one of"
3299 msgstr ""
3300
3301 #. type: TP
3302 #: build/C/man2/perf_event_open.2:555
3303 #, no-wrap
3304 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3305 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3306
3307 #. type: Plain text
3308 #: build/C/man2/perf_event_open.2:558
3309 msgid "to measure accesses"
3310 msgstr ""
3311
3312 #. type: TP
3313 #: build/C/man2/perf_event_open.2:558
3314 #, no-wrap
3315 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3316 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3317
3318 #. type: Plain text
3319 #: build/C/man2/perf_event_open.2:561
3320 msgid "to measure misses"
3321 msgstr ""
3322
3323 #. type: Plain text
3324 #: build/C/man2/perf_event_open.2:579
3325 msgid ""
3326 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3327 "needed.  Most CPUs support events that are not covered by the \"generalized"
3328 "\" events.  These are implementation defined; see your CPU manual (for "
3329 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3330 "Developer Guide).  The libpfm4 library can be used to translate from the "
3331 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3332 "expects in this field."
3333 msgstr ""
3334
3335 #. type: Plain text
3336 #: build/C/man2/perf_event_open.2:588
3337 msgid ""
3338 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3339 "Its parameters are set in other places."
3340 msgstr ""
3341
3342 #. type: TP
3343 #: build/C/man2/perf_event_open.2:589
3344 #, no-wrap
3345 msgid "I<sample_period>, I<sample_freq>"
3346 msgstr "I<sample_period>, I<sample_freq>"
3347
3348 #. type: Plain text
3349 #: build/C/man2/perf_event_open.2:601
3350 msgid ""
3351 "A \"sampling\" counter is one that generates an interrupt every N events, "
3352 "where N is given by I<sample_period>.  A sampling counter has "
3353 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3354 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3355 "is recorded on each interrupt."
3356 msgstr ""
3357
3358 #. type: Plain text
3359 #: build/C/man2/perf_event_open.2:611
3360 msgid ""
3361 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3362 "In this case, you set the I<freq> flag.  The kernel will adjust the sampling "
3363 "period to try and achieve the desired rate.  The rate of adjustment is a "
3364 "timer tick."
3365 msgstr ""
3366
3367 #. type: TP
3368 #: build/C/man2/perf_event_open.2:611
3369 #, no-wrap
3370 msgid "I<sample_type>"
3371 msgstr "I<sample_type>"
3372
3373 #. type: Plain text
3374 #: build/C/man2/perf_event_open.2:623
3375 msgid ""
3376 "The various bits in this field specify which values to include in the "
3377 "sample.  They will be recorded in a ring-buffer, which is available to user "
3378 "space using B<mmap>(2).  The order in which the values are saved in the "
3379 "sample are documented in the MMAP Layout subsection below; it is not the "
3380 "I<enum perf_event_sample_format> order."
3381 msgstr ""
3382
3383 #. type: TP
3384 #: build/C/man2/perf_event_open.2:624
3385 #, no-wrap
3386 msgid "B<PERF_SAMPLE_IP>"
3387 msgstr "B<PERF_SAMPLE_IP>"
3388
3389 #. type: Plain text
3390 #: build/C/man2/perf_event_open.2:627
3391 msgid "Records instruction pointer."
3392 msgstr ""
3393
3394 #. type: TP
3395 #: build/C/man2/perf_event_open.2:627
3396 #, no-wrap
3397 msgid "B<PERF_SAMPLE_TID>"
3398 msgstr "B<PERF_SAMPLE_TID>"
3399
3400 #. type: Plain text
3401 #: build/C/man2/perf_event_open.2:630
3402 msgid "Records the process and thread IDs."
3403 msgstr ""
3404
3405 #. type: TP
3406 #: build/C/man2/perf_event_open.2:630
3407 #, no-wrap
3408 msgid "B<PERF_SAMPLE_TIME>"
3409 msgstr "B<PERF_SAMPLE_TIME>"
3410
3411 #. type: Plain text
3412 #: build/C/man2/perf_event_open.2:633
3413 msgid "Records a timestamp."
3414 msgstr ""
3415
3416 #. type: TP
3417 #: build/C/man2/perf_event_open.2:633
3418 #, no-wrap
3419 msgid "B<PERF_SAMPLE_ADDR>"
3420 msgstr "B<PERF_SAMPLE_ADDR>"
3421
3422 #. type: Plain text
3423 #: build/C/man2/perf_event_open.2:636
3424 msgid "Records an address, if applicable."
3425 msgstr ""
3426
3427 #. type: TP
3428 #: build/C/man2/perf_event_open.2:636
3429 #, no-wrap
3430 msgid "B<PERF_SAMPLE_READ>"
3431 msgstr "B<PERF_SAMPLE_READ>"
3432
3433 #. type: Plain text
3434 #: build/C/man2/perf_event_open.2:639
3435 msgid ""
3436 "Record counter values for all events in a group, not just the group leader."
3437 msgstr ""
3438
3439 #. type: TP
3440 #: build/C/man2/perf_event_open.2:639
3441 #, no-wrap
3442 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3443 msgstr "B<PERF_SAMPLE_CALLCHAIN>"
3444
3445 #. type: Plain text
3446 #: build/C/man2/perf_event_open.2:642
3447 msgid "Records the callchain (stack backtrace)."
3448 msgstr ""
3449
3450 #. type: TP
3451 #: build/C/man2/perf_event_open.2:642
3452 #, no-wrap
3453 msgid "B<PERF_SAMPLE_ID>"
3454 msgstr "B<PERF_SAMPLE_ID>"
3455
3456 #. type: Plain text
3457 #: build/C/man2/perf_event_open.2:645
3458 msgid "Records a unique ID for the opened event's group leader."
3459 msgstr ""
3460
3461 #. type: TP
3462 #: build/C/man2/perf_event_open.2:645
3463 #, no-wrap
3464 msgid "B<PERF_SAMPLE_CPU>"
3465 msgstr "B<PERF_SAMPLE_CPU>"
3466
3467 #. type: Plain text
3468 #: build/C/man2/perf_event_open.2:648
3469 msgid "Records CPU number."
3470 msgstr ""
3471
3472 #. type: TP
3473 #: build/C/man2/perf_event_open.2:648
3474 #, no-wrap
3475 msgid "B<PERF_SAMPLE_PERIOD>"
3476 msgstr "B<PERF_SAMPLE_PERIOD>"
3477
3478 #. type: Plain text
3479 #: build/C/man2/perf_event_open.2:651
3480 msgid "Records the current sampling period."
3481 msgstr ""
3482
3483 #. type: TP
3484 #: build/C/man2/perf_event_open.2:651
3485 #, no-wrap
3486 msgid "B<PERF_SAMPLE_STREAM_ID>"
3487 msgstr "B<PERF_SAMPLE_STREAM_ID>"
3488
3489 #. type: Plain text
3490 #: build/C/man2/perf_event_open.2:659
3491 msgid ""
3492 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3493 "actual ID is returned, not the group leader.  This ID is the same as the one "
3494 "returned by B<PERF_FORMAT_ID>."
3495 msgstr ""
3496
3497 #. type: TP
3498 #: build/C/man2/perf_event_open.2:659
3499 #, no-wrap
3500 msgid "B<PERF_SAMPLE_RAW>"
3501 msgstr "B<PERF_SAMPLE_RAW>"
3502
3503 #. type: Plain text
3504 #: build/C/man2/perf_event_open.2:663
3505 msgid ""
3506 "Records additional data, if applicable.  Usually returned by tracepoint "
3507 "events."
3508 msgstr ""
3509
3510 #. type: TP
3511 #: build/C/man2/perf_event_open.2:663
3512 #, no-wrap
3513 msgid "B<PERF_SAMPLE_BRANCH_STACK> (since Linux 3.4)"
3514 msgstr "B<PERF_SAMPLE_BRANCH_STACK> (Linux 3.4 以降)"
3515
3516 #. type: Plain text
3517 #: build/C/man2/perf_event_open.2:668
3518 msgid ""
3519 "This provides a record of recent branches, as provided by CPU branch "
3520 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3521 "supports this feature."
3522 msgstr ""
3523
3524 #. type: Plain text
3525 #: build/C/man2/perf_event_open.2:672
3526 msgid ""
3527 "See the I<branch_sample_type> field for how to filter which branches are "
3528 "reported."
3529 msgstr ""
3530
3531 #. type: TP
3532 #: build/C/man2/perf_event_open.2:672
3533 #, no-wrap
3534 msgid "B<PERF_SAMPLE_REGS_USER> (since Linux 3.7)"
3535 msgstr "B<PERF_SAMPLE_REGS_USER> (Linux 3.7 以降)"
3536
3537 #. type: Plain text
3538 #: build/C/man2/perf_event_open.2:676
3539 msgid ""
3540 "Records the current user-level CPU register state (the values in the process "
3541 "before the kernel was called)."
3542 msgstr ""
3543
3544 #. type: TP
3545 #: build/C/man2/perf_event_open.2:676
3546 #, no-wrap
3547 msgid "B<PERF_SAMPLE_STACK_USER> (since Linux 3.7)"
3548 msgstr "B<PERF_SAMPLE_STACK_USER> (Linux 3.7 以降)"
3549
3550 #. type: Plain text
3551 #: build/C/man2/perf_event_open.2:679
3552 msgid "Records the user level stack, allowing stack unwinding."
3553 msgstr ""
3554
3555 #. type: TP
3556 #: build/C/man2/perf_event_open.2:679
3557 #, no-wrap
3558 msgid "B<PERF_SAMPLE_WEIGHT> (since Linux 3.10)"
3559 msgstr "B<PERF_SAMPLE_WEIGHT> (Linux 3.10 以降)"
3560
3561 #. type: Plain text
3562 #: build/C/man2/perf_event_open.2:685
3563 msgid ""
3564 "Records a hardware provided weight value that expresses how costly the "
3565 "sampled event was.  This allows the hardware to highlight expensive events "
3566 "in a profile."
3567 msgstr ""
3568
3569 #. type: TP
3570 #: build/C/man2/perf_event_open.2:685
3571 #, no-wrap
3572 msgid "B<PERF_SAMPLE_DATA_SRC> (since Linux 3.10)"
3573 msgstr "B<PERF_SAMPLE_DATA_SRC> (Linux 3.10 以降)"
3574
3575 #. type: Plain text
3576 #: build/C/man2/perf_event_open.2:691
3577 msgid ""
3578 "Records the data source: where in the memory hierarchy the data associated "
3579 "with the sampled instruction came from.  This is only available if the "
3580 "underlying hardware supports this feature."
3581 msgstr ""
3582
3583 #. type: TP
3584 #: build/C/man2/perf_event_open.2:691
3585 #, no-wrap
3586 msgid "B<PERF_SAMPLE_IDENTIFIER> (since Linux 3.12)"
3587 msgstr "B<PERF_SAMPLE_IDENTIFIER> (Linux 3.12 以降)"
3588
3589 #. type: Plain text
3590 #: build/C/man2/perf_event_open.2:698
3591 msgid ""
3592 "Places the B<SAMPLE_ID> value in a fixed position in the record, either at "
3593 "the beginning (for sample events) or at the end (if a non-sample event)."
3594 msgstr ""
3595
3596 #. type: Plain text
3597 #: build/C/man2/perf_event_open.2:710
3598 msgid ""
3599 "This was necessary because a sample stream may have records from various "
3600 "different event sources with different I<sample_type> settings.  Parsing the "
3601 "event stream properly was not possible because the format of the record was "
3602 "needed to find B<SAMPLE_ID>, but the format could not be found without "
3603 "knowing what event the sample belonged to (causing a circular dependency)."
3604 msgstr ""
3605
3606 #. type: Plain text
3607 #: build/C/man2/perf_event_open.2:720
3608 msgid ""
3609 "This new B<PERF_SAMPLE_IDENTIFIER> setting makes the event stream always "
3610 "parsable by putting B<SAMPLE_ID> in a fixed location, even though it means "
3611 "having duplicate B<SAMPLE_ID> values in records."
3612 msgstr ""
3613
3614 #. type: TP
3615 #: build/C/man2/perf_event_open.2:720
3616 #, no-wrap
3617 msgid "B<PERF_SAMPLE_TRANSACTION> (Since Linux 3.13)"
3618 msgstr "B<PERF_SAMPLE_TRANSACTION> (Linux 3.13 以降)"
3619
3620 #. type: Plain text
3621 #: build/C/man2/perf_event_open.2:724
3622 msgid ""
3623 "Records reasons for transactional memory abort events (for example, from "
3624 "Intel TSX transactional memory support)."
3625 msgstr ""
3626
3627 #. type: Plain text
3628 #: build/C/man2/perf_event_open.2:732
3629 msgid ""
3630 "The I<precise_ip> setting must be greater than 0 and a transactional memory "
3631 "abort event must be measured or no values will be recorded.  Also note that "
3632 "some perf_event measurements, such as sampled cycle counting, may cause "
3633 "extraneous aborts (by causing an interrupt during a transaction)."
3634 msgstr ""
3635
3636 #. type: TP
3637 #: build/C/man2/perf_event_open.2:733
3638 #, no-wrap
3639 msgid "I<read_format>"
3640 msgstr "I<read_format>"
3641
3642 #. type: Plain text
3643 #: build/C/man2/perf_event_open.2:740
3644 msgid ""
3645 "This field specifies the format of the data returned by B<read>(2)  on a "
3646 "B<perf_event_open>()  file descriptor."
3647 msgstr ""
3648
3649 #. type: TP
3650 #: build/C/man2/perf_event_open.2:741
3651 #, no-wrap
3652 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3653 msgstr "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3654
3655 #. type: Plain text
3656 #: build/C/man2/perf_event_open.2:748
3657 msgid ""
3658 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3659 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3660 msgstr ""
3661
3662 #. type: TP
3663 #: build/C/man2/perf_event_open.2:748
3664 #, no-wrap
3665 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3666 msgstr "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3667
3668 #. type: Plain text
3669 #: build/C/man2/perf_event_open.2:755
3670 msgid ""
3671 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3672 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3673 msgstr ""
3674
3675 #. type: TP
3676 #: build/C/man2/perf_event_open.2:755
3677 #, no-wrap
3678 msgid "B<PERF_FORMAT_ID>"
3679 msgstr "B<PERF_FORMAT_ID>"
3680
3681 #. type: Plain text
3682 #: build/C/man2/perf_event_open.2:758
3683 msgid "Adds a 64-bit unique value that corresponds to the event group."
3684 msgstr ""
3685
3686 #. type: TP
3687 #: build/C/man2/perf_event_open.2:758
3688 #, no-wrap
3689 msgid "B<PERF_FORMAT_GROUP>"
3690 msgstr "B<PERF_FORMAT_GROUP>"
3691
3692 #. type: Plain text
3693 #: build/C/man2/perf_event_open.2:761
3694 msgid "Allows all counter values in an event group to be read with one read."
3695 msgstr ""
3696
3697 #. type: TP
3698 #: build/C/man2/perf_event_open.2:762
3699 #, no-wrap
3700 msgid "I<disabled>"
3701 msgstr "I<disabled>"
3702
3703 #. type: Plain text
3704 #: build/C/man2/perf_event_open.2:772
3705 msgid ""
3706 "The I<disabled> bit specifies whether the counter starts out disabled or "
3707 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3708 "B<prctl>(2), or I<enable_on_exec>."
3709 msgstr ""
3710
3711 #. type: Plain text
3712 #: build/C/man2/perf_event_open.2:783
3713 msgid ""
3714 "When creating an event group, typically the group leader is initialized with "
3715 "I<disabled> set to 1 and any child events are initialized with I<disabled> "
3716 "set to 0.  Despite I<disabled> being 0, the child events will not start "
3717 "until the group leader is enabled."
3718 msgstr ""
3719
3720 #. type: TP
3721 #: build/C/man2/perf_event_open.2:783
3722 #, no-wrap
3723 msgid "I<inherit>"
3724 msgstr "I<inherit>"
3725
3726 #. type: Plain text
3727 #: build/C/man2/perf_event_open.2:792
3728 msgid ""
3729 "The I<inherit> bit specifies that this counter should count events of child "
3730 "tasks as well as the task specified.  This applies only to new children, not "
3731 "to any existing children at the time the counter is created (nor to any new "
3732 "children of existing children)."
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/perf_event_open.2:797
3737 msgid ""
3738 "Inherit does not work for some combinations of I<read_format>s, such as "
3739 "B<PERF_FORMAT_GROUP>."
3740 msgstr ""
3741
3742 #. type: TP
3743 #: build/C/man2/perf_event_open.2:797
3744 #, no-wrap
3745 msgid "I<pinned>"
3746 msgstr "I<pinned>"
3747
3748 #. type: Plain text
3749 #: build/C/man2/perf_event_open.2:810
3750 msgid ""
3751 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3752 "at all possible.  It applies only to hardware counters and only to group "
3753 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3754 "there are not enough hardware counters or because of a conflict with some "
3755 "other event), then the counter goes into an 'error' state, where reads "
3756 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3757 "subsequently enabled or disabled."
3758 msgstr ""
3759
3760 #. type: TP
3761 #: build/C/man2/perf_event_open.2:810
3762 #, no-wrap
3763 msgid "I<exclusive>"
3764 msgstr "I<exclusive>"
3765
3766 #. type: Plain text
3767 #: build/C/man2/perf_event_open.2:819
3768 msgid ""
3769 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3770 "it should be the only group using the CPU's counters.  In the future this "
3771 "may allow monitoring programs to support PMU features that need to run alone "
3772 "so that they do not disrupt other hardware counters."
3773 msgstr ""
3774
3775 #. type: Plain text
3776 #: build/C/man2/perf_event_open.2:826
3777 msgid ""
3778 "Note that many unexpected situations may prevent events with the "
3779 "I<exclusive> bit set from ever running.  This includes any users running a "
3780 "system-wide measurement as well as any kernel use of the performance "
3781 "counters (including the commonly enabled NMI Watchdog Timer interface)."
3782 msgstr ""
3783
3784 #. type: TP
3785 #: build/C/man2/perf_event_open.2:826
3786 #, no-wrap
3787 msgid "I<exclude_user>"
3788 msgstr "I<exclude_user>"
3789
3790 #. type: Plain text
3791 #: build/C/man2/perf_event_open.2:829
3792 msgid ""
3793 "If this bit is set, the count excludes events that happen in user space."
3794 msgstr ""
3795
3796 #. type: TP
3797 #: build/C/man2/perf_event_open.2:829
3798 #, no-wrap
3799 msgid "I<exclude_kernel>"
3800 msgstr "I<exclude_kernel>"
3801
3802 #. type: Plain text
3803 #: build/C/man2/perf_event_open.2:832
3804 msgid ""
3805 "If this bit is set, the count excludes events that happen in kernel-space."
3806 msgstr ""
3807
3808 #. type: TP
3809 #: build/C/man2/perf_event_open.2:832
3810 #, no-wrap
3811 msgid "I<exclude_hv>"
3812 msgstr "I<exclude_hv>"
3813
3814 #. type: Plain text
3815 #: build/C/man2/perf_event_open.2:840
3816 msgid ""
3817 "If this bit is set, the count excludes events that happen in the "
3818 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3819 "this (such as POWER).  Extra support is needed for handling hypervisor "
3820 "measurements on most machines."
3821 msgstr ""
3822
3823 #. type: TP
3824 #: build/C/man2/perf_event_open.2:840
3825 #, no-wrap
3826 msgid "I<exclude_idle>"
3827 msgstr "I<exclude_idle>"
3828
3829 #. type: Plain text
3830 #: build/C/man2/perf_event_open.2:843
3831 msgid "If set, don't count when the CPU is idle."
3832 msgstr ""
3833
3834 #. type: TP
3835 #: build/C/man2/perf_event_open.2:843
3836 #, no-wrap
3837 msgid "I<mmap>"
3838 msgstr "I<mmap>"
3839
3840 #. type: Plain text
3841 #: build/C/man2/perf_event_open.2:857
3842 msgid ""
3843 "The I<mmap> bit enables generation of B<PERF_RECORD_MMAP> samples for every "
3844 "B<mmap>(2)  call that has B<PROT_EXEC> set.  This allows tools to notice new "
3845 "executable code being mapped into a program (dynamic shared libraries for "
3846 "example)  so that addresses can be mapped back to the original code."
3847 msgstr ""
3848
3849 #. type: TP
3850 #: build/C/man2/perf_event_open.2:857 build/C/man2/perf_event_open.2:1693
3851 #, no-wrap
3852 msgid "I<comm>"
3853 msgstr "I<comm>"
3854
3855 #. type: Plain text
3856 #: build/C/man2/perf_event_open.2:875
3857 msgid ""
3858 "The I<comm> bit enables tracking of process command name as modified by the "
3859 "B<exec>(2)  and B<prctl>(PR_SET_NAME)  system calls as well as writing to I</"
3860 "proc/self/comm>.  If the I<comm_exec> flag is also successfully set "
3861 "(possible since Linux 3.16), then the misc flag "
3862 "B<PERF_RECORD_MISC_COMM_EXEC> can be used to differentiate the B<exec>(2)  "
3863 "case from the others."
3864 msgstr ""
3865
3866 #. type: TP
3867 #: build/C/man2/perf_event_open.2:875
3868 #, no-wrap
3869 msgid "I<freq>"
3870 msgstr "I<freq>"
3871
3872 #. type: Plain text
3873 #: build/C/man2/perf_event_open.2:882
3874 msgid ""
3875 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3876 "when setting up the sampling interval."
3877 msgstr ""
3878
3879 #. type: TP
3880 #: build/C/man2/perf_event_open.2:882
3881 #, no-wrap
3882 msgid "I<inherit_stat>"
3883 msgstr "I<inherit_stat>"
3884
3885 #. type: Plain text
3886 #: build/C/man2/perf_event_open.2:889
3887 msgid ""
3888 "This bit enables saving of event counts on context switch for inherited "
3889 "tasks.  This is meaningful only if the I<inherit> field is set."
3890 msgstr ""
3891
3892 #. type: TP
3893 #: build/C/man2/perf_event_open.2:889
3894 #, no-wrap
3895 msgid "I<enable_on_exec>"
3896 msgstr "I<enable_on_exec>"
3897
3898 #. type: Plain text
3899 #: build/C/man2/perf_event_open.2:894
3900 msgid ""
3901 "If this bit is set, a counter is automatically enabled after a call to "
3902 "B<exec>(2)."
3903 msgstr ""
3904
3905 #. type: TP
3906 #: build/C/man2/perf_event_open.2:894
3907 #, no-wrap
3908 msgid "I<task>"
3909 msgstr "I<task>"
3910
3911 #. type: Plain text
3912 #: build/C/man2/perf_event_open.2:898
3913 msgid ""
3914 "If this bit is set, then fork/exit notifications are included in the ring "
3915 "buffer."
3916 msgstr ""
3917
3918 #. type: TP
3919 #: build/C/man2/perf_event_open.2:898
3920 #, no-wrap
3921 msgid "I<watermark>"
3922 msgstr "I<watermark>"
3923
3924 #. type: Plain text
3925 #: build/C/man2/perf_event_open.2:906
3926 msgid ""
3927 "If set, have a sampling interrupt happen when we cross the "
3928 "I<wakeup_watermark> boundary.  Otherwise, interrupts happen after "
3929 "I<wakeup_events> samples."
3930 msgstr ""
3931
3932 #. type: TP
3933 #: build/C/man2/perf_event_open.2:906
3934 #, no-wrap
3935 msgid "I<precise_ip> (since Linux 2.6.35)"
3936 msgstr "I<precise_ip> (Linux 2.6.35 以降)"
3937
3938 #. type: Plain text
3939 #: build/C/man2/perf_event_open.2:916
3940 msgid ""
3941 "This controls the amount of skid.  Skid is how many instructions execute "
3942 "between an event of interest happening and the kernel being able to stop and "
3943 "record the event.  Smaller skid is better and allows more accurate reporting "
3944 "of which events correspond to which instructions, but hardware is often "
3945 "limited with how small this can be."
3946 msgstr ""
3947
3948 #. type: Plain text
3949 #: build/C/man2/perf_event_open.2:918
3950 msgid "The values of this are the following:"
3951 msgstr ""
3952
3953 #. type: TP
3954 #: build/C/man2/perf_event_open.2:919
3955 #, no-wrap
3956 msgid "0 -"
3957 msgstr "0 -"
3958
3959 #. type: Plain text
3960 #: build/C/man2/perf_event_open.2:923
3961 msgid "B<SAMPLE_IP> can have arbitrary skid."
3962 msgstr ""
3963
3964 #. type: TP
3965 #: build/C/man2/perf_event_open.2:923
3966 #, no-wrap
3967 msgid "1 -"
3968 msgstr "1 -"
3969
3970 #. type: Plain text
3971 #: build/C/man2/perf_event_open.2:927
3972 msgid "B<SAMPLE_IP> must have constant skid."
3973 msgstr ""
3974
3975 #. type: TP
3976 #: build/C/man2/perf_event_open.2:927
3977 #, no-wrap
3978 msgid "2 -"
3979 msgstr "2 -"
3980
3981 #. type: Plain text
3982 #: build/C/man2/perf_event_open.2:931
3983 msgid "B<SAMPLE_IP> requested to have 0 skid."
3984 msgstr ""
3985
3986 #. type: TP
3987 #: build/C/man2/perf_event_open.2:931
3988 #, no-wrap
3989 msgid "3 -"
3990 msgstr "3 -"
3991
3992 #. type: Plain text
3993 #: build/C/man2/perf_event_open.2:937
3994 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3995 msgstr ""
3996
3997 #. type: TP
3998 #: build/C/man2/perf_event_open.2:938
3999 #, no-wrap
4000 msgid "I<mmap_data> (since Linux 2.6.36)"
4001 msgstr "I<mmap_data> (Linux 2.6.36 以降)"
4002
4003 #. type: Plain text
4004 #: build/C/man2/perf_event_open.2:950
4005 msgid ""
4006 "The counterpart of the I<mmap> field.  This enables generation of "
4007 "B<PERF_RECORD_MMAP> samples for B<mmap>(2)  calls that do not have "
4008 "B<PROT_EXEC> set (for example data and SysV shared memory)."
4009 msgstr ""
4010
4011 #. type: TP
4012 #: build/C/man2/perf_event_open.2:950
4013 #, no-wrap
4014 msgid "I<sample_id_all> (since Linux 2.6.38)"
4015 msgstr "I<sample_id_all> (Linux 2.6.38 以降)"
4016
4017 #. type: Plain text
4018 #: build/C/man2/perf_event_open.2:958
4019 msgid ""
4020 "If set, then TID, TIME, ID, STREAM_ID, and CPU can additionally be included "
4021 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
4022 "selected."
4023 msgstr ""
4024
4025 #. type: Plain text
4026 #: build/C/man2/perf_event_open.2:966
4027 msgid ""
4028 "If B<PERF_SAMPLE_IDENTIFIER> is specified, then an additional ID value is "
4029 "included as the last value to ease parsing the record stream.  This may lead "
4030 "to the I<id> value appearing twice."
4031 msgstr ""
4032
4033 #. type: Plain text
4034 #: build/C/man2/perf_event_open.2:968
4035 msgid "The layout is described by this pseudo-structure:"
4036 msgstr ""
4037
4038 #. type: Plain text
4039 #: build/C/man2/perf_event_open.2:978
4040 #, no-wrap
4041 msgid ""
4042 "struct sample_id {\n"
4043 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4044 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4045 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4046 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4047 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4048 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4049 "};\n"
4050 msgstr ""
4051 "struct sample_id {\n"
4052 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4053 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4054 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4055 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4056 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4057 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4058 "};\n"
4059
4060 #. type: TP
4061 #: build/C/man2/perf_event_open.2:979
4062 #, no-wrap
4063 msgid "I<exclude_host> (since Linux 3.2)"
4064 msgstr "I<exclude_host> (Linux 3.2 以降)"
4065
4066 #. type: Plain text
4067 #: build/C/man2/perf_event_open.2:982
4068 msgid "Do not measure time spent in VM host."
4069 msgstr ""
4070
4071 #. type: TP
4072 #: build/C/man2/perf_event_open.2:982
4073 #, no-wrap
4074 msgid "I<exclude_guest> (since Linux 3.2)"
4075 msgstr "I<exclude_guest> (Linux 3.2 以降)"
4076
4077 #. type: Plain text
4078 #: build/C/man2/perf_event_open.2:985
4079 msgid "Do not measure time spent in VM guest."
4080 msgstr ""
4081
4082 #. type: TP
4083 #: build/C/man2/perf_event_open.2:985
4084 #, no-wrap
4085 msgid "I<exclude_callchain_kernel> (since Linux 3.7)"
4086 msgstr "I<exclude_callchain_kernel> (Linux 3.7 以降)"
4087
4088 #. type: Plain text
4089 #: build/C/man2/perf_event_open.2:988
4090 msgid "Do not include kernel callchains."
4091 msgstr ""
4092
4093 #. type: TP
4094 #: build/C/man2/perf_event_open.2:988
4095 #, no-wrap
4096 msgid "I<exclude_callchain_user> (since Linux 3.7)"
4097 msgstr "I<exclude_callchain_user> (Linux 3.7 以降)"
4098
4099 #. type: Plain text
4100 #: build/C/man2/perf_event_open.2:991
4101 msgid "Do not include user callchains."
4102 msgstr ""
4103
4104 #. type: TP
4105 #: build/C/man2/perf_event_open.2:991
4106 #, no-wrap
4107 msgid "I<mmap2> (since Linux 3.16)"
4108 msgstr "I<mmap2> (Linux 3.16 以降)"
4109
4110 #. type: Plain text
4111 #: build/C/man2/perf_event_open.2:998
4112 msgid ""
4113 "Generate an extended executable mmap record that contains enough additional "
4114 "information to uniquely identify shared mappings.  The I<mmap> flag must "
4115 "also be set for this to work."
4116 msgstr ""
4117
4118 #. type: TP
4119 #: build/C/man2/perf_event_open.2:998
4120 #, no-wrap
4121 msgid "I<comm_exec> (since Linux 3.16)"
4122 msgstr "I<comm_exec> (Linux 3.16 以降)"
4123
4124 #. type: Plain text
4125 #: build/C/man2/perf_event_open.2:1013
4126 msgid ""
4127 "This is purely a feature-detection flag, it does not change kernel "
4128 "behavior.  If this flag can successfully be set, then, when I<comm> is "
4129 "enabled, the B<PERF_RECORD_MISC_COMM_EXEC> flag will be set in the I<misc> "
4130 "field of a comm record header if the rename event being reported was caused "
4131 "by a call to B<exec>(2).  This allows tools to distinguish between the "
4132 "various types of process renaming."
4133 msgstr ""
4134
4135 #. type: TP
4136 #: build/C/man2/perf_event_open.2:1013
4137 #, no-wrap
4138 msgid "I<wakeup_events>, I<wakeup_watermark>"
4139 msgstr "I<wakeup_events>, I<wakeup_watermark>"
4140
4141 #. type: Plain text
4142 #: build/C/man2/perf_event_open.2:1023
4143 msgid ""
4144 "This union sets how many samples (I<wakeup_events>)  or bytes "
4145 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
4146 "is used is selected by the I<watermark> bit flag."
4147 msgstr ""
4148
4149 #. type: Plain text
4150 #: build/C/man2/perf_event_open.2:1033
4151 msgid ""
4152 "I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types.  To receive "
4153 "a signal for every incoming B<PERF_RECORD> type set I<wakeup_watermark> to 1."
4154 msgstr ""
4155
4156 #. type: TP
4157 #: build/C/man2/perf_event_open.2:1033
4158 #, no-wrap
4159 msgid "I<bp_type> (since Linux 2.6.33)"
4160 msgstr "I<bp_type> (Linux 2.6.33 以降)"
4161
4162 #. type: Plain text
4163 #: build/C/man2/perf_event_open.2:1037
4164 msgid "This chooses the breakpoint type.  It is one of:"
4165 msgstr ""
4166
4167 #. type: TP
4168 #: build/C/man2/perf_event_open.2:1038
4169 #, no-wrap
4170 msgid "B<HW_BREAKPOINT_EMPTY>"
4171 msgstr "B<HW_BREAKPOINT_EMPTY>"
4172
4173 #. type: Plain text
4174 #: build/C/man2/perf_event_open.2:1041
4175 msgid "No breakpoint."
4176 msgstr ""
4177
4178 #. type: TP
4179 #: build/C/man2/perf_event_open.2:1041
4180 #, no-wrap
4181 msgid "B<HW_BREAKPOINT_R>"
4182 msgstr "B<HW_BREAKPOINT_R>"
4183
4184 #. type: Plain text
4185 #: build/C/man2/perf_event_open.2:1044
4186 msgid "Count when we read the memory location."
4187 msgstr ""
4188
4189 #. type: TP
4190 #: build/C/man2/perf_event_open.2:1044
4191 #, no-wrap
4192 msgid "B<HW_BREAKPOINT_W>"
4193 msgstr "B<HW_BREAKPOINT_W>"
4194
4195 #. type: Plain text
4196 #: build/C/man2/perf_event_open.2:1047
4197 msgid "Count when we write the memory location."
4198 msgstr ""
4199
4200 #. type: TP
4201 #: build/C/man2/perf_event_open.2:1047
4202 #, no-wrap
4203 msgid "B<HW_BREAKPOINT_RW>"
4204 msgstr "B<HW_BREAKPOINT_RW>"
4205
4206 #. type: Plain text
4207 #: build/C/man2/perf_event_open.2:1050
4208 msgid "Count when we read or write the memory location."
4209 msgstr ""
4210
4211 #. type: TP
4212 #: build/C/man2/perf_event_open.2:1050
4213 #, no-wrap
4214 msgid "B<HW_BREAKPOINT_X>"
4215 msgstr "B<HW_BREAKPOINT_X>"
4216
4217 #. type: Plain text
4218 #: build/C/man2/perf_event_open.2:1053
4219 msgid "Count when we execute code at the memory location."
4220 msgstr ""
4221
4222 #. type: Plain text
4223 #: build/C/man2/perf_event_open.2:1062
4224 msgid ""
4225 "The values can be combined via a bitwise or, but the combination of "
4226 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
4227 "allowed."
4228 msgstr ""
4229
4230 #. type: TP
4231 #: build/C/man2/perf_event_open.2:1063
4232 #, no-wrap
4233 msgid "I<bp_addr> (since Linux 2.6.33)"
4234 msgstr "I<bp_addr> (Linux 2.6.33 以降)"
4235
4236 #. type: Plain text
4237 #: build/C/man2/perf_event_open.2:1070
4238 msgid ""
4239 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
4240 "memory address of the instruction of interest; for read and write "
4241 "breakpoints it is the memory address of the memory location of interest."
4242 msgstr ""
4243
4244 #. type: TP
4245 #: build/C/man2/perf_event_open.2:1070
4246 #, no-wrap
4247 msgid "I<config1> (since Linux 2.6.39)"
4248 msgstr "I<config1> (Linux 2.6.39 以降)"
4249
4250 #. type: Plain text
4251 #: build/C/man2/perf_event_open.2:1077
4252 msgid ""
4253 "I<config1> is used for setting events that need an extra register or "
4254 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
4255 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
4256 msgstr ""
4257
4258 #. type: TP
4259 #: build/C/man2/perf_event_open.2:1077
4260 #, no-wrap
4261 msgid "I<bp_len> (since Linux 2.6.33)"
4262 msgstr "I<bp_len> (Linux 2.6.33 以降)"
4263
4264 #. type: Plain text
4265 #: build/C/man2/perf_event_open.2:1091
4266 msgid ""
4267 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
4268 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
4269 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
4270 "an execution breakpoint, set this to I<sizeof(long)>."
4271 msgstr ""
4272
4273 #. type: TP
4274 #: build/C/man2/perf_event_open.2:1091
4275 #, no-wrap
4276 msgid "I<config2> (since Linux 2.6.39)"
4277 msgstr "I<config2> (Linux 2.6.39 以降)"
4278
4279 #. type: Plain text
4280 #: build/C/man2/perf_event_open.2:1098
4281 msgid "I<config2> is a further extension of the I<config1> field."
4282 msgstr ""
4283
4284 #. type: TP
4285 #: build/C/man2/perf_event_open.2:1098
4286 #, no-wrap
4287 msgid "I<branch_sample_type> (since Linux 3.4)"
4288 msgstr "I<branch_sample_type> (Linux 3.4 以降)"
4289
4290 #. type: Plain text
4291 #: build/C/man2/perf_event_open.2:1104
4292 msgid ""
4293 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
4294 "to include in the branch record."
4295 msgstr ""
4296
4297 #. type: Plain text
4298 #: build/C/man2/perf_event_open.2:1110
4299 msgid ""
4300 "The first part of the value is the privilege level, which is a combination "
4301 "of one of the following values.  If the user does not set privilege level "
4302 "explicitly, the kernel will use the event's privilege level.  Event and "
4303 "branch privilege levels do not have to match."
4304 msgstr ""
4305
4306 #. type: TP
4307 #: build/C/man2/perf_event_open.2:1111
4308 #, no-wrap
4309 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4310 msgstr ""
4311
4312 #. type: Plain text
4313 #: build/C/man2/perf_event_open.2:1114
4314 msgid "Branch target is in user space."
4315 msgstr ""
4316
4317 #. type: TP
4318 #: build/C/man2/perf_event_open.2:1114
4319 #, no-wrap
4320 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4321 msgstr ""
4322
4323 #. type: Plain text
4324 #: build/C/man2/perf_event_open.2:1117
4325 msgid "Branch target is in kernel space."
4326 msgstr ""
4327
4328 #. type: TP
4329 #: build/C/man2/perf_event_open.2:1117
4330 #, no-wrap
4331 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4332 msgstr ""
4333
4334 #. type: Plain text
4335 #: build/C/man2/perf_event_open.2:1120
4336 msgid "Branch target is in hypervisor."
4337 msgstr ""
4338
4339 #. type: TP
4340 #: build/C/man2/perf_event_open.2:1120
4341 #, no-wrap
4342 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4343 msgstr ""
4344
4345 #. type: Plain text
4346 #: build/C/man2/perf_event_open.2:1123
4347 msgid "A convenience value that is the three preceding values ORed together."
4348 msgstr ""
4349
4350 #. type: Plain text
4351 #: build/C/man2/perf_event_open.2:1127
4352 msgid ""
4353 "In addition to the privilege value, at least one or more of the following "
4354 "bits must be set."
4355 msgstr ""
4356
4357 #. type: TP
4358 #: build/C/man2/perf_event_open.2:1128
4359 #, no-wrap
4360 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4361 msgstr ""
4362
4363 #. type: Plain text
4364 #: build/C/man2/perf_event_open.2:1131
4365 msgid "Any branch type."
4366 msgstr ""
4367
4368 #. type: TP
4369 #: build/C/man2/perf_event_open.2:1131
4370 #, no-wrap
4371 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4372 msgstr ""
4373
4374 #. type: Plain text
4375 #: build/C/man2/perf_event_open.2:1134
4376 msgid "Any call branch."
4377 msgstr ""
4378
4379 #. type: TP
4380 #: build/C/man2/perf_event_open.2:1134
4381 #, no-wrap
4382 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4383 msgstr ""
4384
4385 #. type: Plain text
4386 #: build/C/man2/perf_event_open.2:1137
4387 msgid "Any return branch."
4388 msgstr ""
4389
4390 #. type: TP
4391 #: build/C/man2/perf_event_open.2:1137
4392 #, no-wrap
4393 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4394 msgstr ""
4395
4396 #. type: Plain text
4397 #: build/C/man2/perf_event_open.2:1140
4398 msgid "Indirect calls."
4399 msgstr ""
4400
4401 #. type: TP
4402 #: build/C/man2/perf_event_open.2:1140
4403 #, no-wrap
4404 msgid "B<PERF_SAMPLE_BRANCH_COND> (since Linux 3.16)"
4405 msgstr "B<PERF_SAMPLE_BRANCH_COND> (Linux 3.16 以降)"
4406
4407 #. type: Plain text
4408 #: build/C/man2/perf_event_open.2:1143
4409 msgid "Conditional branches."
4410 msgstr ""
4411
4412 #. type: TP
4413 #: build/C/man2/perf_event_open.2:1143
4414 #, no-wrap
4415 msgid "B<PERF_SAMPLE_BRANCH_ABORT_TX> (since Linux 3.11)"
4416 msgstr "B<PERF_SAMPLE_BRANCH_ABORT_TX> (Linux 3.11 以降)"
4417
4418 #. type: Plain text
4419 #: build/C/man2/perf_event_open.2:1146
4420 msgid "Transactional memory aborts."
4421 msgstr ""
4422
4423 #. type: TP
4424 #: build/C/man2/perf_event_open.2:1146
4425 #, no-wrap
4426 msgid "B<PERF_SAMPLE_BRANCH_IN_TX> (since Linux 3.11)"
4427 msgstr "B<PERF_SAMPLE_BRANCH_IN_TX> (Linux 3.11 以降)"
4428
4429 #. type: Plain text
4430 #: build/C/man2/perf_event_open.2:1149
4431 msgid "Branch in transactional memory transaction."
4432 msgstr ""
4433
4434 #. type: TP
4435 #: build/C/man2/perf_event_open.2:1149
4436 #, no-wrap
4437 msgid "B<PERF_SAMPLE_BRANCH_NO_TX> (since Linux 3.11)"
4438 msgstr "B<PERF_SAMPLE_BRANCH_NO_TX> (Linux 3.11 以降)"
4439
4440 #. type: Plain text
4441 #: build/C/man2/perf_event_open.2:1152
4442 msgid "Branch not in transactional memory transaction."
4443 msgstr ""
4444
4445 #. type: TP
4446 #: build/C/man2/perf_event_open.2:1154
4447 #, no-wrap
4448 msgid "I<sample_regs_user> (since Linux 3.7)"
4449 msgstr "I<sample_regs_user> (Linux 3.7 以降)"
4450
4451 #. type: Plain text
4452 #: build/C/man2/perf_event_open.2:1160
4453 msgid ""
4454 "This bit mask defines the set of user CPU registers to dump on samples.  The "
4455 "layout of the register mask is architecture-specific and described in the "
4456 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4457 msgstr ""
4458
4459 #. type: TP
4460 #: build/C/man2/perf_event_open.2:1160
4461 #, no-wrap
4462 msgid "I<sample_stack_user> (since Linux 3.7)"
4463 msgstr "I<sample_stack_user> (Linux 3.7 以降)"
4464
4465 #. type: Plain text
4466 #: build/C/man2/perf_event_open.2:1165
4467 msgid ""
4468 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4469 "is specified."
4470 msgstr ""
4471
4472 #. type: SS
4473 #: build/C/man2/perf_event_open.2:1165
4474 #, no-wrap
4475 msgid "Reading results"
4476 msgstr ""
4477
4478 #. type: Plain text
4479 #: build/C/man2/perf_event_open.2:1175
4480 msgid ""
4481 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4482 "the events can be read from the file descriptor.  The values that are there "
4483 "are specified by the I<read_format> field in the I<attr> structure at open "
4484 "time."
4485 msgstr ""
4486
4487 #. type: Plain text
4488 #: build/C/man2/perf_event_open.2:1180
4489 msgid ""
4490 "If you attempt to read into a buffer that is not big enough to hold the data "
4491 "B<ENOSPC> is returned"
4492 msgstr ""
4493
4494 #. type: Plain text
4495 #: build/C/man2/perf_event_open.2:1182
4496 msgid "Here is the layout of the data returned by a read:"
4497 msgstr ""
4498
4499 #. type: IP
4500 #: build/C/man2/perf_event_open.2:1182 build/C/man2/perf_event_open.2:1200
4501 #: build/C/man2/ptrace.2:1691 build/C/man2/ptrace.2:1701
4502 #: build/C/man2/ptrace.2:1709 build/C/man2/ptrace.2:1715
4503 #: build/C/man2/ptrace.2:1844 build/C/man2/splice.2:55
4504 #: build/C/man2/splice.2:61 build/C/man2/splice.2:70
4505 #, no-wrap
4506 msgid "*"
4507 msgstr ""
4508
4509 #. type: Plain text
4510 #: build/C/man2/perf_event_open.2:1186
4511 msgid ""
4512 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4513 "at once:"
4514 msgstr ""
4515
4516 #. type: Plain text
4517 #: build/C/man2/perf_event_open.2:1198
4518 #, no-wrap
4519 msgid ""
4520 "struct read_format {\n"
4521 "    u64 nr;            /* The number of events */\n"
4522 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4523 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4524 "    struct {\n"
4525 "        u64 value;     /* The value of the event */\n"
4526 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4527 "    } values[nr];\n"
4528 "};\n"
4529 msgstr ""
4530
4531 #. type: Plain text
4532 #: build/C/man2/perf_event_open.2:1206
4533 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4534 msgstr ""
4535
4536 #. type: Plain text
4537 #: build/C/man2/perf_event_open.2:1215
4538 #, no-wrap
4539 msgid ""
4540 "struct read_format {\n"
4541 "    u64 value;         /* The value of the event */\n"
4542 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4543 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4544 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4545 "};\n"
4546 msgstr ""
4547
4548 #. type: Plain text
4549 #: build/C/man2/perf_event_open.2:1219
4550 msgid "The values read are as follows:"
4551 msgstr ""
4552
4553 #. type: TP
4554 #: build/C/man2/perf_event_open.2:1219
4555 #, no-wrap
4556 msgid "I<nr>"
4557 msgstr ""
4558
4559 #. type: Plain text
4560 #: build/C/man2/perf_event_open.2:1225
4561 msgid ""
4562 "The number of events in this file descriptor.  Only available if "
4563 "B<PERF_FORMAT_GROUP> was specified."
4564 msgstr ""
4565
4566 #. type: TP
4567 #: build/C/man2/perf_event_open.2:1225
4568 #, no-wrap
4569 msgid "I<time_enabled>, I<time_running>"
4570 msgstr ""
4571
4572 #. type: Plain text
4573 #: build/C/man2/perf_event_open.2:1237
4574 msgid ""
4575 "Total time the event was enabled and running.  Normally these are the same.  "
4576 "If more events are started, then available counter slots on the PMU, then "
4577 "multiplexing happens and events run only part of the time.  In that case, "
4578 "the I<time_enabled> and I<time running> values can be used to scale an "
4579 "estimated value for the count."
4580 msgstr ""
4581
4582 #. type: TP
4583 #: build/C/man2/perf_event_open.2:1237
4584 #, no-wrap
4585 msgid "I<value>"
4586 msgstr ""
4587
4588 #. type: Plain text
4589 #: build/C/man2/perf_event_open.2:1240
4590 msgid "An unsigned 64-bit value containing the counter result."
4591 msgstr ""
4592
4593 #. type: TP
4594 #: build/C/man2/perf_event_open.2:1240 build/C/man2/perf_event_open.2:1664
4595 #: build/C/man2/perf_event_open.2:1830
4596 #, no-wrap
4597 msgid "I<id>"
4598 msgstr ""
4599
4600 #. type: Plain text
4601 #: build/C/man2/perf_event_open.2:1246
4602 msgid ""
4603 "A globally unique value for this particular event, only there if "
4604 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4605 msgstr ""
4606
4607 #. type: SS
4608 #: build/C/man2/perf_event_open.2:1246
4609 #, no-wrap
4610 msgid "MMAP layout"
4611 msgstr ""
4612
4613 #. type: Plain text
4614 #: build/C/man2/perf_event_open.2:1256
4615 msgid ""
4616 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4617 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4618 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4619 msgstr ""
4620
4621 #. type: Plain text
4622 #: build/C/man2/perf_event_open.2:1262
4623 msgid ""
4624 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4625 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4626 "such as where the ring-buffer head is."
4627 msgstr ""
4628
4629 #. type: Plain text
4630 #: build/C/man2/perf_event_open.2:1265
4631 msgid ""
4632 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4633 "ring buffer when sampling even if you do not plan to access it."
4634 msgstr ""
4635
4636 #. type: Plain text
4637 #: build/C/man2/perf_event_open.2:1267
4638 msgid "The structure of the first metadata mmap page is as follows:"
4639 msgstr ""
4640
4641 #. type: Plain text
4642 #: build/C/man2/perf_event_open.2:1296
4643 #, no-wrap
4644 msgid ""
4645 "struct perf_event_mmap_page {\n"
4646 "    __u32 version;        /* version number of this structure */\n"
4647 "    __u32 compat_version; /* lowest version this is compat with */\n"
4648 "    __u32 lock;           /* seqlock for synchronization */\n"
4649 "    __u32 index;          /* hardware counter identifier */\n"
4650 "    __s64 offset;         /* add to hardware counter value */\n"
4651 "    __u64 time_enabled;   /* time event active */\n"
4652 "    __u64 time_running;   /* time event on CPU */\n"
4653 "    union {\n"
4654 "        __u64   capabilities;\n"
4655 "        struct {\n"
4656 "            __u64 cap_usr_time / cap_usr_rdpmc / cap_bit0 : 1,\n"
4657 "                  cap_bit0_is_deprecated : 1,\n"
4658 "                  cap_user_rdpmc         : 1,\n"
4659 "                  cap_user_time          : 1,\n"
4660 "                  cap_user_time_zero     : 1,\n"
4661 "        };\n"
4662 "    };\n"
4663 "    __u16 pmc_width;\n"
4664 "    __u16 time_shift;\n"
4665 "    __u32 time_mult;\n"
4666 "    __u64 time_offset;\n"
4667 "    __u64 __reserved[120];   /* Pad to 1k */\n"
4668 "    __u64 data_head;         /* head in the data section */\n"
4669 "    __u64 data_tail;         /* user-space written tail */\n"
4670 "}\n"
4671 msgstr ""
4672
4673 #. type: Plain text
4674 #: build/C/man2/perf_event_open.2:1302
4675 msgid ""
4676 "The following list describes the fields in the I<perf_event_mmap_page> "
4677 "structure in more detail:"
4678 msgstr ""
4679
4680 #. type: TP
4681 #: build/C/man2/perf_event_open.2:1302
4682 #, no-wrap
4683 msgid "I<version>"
4684 msgstr ""
4685
4686 #. type: Plain text
4687 #: build/C/man2/perf_event_open.2:1305
4688 msgid "Version number of this structure."
4689 msgstr ""
4690
4691 #. type: TP
4692 #: build/C/man2/perf_event_open.2:1305
4693 #, no-wrap
4694 msgid "I<compat_version>"
4695 msgstr ""
4696
4697 #. type: Plain text
4698 #: build/C/man2/perf_event_open.2:1308
4699 msgid "The lowest version this is compatible with."
4700 msgstr ""
4701
4702 #. type: TP
4703 #: build/C/man2/perf_event_open.2:1308
4704 #, no-wrap
4705 msgid "I<lock>"
4706 msgstr ""
4707
4708 #. type: Plain text
4709 #: build/C/man2/perf_event_open.2:1311
4710 msgid "A seqlock for synchronization."
4711 msgstr ""
4712
4713 #. type: TP
4714 #: build/C/man2/perf_event_open.2:1311
4715 #, no-wrap
4716 msgid "I<index>"
4717 msgstr ""
4718
4719 #. type: Plain text
4720 #: build/C/man2/perf_event_open.2:1314
4721 msgid "A unique hardware counter identifier."
4722 msgstr ""
4723
4724 #. type: TP
4725 #: build/C/man2/perf_event_open.2:1314
4726 #, no-wrap
4727 msgid "I<offset>"
4728 msgstr ""
4729
4730 #. type: Plain text
4731 #: build/C/man2/perf_event_open.2:1319
4732 msgid ""
4733 "When using rdpmc for reads this offset value must be added to the one "
4734 "returned by rdpmc to get the current total event count."
4735 msgstr ""
4736
4737 #. type: TP
4738 #: build/C/man2/perf_event_open.2:1319
4739 #, no-wrap
4740 msgid "I<time_enabled>"
4741 msgstr ""
4742
4743 #. type: Plain text
4744 #: build/C/man2/perf_event_open.2:1322
4745 msgid "Time the event was active."
4746 msgstr ""
4747
4748 #. type: TP
4749 #: build/C/man2/perf_event_open.2:1322
4750 #, no-wrap
4751 msgid "I<time_running>"
4752 msgstr ""
4753
4754 #. type: Plain text
4755 #: build/C/man2/perf_event_open.2:1325
4756 msgid "Time the event was running."
4757 msgstr ""
4758
4759 #. type: TP
4760 #: build/C/man2/perf_event_open.2:1325
4761 #, no-wrap
4762 msgid "I<cap_usr_time> / I<cap_usr_rdpmc> / I<cap_bit0> (since Linux 3.4)"
4763 msgstr ""
4764
4765 #. type: Plain text
4766 #: build/C/man2/perf_event_open.2:1338
4767 msgid ""
4768 "There was a bug in the definition of I<cap_usr_time> and I<cap_usr_rdpmc> "
4769 "from Linux 3.4 until Linux 3.11.  Both bits were defined to point to the "
4770 "same location, so it was impossible to know if I<cap_usr_time> or "
4771 "I<cap_usr_rdpmc> were actually set."
4772 msgstr ""
4773
4774 #. type: Plain text
4775 #: build/C/man2/perf_event_open.2:1346
4776 msgid ""
4777 "Starting with 3.12 these are renamed to I<cap_bit0> and you should use the "
4778 "new I<cap_user_time> and I<cap_user_rdpmc> fields instead."
4779 msgstr ""
4780
4781 #. type: TP
4782 #: build/C/man2/perf_event_open.2:1347
4783 #, no-wrap
4784 msgid "I<cap_bit0_is_deprecated> (since Linux 3.12)"
4785 msgstr "I<cap_bit0_is_deprecated> (Linux 3.12 以降)"
4786
4787 #. type: Plain text
4788 #: build/C/man2/perf_event_open.2:1355
4789 msgid ""
4790 "If set, this bit indicates that the kernel supports the properly separated "
4791 "I<cap_user_time> and I<cap_user_rdpmc> bits."
4792 msgstr ""
4793
4794 #. type: Plain text
4795 #: build/C/man2/perf_event_open.2:1362
4796 msgid ""
4797 "If not-set, it indicates an older kernel where I<cap_usr_time> and "
4798 "I<cap_usr_rdpmc> map to the same bit and thus both features should be used "
4799 "with caution."
4800 msgstr ""
4801
4802 #. type: TP
4803 #: build/C/man2/perf_event_open.2:1363
4804 #, no-wrap
4805 msgid "I<cap_user_rdpmc> (since Linux 3.12)"
4806 msgstr "I<cap_user_rdpmc> (Linux 3.12 以降)"
4807
4808 #. type: Plain text
4809 #: build/C/man2/perf_event_open.2:1368
4810 msgid ""
4811 "If the hardware supports user-space read of performance counters without "
4812 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4813 "can be used to do a read:"
4814 msgstr ""
4815
4816 #. type: Plain text
4817 #: build/C/man2/perf_event_open.2:1374
4818 #, no-wrap
4819 msgid ""
4820 "u32 seq, time_mult, time_shift, idx, width;\n"
4821 "u64 count, enabled, running;\n"
4822 "u64 cyc, time_offset;\n"
4823 msgstr ""
4824 "u32 seq, time_mult, time_shift, idx, width;\n"
4825 "u64 count, enabled, running;\n"
4826 "u64 cyc, time_offset;\n"
4827
4828 #. type: Plain text
4829 #: build/C/man2/perf_event_open.2:1380
4830 #, no-wrap
4831 msgid ""
4832 "do {\n"
4833 "    seq = pc-E<gt>lock;\n"
4834 "    barrier();\n"
4835 "    enabled = pc-E<gt>time_enabled;\n"
4836 "    running = pc-E<gt>time_running;\n"
4837 msgstr ""
4838 "do {\n"
4839 "    seq = pc-E<gt>lock;\n"
4840 "    barrier();\n"
4841 "    enabled = pc-E<gt>time_enabled;\n"
4842 "    running = pc-E<gt>time_running;\n"
4843
4844 #. type: Plain text
4845 #: build/C/man2/perf_event_open.2:1387
4846 #, no-wrap
4847 msgid ""
4848 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4849 "        cyc = rdtsc();\n"
4850 "        time_offset = pc-E<gt>time_offset;\n"
4851 "        time_mult   = pc-E<gt>time_mult;\n"
4852 "        time_shift  = pc-E<gt>time_shift;\n"
4853 "    }\n"
4854 msgstr ""
4855 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4856 "        cyc = rdtsc();\n"
4857 "        time_offset = pc-E<gt>time_offset;\n"
4858 "        time_mult   = pc-E<gt>time_mult;\n"
4859 "        time_shift  = pc-E<gt>time_shift;\n"
4860 "    }\n"
4861
4862 #. type: Plain text
4863 #: build/C/man2/perf_event_open.2:1390
4864 #, no-wrap
4865 msgid ""
4866 "    idx = pc-E<gt>index;\n"
4867 "    count = pc-E<gt>offset;\n"
4868 msgstr ""
4869 "    idx = pc-E<gt>index;\n"
4870 "    count = pc-E<gt>offset;\n"
4871
4872 #. type: Plain text
4873 #: build/C/man2/perf_event_open.2:1395
4874 #, no-wrap
4875 msgid ""
4876 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4877 "        width = pc-E<gt>pmc_width;\n"
4878 "        count += rdpmc(idx - 1);\n"
4879 "    }\n"
4880 msgstr ""
4881 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4882 "        width = pc-E<gt>pmc_width;\n"
4883 "        count += rdpmc(idx - 1);\n"
4884 "    }\n"
4885
4886 #. type: Plain text
4887 #: build/C/man2/perf_event_open.2:1398
4888 #, no-wrap
4889 msgid ""
4890 "    barrier();\n"
4891 "} while (pc-E<gt>lock != seq);\n"
4892 msgstr ""
4893 "    barrier();\n"
4894 "} while (pc-E<gt>lock != seq);\n"
4895
4896 #. type: TP
4897 #: build/C/man2/perf_event_open.2:1400
4898 #, no-wrap
4899 msgid "I<cap_user_time  (since Linux 3.12)>"
4900 msgstr "I<cap_user_time  (Linux 3.12 以降)>"
4901
4902 #. type: Plain text
4903 #: build/C/man2/perf_event_open.2:1404
4904 msgid ""
4905 "This bit indicates the hardware has a constant, nonstop timestamp counter "
4906 "(TSC on x86)."
4907 msgstr ""
4908
4909 #. type: TP
4910 #: build/C/man2/perf_event_open.2:1404
4911 #, no-wrap
4912 msgid "I<cap_user_time_zero> (since Linux 3.12)"
4913 msgstr "I<cap_user_time_zero> (Linux 3.12 以降)"
4914
4915 #. type: Plain text
4916 #: build/C/man2/perf_event_open.2:1410
4917 msgid ""
4918 "Indicates the presence of I<time_zero> which allows mapping timestamp values "
4919 "to the hardware clock."
4920 msgstr ""
4921
4922 #. type: TP
4923 #: build/C/man2/perf_event_open.2:1410
4924 #, no-wrap
4925 msgid "I<pmc_width>"
4926 msgstr "I<pmc_width>"
4927
4928 #. type: Plain text
4929 #: build/C/man2/perf_event_open.2:1417
4930 msgid ""
4931 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4932 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4933 "the result like:"
4934 msgstr ""
4935
4936 #. type: Plain text
4937 #: build/C/man2/perf_event_open.2:1423
4938 #, no-wrap
4939 msgid ""
4940 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4941 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4942 "count += pmc;\n"
4943 msgstr ""
4944 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4945 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4946 "count += pmc;\n"
4947
4948 #. type: TP
4949 #: build/C/man2/perf_event_open.2:1425
4950 #, no-wrap
4951 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4952 msgstr "I<time_shift>, I<time_mult>, I<time_offset>"
4953
4954 #. type: Plain text
4955 #: build/C/man2/perf_event_open.2:1432
4956 msgid ""
4957 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4958 "time_enabled (in nanoseconds) using rdtsc or similar."
4959 msgstr ""
4960
4961 #. type: Plain text
4962 #: build/C/man2/perf_event_open.2:1440
4963 #, no-wrap
4964 msgid ""
4965 "    u64 quot, rem;\n"
4966 "    u64 delta;\n"
4967 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4968 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4969 "    delta = time_offset + quot * time_mult +\n"
4970 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4971 msgstr ""
4972 "    u64 quot, rem;\n"
4973 "    u64 delta;\n"
4974 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4975 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4976 "    delta = time_offset + quot * time_mult +\n"
4977 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4978
4979 #. type: Plain text
4980 #: build/C/man2/perf_event_open.2:1452
4981 msgid ""
4982 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4983 "the seqcount loop described above.  This delta can then be added to enabled "
4984 "and possible running (if idx), improving the scaling:"
4985 msgstr ""
4986
4987 #. type: Plain text
4988 #: build/C/man2/perf_event_open.2:1460
4989 #, no-wrap
4990 msgid ""
4991 "    enabled += delta;\n"
4992 "    if (idx)\n"
4993 "        running += delta;\n"
4994 "    quot = count / running;\n"
4995 "    rem  = count % running;\n"
4996 "    count = quot * enabled + (rem * enabled) / running;\n"
4997 msgstr ""
4998 "    enabled += delta;\n"
4999 "    if (idx)\n"
5000 "        running += delta;\n"
5001 "    quot = count / running;\n"
5002 "    rem  = count % running;\n"
5003 "    count = quot * enabled + (rem * enabled) / running;\n"
5004
5005 #. type: TP
5006 #: build/C/man2/perf_event_open.2:1461
5007 #, no-wrap
5008 msgid "I<time_zero> (since Linux 3.12)"
5009 msgstr "I<time_zero> (Linux 3.12 以降)"
5010
5011 #. type: Plain text
5012 #: build/C/man2/perf_event_open.2:1469
5013 msgid ""
5014 "If I<cap_usr_time_zero> is set, then the hardware clock (the TSC timestamp "
5015 "counter on x86)  can be calculated from the I<time_zero>, I<time_mult>, and "
5016 "I<time_shift> values:"
5017 msgstr ""
5018
5019 #. type: Plain text
5020 #: build/C/man2/perf_event_open.2:1475
5021 #, no-wrap
5022 msgid ""
5023 "    time = timestamp - time_zero;\n"
5024 "    quot = time / time_mult;\n"
5025 "    rem  = time % time_mult;\n"
5026 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5027 msgstr ""
5028 "    time = timestamp - time_zero;\n"
5029 "    quot = time / time_mult;\n"
5030 "    rem  = time % time_mult;\n"
5031 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5032
5033 #. type: Plain text
5034 #: build/C/man2/perf_event_open.2:1478
5035 msgid "And vice versa:"
5036 msgstr ""
5037
5038 #. type: Plain text
5039 #: build/C/man2/perf_event_open.2:1484
5040 #, no-wrap
5041 msgid ""
5042 "    quot = cyc E<gt>E<gt> time_shift;\n"
5043 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5044 "    timestamp = time_zero + quot * time_mult +\n"
5045 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5046 msgstr ""
5047 "    quot = cyc E<gt>E<gt> time_shift;\n"
5048 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5049 "    timestamp = time_zero + quot * time_mult +\n"
5050 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5051
5052 #. type: TP
5053 #: build/C/man2/perf_event_open.2:1485
5054 #, no-wrap
5055 msgid "I<data_head>"
5056 msgstr "I<data_head>"
5057
5058 #. type: Plain text
5059 #: build/C/man2/perf_event_open.2:1491
5060 msgid ""
5061 "This points to the head of the data section.  The value continuously "
5062 "increases, it does not wrap.  The value needs to be manually wrapped by the "
5063 "size of the mmap buffer before accessing the samples."
5064 msgstr ""
5065
5066 #. type: Plain text
5067 #: build/C/man2/perf_event_open.2:1496
5068 msgid ""
5069 "On SMP-capable platforms, after reading the I<data_head> value, user space "
5070 "should issue an rmb()."
5071 msgstr ""
5072
5073 #. type: TP
5074 #: build/C/man2/perf_event_open.2:1496
5075 #, no-wrap
5076 msgid "I<data_tail>"
5077 msgstr "I<data_tail>"
5078
5079 #. type: Plain text
5080 #: build/C/man2/perf_event_open.2:1504
5081 msgid ""
5082 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
5083 "by user space to reflect the last read data.  In this case, the kernel will "
5084 "not overwrite unread data."
5085 msgstr ""
5086
5087 #. type: Plain text
5088 #: build/C/man2/perf_event_open.2:1506
5089 msgid "The following 2^n ring-buffer pages have the layout described below."
5090 msgstr ""
5091
5092 #. type: Plain text
5093 #: build/C/man2/perf_event_open.2:1520
5094 msgid ""
5095 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
5096 "the sample_type selected fields related to where/when (identity)  an event "
5097 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
5098 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
5099 "I<perf_event_header> and the fields already present for the existing fields, "
5100 "that is, at the end of the payload.  That way a newer perf.data file will be "
5101 "supported by older perf tools, with these new optional fields being ignored."
5102 msgstr ""
5103
5104 #. type: Plain text
5105 #: build/C/man2/perf_event_open.2:1522
5106 msgid "The mmap values start with a header:"
5107 msgstr ""
5108
5109 #. type: Plain text
5110 #: build/C/man2/perf_event_open.2:1530
5111 #, no-wrap
5112 msgid ""
5113 "struct perf_event_header {\n"
5114 "    __u32   type;\n"
5115 "    __u16   misc;\n"
5116 "    __u16   size;\n"
5117 "};\n"
5118 msgstr ""
5119 "struct perf_event_header {\n"
5120 "    __u32   type;\n"
5121 "    __u16   misc;\n"
5122 "    __u16   size;\n"
5123 "};\n"
5124
5125 #. type: Plain text
5126 #: build/C/man2/perf_event_open.2:1538
5127 msgid ""
5128 "Below, we describe the I<perf_event_header> fields in more detail.  For ease "
5129 "of reading, the fields with shorter descriptions are presented first."
5130 msgstr ""
5131
5132 #. type: Plain text
5133 #: build/C/man2/perf_event_open.2:1541
5134 msgid "This indicates the size of the record."
5135 msgstr ""
5136
5137 #. type: TP
5138 #: build/C/man2/perf_event_open.2:1541
5139 #, no-wrap
5140 msgid "I<misc>"
5141 msgstr "I<misc>"
5142
5143 #. type: Plain text
5144 #: build/C/man2/perf_event_open.2:1546
5145 msgid "The I<misc> field contains additional information about the sample."
5146 msgstr ""
5147
5148 #. type: Plain text
5149 #: build/C/man2/perf_event_open.2:1551
5150 msgid ""
5151 "The CPU mode can be determined from this value by masking with "
5152 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5153 "these are not bit masks, only one can be set at a time):"
5154 msgstr ""
5155
5156 #. type: TP
5157 #: build/C/man2/perf_event_open.2:1552
5158 #, no-wrap
5159 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5160 msgstr "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5161
5162 #. type: Plain text
5163 #: build/C/man2/perf_event_open.2:1555
5164 msgid "Unknown CPU mode."
5165 msgstr ""
5166
5167 #. type: TP
5168 #: build/C/man2/perf_event_open.2:1555
5169 #, no-wrap
5170 msgid "B<PERF_RECORD_MISC_KERNEL>"
5171 msgstr "B<PERF_RECORD_MISC_KERNEL>"
5172
5173 #. type: Plain text
5174 #: build/C/man2/perf_event_open.2:1558
5175 msgid "Sample happened in the kernel."
5176 msgstr ""
5177
5178 #. type: TP
5179 #: build/C/man2/perf_event_open.2:1558
5180 #, no-wrap
5181 msgid "B<PERF_RECORD_MISC_USER>"
5182 msgstr "B<PERF_RECORD_MISC_USER>"
5183
5184 #. type: Plain text
5185 #: build/C/man2/perf_event_open.2:1561
5186 msgid "Sample happened in user code."
5187 msgstr ""
5188
5189 #. type: TP
5190 #: build/C/man2/perf_event_open.2:1561
5191 #, no-wrap
5192 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5193 msgstr "B<PERF_RECORD_MISC_HYPERVISOR>"
5194
5195 #. type: Plain text
5196 #: build/C/man2/perf_event_open.2:1564
5197 msgid "Sample happened in the hypervisor."
5198 msgstr ""
5199
5200 #. type: TP
5201 #: build/C/man2/perf_event_open.2:1564
5202 #, no-wrap
5203 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5204 msgstr "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5205
5206 #. type: Plain text
5207 #: build/C/man2/perf_event_open.2:1567
5208 msgid "Sample happened in the guest kernel."
5209 msgstr ""
5210
5211 #. type: TP
5212 #: build/C/man2/perf_event_open.2:1567
5213 #, no-wrap
5214 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5215 msgstr "B<PERF_RECORD_MISC_GUEST_USER>"
5216
5217 #. type: Plain text
5218 #: build/C/man2/perf_event_open.2:1570
5219 msgid "Sample happened in guest user code."
5220 msgstr ""
5221
5222 #. type: Plain text
5223 #: build/C/man2/perf_event_open.2:1574
5224 msgid "In addition, one of the following bits can be set:"
5225 msgstr ""
5226
5227 #. type: TP
5228 #: build/C/man2/perf_event_open.2:1574
5229 #, no-wrap
5230 msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
5231 msgstr "B<PERF_RECORD_MISC_MMAP_DATA>"
5232
5233 #. type: Plain text
5234 #: build/C/man2/perf_event_open.2:1578
5235 msgid ""
5236 "This is set when the mapping is not executable; otherwise the mapping is "
5237 "executable."
5238 msgstr ""
5239
5240 #. type: TP
5241 #: build/C/man2/perf_event_open.2:1578
5242 #, no-wrap
5243 msgid "B<PERF_RECORD_MISC_COMM_EXEC>"
5244 msgstr "B<PERF_RECORD_MISC_COMM_EXEC>"
5245
5246 #. type: Plain text
5247 #: build/C/man2/perf_event_open.2:1589
5248 msgid ""
5249 "This is set for a B<PERF_RECORD_COMM> record on kernels more recent than "
5250 "Linux 3.16 if a process name change was caused by an B<exec>(2)  system "
5251 "call.  It is an alias for B<PERF_RECORD_MISC_MMAP_DATA> since the two values "
5252 "would not be set in the same record."
5253 msgstr ""
5254
5255 #. type: TP
5256 #: build/C/man2/perf_event_open.2:1589
5257 #, no-wrap
5258 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5259 msgstr "B<PERF_RECORD_MISC_EXACT_IP>"
5260
5261 #. type: Plain text
5262 #: build/C/man2/perf_event_open.2:1597
5263 msgid ""
5264 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5265 "instruction that triggered the event.  See also I<perf_event_attr."
5266 "precise_ip>."
5267 msgstr ""
5268
5269 #. type: TP
5270 #: build/C/man2/perf_event_open.2:1597
5271 #, no-wrap
5272 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5273 msgstr "B<PERF_RECORD_MISC_EXT_RESERVED>"
5274
5275 #. type: Plain text
5276 #: build/C/man2/perf_event_open.2:1600
5277 msgid "This indicates there is extended data available (currently not used)."
5278 msgstr ""
5279
5280 #. type: Plain text
5281 #: build/C/man2/perf_event_open.2:1610
5282 msgid ""
5283 "The I<type> value is one of the below.  The values in the corresponding "
5284 "record (that follows the header)  depend on the I<type> selected as shown."
5285 msgstr ""
5286
5287 #. type: TP
5288 #: build/C/man2/perf_event_open.2:1612
5289 #, no-wrap
5290 msgid "B<PERF_RECORD_MMAP>"
5291 msgstr "B<PERF_RECORD_MMAP>"
5292
5293 #. type: Plain text
5294 #: build/C/man2/perf_event_open.2:1619
5295 msgid ""
5296 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
5297 "user-space IPs to code.  They have the following structure:"
5298 msgstr ""
5299
5300 #. type: Plain text
5301 #: build/C/man2/perf_event_open.2:1630
5302 #, no-wrap
5303 msgid ""
5304 "struct {\n"
5305 "    struct perf_event_header header;\n"
5306 "    u32    pid, tid;\n"
5307 "    u64    addr;\n"
5308 "    u64    len;\n"
5309 "    u64    pgoff;\n"
5310 "    char   filename[];\n"
5311 "};\n"
5312 msgstr ""
5313 "struct {\n"
5314 "    struct perf_event_header header;\n"
5315 "    u32    pid, tid;\n"
5316 "    u64    addr;\n"
5317 "    u64    len;\n"
5318 "    u64    pgoff;\n"
5319 "    char   filename[];\n"
5320 "};\n"
5321
5322 #. type: TP
5323 #: build/C/man2/perf_event_open.2:1633 build/C/man2/perf_event_open.2:1687
5324 #: build/C/man2/perf_event_open.2:2206
5325 #, no-wrap
5326 msgid "I<pid>"
5327 msgstr "I<pid>"
5328
5329 #. type: Plain text
5330 #: build/C/man2/perf_event_open.2:1636 build/C/man2/perf_event_open.2:1690
5331 #: build/C/man2/perf_event_open.2:2209
5332 msgid "is the process ID."
5333 msgstr ""
5334
5335 #. type: TP
5336 #: build/C/man2/perf_event_open.2:1636 build/C/man2/perf_event_open.2:1690
5337 #: build/C/man2/perf_event_open.2:2209
5338 #, no-wrap
5339 msgid "I<tid>"
5340 msgstr "I<tid>"
5341
5342 #. type: Plain text
5343 #: build/C/man2/perf_event_open.2:1639 build/C/man2/perf_event_open.2:1693
5344 #: build/C/man2/perf_event_open.2:2212
5345 msgid "is the thread ID."
5346 msgstr ""
5347
5348 #. type: TP
5349 #: build/C/man2/perf_event_open.2:1639 build/C/man2/perf_event_open.2:1823
5350 #: build/C/man2/perf_event_open.2:2212
5351 #, no-wrap
5352 msgid "I<addr>"
5353 msgstr "I<addr>"
5354
5355 #. type: Plain text
5356 #: build/C/man2/perf_event_open.2:1648
5357 msgid ""
5358 "is the address of the allocated memory.  I<len> is the length of the "
5359 "allocated memory.  I<pgoff> is the page offset of the allocated memory.  "
5360 "I<filename> is a string describing the backing of the allocated memory."
5361 msgstr ""
5362
5363 #. type: TP
5364 #: build/C/man2/perf_event_open.2:1649
5365 #, no-wrap
5366 msgid "B<PERF_RECORD_LOST>"
5367 msgstr "B<PERF_RECORD_LOST>"
5368
5369 #. type: Plain text
5370 #: build/C/man2/perf_event_open.2:1652
5371 msgid "This record indicates when events are lost."
5372 msgstr ""
5373
5374 #. type: Plain text
5375 #: build/C/man2/perf_event_open.2:1661
5376 #, no-wrap
5377 msgid ""
5378 "struct {\n"
5379 "    struct perf_event_header header;\n"
5380 "    u64 id;\n"
5381 "    u64 lost;\n"
5382 "    struct sample_id sample_id;\n"
5383 "};\n"
5384 msgstr ""
5385 "struct {\n"
5386 "    struct perf_event_header header;\n"
5387 "    u64 id;\n"
5388 "    u64 lost;\n"
5389 "    struct sample_id sample_id;\n"
5390 "};\n"
5391
5392 #. type: Plain text
5393 #: build/C/man2/perf_event_open.2:1667
5394 msgid "is the unique event ID for the samples that were lost."
5395 msgstr ""
5396
5397 #. type: TP
5398 #: build/C/man2/perf_event_open.2:1667
5399 #, no-wrap
5400 msgid "I<lost>"
5401 msgstr "I<lost>"
5402
5403 #. type: Plain text
5404 #: build/C/man2/perf_event_open.2:1670
5405 msgid "is the number of events that were lost."
5406 msgstr ""
5407
5408 #. type: TP
5409 #: build/C/man2/perf_event_open.2:1671
5410 #, no-wrap
5411 msgid "B<PERF_RECORD_COMM>"
5412 msgstr "B<PERF_RECORD_COMM>"
5413
5414 #. type: Plain text
5415 #: build/C/man2/perf_event_open.2:1674
5416 msgid "This record indicates a change in the process name."
5417 msgstr ""
5418
5419 #. type: Plain text
5420 #: build/C/man2/perf_event_open.2:1684
5421 #, no-wrap
5422 msgid ""
5423 "struct {\n"
5424 "    struct perf_event_header header;\n"
5425 "    u32 pid;\n"
5426 "    u32 tid;\n"
5427 "    char comm[];\n"
5428 "    struct sample_id sample_id;\n"
5429 "};\n"
5430 msgstr ""
5431 "struct {\n"
5432 "    struct perf_event_header header;\n"
5433 "    u32 pid;\n"
5434 "    u32 tid;\n"
5435 "    char comm[];\n"
5436 "    struct sample_id sample_id;\n"
5437 "};\n"
5438
5439 #. type: Plain text
5440 #: build/C/man2/perf_event_open.2:1696
5441 msgid "is a string containing the new name of the process."
5442 msgstr ""
5443
5444 #. type: TP
5445 #: build/C/man2/perf_event_open.2:1697
5446 #, no-wrap
5447 msgid "B<PERF_RECORD_EXIT>"
5448 msgstr "B<PERF_RECORD_EXIT>"
5449
5450 #. type: Plain text
5451 #: build/C/man2/perf_event_open.2:1700
5452 msgid "This record indicates a process exit event."
5453 msgstr ""
5454
5455 #. type: Plain text
5456 #: build/C/man2/perf_event_open.2:1710 build/C/man2/perf_event_open.2:1740
5457 #, no-wrap
5458 msgid ""
5459 "struct {\n"
5460 "    struct perf_event_header header;\n"
5461 "    u32 pid, ppid;\n"
5462 "    u32 tid, ptid;\n"
5463 "    u64 time;\n"
5464 "    struct sample_id sample_id;\n"
5465 "};\n"
5466 msgstr ""
5467 "struct {\n"
5468 "    struct perf_event_header header;\n"
5469 "    u32 pid, ppid;\n"
5470 "    u32 tid, ptid;\n"
5471 "    u64 time;\n"
5472 "    struct sample_id sample_id;\n"
5473 "};\n"
5474
5475 #. type: TP
5476 #: build/C/man2/perf_event_open.2:1712
5477 #, no-wrap
5478 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5479 msgstr "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5480
5481 #. type: Plain text
5482 #: build/C/man2/perf_event_open.2:1715
5483 msgid "This record indicates a throttle/unthrottle event."
5484 msgstr ""
5485
5486 #. type: Plain text
5487 #: build/C/man2/perf_event_open.2:1725
5488 #, no-wrap
5489 msgid ""
5490 "struct {\n"
5491 "    struct perf_event_header header;\n"
5492 "    u64 time;\n"
5493 "    u64 id;\n"
5494 "    u64 stream_id;\n"
5495 "    struct sample_id sample_id;\n"
5496 "};\n"
5497 msgstr ""
5498 "struct {\n"
5499 "    struct perf_event_header header;\n"
5500 "    u64 time;\n"
5501 "    u64 id;\n"
5502 "    u64 stream_id;\n"
5503 "    struct sample_id sample_id;\n"
5504 "};\n"
5505
5506 #. type: TP
5507 #: build/C/man2/perf_event_open.2:1727
5508 #, no-wrap
5509 msgid "B<PERF_RECORD_FORK>"
5510 msgstr "B<PERF_RECORD_FORK>"
5511
5512 #. type: Plain text
5513 #: build/C/man2/perf_event_open.2:1730
5514 msgid "This record indicates a fork event."
5515 msgstr ""
5516
5517 #. type: TP
5518 #: build/C/man2/perf_event_open.2:1742
5519 #, no-wrap
5520 msgid "B<PERF_RECORD_READ>"
5521 msgstr "B<PERF_RECORD_READ>"
5522
5523 #. type: Plain text
5524 #: build/C/man2/perf_event_open.2:1745
5525 msgid "This record indicates a read event."
5526 msgstr ""
5527
5528 #. type: Plain text
5529 #: build/C/man2/perf_event_open.2:1754
5530 #, no-wrap
5531 msgid ""
5532 "struct {\n"
5533 "    struct perf_event_header header;\n"
5534 "    u32 pid, tid;\n"
5535 "    struct read_format values;\n"
5536 "    struct sample_id sample_id;\n"
5537 "};\n"
5538 msgstr ""
5539 "struct {\n"
5540 "    struct perf_event_header header;\n"
5541 "    u32 pid, tid;\n"
5542 "    struct read_format values;\n"
5543 "    struct sample_id sample_id;\n"
5544 "};\n"
5545
5546 #. type: TP
5547 #: build/C/man2/perf_event_open.2:1756
5548 #, no-wrap
5549 msgid "B<PERF_RECORD_SAMPLE>"
5550 msgstr "B<PERF_RECORD_SAMPLE>"
5551
5552 #. type: Plain text
5553 #: build/C/man2/perf_event_open.2:1759
5554 msgid "This record indicates a sample."
5555 msgstr ""
5556
5557 #. type: Plain text
5558 #: build/C/man2/perf_event_open.2:1791
5559 #, no-wrap
5560 msgid ""
5561 "struct {\n"
5562 "    struct perf_event_header header;\n"
5563 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5564 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5565 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5566 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5567 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5568 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5569 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5570 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5571 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5572 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5573 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5574 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5575 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5576 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5577 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5578 "    struct perf_branch_entry lbr[bnr];\n"
5579 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5580 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5581 "    u64   regs[weight(mask)];\n"
5582 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5583 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5584 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5585 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5586 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5587 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5588 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5589 "};\n"
5590 msgstr ""
5591 "struct {\n"
5592 "    struct perf_event_header header;\n"
5593 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5594 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5595 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5596 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5597 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5598 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5599 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5600 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5601 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5602 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5603 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5604 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5605 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5606 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5607 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5608 "    struct perf_branch_entry lbr[bnr];\n"
5609 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5610 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5611 "    u64   regs[weight(mask)];\n"
5612 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5613 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5614 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5615 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5616 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5617 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5618 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5619 "};\n"
5620
5621 #. type: TP
5622 #: build/C/man2/perf_event_open.2:1793
5623 #, no-wrap
5624 msgid "I<sample_id>"
5625 msgstr "I<sample_id>"
5626
5627 #. type: Plain text
5628 #: build/C/man2/perf_event_open.2:1803
5629 msgid ""
5630 "If B<PERF_SAMPLE_IDENTIFIER> is enabled, a 64-bit unique ID is included.  "
5631 "This is a duplication of the B<PERF_SAMPLE_ID> I<id> value, but included at "
5632 "the beginning of the sample so parsers can easily obtain the value."
5633 msgstr ""
5634
5635 #. type: TP
5636 #: build/C/man2/perf_event_open.2:1803
5637 #, no-wrap
5638 msgid "I<ip>"
5639 msgstr "I<ip>"
5640
5641 #. type: Plain text
5642 #: build/C/man2/perf_event_open.2:1809
5643 msgid ""
5644 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
5645 "included."
5646 msgstr ""
5647
5648 #. type: TP
5649 #: build/C/man2/perf_event_open.2:1809
5650 #, no-wrap
5651 msgid "I<pid>, I<tid>"
5652 msgstr "I<pid>, I<tid>"
5653
5654 #. type: Plain text
5655 #: build/C/man2/perf_event_open.2:1815
5656 msgid ""
5657 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
5658 "ID are included."
5659 msgstr ""
5660
5661 #. type: TP
5662 #: build/C/man2/perf_event_open.2:1815
5663 #, no-wrap
5664 msgid "I<time>"
5665 msgstr "I<time>"
5666
5667 #. type: Plain text
5668 #: build/C/man2/perf_event_open.2:1823
5669 msgid ""
5670 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
5671 "This is obtained via local_clock() which is a hardware timestamp if "
5672 "available and the jiffies value if not."
5673 msgstr ""
5674
5675 #. type: Plain text
5676 #: build/C/man2/perf_event_open.2:1830
5677 msgid ""
5678 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
5679 "is usually the address of a tracepoint, breakpoint, or software event; "
5680 "otherwise the value is 0."
5681 msgstr ""
5682
5683 #. type: Plain text
5684 #: build/C/man2/perf_event_open.2:1838
5685 msgid ""
5686 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
5687 "event is a member of an event group, the group leader ID is returned.  This "
5688 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
5689 msgstr ""
5690
5691 #. type: TP
5692 #: build/C/man2/perf_event_open.2:1838
5693 #, no-wrap
5694 msgid "I<stream_id>"
5695 msgstr "I<stream_id>"
5696
5697 #. type: Plain text
5698 #: build/C/man2/perf_event_open.2:1848
5699 msgid ""
5700 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
5701 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
5702 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
5703 msgstr ""
5704
5705 #. type: TP
5706 #: build/C/man2/perf_event_open.2:1848
5707 #, no-wrap
5708 msgid "I<cpu>, I<res>"
5709 msgstr "I<cpu>, I<res>"
5710
5711 #. type: Plain text
5712 #: build/C/man2/perf_event_open.2:1855
5713 msgid ""
5714 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
5715 "CPU was being used, in addition to a reserved (unused)  32-bit value."
5716 msgstr ""
5717
5718 #. type: TP
5719 #: build/C/man2/perf_event_open.2:1855
5720 #, no-wrap
5721 msgid "I<period>"
5722 msgstr "I<period>"
5723
5724 #. type: Plain text
5725 #: build/C/man2/perf_event_open.2:1861
5726 msgid ""
5727 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
5728 "sampling period is written."
5729 msgstr ""
5730
5731 #. type: TP
5732 #: build/C/man2/perf_event_open.2:1861
5733 #, no-wrap
5734 msgid "I<v>"
5735 msgstr "I<v>"
5736
5737 #. type: Plain text
5738 #: build/C/man2/perf_event_open.2:1872
5739 msgid ""
5740 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
5741 "included which has values for all events in the event group.  The values "
5742 "included depend on the I<read_format> value used at B<perf_event_open>()  "
5743 "time."
5744 msgstr ""
5745
5746 #. type: TP
5747 #: build/C/man2/perf_event_open.2:1872
5748 #, no-wrap
5749 msgid "I<nr>, I<ips[nr]>"
5750 msgstr "I<nr>, I<ips[nr]>"
5751
5752 #. type: Plain text
5753 #: build/C/man2/perf_event_open.2:1880
5754 msgid ""
5755 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
5756 "which indicates how many following 64-bit instruction pointers will follow.  "
5757 "This is the current callchain."
5758 msgstr ""
5759
5760 #. type: TP
5761 #: build/C/man2/perf_event_open.2:1880
5762 #, no-wrap
5763 msgid "I<size>, I<data[size]>"
5764 msgstr "I<size>, I<data[size]>"
5765
5766 #. type: Plain text
5767 #: build/C/man2/perf_event_open.2:1887
5768 msgid ""
5769 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
5770 "included followed by an array of 8-bit values of length size.  The values "
5771 "are padded with 0 to have 64-bit alignment."
5772 msgstr ""
5773
5774 #. type: Plain text
5775 #: build/C/man2/perf_event_open.2:1892
5776 msgid ""
5777 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
5778 "make any promises with respect to the stability of its content, it may vary "
5779 "depending on event, hardware, and kernel version."
5780 msgstr ""
5781
5782 #. type: TP
5783 #: build/C/man2/perf_event_open.2:1892
5784 #, no-wrap
5785 msgid "I<bnr>, I<lbr[bnr]>"
5786 msgstr "I<bnr>, I<lbr[bnr]>"
5787
5788 #. type: Plain text
5789 #: build/C/man2/perf_event_open.2:1901
5790 msgid ""
5791 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5792 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5793 "structures which each include the fields:"
5794 msgstr ""
5795
5796 #. type: TP
5797 #: build/C/man2/perf_event_open.2:1902
5798 #, no-wrap
5799 msgid "I<from>"
5800 msgstr "I<from>"
5801
5802 #. type: Plain text
5803 #: build/C/man2/perf_event_open.2:1905
5804 msgid "This indicates the source instruction (may not be a branch)."
5805 msgstr ""
5806
5807 #. type: TP
5808 #: build/C/man2/perf_event_open.2:1905
5809 #, no-wrap
5810 msgid "I<to>"
5811 msgstr "I<to>"
5812
5813 #. type: Plain text
5814 #: build/C/man2/perf_event_open.2:1908
5815 msgid "The branch target."
5816 msgstr ""
5817
5818 #. type: TP
5819 #: build/C/man2/perf_event_open.2:1908
5820 #, no-wrap
5821 msgid "I<mispred>"
5822 msgstr "I<mispred>"
5823
5824 #. type: Plain text
5825 #: build/C/man2/perf_event_open.2:1911
5826 msgid "The branch target was mispredicted."
5827 msgstr ""
5828
5829 #. type: TP
5830 #: build/C/man2/perf_event_open.2:1911
5831 #, no-wrap
5832 msgid "I<predicted>"
5833 msgstr "I<predicted>"
5834
5835 #. type: Plain text
5836 #: build/C/man2/perf_event_open.2:1914
5837 msgid "The branch target was predicted."
5838 msgstr ""
5839
5840 #. type: TP
5841 #: build/C/man2/perf_event_open.2:1914
5842 #, no-wrap
5843 msgid "I<in_tx> (since Linux 3.11)"
5844 msgstr "I<in_tx> (Linux 3.11 以降)"
5845
5846 #. type: Plain text
5847 #: build/C/man2/perf_event_open.2:1917
5848 msgid "The branch was in a transactional memory transaction."
5849 msgstr ""
5850
5851 #. type: TP
5852 #: build/C/man2/perf_event_open.2:1917
5853 #, no-wrap
5854 msgid "I<abort> (since Linux 3.11)"
5855 msgstr "I<abort> (Linux 3.11 以降)"
5856
5857 #. type: Plain text
5858 #: build/C/man2/perf_event_open.2:1920
5859 msgid "The branch was in an aborted transactional memory transaction."
5860 msgstr ""
5861
5862 #. type: Plain text
5863 #: build/C/man2/perf_event_open.2:1924
5864 msgid ""
5865 "The entries are from most to least recent, so the first entry has the most "
5866 "recent branch."
5867 msgstr ""
5868
5869 #. type: Plain text
5870 #: build/C/man2/perf_event_open.2:1931
5871 msgid ""
5872 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
5873 "values will be 0."
5874 msgstr ""
5875
5876 #. type: Plain text
5877 #: build/C/man2/perf_event_open.2:1935
5878 msgid ""
5879 "The type of branches recorded is specified by the I<branch_sample_type> "
5880 "field."
5881 msgstr ""
5882
5883 #. type: TP
5884 #: build/C/man2/perf_event_open.2:1937
5885 #, no-wrap
5886 msgid "I<abi>, I<regs[weight(mask)]>"
5887 msgstr "I<abi>, I<regs[weight(mask)]>"
5888
5889 #. type: Plain text
5890 #: build/C/man2/perf_event_open.2:1942
5891 msgid ""
5892 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
5893 "recorded."
5894 msgstr ""
5895
5896 #. type: Plain text
5897 #: build/C/man2/perf_event_open.2:1948
5898 msgid ""
5899 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5900 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5901 msgstr ""
5902
5903 #. type: Plain text
5904 #: build/C/man2/perf_event_open.2:1958
5905 msgid ""
5906 "The I<regs> field is an array of the CPU registers that were specified by "
5907 "the I<sample_regs_user> attr field.  The number of values is the number of "
5908 "bits set in the I<sample_regs_user> bit mask."
5909 msgstr ""
5910
5911 #. type: TP
5912 #: build/C/man2/perf_event_open.2:1958
5913 #, no-wrap
5914 msgid "I<size>, I<data[size]>, I<dyn_size>"
5915 msgstr "I<size>, I<data[size]>, I<dyn_size>"
5916
5917 #. type: Plain text
5918 #: build/C/man2/perf_event_open.2:1974
5919 msgid ""
5920 "If B<PERF_SAMPLE_STACK_USER> is enabled, then the user stack is recorded.  "
5921 "This can be used to generate stack backtraces.  I<size> is the size "
5922 "requested by the user in I<sample_stack_user> or else the maximum record "
5923 "size.  I<data> is the stack data (a raw dump of the memory pointed to by the "
5924 "stack pointer at the time of sampling).  I<dyn_size> is the amount of data "
5925 "actually dumped (can be less than I<size>)."
5926 msgstr ""
5927
5928 #. type: TP
5929 #: build/C/man2/perf_event_open.2:1974
5930 #, no-wrap
5931 msgid "I<weight>"
5932 msgstr "I<weight>"
5933
5934 #. type: Plain text
5935 #: build/C/man2/perf_event_open.2:1982
5936 msgid ""
5937 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64-bit value provided by the "
5938 "hardware is recorded that indicates how costly the event was.  This allows "
5939 "expensive events to stand out more clearly in profiles."
5940 msgstr ""
5941
5942 #. type: TP
5943 #: build/C/man2/perf_event_open.2:1982
5944 #, no-wrap
5945 msgid "I<data_src>"
5946 msgstr "I<data_src>"
5947
5948 #. type: Plain text
5949 #: build/C/man2/perf_event_open.2:1988
5950 msgid ""
5951 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64-bit value is recorded that "
5952 "is made up of the following fields:"
5953 msgstr ""
5954
5955 #. type: TP
5956 #: build/C/man2/perf_event_open.2:1989
5957 #, no-wrap
5958 msgid "I<mem_op>"
5959 msgstr "I<mem_op>"
5960
5961 #. type: Plain text
5962 #: build/C/man2/perf_event_open.2:1992
5963 msgid "Type of opcode, a bitwise combination of:"
5964 msgstr ""
5965
5966 #. type: TP
5967 #: build/C/man2/perf_event_open.2:1995
5968 #, no-wrap
5969 msgid "B<PERF_MEM_OP_NA>"
5970 msgstr "B<PERF_MEM_OP_NA>"
5971
5972 #. type: Plain text
5973 #: build/C/man2/perf_event_open.2:1998 build/C/man2/perf_event_open.2:2023
5974 #: build/C/man2/perf_event_open.2:2074 build/C/man2/perf_event_open.2:2098
5975 #: build/C/man2/perf_event_open.2:2114
5976 msgid "Not available"
5977 msgstr ""
5978
5979 #. type: TP
5980 #: build/C/man2/perf_event_open.2:1998
5981 #, no-wrap
5982 msgid "B<PERF_MEM_OP_LOAD>"
5983 msgstr "B<PERF_MEM_OP_LOAD>"
5984
5985 #. type: Plain text
5986 #: build/C/man2/perf_event_open.2:2001
5987 msgid "Load instruction"
5988 msgstr ""
5989
5990 #. type: TP
5991 #: build/C/man2/perf_event_open.2:2001
5992 #, no-wrap
5993 msgid "B<PERF_MEM_OP_STORE>"
5994 msgstr "B<PERF_MEM_OP_STORE>"
5995
5996 #. type: Plain text
5997 #: build/C/man2/perf_event_open.2:2004
5998 msgid "Store instruction"
5999 msgstr ""
6000
6001 #. type: TP
6002 #: build/C/man2/perf_event_open.2:2004
6003 #, no-wrap
6004 msgid "B<PERF_MEM_OP_PFETCH>"
6005 msgstr "B<PERF_MEM_OP_PFETCH>"
6006
6007 #. type: Plain text
6008 #: build/C/man2/perf_event_open.2:2007
6009 msgid "Prefetch"
6010 msgstr ""
6011
6012 #. type: TP
6013 #: build/C/man2/perf_event_open.2:2007
6014 #, no-wrap
6015 msgid "B<PERF_MEM_OP_EXEC>"
6016 msgstr "B<PERF_MEM_OP_EXEC>"
6017
6018 #. type: Plain text
6019 #: build/C/man2/perf_event_open.2:2010
6020 msgid "Executable code"
6021 msgstr ""
6022
6023 #. type: TP
6024 #: build/C/man2/perf_event_open.2:2012
6025 #, no-wrap
6026 msgid "I<mem_lvl>"
6027 msgstr "I<mem_lvl>"
6028
6029 #. type: Plain text
6030 #: build/C/man2/perf_event_open.2:2017
6031 msgid ""
6032 "Memory hierarchy level hit or miss, a bitwise combination of the following, "
6033 "shifted left by B<PERF_MEM_LVL_SHIFT>:"
6034 msgstr ""
6035
6036 #. type: TP
6037 #: build/C/man2/perf_event_open.2:2020
6038 #, no-wrap
6039 msgid "B<PERF_MEM_LVL_NA>"
6040 msgstr "B<PERF_MEM_LVL_NA>"
6041
6042 #. type: TP
6043 #: build/C/man2/perf_event_open.2:2023
6044 #, no-wrap
6045 msgid "B<PERF_MEM_LVL_HIT>"
6046 msgstr "B<PERF_MEM_LVL_HIT>"
6047
6048 #. type: Plain text
6049 #: build/C/man2/perf_event_open.2:2026 build/C/man2/perf_event_open.2:2117
6050 msgid "Hit"
6051 msgstr ""
6052
6053 #. type: TP
6054 #: build/C/man2/perf_event_open.2:2026
6055 #, no-wrap
6056 msgid "B<PERF_MEM_LVL_MISS>"
6057 msgstr "B<PERF_MEM_LVL_MISS>"
6058
6059 #. type: Plain text
6060 #: build/C/man2/perf_event_open.2:2029 build/C/man2/perf_event_open.2:2120
6061 msgid "Miss"
6062 msgstr ""
6063
6064 #. type: TP
6065 #: build/C/man2/perf_event_open.2:2029
6066 #, no-wrap
6067 msgid "B<PERF_MEM_LVL_L1>"
6068 msgstr "B<PERF_MEM_LVL_L1>"
6069
6070 #. type: Plain text
6071 #: build/C/man2/perf_event_open.2:2032
6072 msgid "Level 1 cache"
6073 msgstr ""
6074
6075 #. type: TP
6076 #: build/C/man2/perf_event_open.2:2032
6077 #, no-wrap
6078 msgid "B<PERF_MEM_LVL_LFB>"
6079 msgstr "B<PERF_MEM_LVL_LFB>"
6080
6081 #. type: Plain text
6082 #: build/C/man2/perf_event_open.2:2035
6083 msgid "Line fill buffer"
6084 msgstr ""
6085
6086 #. type: TP
6087 #: build/C/man2/perf_event_open.2:2035
6088 #, no-wrap
6089 msgid "B<PERF_MEM_LVL_L2>"
6090 msgstr "B<PERF_MEM_LVL_L2>"
6091
6092 #. type: Plain text
6093 #: build/C/man2/perf_event_open.2:2038
6094 msgid "Level 2 cache"
6095 msgstr ""
6096
6097 #. type: TP
6098 #: build/C/man2/perf_event_open.2:2038
6099 #, no-wrap
6100 msgid "B<PERF_MEM_LVL_L3>"
6101 msgstr "B<PERF_MEM_LVL_L3>"
6102
6103 #. type: Plain text
6104 #: build/C/man2/perf_event_open.2:2041
6105 msgid "Level 3 cache"
6106 msgstr ""
6107
6108 #. type: TP
6109 #: build/C/man2/perf_event_open.2:2041
6110 #, no-wrap
6111 msgid "B<PERF_MEM_LVL_LOC_RAM>"
6112 msgstr "B<PERF_MEM_LVL_LOC_RAM>"
6113
6114 #. type: Plain text
6115 #: build/C/man2/perf_event_open.2:2044
6116 msgid "Local DRAM"
6117 msgstr ""
6118
6119 #. type: TP
6120 #: build/C/man2/perf_event_open.2:2044
6121 #, no-wrap
6122 msgid "B<PERF_MEM_LVL_REM_RAM1>"
6123 msgstr "B<PERF_MEM_LVL_REM_RAM1>"
6124
6125 #. type: Plain text
6126 #: build/C/man2/perf_event_open.2:2047
6127 msgid "Remote DRAM 1 hop"
6128 msgstr ""
6129
6130 #. type: TP
6131 #: build/C/man2/perf_event_open.2:2047
6132 #, no-wrap
6133 msgid "B<PERF_MEM_LVL_REM_RAM2>"
6134 msgstr "B<PERF_MEM_LVL_REM_RAM2>"
6135
6136 #. type: Plain text
6137 #: build/C/man2/perf_event_open.2:2050
6138 msgid "Remote DRAM 2 hops"
6139 msgstr ""
6140
6141 #. type: TP
6142 #: build/C/man2/perf_event_open.2:2050
6143 #, no-wrap
6144 msgid "B<PERF_MEM_LVL_REM_CCE1>"
6145 msgstr "B<PERF_MEM_LVL_REM_CCE1>"
6146
6147 #. type: Plain text
6148 #: build/C/man2/perf_event_open.2:2053
6149 msgid "Remote cache 1 hop"
6150 msgstr ""
6151
6152 #. type: TP
6153 #: build/C/man2/perf_event_open.2:2053
6154 #, no-wrap
6155 msgid "B<PERF_MEM_LVL_REM_CCE2>"
6156 msgstr "B<PERF_MEM_LVL_REM_CCE2>"
6157
6158 #. type: Plain text
6159 #: build/C/man2/perf_event_open.2:2056
6160 msgid "Remote cache 2 hops"
6161 msgstr ""
6162
6163 #. type: TP
6164 #: build/C/man2/perf_event_open.2:2056
6165 #, no-wrap
6166 msgid "B<PERF_MEM_LVL_IO>"
6167 msgstr "B<PERF_MEM_LVL_IO>"
6168
6169 #. type: Plain text
6170 #: build/C/man2/perf_event_open.2:2059
6171 msgid "I/O memory"
6172 msgstr ""
6173
6174 #. type: TP
6175 #: build/C/man2/perf_event_open.2:2059
6176 #, no-wrap
6177 msgid "B<PERF_MEM_LVL_UNC>"
6178 msgstr "B<PERF_MEM_LVL_UNC>"
6179
6180 #. type: Plain text
6181 #: build/C/man2/perf_event_open.2:2062
6182 msgid "Uncached memory"
6183 msgstr ""
6184
6185 #. type: TP
6186 #: build/C/man2/perf_event_open.2:2064
6187 #, no-wrap
6188 msgid "I<mem_snoop>"
6189 msgstr "I<mem_snoop>"
6190
6191 #. type: Plain text
6192 #: build/C/man2/perf_event_open.2:2068
6193 msgid ""
6194 "Snoop mode, a bitwise combination of the following, shifted left by "
6195 "B<PERF_MEM_SNOOP_SHIFT>:"
6196 msgstr ""
6197
6198 #. type: TP
6199 #: build/C/man2/perf_event_open.2:2071
6200 #, no-wrap
6201 msgid "B<PERF_MEM_SNOOP_NA>"
6202 msgstr "B<PERF_MEM_SNOOP_NA>"
6203
6204 #. type: TP
6205 #: build/C/man2/perf_event_open.2:2074
6206 #, no-wrap
6207 msgid "B<PERF_MEM_SNOOP_NONE>"
6208 msgstr "B<PERF_MEM_SNOOP_NONE>"
6209
6210 #. type: Plain text
6211 #: build/C/man2/perf_event_open.2:2077
6212 msgid "No snoop"
6213 msgstr ""
6214
6215 #. type: TP
6216 #: build/C/man2/perf_event_open.2:2077
6217 #, no-wrap
6218 msgid "B<PERF_MEM_SNOOP_HIT>"
6219 msgstr "B<PERF_MEM_SNOOP_HIT>"
6220
6221 #. type: Plain text
6222 #: build/C/man2/perf_event_open.2:2080
6223 msgid "Snoop hit"
6224 msgstr ""
6225
6226 #. type: TP
6227 #: build/C/man2/perf_event_open.2:2080
6228 #, no-wrap
6229 msgid "B<PERF_MEM_SNOOP_MISS>"
6230 msgstr "B<PERF_MEM_SNOOP_MISS>"
6231
6232 #. type: Plain text
6233 #: build/C/man2/perf_event_open.2:2083
6234 msgid "Snoop miss"
6235 msgstr ""
6236
6237 #. type: TP
6238 #: build/C/man2/perf_event_open.2:2083
6239 #, no-wrap
6240 msgid "B<PERF_MEM_SNOOP_HITM>"
6241 msgstr "B<PERF_MEM_SNOOP_HITM>"
6242
6243 #. type: Plain text
6244 #: build/C/man2/perf_event_open.2:2086
6245 msgid "Snoop hit modified"
6246 msgstr ""
6247
6248 #. type: TP
6249 #: build/C/man2/perf_event_open.2:2088
6250 #, no-wrap
6251 msgid "I<mem_lock>"
6252 msgstr "I<mem_lock>"
6253
6254 #. type: Plain text
6255 #: build/C/man2/perf_event_open.2:2092
6256 msgid ""
6257 "Lock instruction, a bitwise combination of the following, shifted left by "
6258 "B<PERF_MEM_LOCK_SHIFT>:"
6259 msgstr ""
6260
6261 #. type: TP
6262 #: build/C/man2/perf_event_open.2:2095
6263 #, no-wrap
6264 msgid "B<PERF_MEM_LOCK_NA>"
6265 msgstr "B<PERF_MEM_LOCK_NA>"
6266
6267 #. type: TP
6268 #: build/C/man2/perf_event_open.2:2098
6269 #, no-wrap
6270 msgid "B<PERF_MEM_LOCK_LOCKED>"
6271 msgstr "B<PERF_MEM_LOCK_LOCKED>"
6272
6273 #. type: Plain text
6274 #: build/C/man2/perf_event_open.2:2101
6275 msgid "Locked transaction"
6276 msgstr ""
6277
6278 #. type: TP
6279 #: build/C/man2/perf_event_open.2:2103
6280 #, no-wrap
6281 msgid "I<mem_dtlb>"
6282 msgstr "I<mem_dtlb>"
6283
6284 #. type: Plain text
6285 #: build/C/man2/perf_event_open.2:2108
6286 msgid ""
6287 "TLB access hit or miss, a bitwise combination of the following, shifted left "
6288 "by B<PERF_MEM_TLB_SHIFT>:"
6289 msgstr ""
6290
6291 #. type: TP
6292 #: build/C/man2/perf_event_open.2:2111
6293 #, no-wrap
6294 msgid "B<PERF_MEM_TLB_NA>"
6295 msgstr "B<PERF_MEM_TLB_NA>"
6296
6297 #. type: TP
6298 #: build/C/man2/perf_event_open.2:2114
6299 #, no-wrap
6300 msgid "B<PERF_MEM_TLB_HIT>"
6301 msgstr "B<PERF_MEM_TLB_HIT>"
6302
6303 #. type: TP
6304 #: build/C/man2/perf_event_open.2:2117
6305 #, no-wrap
6306 msgid "B<PERF_MEM_TLB_MISS>"
6307 msgstr "B<PERF_MEM_TLB_MISS>"
6308
6309 #. type: TP
6310 #: build/C/man2/perf_event_open.2:2120
6311 #, no-wrap
6312 msgid "B<PERF_MEM_TLB_L1>"
6313 msgstr "B<PERF_MEM_TLB_L1>"
6314
6315 #. type: Plain text
6316 #: build/C/man2/perf_event_open.2:2123
6317 msgid "Level 1 TLB"
6318 msgstr ""
6319
6320 #. type: TP
6321 #: build/C/man2/perf_event_open.2:2123
6322 #, no-wrap
6323 msgid "B<PERF_MEM_TLB_L2>"
6324 msgstr "B<PERF_MEM_TLB_L2>"
6325
6326 #. type: Plain text
6327 #: build/C/man2/perf_event_open.2:2126
6328 msgid "Level 2 TLB"
6329 msgstr ""
6330
6331 #. type: TP
6332 #: build/C/man2/perf_event_open.2:2126
6333 #, no-wrap
6334 msgid "B<PERF_MEM_TLB_WK>"
6335 msgstr "B<PERF_MEM_TLB_WK>"
6336
6337 #. type: Plain text
6338 #: build/C/man2/perf_event_open.2:2129
6339 msgid "Hardware walker"
6340 msgstr ""
6341
6342 #. type: TP
6343 #: build/C/man2/perf_event_open.2:2129
6344 #, no-wrap
6345 msgid "B<PERF_MEM_TLB_OS>"
6346 msgstr "B<PERF_MEM_TLB_OS>"
6347
6348 #. type: Plain text
6349 #: build/C/man2/perf_event_open.2:2132
6350 msgid "OS fault handler"
6351 msgstr ""
6352
6353 #. type: TP
6354 #: build/C/man2/perf_event_open.2:2135
6355 #, no-wrap
6356 msgid "I<transaction>"
6357 msgstr "I<transaction>"
6358
6359 #. type: Plain text
6360 #: build/C/man2/perf_event_open.2:2141
6361 msgid ""
6362 "If the B<PERF_SAMPLE_TRANSACTION> flag is set, then a 64-bit field is "
6363 "recorded describing the sources of any transactional memory aborts."
6364 msgstr ""
6365
6366 #. type: Plain text
6367 #: build/C/man2/perf_event_open.2:2143
6368 msgid "The field is a bitwise combination of the following values:"
6369 msgstr ""
6370
6371 #. type: TP
6372 #: build/C/man2/perf_event_open.2:2144
6373 #, no-wrap
6374 msgid "B<PERF_TXN_ELISION>"
6375 msgstr "B<PERF_TXN_ELISION>"
6376
6377 #. type: Plain text
6378 #: build/C/man2/perf_event_open.2:2147
6379 msgid "Abort from an elision type transaction (Intel-CPU-specific)."
6380 msgstr ""
6381
6382 #. type: TP
6383 #: build/C/man2/perf_event_open.2:2147
6384 #, no-wrap
6385 msgid "B<PERF_TXN_TRANSACTION>"
6386 msgstr "B<PERF_TXN_TRANSACTION>"
6387
6388 #. type: Plain text
6389 #: build/C/man2/perf_event_open.2:2150
6390 msgid "Abort from a generic transaction."
6391 msgstr ""
6392
6393 #. type: TP
6394 #: build/C/man2/perf_event_open.2:2150
6395 #, no-wrap
6396 msgid "B<PERF_TXN_SYNC>"
6397 msgstr "B<PERF_TXN_SYNC>"
6398
6399 #. type: Plain text
6400 #: build/C/man2/perf_event_open.2:2153
6401 msgid "Synchronous abort (related to the reported instruction)."
6402 msgstr ""
6403
6404 #. type: TP
6405 #: build/C/man2/perf_event_open.2:2153
6406 #, no-wrap
6407 msgid "B<PERF_TXN_ASYNC>"
6408 msgstr "B<PERF_TXN_ASYNC>"
6409
6410 #. type: Plain text
6411 #: build/C/man2/perf_event_open.2:2156
6412 msgid "Asynchronous abort (not related to the reported instruction)."
6413 msgstr ""
6414
6415 #. type: TP
6416 #: build/C/man2/perf_event_open.2:2156
6417 #, no-wrap
6418 msgid "B<PERF_TXN_RETRY>"
6419 msgstr "B<PERF_TXN_RETRY>"
6420
6421 #. type: Plain text
6422 #: build/C/man2/perf_event_open.2:2159
6423 msgid "Retryable abort (retrying the transaction may have succeeded)."
6424 msgstr ""
6425
6426 #. type: TP
6427 #: build/C/man2/perf_event_open.2:2159
6428 #, no-wrap
6429 msgid "B<PERF_TXN_CONFLICT>"
6430 msgstr "B<PERF_TXN_CONFLICT>"
6431
6432 #. type: Plain text
6433 #: build/C/man2/perf_event_open.2:2162
6434 msgid "Abort due to memory conflicts with other threads."
6435 msgstr ""
6436
6437 #. type: TP
6438 #: build/C/man2/perf_event_open.2:2162
6439 #, no-wrap
6440 msgid "B<PERF_TXN_CAPACITY_WRITE>"
6441 msgstr ""
6442
6443 #. type: Plain text
6444 #: build/C/man2/perf_event_open.2:2165
6445 msgid "Abort due to write capacity overflow."
6446 msgstr ""
6447
6448 #. type: TP
6449 #: build/C/man2/perf_event_open.2:2165
6450 #, no-wrap
6451 msgid "B<PERF_TXN_CAPACITY_READ>"
6452 msgstr ""
6453
6454 #. type: Plain text
6455 #: build/C/man2/perf_event_open.2:2168
6456 msgid "Abort due to read capacity overflow."
6457 msgstr ""
6458
6459 #. type: Plain text
6460 #: build/C/man2/perf_event_open.2:2175
6461 msgid ""
6462 "In addition, a user-specified abort code can be obtained from the high 32 "
6463 "bits of the field by shifting right by B<PERF_TXN_ABORT_SHIFT> and masking "
6464 "with B<PERF_TXN_ABORT_MASK>."
6465 msgstr ""
6466
6467 #. type: TP
6468 #: build/C/man2/perf_event_open.2:2176
6469 #, no-wrap
6470 msgid "B<PERF_RECORD_MMAP2>"
6471 msgstr "B<PERF_RECORD_MMAP2>"
6472
6473 #. type: Plain text
6474 #: build/C/man2/perf_event_open.2:2185
6475 msgid ""
6476 "This record includes extended information on B<mmap>(2)  calls returning "
6477 "executable mappings.  The format is similar to that of the "
6478 "B<PERF_RECORD_MMAP> record, but includes extra values that allow uniquely "
6479 "identifying shared mappings."
6480 msgstr ""
6481
6482 #. type: Plain text
6483 #: build/C/man2/perf_event_open.2:2204
6484 #, no-wrap
6485 msgid ""
6486 "struct {\n"
6487 "    struct perf_event_header header;\n"
6488 "    u32 pid;\n"
6489 "    u32 tid;\n"
6490 "    u64 addr;\n"
6491 "    u64 len;\n"
6492 "    u64 pgoff;\n"
6493 "    u32 maj;\n"
6494 "    u32 min;\n"
6495 "    u64 ino;\n"
6496 "    u64 ino_generation;\n"
6497 "    u32 prot;\n"
6498 "    u32 flags;\n"
6499 "    char filename[];\n"
6500 "    struct sample_id sample_id;\n"
6501 "};\n"
6502 msgstr ""
6503 "struct {\n"
6504 "    struct perf_event_header header;\n"
6505 "    u32 pid;\n"
6506 "    u32 tid;\n"
6507 "    u64 addr;\n"
6508 "    u64 len;\n"
6509 "    u64 pgoff;\n"
6510 "    u32 maj;\n"
6511 "    u32 min;\n"
6512 "    u64 ino;\n"
6513 "    u64 ino_generation;\n"
6514 "    u32 prot;\n"
6515 "    u32 flags;\n"
6516 "    char filename[];\n"
6517 "    struct sample_id sample_id;\n"
6518 "};\n"
6519
6520 #. type: Plain text
6521 #: build/C/man2/perf_event_open.2:2215
6522 msgid "is the address of the allocated memory."
6523 msgstr ""
6524
6525 #. type: TP
6526 #: build/C/man2/perf_event_open.2:2215
6527 #, no-wrap
6528 msgid "I<len>"
6529 msgstr "I<len>"
6530
6531 #. type: Plain text
6532 #: build/C/man2/perf_event_open.2:2218
6533 msgid "is the length of the allocated memory."
6534 msgstr ""
6535
6536 #. type: TP
6537 #: build/C/man2/perf_event_open.2:2218
6538 #, no-wrap
6539 msgid "I<pgoff>"
6540 msgstr "I<pgoff>"
6541
6542 #. type: Plain text
6543 #: build/C/man2/perf_event_open.2:2221
6544 msgid "is the page offset of the allocated memory."
6545 msgstr ""
6546
6547 #. type: TP
6548 #: build/C/man2/perf_event_open.2:2221
6549 #, no-wrap
6550 msgid "I<maj>"
6551 msgstr "I<maj>"
6552
6553 #. type: Plain text
6554 #: build/C/man2/perf_event_open.2:2224
6555 msgid "is the major ID of the underlying device."
6556 msgstr ""
6557
6558 #. type: TP
6559 #: build/C/man2/perf_event_open.2:2224
6560 #, no-wrap
6561 msgid "I<min>"
6562 msgstr "I<min>"
6563
6564 #. type: Plain text
6565 #: build/C/man2/perf_event_open.2:2227
6566 msgid "is the minor ID of the underlying device."
6567 msgstr ""
6568
6569 #. type: TP
6570 #: build/C/man2/perf_event_open.2:2227
6571 #, no-wrap
6572 msgid "I<ino>"
6573 msgstr "I<ino>"
6574
6575 #. type: Plain text
6576 #: build/C/man2/perf_event_open.2:2230
6577 msgid "is the inode number."
6578 msgstr ""
6579
6580 #. type: TP
6581 #: build/C/man2/perf_event_open.2:2230
6582 #, no-wrap
6583 msgid "I<ino_generation>"
6584 msgstr "I<ino_generation>"
6585
6586 #. type: Plain text
6587 #: build/C/man2/perf_event_open.2:2233
6588 msgid "is the inode generation."
6589 msgstr ""
6590
6591 #. type: TP
6592 #: build/C/man2/perf_event_open.2:2233
6593 #, no-wrap
6594 msgid "I<prot>"
6595 msgstr "I<prot>"
6596
6597 #. type: Plain text
6598 #: build/C/man2/perf_event_open.2:2236
6599 msgid "is the protection information."
6600 msgstr ""
6601
6602 #. type: TP
6603 #: build/C/man2/perf_event_open.2:2236
6604 #, no-wrap
6605 msgid "I<flags>"
6606 msgstr "I<flags>"
6607
6608 #. type: Plain text
6609 #: build/C/man2/perf_event_open.2:2239
6610 msgid "is the flags information."
6611 msgstr ""
6612
6613 #. type: TP
6614 #: build/C/man2/perf_event_open.2:2239
6615 #, no-wrap
6616 msgid "I<filename>"
6617 msgstr "I<filename>"
6618
6619 #. type: Plain text
6620 #: build/C/man2/perf_event_open.2:2242
6621 msgid "is a string describing the backing of the allocated memory."
6622 msgstr ""
6623
6624 #. type: SS
6625 #: build/C/man2/perf_event_open.2:2244
6626 #, no-wrap
6627 msgid "Signal overflow"
6628 msgstr ""
6629
6630 #.  FIXME .
6631 #.  The following sentence doesn't seem to make sense.
6632 #.  These system calls do not set up signal handlers.
6633 #. type: Plain text
6634 #: build/C/man2/perf_event_open.2:2256
6635 msgid ""
6636 "Events can be set to deliver a signal when a threshold is crossed.  The "
6637 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
6638 "and B<fcntl>(2), system calls."
6639 msgstr ""
6640
6641 #. type: Plain text
6642 #: build/C/man2/perf_event_open.2:2260
6643 msgid ""
6644 "To generate signals, sampling must be enabled (I<sample_period> must have a "
6645 "nonzero value)."
6646 msgstr ""
6647
6648 #. type: Plain text
6649 #: build/C/man2/perf_event_open.2:2262
6650 msgid "There are two ways to generate signals."
6651 msgstr ""
6652
6653 #. type: Plain text
6654 #: build/C/man2/perf_event_open.2:2272
6655 msgid ""
6656 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
6657 "will generate a signal if a certain number of samples or bytes have been "
6658 "written to the mmap ring buffer.  In this case, a signal of type B<POLL_IN> "
6659 "is sent."
6660 msgstr ""
6661
6662 #. type: Plain text
6663 #: build/C/man2/perf_event_open.2:2284
6664 msgid ""
6665 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
6666 "adds to a counter that decrements each time the event overflows.  When "
6667 "nonzero, a B<POLL_IN> signal is sent on overflow, but once the value reaches "
6668 "0, a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
6669 msgstr ""
6670
6671 #.  FIXME . Find out when this was introduced
6672 #. type: Plain text
6673 #: build/C/man2/perf_event_open.2:2290
6674 msgid ""
6675 "Note: on newer kernels (since at least as early as Linux 3.2), a signal is "
6676 "provided for every overflow, even if I<wakeup_events> is not set."
6677 msgstr ""
6678
6679 #. type: SS
6680 #: build/C/man2/perf_event_open.2:2290
6681 #, no-wrap
6682 msgid "rdpmc instruction"
6683 msgstr ""
6684
6685 #. type: Plain text
6686 #: build/C/man2/perf_event_open.2:2297
6687 msgid ""
6688 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
6689 "low-latency reads without having to enter the kernel.  Note that using "
6690 "I<rdpmc> is not necessarily faster than other methods for reading event "
6691 "values."
6692 msgstr ""
6693
6694 #. type: Plain text
6695 #: build/C/man2/perf_event_open.2:2302
6696 msgid ""
6697 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
6698 "page; documentation on how to calculate event values can be found in that "
6699 "section."
6700 msgstr ""
6701
6702 #. type: SS
6703 #: build/C/man2/perf_event_open.2:2302
6704 #, no-wrap
6705 msgid "perf_event ioctl calls"
6706 msgstr ""
6707
6708 #. type: Plain text
6709 #: build/C/man2/perf_event_open.2:2307
6710 msgid "Various ioctls act on B<perf_event_open>()  file descriptors:"
6711 msgstr ""
6712
6713 #. type: TP
6714 #: build/C/man2/perf_event_open.2:2307
6715 #, no-wrap
6716 msgid "B<PERF_EVENT_IOC_ENABLE>"
6717 msgstr "B<PERF_EVENT_IOC_ENABLE>"
6718
6719 #. type: Plain text
6720 #: build/C/man2/perf_event_open.2:2311
6721 msgid ""
6722 "This enables the individual event or event group specified by the file "
6723 "descriptor argument."
6724 msgstr ""
6725
6726 #. type: Plain text
6727 #: build/C/man2/perf_event_open.2:2317
6728 msgid ""
6729 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6730 "events in a group are enabled, even if the event specified is not the group "
6731 "leader (but see BUGS)."
6732 msgstr ""
6733
6734 #. type: TP
6735 #: build/C/man2/perf_event_open.2:2317
6736 #, no-wrap
6737 msgid "B<PERF_EVENT_IOC_DISABLE>"
6738 msgstr "B<PERF_EVENT_IOC_DISABLE>"
6739
6740 #. type: Plain text
6741 #: build/C/man2/perf_event_open.2:2321
6742 msgid ""
6743 "This disables the individual counter or event group specified by the file "
6744 "descriptor argument."
6745 msgstr ""
6746
6747 #. type: Plain text
6748 #: build/C/man2/perf_event_open.2:2328
6749 msgid ""
6750 "Enabling or disabling the leader of a group enables or disables the entire "
6751 "group; that is, while the group leader is disabled, none of the counters in "
6752 "the group will count.  Enabling or disabling a member of a group other than "
6753 "the leader affects only that counter; disabling a non-leader stops that "
6754 "counter from counting but doesn't affect any other counter."
6755 msgstr ""
6756
6757 #. type: Plain text
6758 #: build/C/man2/perf_event_open.2:2334
6759 msgid ""
6760 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6761 "events in a group are disabled, even if the event specified is not the group "
6762 "leader (but see BUGS)."
6763 msgstr ""
6764
6765 #. type: TP
6766 #: build/C/man2/perf_event_open.2:2334
6767 #, no-wrap
6768 msgid "B<PERF_EVENT_IOC_REFRESH>"
6769 msgstr "B<PERF_EVENT_IOC_REFRESH>"
6770
6771 #. type: Plain text
6772 #: build/C/man2/perf_event_open.2:2348
6773 msgid ""
6774 "Non-inherited overflow counters can use this to enable a counter for a "
6775 "number of overflows specified by the argument, after which it is disabled.  "
6776 "Subsequent calls of this ioctl add the argument value to the current count.  "
6777 "A signal with B<POLL_IN> set will happen on each overflow until the count "
6778 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
6779 "event is disabled.  Using an argument of 0 is considered undefined behavior."
6780 msgstr ""
6781
6782 #. type: TP
6783 #: build/C/man2/perf_event_open.2:2348
6784 #, no-wrap
6785 msgid "B<PERF_EVENT_IOC_RESET>"
6786 msgstr "B<PERF_EVENT_IOC_RESET>"
6787
6788 #. type: Plain text
6789 #: build/C/man2/perf_event_open.2:2358
6790 msgid ""
6791 "Reset the event count specified by the file descriptor argument to zero.  "
6792 "This resets only the counts; there is no way to reset the multiplexing "
6793 "I<time_enabled> or I<time_running> values."
6794 msgstr ""
6795
6796 #. type: Plain text
6797 #: build/C/man2/perf_event_open.2:2364
6798 msgid ""
6799 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6800 "events in a group are reset, even if the event specified is not the group "
6801 "leader (but see BUGS)."
6802 msgstr ""
6803
6804 #. type: TP
6805 #: build/C/man2/perf_event_open.2:2364
6806 #, no-wrap
6807 msgid "B<PERF_EVENT_IOC_PERIOD>"
6808 msgstr "B<PERF_EVENT_IOC_PERIOD>"
6809
6810 #. type: Plain text
6811 #: build/C/man2/perf_event_open.2:2367
6812 msgid "This updates the overflow period for the event."
6813 msgstr ""
6814
6815 #. type: Plain text
6816 #: build/C/man2/perf_event_open.2:2372
6817 msgid ""
6818 "Since Linux 3.7 (on ARM) and Linux 3.14 (all other architectures), the new "
6819 "period takes effect immediately.  On older kernels, the new period did not "
6820 "take effect until after the next overflow."
6821 msgstr ""
6822
6823 #. type: Plain text
6824 #: build/C/man2/perf_event_open.2:2375
6825 msgid ""
6826 "The argument is a pointer to a 64-bit value containing the desired new "
6827 "period."
6828 msgstr ""
6829
6830 #. type: Plain text
6831 #: build/C/man2/perf_event_open.2:2378
6832 msgid ""
6833 "Prior to Linux 2.6.36 this ioctl always failed due to a bug in the kernel."
6834 msgstr ""
6835
6836 #. type: TP
6837 #: build/C/man2/perf_event_open.2:2379
6838 #, no-wrap
6839 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
6840 msgstr ""
6841
6842 #. type: Plain text
6843 #: build/C/man2/perf_event_open.2:2384
6844 msgid ""
6845 "This tells the kernel to report event notifications to the specified file "
6846 "descriptor rather than the default one.  The file descriptors must all be on "
6847 "the same CPU."
6848 msgstr ""
6849
6850 #. type: Plain text
6851 #: build/C/man2/perf_event_open.2:2387
6852 msgid ""
6853 "The argument specifies the desired file descriptor, or -1 if output should "
6854 "be ignored."
6855 msgstr ""
6856
6857 #. type: TP
6858 #: build/C/man2/perf_event_open.2:2387
6859 #, no-wrap
6860 msgid "B<PERF_EVENT_IOC_SET_FILTER> (since Linux 2.6.33)"
6861 msgstr "B<PERF_EVENT_IOC_SET_FILTER> (Linux 2.6.33 以降)"
6862
6863 #. type: Plain text
6864 #: build/C/man2/perf_event_open.2:2390
6865 msgid "This adds an ftrace filter to this event."
6866 msgstr ""
6867
6868 #. type: Plain text
6869 #: build/C/man2/perf_event_open.2:2392
6870 msgid "The argument is a pointer to the desired ftrace filter."
6871 msgstr ""
6872
6873 #. type: TP
6874 #: build/C/man2/perf_event_open.2:2392
6875 #, no-wrap
6876 msgid "B<PERF_EVENT_IOC_ID> (since Linux 3.12)"
6877 msgstr "B<PERF_EVENT_IOC_ID> (Linux 3.12 以降)"
6878
6879 #. type: Plain text
6880 #: build/C/man2/perf_event_open.2:2395
6881 msgid "This returns the event ID value for the given event file descriptor."
6882 msgstr ""
6883
6884 #. type: Plain text
6885 #: build/C/man2/perf_event_open.2:2398
6886 msgid ""
6887 "The argument is a pointer to a 64-bit unsigned integer to hold the result."
6888 msgstr ""
6889
6890 #. type: SS
6891 #: build/C/man2/perf_event_open.2:2398
6892 #, no-wrap
6893 msgid "Using prctl"
6894 msgstr ""
6895
6896 #. type: Plain text
6897 #: build/C/man2/perf_event_open.2:2411
6898 msgid ""
6899 "A process can enable or disable all the event groups that are attached to it "
6900 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
6901 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
6902 "the calling process, whether created by this process or by another, and does "
6903 "not affect any counters that this process has created on other processes.  "
6904 "It enables or disables only the group leaders, not any other members in the "
6905 "groups."
6906 msgstr ""
6907
6908 #. type: SS
6909 #: build/C/man2/perf_event_open.2:2411
6910 #, no-wrap
6911 msgid "perf_event related configuration files"
6912 msgstr ""
6913
6914 #. type: Plain text
6915 #: build/C/man2/perf_event_open.2:2414
6916 msgid "Files in I</proc/sys/kernel/>"
6917 msgstr ""
6918
6919 #. type: TP
6920 #: build/C/man2/perf_event_open.2:2415
6921 #, no-wrap
6922 msgid "I</proc/sys/kernel/perf_event_paranoid>"
6923 msgstr ""
6924
6925 #. type: Plain text
6926 #: build/C/man2/perf_event_open.2:2421
6927 msgid ""
6928 "The I<perf_event_paranoid> file can be set to restrict access to the "
6929 "performance counters."
6930 msgstr ""
6931
6932 #. type: IP
6933 #: build/C/man2/perf_event_open.2:2422
6934 #, no-wrap
6935 msgid "2"
6936 msgstr ""
6937
6938 #. type: Plain text
6939 #: build/C/man2/perf_event_open.2:2424
6940 msgid "only allow user-space measurements."
6941 msgstr ""
6942
6943 #. type: IP
6944 #: build/C/man2/perf_event_open.2:2424
6945 #, no-wrap
6946 msgid "1"
6947 msgstr ""
6948
6949 #. type: Plain text
6950 #: build/C/man2/perf_event_open.2:2426
6951 msgid "allow both kernel and user measurements (default)."
6952 msgstr ""
6953
6954 #. type: IP
6955 #: build/C/man2/perf_event_open.2:2426
6956 #, no-wrap
6957 msgid "0"
6958 msgstr ""
6959
6960 #. type: Plain text
6961 #: build/C/man2/perf_event_open.2:2428
6962 msgid "allow access to CPU-specific data but not raw tracepoint samples."
6963 msgstr ""
6964
6965 #. type: IP
6966 #: build/C/man2/perf_event_open.2:2428
6967 #, no-wrap
6968 msgid "-1"
6969 msgstr "-1"
6970
6971 #. type: Plain text
6972 #: build/C/man2/perf_event_open.2:2430
6973 msgid "no restrictions."
6974 msgstr ""
6975
6976 #. type: Plain text
6977 #: build/C/man2/perf_event_open.2:2436
6978 msgid ""
6979 "The existence of the I<perf_event_paranoid> file is the official method for "
6980 "determining if a kernel supports B<perf_event_open>()."
6981 msgstr ""
6982
6983 #. type: TP
6984 #: build/C/man2/perf_event_open.2:2436
6985 #, no-wrap
6986 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
6987 msgstr ""
6988
6989 #. type: Plain text
6990 #: build/C/man2/perf_event_open.2:2445
6991 msgid ""
6992 "This sets the maximum sample rate.  Setting this too high can allow users to "
6993 "sample at a rate that impacts overall machine performance and potentially "
6994 "lock up the machine.  The default value is 100000 (samples per second)."
6995 msgstr ""
6996
6997 #. type: TP
6998 #: build/C/man2/perf_event_open.2:2445
6999 #, no-wrap
7000 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
7001 msgstr ""
7002
7003 #. type: Plain text
7004 #: build/C/man2/perf_event_open.2:2451
7005 msgid ""
7006 "Maximum number of pages an unprivileged user can B<mlock>(2).  The default "
7007 "is 516 (kB)."
7008 msgstr ""
7009
7010 #. type: Plain text
7011 #: build/C/man2/perf_event_open.2:2455
7012 msgid "Files in I</sys/bus/event_source/devices/>"
7013 msgstr ""
7014
7015 #. type: Plain text
7016 #: build/C/man2/perf_event_open.2:2461
7017 msgid ""
7018 "Since Linux 2.6.34, the kernel supports having multiple PMUs available for "
7019 "monitoring.  Information on how to program these PMUs can be found under I</"
7020 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
7021 "different PMU."
7022 msgstr ""
7023
7024 #. type: TP
7025 #: build/C/man2/perf_event_open.2:2461
7026 #, no-wrap
7027 msgid "I</sys/bus/event_source/devices/*/type> (since Linux 2.6.38)"
7028 msgstr "I</sys/bus/event_source/devices/*/type> (Linux 2.6.38 以降)"
7029
7030 #. type: Plain text
7031 #: build/C/man2/perf_event_open.2:2468
7032 msgid ""
7033 "This contains an integer that can be used in the I<type> field of "
7034 "I<perf_event_attr> to indicate that you wish to use this PMU."
7035 msgstr ""
7036
7037 #. type: TP
7038 #: build/C/man2/perf_event_open.2:2468
7039 #, no-wrap
7040 msgid "I</sys/bus/event_source/devices/*/rdpmc> (since Linux 3.4)"
7041 msgstr "I</sys/bus/event_source/devices/*/rdpmc> (Linux 3.4 以降)"
7042
7043 #. type: Plain text
7044 #: build/C/man2/perf_event_open.2:2473
7045 msgid ""
7046 "If this file is 1, then direct user-space access to the performance counter "
7047 "registers is allowed via the rdpmc instruction.  This can be disabled by "
7048 "echoing 0 to the file."
7049 msgstr ""
7050
7051 #. type: TP
7052 #: build/C/man2/perf_event_open.2:2473
7053 #, no-wrap
7054 msgid "I</sys/bus/event_source/devices/*/format/> (since Linux 3.4)"
7055 msgstr "I</sys/bus/event_source/devices/*/format/> (Linux 3.4 以降)"
7056
7057 #. type: Plain text
7058 #: build/C/man2/perf_event_open.2:2481
7059 msgid ""
7060 "This subdirectory contains information on the architecture-specific "
7061 "subfields available for programming the various I<config> fields in the "
7062 "I<perf_event_attr> struct."
7063 msgstr ""
7064
7065 #. type: Plain text
7066 #: build/C/man2/perf_event_open.2:2492
7067 msgid ""
7068 "The content of each file is the name of the config field, followed by a "
7069 "colon, followed by a series of integer bit ranges separated by commas.  For "
7070 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
7071 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
7072 "I<perf_event_attr::config1>."
7073 msgstr ""
7074
7075 #. type: TP
7076 #: build/C/man2/perf_event_open.2:2492
7077 #, no-wrap
7078 msgid "I</sys/bus/event_source/devices/*/events/> (since Linux 3.4)"
7079 msgstr "I</sys/bus/event_source/devices/*/events/> (Linux 3.4 以降)"
7080
7081 #. type: Plain text
7082 #: build/C/man2/perf_event_open.2:2501
7083 msgid ""
7084 "This subdirectory contains files with predefined events.  The contents are "
7085 "strings describing the event settings expressed in terms of the fields found "
7086 "in the previously mentioned I<./format/> directory.  These are not "
7087 "necessarily complete lists of all events supported by a PMU, but usually a "
7088 "subset of events deemed useful or interesting."
7089 msgstr ""
7090
7091 #. type: Plain text
7092 #: build/C/man2/perf_event_open.2:2509
7093 msgid ""
7094 "The content of each file is a list of attribute names separated by commas.  "
7095 "Each entry has an optional value (either hex or decimal).  If no value is "
7096 "specified, then it is assumed to be a single-bit field with a value of 1.  "
7097 "An example entry may look like this: I<event=0x2,inv,ldlat=3>."
7098 msgstr ""
7099
7100 #. type: TP
7101 #: build/C/man2/perf_event_open.2:2509
7102 #, no-wrap
7103 msgid "I</sys/bus/event_source/devices/*/uevent>"
7104 msgstr "I</sys/bus/event_source/devices/*/uevent>"
7105
7106 #. type: Plain text
7107 #: build/C/man2/perf_event_open.2:2513
7108 msgid ""
7109 "This file is the standard kernel device interface for injecting hotplug "
7110 "events."
7111 msgstr ""
7112
7113 #. type: TP
7114 #: build/C/man2/perf_event_open.2:2513
7115 #, no-wrap
7116 msgid "I</sys/bus/event_source/devices/*/cpumask> (since Linux 3.7)"
7117 msgstr "I</sys/bus/event_source/devices/*/cpumask> (Linux 3.7 以降)"
7118
7119 #. type: Plain text
7120 #: build/C/man2/perf_event_open.2:2522
7121 msgid ""
7122 "The I<cpumask> file contains a comma-separated list of integers that "
7123 "indicate a representative CPU number for each socket (package)  on the "
7124 "motherboard.  This is needed when setting up uncore or northbridge events, "
7125 "as those PMUs present socket-wide events."
7126 msgstr ""
7127
7128 #. type: Plain text
7129 #: build/C/man2/perf_event_open.2:2529
7130 msgid ""
7131 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
7132 "occurred (in which case, I<errno> is set appropriately)."
7133 msgstr ""
7134
7135 #. type: Plain text
7136 #: build/C/man2/perf_event_open.2:2534
7137 msgid ""
7138 "The errors returned by B<perf_event_open>()  can be inconsistent, and may "
7139 "vary across processor architectures and performance monitoring units."
7140 msgstr ""
7141
7142 #. type: TP
7143 #: build/C/man2/perf_event_open.2:2534
7144 #, no-wrap
7145 msgid "B<E2BIG>"
7146 msgstr "B<E2BIG>"
7147
7148 #. type: Plain text
7149 #: build/C/man2/perf_event_open.2:2551
7150 msgid ""
7151 "Returned if the I<perf_event_attr> I<size> value is too small (smaller than "
7152 "B<PERF_ATTR_SIZE_VER0>), too big (larger than the page size), or larger than "
7153 "the kernel supports and the extra bytes are not zero.  When B<E2BIG> is "
7154 "returned, the I<perf_event_attr> I<size> field is overwritten by the kernel "
7155 "to be the size of the structure it was expecting."
7156 msgstr ""
7157
7158 #. type: Plain text
7159 #: build/C/man2/perf_event_open.2:2565
7160 msgid ""
7161 "Returned when the requested event requires B<CAP_SYS_ADMIN> permissions (or "
7162 "a more permissive perf_event paranoid setting).  Some common cases where an "
7163 "unprivileged process may encounter this error: attaching to a process owned "
7164 "by a different user; monitoring all processes on a given CPU (i.e., "
7165 "specifying the I<pid> argument as -1); and not setting I<exclude_kernel> "
7166 "when the paranoid setting requires it."
7167 msgstr ""
7168
7169 #. type: TP
7170 #: build/C/man2/perf_event_open.2:2565 build/C/man2/sendfile.2:121
7171 #: build/C/man2/splice.2:157 build/C/man2/vmsplice.2:133
7172 #, no-wrap
7173 msgid "B<EBADF>"
7174 msgstr "B<EBADF>"
7175
7176 #. type: Plain text
7177 #: build/C/man2/perf_event_open.2:2575
7178 msgid ""
7179 "Returned if the I<group_fd> file descriptor is not valid, or, if "
7180 "B<PERF_FLAG_PID_CGROUP> is set, the cgroup file descriptor in I<pid> is not "
7181 "valid."
7182 msgstr ""
7183
7184 #. type: Plain text
7185 #: build/C/man2/perf_event_open.2:2580
7186 msgid "Returned if the I<attr> pointer points at an invalid memory address."
7187 msgstr ""
7188
7189 #. type: Plain text
7190 #: build/C/man2/perf_event_open.2:2606
7191 msgid ""
7192 "Returned if the specified event is invalid.  There are many possible reasons "
7193 "for this.  A not-exhaustive list: I<sample_freq> is higher than the maximum "
7194 "setting; the I<cpu> to monitor does not exist; I<read_format> is out of "
7195 "range; I<sample_type> is out of range; the I<flags> value is out of range; "
7196 "I<exclusive> or I<pinned> set and the event is not a group leader; the event "
7197 "I<config> values are out of range or set reserved bits; the generic event "
7198 "selected is not supported; or there is not enough room to add the selected "
7199 "event."
7200 msgstr ""
7201
7202 #. type: TP
7203 #: build/C/man2/perf_event_open.2:2606
7204 #, no-wrap
7205 msgid "B<EMFILE>"
7206 msgstr "B<EMFILE>"
7207
7208 #. type: Plain text
7209 #: build/C/man2/perf_event_open.2:2612
7210 msgid ""
7211 "Each opened event uses one file descriptor.  If a large number of events are "
7212 "opened the per-user file descriptor limit (often 1024) will be hit and no "
7213 "more events can be created."
7214 msgstr ""
7215
7216 #. type: Plain text
7217 #: build/C/man2/perf_event_open.2:2616
7218 msgid ""
7219 "Returned when the event involves a feature not supported by the current CPU."
7220 msgstr ""
7221
7222 #. type: TP
7223 #: build/C/man2/perf_event_open.2:2616 build/C/man2/quotactl.2:440
7224 #, no-wrap
7225 msgid "B<ENOENT>"
7226 msgstr "B<ENOENT>"
7227
7228 #. type: Plain text
7229 #: build/C/man2/perf_event_open.2:2623
7230 msgid ""
7231 "Returned if the I<type> setting is not valid.  This error is also returned "
7232 "for some unsupported generic events."
7233 msgstr ""
7234
7235 #. type: TP
7236 #: build/C/man2/perf_event_open.2:2623
7237 #, no-wrap
7238 msgid "B<ENOSPC>"
7239 msgstr "B<ENOSPC>"
7240
7241 #. type: Plain text
7242 #: build/C/man2/perf_event_open.2:2633
7243 msgid ""
7244 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
7245 "was returned.  In Linux 3.3, this was changed to B<EINVAL>.  B<ENOSPC> is "
7246 "still returned if you try to add more breakpoint events than supported by "
7247 "the hardware."
7248 msgstr ""
7249
7250 #. type: Plain text
7251 #: build/C/man2/perf_event_open.2:2640
7252 msgid ""
7253 "Returned if B<PERF_SAMPLE_STACK_USER> is set in I<sample_type> and it is not "
7254 "supported by hardware."
7255 msgstr ""
7256
7257 #. type: Plain text
7258 #: build/C/man2/perf_event_open.2:2647
7259 msgid ""
7260 "Returned if an event requiring a specific hardware feature is requested but "
7261 "there is no hardware support.  This includes requesting low-skid events if "
7262 "not supported, branch tracing if it is not available, sampling if no PMU "
7263 "interrupt is available, and branch stacks for software events."
7264 msgstr ""
7265
7266 #. type: Plain text
7267 #: build/C/man2/perf_event_open.2:2652
7268 msgid ""
7269 "Returned on many (but not all) architectures when an unsupported "
7270 "I<exclude_hv>, I<exclude_idle>, I<exclude_user>, or I<exclude_kernel> "
7271 "setting is specified."
7272 msgstr ""
7273
7274 #. type: Plain text
7275 #: build/C/man2/perf_event_open.2:2660
7276 msgid ""
7277 "It can also happen, as with B<EACCES>, when the requested event requires "
7278 "B<CAP_SYS_ADMIN> permissions (or a more permissive perf_event paranoid "
7279 "setting).  This includes setting a breakpoint on a kernel address, and "
7280 "(since Linux 3.13) setting a kernel function-trace tracepoint."
7281 msgstr ""
7282
7283 #. type: Plain text
7284 #: build/C/man2/perf_event_open.2:2663
7285 msgid "Returned if attempting to attach to a process that does not exist."
7286 msgstr ""
7287
7288 #. type: SH
7289 #: build/C/man2/perf_event_open.2:2663
7290 #, no-wrap
7291 msgid "VERSION"
7292 msgstr "バージョン"
7293
7294 #. type: Plain text
7295 #: build/C/man2/perf_event_open.2:2668
7296 msgid ""
7297 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
7298 "B<perf_counter_open>().  It was renamed in Linux 2.6.32."
7299 msgstr ""
7300
7301 #. type: Plain text
7302 #: build/C/man2/perf_event_open.2:2673
7303 msgid ""
7304 "This B<perf_event_open>()  system call Linux- specific and should not be "
7305 "used in programs intended to be portable."
7306 msgstr ""
7307 "B<perf_event_open>() システムコールは Linux 固有であり、 移植を意図したプログ"
7308 "ラムで使用すべきではない。"
7309
7310 #. type: Plain text
7311 #: build/C/man2/perf_event_open.2:2677
7312 msgid ""
7313 "Glibc does not provide a wrapper for this system call; call it using "
7314 "B<syscall>(2).  See the example below."
7315 msgstr ""
7316 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
7317 "B<syscall>(2)  を使って呼び出すこと。 以下の例を参照。"
7318
7319 #. type: Plain text
7320 #: build/C/man2/perf_event_open.2:2683
7321 msgid ""
7322 "The official way of knowing if B<perf_event_open>()  support is enabled is "
7323 "checking for the existence of the file I</proc/sys/kernel/"
7324 "perf_event_paranoid>."
7325 msgstr ""
7326
7327 #. type: SH
7328 #: build/C/man2/perf_event_open.2:2683 build/C/man2/pivot_root.2:134
7329 #: build/C/man2/ptrace.2:1962
7330 #, no-wrap
7331 msgid "BUGS"
7332 msgstr "バグ"
7333
7334 #. type: Plain text
7335 #: build/C/man2/perf_event_open.2:2690
7336 msgid ""
7337 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
7338 "signals in threads.  This was introduced in Linux 2.6.32."
7339 msgstr ""
7340
7341 #. type: Plain text
7342 #: build/C/man2/perf_event_open.2:2698
7343 msgid ""
7344 "Prior to Linux 2.6.33 (at least for x86), the kernel did not check if events "
7345 "could be scheduled together until read time.  The same happens on all known "
7346 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
7347 "events works you have to B<perf_event_open>(), start, then read before you "
7348 "know for sure you can get valid measurements."
7349 msgstr ""
7350
7351 #. type: Plain text
7352 #: build/C/man2/perf_event_open.2:2702
7353 msgid ""
7354 "Prior to Linux 2.6.34, event constraints were not enforced by the kernel.  "
7355 "In that case, some events would silently return \"0\" if the kernel "
7356 "scheduled them in an improper counter slot."
7357 msgstr ""
7358
7359 #. type: Plain text
7360 #: build/C/man2/perf_event_open.2:2705
7361 msgid ""
7362 "Prior to Linux 2.6.34, there was a bug when multiplexing where the wrong "
7363 "results could be returned."
7364 msgstr ""
7365
7366 #. type: Plain text
7367 #: build/C/man2/perf_event_open.2:2708
7368 msgid ""
7369 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
7370 "\"inherit\" is enabled and many threads are started."
7371 msgstr ""
7372
7373 #. type: Plain text
7374 #: build/C/man2/perf_event_open.2:2712
7375 msgid ""
7376 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
7377 "processes."
7378 msgstr ""
7379
7380 #. type: Plain text
7381 #: build/C/man2/perf_event_open.2:2717
7382 msgid ""
7383 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
7384 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
7385 "This behavior is unsupported and should not be relied on."
7386 msgstr ""
7387
7388 #. type: Plain text
7389 #: build/C/man2/perf_event_open.2:2723
7390 msgid ""
7391 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
7392 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
7393 "the union has a nonzero value in it."
7394 msgstr ""
7395
7396 #. type: Plain text
7397 #: build/C/man2/perf_event_open.2:2729
7398 msgid ""
7399 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
7400 "was broken and would repeatedly operate on the event specified rather than "
7401 "iterating across all sibling events in a group."
7402 msgstr ""
7403
7404 #. type: Plain text
7405 #: build/C/man2/perf_event_open.2:2740
7406 msgid ""
7407 "From Linux 3.4 to Linux 3.11, the mmap I<cap_usr_rdpmc> and I<cap_usr_time> "
7408 "bits mapped to the same location.  Code should migrate to the new "
7409 "I<cap_user_rdpmc> and I<cap_user_time> fields instead."
7410 msgstr ""
7411
7412 #. type: Plain text
7413 #: build/C/man2/perf_event_open.2:2745
7414 msgid ""
7415 "Always double-check your results! Various generalized events have had wrong "
7416 "values.  For example, retired branches measured the wrong thing on AMD "
7417 "machines until Linux 2.6.35."
7418 msgstr ""
7419
7420 #. type: SH
7421 #: build/C/man2/perf_event_open.2:2745 build/C/man2/process_vm_readv.2:311
7422 #: build/C/man2/splice.2:237 build/C/man2/tee.2:136
7423 #, no-wrap
7424 msgid "EXAMPLE"
7425 msgstr "例"
7426
7427 #. type: Plain text
7428 #: build/C/man2/perf_event_open.2:2749
7429 msgid ""
7430 "The following is a short example that measures the total instruction count "
7431 "of a call to B<printf>(3)."
7432 msgstr ""
7433
7434 #. type: Plain text
7435 #: build/C/man2/perf_event_open.2:2758
7436 #, no-wrap
7437 msgid ""
7438 "#include E<lt>stdlib.hE<gt>\n"
7439 "#include E<lt>stdio.hE<gt>\n"
7440 "#include E<lt>unistd.hE<gt>\n"
7441 "#include E<lt>string.hE<gt>\n"
7442 "#include E<lt>sys/ioctl.hE<gt>\n"
7443 "#include E<lt>linux/perf_event.hE<gt>\n"
7444 "#include E<lt>asm/unistd.hE<gt>\n"
7445 msgstr ""
7446 "#include E<lt>stdlib.hE<gt>\n"
7447 "#include E<lt>stdio.hE<gt>\n"
7448 "#include E<lt>unistd.hE<gt>\n"
7449 "#include E<lt>string.hE<gt>\n"
7450 "#include E<lt>sys/ioctl.hE<gt>\n"
7451 "#include E<lt>linux/perf_event.hE<gt>\n"
7452 "#include E<lt>asm/unistd.hE<gt>\n"
7453
7454 #. type: Plain text
7455 #: build/C/man2/perf_event_open.2:2764
7456 #, no-wrap
7457 msgid ""
7458 "static long\n"
7459 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7460 "                int cpu, int group_fd, unsigned long flags)\n"
7461 "{\n"
7462 "    int ret;\n"
7463 msgstr ""
7464 "static long\n"
7465 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7466 "                int cpu, int group_fd, unsigned long flags)\n"
7467 "{\n"
7468 "    int ret;\n"
7469
7470 #. type: Plain text
7471 #: build/C/man2/perf_event_open.2:2769
7472 #, no-wrap
7473 msgid ""
7474 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7475 "                   group_fd, flags);\n"
7476 "    return ret;\n"
7477 "}\n"
7478 msgstr ""
7479 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7480 "                   group_fd, flags);\n"
7481 "    return ret;\n"
7482 "}\n"
7483
7484 #. type: Plain text
7485 #: build/C/man2/perf_event_open.2:2776
7486 #, no-wrap
7487 msgid ""
7488 "int\n"
7489 "main(int argc, char **argv)\n"
7490 "{\n"
7491 "    struct perf_event_attr pe;\n"
7492 "    long long count;\n"
7493 "    int fd;\n"
7494 msgstr ""
7495 "int\n"
7496 "main(int argc, char **argv)\n"
7497 "{\n"
7498 "    struct perf_event_attr pe;\n"
7499 "    long long count;\n"
7500 "    int fd;\n"
7501
7502 #. type: Plain text
7503 #: build/C/man2/perf_event_open.2:2784
7504 #, no-wrap
7505 msgid ""
7506 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7507 "    pe.type = PERF_TYPE_HARDWARE;\n"
7508 "    pe.size = sizeof(struct perf_event_attr);\n"
7509 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7510 "    pe.disabled = 1;\n"
7511 "    pe.exclude_kernel = 1;\n"
7512 "    pe.exclude_hv = 1;\n"
7513 msgstr ""
7514 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7515 "    pe.type = PERF_TYPE_HARDWARE;\n"
7516 "    pe.size = sizeof(struct perf_event_attr);\n"
7517 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7518 "    pe.disabled = 1;\n"
7519 "    pe.exclude_kernel = 1;\n"
7520 "    pe.exclude_hv = 1;\n"
7521
7522 #. type: Plain text
7523 #: build/C/man2/perf_event_open.2:2790
7524 #, no-wrap
7525 msgid ""
7526 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7527 "    if (fd == -1) {\n"
7528 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7529 "       exit(EXIT_FAILURE);\n"
7530 "    }\n"
7531 msgstr ""
7532 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7533 "    if (fd == -1) {\n"
7534 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7535 "       exit(EXIT_FAILURE);\n"
7536 "    }\n"
7537
7538 #. type: Plain text
7539 #: build/C/man2/perf_event_open.2:2793
7540 #, no-wrap
7541 msgid ""
7542 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7543 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7544 msgstr ""
7545 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7546 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7547
7548 #. type: Plain text
7549 #: build/C/man2/perf_event_open.2:2795
7550 #, no-wrap
7551 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
7552 msgstr "    printf(\"Measuring instruction count for this printf\\en\");\n"
7553
7554 #. type: Plain text
7555 #: build/C/man2/perf_event_open.2:2798
7556 #, no-wrap
7557 msgid ""
7558 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7559 "    read(fd, &count, sizeof(long long));\n"
7560 msgstr ""
7561 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7562 "    read(fd, &count, sizeof(long long));\n"
7563
7564 #. type: Plain text
7565 #: build/C/man2/perf_event_open.2:2800
7566 #, no-wrap
7567 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
7568 msgstr "    printf(\"Used %lld instructions\\en\", count);\n"
7569
7570 #. type: Plain text
7571 #: build/C/man2/perf_event_open.2:2803
7572 #, no-wrap
7573 msgid ""
7574 "    close(fd);\n"
7575 "}\n"
7576 msgstr ""
7577 "    close(fd);\n"
7578 "}\n"
7579
7580 #. type: Plain text
7581 #: build/C/man2/perf_event_open.2:2810
7582 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7583 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7584
7585 #. type: TH
7586 #: build/C/man2/perfmonctl.2:27
7587 #, no-wrap
7588 msgid "PERFMONCTL"
7589 msgstr "PERFMONCTL"
7590
7591 #. type: TH
7592 #: build/C/man2/perfmonctl.2:27
7593 #, no-wrap
7594 msgid "2013-02-13"
7595 msgstr "2013-02-13"
7596
7597 #. type: Plain text
7598 #: build/C/man2/perfmonctl.2:30
7599 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
7600 msgstr ""
7601
7602 #. type: Plain text
7603 #: build/C/man2/perfmonctl.2:34
7604 #, no-wrap
7605 msgid ""
7606 "B<#include E<lt>syscall.hE<gt>>\n"
7607 "B<#include E<lt>perfmon.hE<gt>>\n"
7608 msgstr ""
7609 "B<#include E<lt>syscall.hE<gt>>\n"
7610 "B<#include E<lt>perfmon.hE<gt>>\n"
7611
7612 #. type: Plain text
7613 #: build/C/man2/perfmonctl.2:36
7614 #, no-wrap
7615 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7616 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7617
7618 #. type: Plain text
7619 #: build/C/man2/perfmonctl.2:47
7620 msgid ""
7621 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
7622 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
7623 "monitoring data) registers and PMC (performance monitoring control) "
7624 "registers, which gather hardware statistics."
7625 msgstr ""
7626
7627 #. type: Plain text
7628 #: build/C/man2/perfmonctl.2:57
7629 msgid ""
7630 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
7631 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
7632 "I<fd> argument specifies the perfmon context to operate on."
7633 msgstr ""
7634
7635 #. type: Plain text
7636 #: build/C/man2/perfmonctl.2:61
7637 msgid "Supported values for I<cmd> are:"
7638 msgstr ""
7639
7640 #. type: TP
7641 #: build/C/man2/perfmonctl.2:61
7642 #, no-wrap
7643 msgid "B<PFM_CREATE_CONTEXT>"
7644 msgstr "B<PFM_CREATE_CONTEXT>"
7645
7646 #. type: Plain text
7647 #: build/C/man2/perfmonctl.2:65
7648 #, no-wrap
7649 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
7650 msgstr ""
7651
7652 #. type: Plain text
7653 #: build/C/man2/perfmonctl.2:67
7654 msgid "Set up a context."
7655 msgstr ""
7656
7657 #. type: Plain text
7658 #: build/C/man2/perfmonctl.2:74
7659 msgid ""
7660 "The I<fd> parameter is ignored.  A new perfmon context is created as "
7661 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
7662 "E<gt>ctx_fd>."
7663 msgstr ""
7664
7665 #. type: Plain text
7666 #: build/C/man2/perfmonctl.2:86
7667 msgid ""
7668 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
7669 "can be used to read event notifications (type I<pfm_msg_t>)  using "
7670 "B<read>(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), "
7671 "and B<epoll>(7)."
7672 msgstr ""
7673
7674 #. type: Plain text
7675 #: build/C/man2/perfmonctl.2:90
7676 msgid ""
7677 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
7678 msgstr ""
7679
7680 #. type: TP
7681 #: build/C/man2/perfmonctl.2:90
7682 #, no-wrap
7683 msgid "B<PFM_WRITE_PMCS>"
7684 msgstr "B<PFM_WRITE_PMCS>"
7685
7686 #. type: Plain text
7687 #: build/C/man2/perfmonctl.2:95
7688 #, no-wrap
7689 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
7690 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
7691
7692 #. type: Plain text
7693 #: build/C/man2/perfmonctl.2:97
7694 msgid "Set PMC registers."
7695 msgstr ""
7696
7697 #. type: TP
7698 #: build/C/man2/perfmonctl.2:97
7699 #, no-wrap
7700 msgid "B<PFM_WRITE_PMDS>"
7701 msgstr "B<PFM_WRITE_PMDS>"
7702
7703 #. type: Plain text
7704 #: build/C/man2/perfmonctl.2:101
7705 #, no-wrap
7706 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7707 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7708
7709 #.  pfm_write_pmds()
7710 #. type: Plain text
7711 #: build/C/man2/perfmonctl.2:104
7712 msgid "Set PMD registers."
7713 msgstr ""
7714
7715 #. type: TP
7716 #: build/C/man2/perfmonctl.2:104
7717 #, no-wrap
7718 msgid "B<PFM_READ_PMDS>"
7719 msgstr "B<PFM_READ_PMDS>"
7720
7721 #. type: Plain text
7722 #: build/C/man2/perfmonctl.2:109
7723 #, no-wrap
7724 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7725 msgstr "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7726
7727 #. type: Plain text
7728 #: build/C/man2/perfmonctl.2:111
7729 msgid "Read PMD registers."
7730 msgstr ""
7731
7732 #. type: TP
7733 #: build/C/man2/perfmonctl.2:111
7734 #, no-wrap
7735 msgid "B<PFM_START>"
7736 msgstr "B<PFM_START>"
7737
7738 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
7739 #. type: Plain text
7740 #: build/C/man2/perfmonctl.2:117
7741 #, no-wrap
7742 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
7743 msgstr "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
7744
7745 #. type: Plain text
7746 #: build/C/man2/perfmonctl.2:119
7747 msgid "Start monitoring."
7748 msgstr ""
7749
7750 #. type: TP
7751 #: build/C/man2/perfmonctl.2:119
7752 #, no-wrap
7753 msgid "B<PFM_STOP>"
7754 msgstr "B<PFM_STOP>"
7755
7756 #. type: Plain text
7757 #: build/C/man2/perfmonctl.2:124
7758 #, no-wrap
7759 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
7760 msgstr "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
7761
7762 #. type: Plain text
7763 #: build/C/man2/perfmonctl.2:126
7764 msgid "Stop monitoring."
7765 msgstr ""
7766
7767 #. type: TP
7768 #: build/C/man2/perfmonctl.2:126
7769 #, no-wrap
7770 msgid "B<PFM_LOAD_CONTEXT>"
7771 msgstr "B<PFM_LOAD_CONTEXT>"
7772
7773 #. type: Plain text
7774 #: build/C/man2/perfmonctl.2:131
7775 #, no-wrap
7776 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
7777 msgstr "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
7778
7779 #. type: Plain text
7780 #: build/C/man2/perfmonctl.2:133
7781 msgid "Attach the context to a thread."
7782 msgstr ""
7783
7784 #. type: TP
7785 #: build/C/man2/perfmonctl.2:133
7786 #, no-wrap
7787 msgid "B<PFM_UNLOAD_CONTEXT>"
7788 msgstr "B<PFM_UNLOAD_CONTEXT>"
7789
7790 #. type: Plain text
7791 #: build/C/man2/perfmonctl.2:138
7792 #, no-wrap
7793 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
7794 msgstr "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
7795
7796 #. type: Plain text
7797 #: build/C/man2/perfmonctl.2:140
7798 msgid "Detach the context from a thread."
7799 msgstr ""
7800
7801 #. type: TP
7802 #: build/C/man2/perfmonctl.2:140
7803 #, no-wrap
7804 msgid "B<PFM_RESTART>"
7805 msgstr "B<PFM_RESTART>"
7806
7807 #. type: Plain text
7808 #: build/C/man2/perfmonctl.2:145
7809 #, no-wrap
7810 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
7811 msgstr "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
7812
7813 #. type: Plain text
7814 #: build/C/man2/perfmonctl.2:147
7815 msgid "Restart monitoring after receiving an overflow notification."
7816 msgstr ""
7817
7818 #. type: TP
7819 #: build/C/man2/perfmonctl.2:147
7820 #, no-wrap
7821 msgid "B<PFM_GET_FEATURES>"
7822 msgstr "B<PFM_GET_FEATURES>"
7823
7824 #. type: Plain text
7825 #: build/C/man2/perfmonctl.2:152
7826 #, no-wrap
7827 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
7828 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
7829
7830 #. type: TP
7831 #: build/C/man2/perfmonctl.2:153
7832 #, no-wrap
7833 msgid "B<PFM_DEBUG>"
7834 msgstr "B<PFM_DEBUG>"
7835
7836 #. type: Plain text
7837 #: build/C/man2/perfmonctl.2:158
7838 #, no-wrap
7839 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
7840 msgstr "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
7841
7842 #. type: Plain text
7843 #: build/C/man2/perfmonctl.2:162
7844 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
7845 msgstr ""
7846
7847 #. type: TP
7848 #: build/C/man2/perfmonctl.2:162
7849 #, no-wrap
7850 msgid "B<PFM_GET_PMC_RESET_VAL>"
7851 msgstr "B<PFM_GET_PMC_RESET_VAL>"
7852
7853 #. type: Plain text
7854 #: build/C/man2/perfmonctl.2:167
7855 #, no-wrap
7856 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
7857 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
7858
7859 #
7860 #
7861 #
7862 #.  .TP
7863 #.  .B PFM_CREATE_EVTSETS
7864 #.  create or modify event sets
7865 #.  .nf
7866 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
7867 #.  .fi
7868 #.  .TP
7869 #.  .B PFM_DELETE_EVTSETS
7870 #.  delete event sets
7871 #.  .nf
7872 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
7873 #.  .fi
7874 #.  .TP
7875 #.  .B PFM_GETINFO_EVTSETS
7876 #.  get information about event sets
7877 #.  .nf
7878 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
7879 #.  .fi
7880 #. type: Plain text
7881 #: build/C/man2/perfmonctl.2:190
7882 msgid "Reset PMC registers to default values."
7883 msgstr ""
7884
7885 #. type: Plain text
7886 #: build/C/man2/perfmonctl.2:196
7887 msgid ""
7888 "B<perfmonctl>()  returns zero when the operation is successful.  On error, "
7889 "-1 is returned and I<errno> is set to indicate the cause of the error."
7890 msgstr ""
7891
7892 #. type: Plain text
7893 #: build/C/man2/perfmonctl.2:199
7894 msgid "B<perfmonctl>()  is available since Linux 2.4."
7895 msgstr ""
7896
7897 #. type: Plain text
7898 #: build/C/man2/perfmonctl.2:202
7899 msgid ""
7900 "B<perfmonctl>()  is Linux-specific and is available only on the IA-64 "
7901 "architecture."
7902 msgstr ""
7903
7904 #. type: Plain text
7905 #: build/C/man2/perfmonctl.2:207
7906 msgid "B<gprof>(1)"
7907 msgstr "B<gprof>(1)"
7908
7909 #. type: Plain text
7910 #: build/C/man2/perfmonctl.2:209
7911 msgid "The perfmon2 interface specification"
7912 msgstr ""
7913
7914 #. type: TH
7915 #: build/C/man2/personality.2:32
7916 #, no-wrap
7917 msgid "PERSONALITY"
7918 msgstr "PERSONALITY"
7919
7920 #. type: TH
7921 #: build/C/man2/personality.2:32
7922 #, no-wrap
7923 msgid "2014-04-15"
7924 msgstr "2014-04-15"
7925
7926 #. type: Plain text
7927 #: build/C/man2/personality.2:35
7928 msgid "personality - set the process execution domain"
7929 msgstr "personality - プロセスを実行するドメインを設定する"
7930
7931 #. type: Plain text
7932 #: build/C/man2/personality.2:37
7933 msgid "B<#include E<lt>sys/personality.hE<gt>>"
7934 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
7935
7936 #. type: Plain text
7937 #: build/C/man2/personality.2:39
7938 msgid "B<int personality(unsigned long >I<persona>B<);>"
7939 msgstr "B<int personality(unsigned long >I<persona>B<);>"
7940
7941 #. type: Plain text
7942 #: build/C/man2/personality.2:47
7943 msgid ""
7944 "Linux supports different execution domains, or personalities, for each "
7945 "process.  Among other things, execution domains tell Linux how to map signal "
7946 "numbers into signal actions.  The execution domain system allows Linux to "
7947 "provide limited support for binaries compiled under other UNIX-like "
7948 "operating systems."
7949 msgstr ""
7950 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
7951 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
7952 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
7953 "Linux は、 他の UNIX 風のオペレーティングシステムでコンパイルされたバイナリに"
7954 "対する限定的なサポートを提供している。"
7955
7956 #. type: Plain text
7957 #: build/C/man2/personality.2:59
7958 msgid ""
7959 "If I<persona> is not 0xffffffff, then B<personality>()  sets the caller's "
7960 "execution domain to the value specified by I<persona>.  Specifying "
7961 "I<persona> as 0xffffffff provides a way of retrieving the current persona "
7962 "without changing it."
7963 msgstr ""
7964 "I<persona> が 0xffffffff 以外の場合、 B<personality>() は呼び出し元の実行ドメ"
7965 "インを I<persona> で指定された値に設定する。 I<persona> に 0xffffffff を指定"
7966 "すると、変更を行わず、現在の persona 値を取得できる。"
7967
7968 #. type: Plain text
7969 #: build/C/man2/personality.2:62
7970 msgid ""
7971 "A list of the available execution domains can be found in I<E<lt>sys/"
7972 "personality.hE<gt>>."
7973 msgstr ""
7974 "利用可能な実行ドメインのリストは I<E<lt>sys/personality.hE<gt>> にある。"
7975
7976 #. type: Plain text
7977 #: build/C/man2/personality.2:69
7978 msgid ""
7979 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
7980 "and I<errno> is set appropriately."
7981 msgstr ""
7982 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
7983 "I<errno> が適切に設定される。"
7984
7985 #. type: Plain text
7986 #: build/C/man2/personality.2:73
7987 msgid "The kernel was unable to change the personality."
7988 msgstr "カーネルがパーソナリティを変更できなかった。"
7989
7990 #. type: Plain text
7991 #: build/C/man2/personality.2:77
7992 msgid ""
7993 "B<personality>()  is Linux-specific and should not be used in programs "
7994 "intended to be portable."
7995 msgstr ""
7996 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
7997 "はない。"
7998
7999 #. type: TH
8000 #: build/C/man2/pivot_root.2:10
8001 #, no-wrap
8002 msgid "PIVOT_ROOT"
8003 msgstr "PIVOT_ROOT"
8004
8005 #. type: Plain text
8006 #: build/C/man2/pivot_root.2:13
8007 msgid "pivot_root - change the root filesystem"
8008 msgstr "pivot_root - root ファイルシステムを変更する"
8009
8010 #. type: Plain text
8011 #: build/C/man2/pivot_root.2:15
8012 msgid ""
8013 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8014 msgstr ""
8015 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8016
8017 #.  The
8018 #.  .B CAP_SYS_ADMIN
8019 #.  capability is required.
8020 #. type: Plain text
8021 #: build/C/man2/pivot_root.2:27
8022 msgid ""
8023 "B<pivot_root>()  moves the root filesystem of the calling process to the "
8024 "directory I<put_old> and makes I<new_root> the new root filesystem of the "
8025 "calling process."
8026 msgstr ""
8027 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
8028 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
8029 "ルシステムにする。"
8030
8031 #. type: Plain text
8032 #: build/C/man2/pivot_root.2:34
8033 msgid ""
8034 "The typical use of B<pivot_root>()  is during system startup, when the "
8035 "system mounts a temporary root filesystem (e.g., an B<initrd>), then mounts "
8036 "the real root filesystem, and eventually turns the latter into the current "
8037 "root of all relevant processes or threads."
8038 msgstr ""
8039 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
8040 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
8041 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
8042 "レント root に変更するような場合である。"
8043
8044 #. type: Plain text
8045 #: build/C/man2/pivot_root.2:46
8046 msgid ""
8047 "B<pivot_root>()  may or may not change the current root and the current "
8048 "working directory of any processes or threads which use the old root "
8049 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
8050 "root or current working directory at the old root operate correctly in "
8051 "either case.  An easy way to ensure this is to change their root and current "
8052 "working directory to I<new_root> before invoking B<pivot_root>()."
8053 msgstr ""
8054 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
8055 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
8056 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
8057 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
8058 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
8059 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
8060 "更しておくことである。"
8061
8062 #. type: Plain text
8063 #: build/C/man2/pivot_root.2:64
8064 msgid ""
8065 "The paragraph above is intentionally vague because the implementation of "
8066 "B<pivot_root>()  may change in the future.  At the time of writing, "
8067 "B<pivot_root>()  changes root and current working directory of each process "
8068 "or thread to I<new_root> if they point to the old root directory.  This is "
8069 "necessary in order to prevent kernel threads from keeping the old root "
8070 "directory busy with their root and current working directory, even if they "
8071 "never access the filesystem in any way.  In the future, there may be a "
8072 "mechanism for kernel threads to explicitly relinquish any access to the "
8073 "filesystem, such that this fairly intrusive mechanism can be removed from "
8074 "B<pivot_root>()."
8075 msgstr ""
8076 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
8077 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
8078 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
8079 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
8080 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
8081 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
8082 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
8083 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
8084 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
8085 "除されるかもしれない。"
8086
8087 #. type: Plain text
8088 #: build/C/man2/pivot_root.2:72
8089 msgid ""
8090 "Note that this also applies to the calling process: B<pivot_root>()  may or "
8091 "may not affect its current working directory.  It is therefore recommended "
8092 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
8093 msgstr ""
8094 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
8095 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
8096 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
8097
8098 #. type: Plain text
8099 #: build/C/man2/pivot_root.2:74
8100 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
8101 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
8102
8103 #. type: IP
8104 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
8105 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
8106 #, no-wrap
8107 msgid "-"
8108 msgstr "-"
8109
8110 #. type: Plain text
8111 #: build/C/man2/pivot_root.2:76
8112 msgid "They must be directories."
8113 msgstr "ディレクトリでなければならない。"
8114
8115 #. type: Plain text
8116 #: build/C/man2/pivot_root.2:79
8117 msgid ""
8118 "I<new_root> and I<put_old> must not be on the same filesystem as the current "
8119 "root."
8120 msgstr ""
8121 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
8122 "ない。"
8123
8124 #. type: Plain text
8125 #: build/C/man2/pivot_root.2:83
8126 msgid ""
8127 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
8128 "of I</..> to the string pointed to by I<put_old> must yield the same "
8129 "directory as I<new_root>."
8130 msgstr ""
8131 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
8132 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
8133 "リが得られなければならない。"
8134
8135 #. type: Plain text
8136 #: build/C/man2/pivot_root.2:85
8137 msgid "No other filesystem may be mounted on I<put_old>."
8138 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
8139
8140 #. type: Plain text
8141 #: build/C/man2/pivot_root.2:89
8142 msgid "See also B<pivot_root>(8)  for additional usage examples."
8143 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
8144
8145 #. type: Plain text
8146 #: build/C/man2/pivot_root.2:96
8147 msgid ""
8148 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
8149 "B<pivot_root>(), see also below), not the old root directory, but the mount "
8150 "point of that filesystem is mounted on I<put_old>."
8151 msgstr ""
8152 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
8153 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
8154 "テムのマウントポイントが I<put_old> にマウントされる。"
8155
8156 #. type: Plain text
8157 #: build/C/man2/pivot_root.2:101
8158 msgid ""
8159 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
8160 "mounts> will show the mount point of the filesystem containing I<new_root> "
8161 "as root (I</>)."
8162 msgstr ""
8163 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
8164 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
8165 "る。"
8166
8167 #. type: Plain text
8168 #: build/C/man2/pivot_root.2:110
8169 msgid ""
8170 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
8171 "B<stat>(2).  Additionally, it may return:"
8172 msgstr ""
8173 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
8174 "性がある。さらに以下を返すことがある:"
8175
8176 #. type: Plain text
8177 #: build/C/man2/pivot_root.2:114
8178 msgid ""
8179 "I<new_root> or I<put_old> are on the current root filesystem, or a "
8180 "filesystem is already mounted on I<put_old>."
8181 msgstr ""
8182 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
8183 "に I<put_old> になんらかのファイルシステムがマウントされている。"
8184
8185 #. type: Plain text
8186 #: build/C/man2/pivot_root.2:117
8187 msgid "I<put_old> is not underneath I<new_root>."
8188 msgstr "I<put_old> が I<new_root> の下層にない。"
8189
8190 #. type: TP
8191 #: build/C/man2/pivot_root.2:117
8192 #, no-wrap
8193 msgid "B<ENOTDIR>"
8194 msgstr "B<ENOTDIR>"
8195
8196 #. type: Plain text
8197 #: build/C/man2/pivot_root.2:120
8198 msgid "I<new_root> or I<put_old> is not a directory."
8199 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
8200
8201 #. type: Plain text
8202 #: build/C/man2/pivot_root.2:125
8203 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
8204 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
8205
8206 #. type: Plain text
8207 #: build/C/man2/pivot_root.2:128
8208 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
8209 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
8210
8211 #. type: Plain text
8212 #: build/C/man2/pivot_root.2:131
8213 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
8214 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
8215
8216 #. type: Plain text
8217 #: build/C/man2/pivot_root.2:138
8218 msgid ""
8219 "B<pivot_root>()  should not have to change root and current working "
8220 "directory of all other processes in the system."
8221 msgstr ""
8222 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
8223 "ディレクトリとを変更しなくてもよいはずである。"
8224
8225 #. type: Plain text
8226 #: build/C/man2/pivot_root.2:143
8227 msgid ""
8228 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
8229 "insanity."
8230 msgstr ""
8231 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
8232 "からない状態になってしまうだろう"
8233
8234 #. type: Plain text
8235 #: build/C/man2/pivot_root.2:149
8236 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8237 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8238
8239 #. type: TH
8240 #: build/C/man2/process_vm_readv.2:29
8241 #, no-wrap
8242 msgid "PROCESS_VM_READV"
8243 msgstr "PROCESS_VM_READV"
8244
8245 #. type: Plain text
8246 #: build/C/man2/process_vm_readv.2:32
8247 msgid ""
8248 "process_vm_readv, process_vm_writev - transfer data between process address "
8249 "spaces"
8250 msgstr ""
8251 "process_vm_readv, process_vm_writev - プロセスのアドレス空間間でデータを転送"
8252 "する"
8253
8254 #. type: Plain text
8255 #: build/C/man2/process_vm_readv.2:35
8256 #, no-wrap
8257 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
8258 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
8259
8260 #. type: Plain text
8261 #: build/C/man2/process_vm_readv.2:42
8262 #, no-wrap
8263 msgid ""
8264 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8265 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8266 "B<                         unsigned long >I<liovcnt>B<,>\n"
8267 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8268 "B<                         unsigned long >I<riovcnt>B<,>\n"
8269 "B<                         unsigned long >I<flags>B<);>\n"
8270 msgstr ""
8271 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8272 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8273 "B<                         unsigned long >I<liovcnt>B<,>\n"
8274 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8275 "B<                         unsigned long >I<riovcnt>B<,>\n"
8276 "B<                         unsigned long >I<flags>B<);>\n"
8277
8278 #. type: Plain text
8279 #: build/C/man2/process_vm_readv.2:49
8280 #, no-wrap
8281 msgid ""
8282 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8283 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8284 "B<                          unsigned long >I<liovcnt>B<,>\n"
8285 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8286 "B<                          unsigned long >I<riovcnt>B<,>\n"
8287 "B<                          unsigned long >I<flags>B<);>\n"
8288 msgstr ""
8289 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8290 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8291 "B<                          unsigned long >I<liovcnt>B<,>\n"
8292 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8293 "B<                          unsigned long >I<riovcnt>B<,>\n"
8294 "B<                          unsigned long >I<flags>B<);>\n"
8295
8296 #. type: Plain text
8297 #: build/C/man2/process_vm_readv.2:54
8298 msgid ""
8299 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
8300 msgstr ""
8301
8302 #. type: Plain text
8303 #: build/C/man2/process_vm_readv.2:58
8304 msgid "B<process_vm_readv>(), B<process_vm_writev>():"
8305 msgstr "B<process_vm_readv>(), B<process_vm_writev>():"
8306
8307 #. type: Plain text
8308 #: build/C/man2/process_vm_readv.2:62
8309 msgid "B<_GNU_SOURCE>"
8310 msgstr "B<_GNU_SOURCE>"
8311
8312 #. type: Plain text
8313 #: build/C/man2/process_vm_readv.2:73
8314 msgid ""
8315 "These system calls transfer data between the address space of the calling "
8316 "process (\"the local process\") and the process identified by I<pid> (\"the "
8317 "remote process\").  The data moves directly between the address spaces of "
8318 "the two processes, without passing through kernel space."
8319 msgstr ""
8320
8321 #. type: Plain text
8322 #: build/C/man2/process_vm_readv.2:98
8323 msgid ""
8324 "The B<process_vm_readv>()  system call transfers data from the remote "
8325 "process to the local process.  The data to be transferred is identified by "
8326 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
8327 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
8328 "the number of elements in I<remote_iov>.  The data is transferred to the "
8329 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
8330 "pointer to an array describing address ranges in the calling process, and "
8331 "I<liovcnt> specifies the number of elements in I<local_iov>."
8332 msgstr ""
8333
8334 #. type: Plain text
8335 #: build/C/man2/process_vm_readv.2:112
8336 msgid ""
8337 "The B<process_vm_writev>()  system call is the converse of "
8338 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
8339 "remote process.  Other than the direction of the transfer, the arguments "
8340 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
8341 "meaning as for B<process_vm_readv>()."
8342 msgstr ""
8343
8344 #. type: Plain text
8345 #: build/C/man2/process_vm_readv.2:122
8346 msgid ""
8347 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
8348 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
8349 msgstr ""
8350 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
8351 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
8352 "されている:"
8353
8354 #. type: Plain text
8355 #: build/C/man2/process_vm_readv.2:129
8356 #, no-wrap
8357 msgid ""
8358 "struct iovec {\n"
8359 "    void  *iov_base;    /* Starting address */\n"
8360 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8361 "};\n"
8362 msgstr ""
8363 "struct iovec {\n"
8364 "    void  *iov_base;    /* Starting address */\n"
8365 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8366 "};\n"
8367
8368 #. type: Plain text
8369 #: build/C/man2/process_vm_readv.2:145
8370 msgid ""
8371 "Buffers are processed in array order.  This means that "
8372 "B<process_vm_readv>()  completely fills I<local_iov[0]> before proceeding to "
8373 "I<local_iov[1]>, and so on.  Likewise, I<remote_iov[0]> is completely read "
8374 "before proceeding to I<remote_iov[1]>, and so on."
8375 msgstr ""
8376 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
8377 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
8378 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
8379 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
8380 "以降も同様である。"
8381
8382 #. type: Plain text
8383 #: build/C/man2/process_vm_readv.2:156
8384 msgid ""
8385 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
8386 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
8387 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
8388 msgstr ""
8389
8390 #. type: Plain text
8391 #: build/C/man2/process_vm_readv.2:164
8392 msgid ""
8393 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
8394 "have to be the same.  Thus, it is possible to split a single local buffer "
8395 "into multiple remote buffers, or vice versa."
8396 msgstr ""
8397
8398 #. type: Plain text
8399 #: build/C/man2/process_vm_readv.2:168
8400 msgid "The I<flags> argument is currently unused and must be set to 0."
8401 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
8402
8403 #.  In time, glibc might provide a wrapper that works around this limit,
8404 #.  as is done for readv()/writev()
8405 #. type: Plain text
8406 #: build/C/man2/process_vm_readv.2:181
8407 msgid ""
8408 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
8409 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
8410 "via the call I<sysconf(_SC_IOV_MAX)>)."
8411 msgstr ""
8412
8413 #. type: Plain text
8414 #: build/C/man2/process_vm_readv.2:191
8415 msgid ""
8416 "The count arguments and I<local_iov> are checked before doing any "
8417 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
8418 "addresses refer to regions that are inaccessible to the local process, none "
8419 "of the vectors will be processed and an error will be returned immediately."
8420 msgstr ""
8421
8422 #. type: Plain text
8423 #: build/C/man2/process_vm_readv.2:211
8424 msgid ""
8425 "Note, however, that these system calls do not check the memory regions in "
8426 "the remote process until just before doing the read/write.  Consequently, a "
8427 "partial read/write (see RETURN VALUE)  may result if one of the "
8428 "I<remote_iov> elements points to an invalid memory region in the remote "
8429 "process.  No further reads/writes will be attempted beyond that point.  Keep "
8430 "this in mind when attempting to read data of unknown length (such as C "
8431 "strings that are null-terminated) from a remote process, by avoiding "
8432 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
8433 "(Instead, split the remote read into two I<remote_iov> elements and have "
8434 "them merge back into a single write I<local_iov> entry.  The first read "
8435 "entry goes up to the page boundary, while the second starts on the next page "
8436 "boundary.)"
8437 msgstr ""
8438
8439 #. type: Plain text
8440 #: build/C/man2/process_vm_readv.2:225
8441 msgid ""
8442 "In order to read from or write to another process, either the caller must "
8443 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
8444 "ID, and saved set-user-ID of the remote process must match the real user ID "
8445 "of the caller I<and> the real group ID, effective group ID, and saved set-"
8446 "group-ID of the remote process must match the real group ID of the caller.  "
8447 "(The permission required is exactly the same as that required to perform a "
8448 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
8449 msgstr ""
8450
8451 #. type: Plain text
8452 #: build/C/man2/process_vm_readv.2:241
8453 msgid ""
8454 "On success, B<process_vm_readv>()  returns the number of bytes read and "
8455 "B<process_vm_writev>()  returns the number of bytes written.  This return "
8456 "value may be less than the total number of requested bytes, if a partial "
8457 "read/write occurred.  (Partial transfers apply at the granularity of "
8458 "I<iovec> elements.  These system calls won't perform a partial transfer that "
8459 "splits a single I<iovec> element.)  The caller should check the return value "
8460 "to determine whether a partial read/write occurred."
8461 msgstr ""
8462
8463 #. type: Plain text
8464 #: build/C/man2/process_vm_readv.2:245
8465 msgid "On error, -1 is returned and I<errno> is set appropriately."
8466 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
8467
8468 #. type: Plain text
8469 #: build/C/man2/process_vm_readv.2:257
8470 msgid ""
8471 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
8472 "overflows a I<ssize_t> value."
8473 msgstr ""
8474
8475 #. type: Plain text
8476 #: build/C/man2/process_vm_readv.2:261
8477 msgid "I<flags> is not 0."
8478 msgstr "I<flags> が 0 でない。"
8479
8480 #. type: Plain text
8481 #: build/C/man2/process_vm_readv.2:267
8482 msgid "I<liovcnt> or I<riovcnt> is too large."
8483 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
8484
8485 #. type: Plain text
8486 #: build/C/man2/process_vm_readv.2:272
8487 msgid ""
8488 "The memory described by I<local_iov> is outside the caller's accessible "
8489 "address space."
8490 msgstr ""
8491 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
8492 "アドレス空間の外にある。"
8493
8494 #. type: Plain text
8495 #: build/C/man2/process_vm_readv.2:278
8496 msgid ""
8497 "The memory described by I<remote_iov> is outside the accessible address "
8498 "space of the process I<pid>."
8499 msgstr ""
8500
8501 #. type: Plain text
8502 #: build/C/man2/process_vm_readv.2:283
8503 msgid ""
8504 "Could not allocate memory for internal copies of the I<iovec> structures."
8505 msgstr ""
8506
8507 #. type: Plain text
8508 #: build/C/man2/process_vm_readv.2:287
8509 msgid ""
8510 "The caller does not have permission to access the address space of the "
8511 "process I<pid>."
8512 msgstr ""
8513 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
8514 "持っていない。"
8515
8516 #. type: Plain text
8517 #: build/C/man2/process_vm_readv.2:292
8518 msgid "No process with ID I<pid> exists."
8519 msgstr "ID が I<pid> のプロセスが存在しない。"
8520
8521 #. type: Plain text
8522 #: build/C/man2/process_vm_readv.2:295
8523 msgid ""
8524 "These system calls were added in Linux 3.2.  Support is provided in glibc "
8525 "since version 2.15."
8526 msgstr ""
8527 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
8528 "サポートは glibc バージョン 2.15 以降で提供されている。"
8529
8530 #. type: Plain text
8531 #: build/C/man2/process_vm_readv.2:297
8532 msgid "These system calls are nonstandard Linux extensions."
8533 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
8534
8535 #. type: Plain text
8536 #: build/C/man2/process_vm_readv.2:303
8537 msgid ""
8538 "The data transfers performed by B<process_vm_readv>()  and "
8539 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
8540 msgstr ""
8541
8542 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
8543 #.  See also some benchmarks at http://lwn.net/Articles/405284/
8544 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
8545 #. type: Plain text
8546 #: build/C/man2/process_vm_readv.2:311
8547 msgid ""
8548 "These system calls were designed to permit fast message passing by allowing "
8549 "messages to be exchanged with a single copy operation (rather than the "
8550 "double copy that would be required when using, for example, shared memory or "
8551 "pipes)."
8552 msgstr ""
8553
8554 #. type: Plain text
8555 #: build/C/man2/process_vm_readv.2:319
8556 msgid ""
8557 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
8558 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
8559 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
8560 msgstr ""
8561
8562 #. type: Plain text
8563 #: build/C/man2/process_vm_readv.2:322
8564 #, no-wrap
8565 msgid "#include E<lt>sys/uio.hE<gt>\n"
8566 msgstr "#include E<lt>sys/uio.hE<gt>\n"
8567
8568 #. type: Plain text
8569 #: build/C/man2/process_vm_readv.2:332
8570 #, no-wrap
8571 msgid ""
8572 "int\n"
8573 "main(void)\n"
8574 "{\n"
8575 "    struct iovec local[2];\n"
8576 "    struct iovec remote[1];\n"
8577 "    char buf1[10];\n"
8578 "    char buf2[10];\n"
8579 "    ssize_t nread;\n"
8580 "    pid_t pid = 10;             /* PID of remote process */\n"
8581 msgstr ""
8582 "int\n"
8583 "main(void)\n"
8584 "{\n"
8585 "    struct iovec local[2];\n"
8586 "    struct iovec remote[1];\n"
8587 "    char buf1[10];\n"
8588 "    char buf2[10];\n"
8589 "    ssize_t nread;\n"
8590 "    pid_t pid = 10;             /* PID of remote process */\n"
8591
8592 #. type: Plain text
8593 #: build/C/man2/process_vm_readv.2:339
8594 #, no-wrap
8595 msgid ""
8596 "    local[0].iov_base = buf1;\n"
8597 "    local[0].iov_len = 10;\n"
8598 "    local[1].iov_base = buf2;\n"
8599 "    local[1].iov_len = 10;\n"
8600 "    remote[0].iov_base = (void *) 0x10000;\n"
8601 "    remote[0].iov_len = 20;\n"
8602 msgstr ""
8603 "    local[0].iov_base = buf1;\n"
8604 "    local[0].iov_len = 10;\n"
8605 "    local[1].iov_base = buf2;\n"
8606 "    local[1].iov_len = 10;\n"
8607 "    remote[0].iov_base = (void *) 0x10000;\n"
8608 "    remote[0].iov_len = 20;\n"
8609
8610 #. type: Plain text
8611 #: build/C/man2/process_vm_readv.2:346
8612 #, no-wrap
8613 msgid ""
8614 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
8615 "    if (nread != 20)\n"
8616 "        return 1;\n"
8617 "    else\n"
8618 "        return 0;\n"
8619 "}\n"
8620 msgstr ""
8621 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
8622 "    if (nread != 20)\n"
8623 "        return 1;\n"
8624 "    else\n"
8625 "        return 0;\n"
8626 "}\n"
8627
8628 #. type: Plain text
8629 #: build/C/man2/process_vm_readv.2:350
8630 msgid "B<readv>(2), B<writev>(2)"
8631 msgstr "B<readv>(2), B<writev>(2)"
8632
8633 #. type: TH
8634 #: build/C/man2/ptrace.2:44
8635 #, no-wrap
8636 msgid "PTRACE"
8637 msgstr "PTRACE"
8638
8639 #. type: Plain text
8640 #: build/C/man2/ptrace.2:47
8641 msgid "ptrace - process trace"
8642 msgstr "ptrace - プロセスのトレース"
8643
8644 #. type: Plain text
8645 #: build/C/man2/ptrace.2:50
8646 #, no-wrap
8647 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
8648 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
8649
8650 #. type: Plain text
8651 #: build/C/man2/ptrace.2:53
8652 #, no-wrap
8653 msgid ""
8654 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
8655 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
8656 msgstr ""
8657 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
8658 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
8659
8660 #. type: Plain text
8661 #: build/C/man2/ptrace.2:62
8662 #, fuzzy
8663 #| msgid ""
8664 #| "The B<ptrace>()  system call provides a means by which a parent process "
8665 #| "may observe and control the execution of another process, and examine and "
8666 #| "change its core image and registers.  It is primarily used to implement "
8667 #| "breakpoint debugging and system call tracing."
8668 msgid ""
8669 "The B<ptrace>()  system call provides a means by which one process (the "
8670 "\"tracer\")  may observe and control the execution of another process (the "
8671 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
8672 "is primarily used to implement breakpoint debugging and system call tracing."
8673 msgstr ""
8674 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
8675 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
8676 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
8677 "コールのトレースを 実装するのに用いられる。"
8678
8679 #. type: Plain text
8680 #: build/C/man2/ptrace.2:73
8681 msgid ""
8682 "A tracee first needs to be attached to the tracer.  Attachment and "
8683 "subsequent commands are per thread: in a multithreaded process, every thread "
8684 "can be individually attached to a (potentially different) tracer, or left "
8685 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
8686 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
8687 "commands are always sent to a specific tracee using a call of the form"
8688 msgstr ""
8689
8690 #. type: Plain text
8691 #: build/C/man2/ptrace.2:75
8692 #, no-wrap
8693 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
8694 msgstr "    ptrace(PTRACE_foo, pid, ...)\n"
8695
8696 #. type: Plain text
8697 #: build/C/man2/ptrace.2:79
8698 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
8699 msgstr "ここで I<pid> は対応する Linux スレッドのスレッド ID である。"
8700
8701 #. type: Plain text
8702 #: build/C/man2/ptrace.2:85
8703 msgid ""
8704 "(Note that in this page, a \"multithreaded process\" means a thread group "
8705 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
8706 msgstr ""
8707
8708 #. type: Plain text
8709 #: build/C/man2/ptrace.2:96
8710 #, fuzzy
8711 #| msgid ""
8712 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
8713 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an "
8714 #| "B<exec>(3).  Alternatively, the parent may commence trace of an existing "
8715 #| "process using B<PTRACE_ATTACH>."
8716 msgid ""
8717 "A process can initiate a trace by calling B<fork>(2)  and having the "
8718 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an "
8719 "B<execve>(2).  Alternatively, one process may commence tracing another "
8720 "process using B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
8721 msgstr ""
8722 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
8723 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
8724 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
8725 "を使用し、トレースを開始する。"
8726
8727 #. type: Plain text
8728 #: build/C/man2/ptrace.2:113
8729 #, fuzzy
8730 #| msgid ""
8731 #| "While being traced, the child will stop each time a signal is delivered, "
8732 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
8733 #| "has its usual effect.)  The parent will be notified at its next "
8734 #| "B<wait>(2)  and may inspect and modify the child process while it is "
8735 #| "stopped.  The parent then causes the child to continue, optionally "
8736 #| "ignoring the delivered signal (or even delivering a different signal "
8737 #| "instead)."
8738 msgid ""
8739 "While being traced, the tracee will stop each time a signal is delivered, "
8740 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
8741 "its usual effect.)  The tracer will be notified at its next call to "
8742 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
8743 "return a I<status> value containing information that indicates the cause of "
8744 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
8745 "various ptrace requests to inspect and modify the tracee.  The tracer then "
8746 "causes the tracee to continue, optionally ignoring the delivered signal (or "
8747 "even delivering a different signal instead)."
8748 msgstr ""
8749 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
8750 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
8751 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
8752 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
8753 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
8754 "シグナルを 配送することもできる) 。"
8755
8756 #. type: Plain text
8757 #: build/C/man2/ptrace.2:123
8758 msgid ""
8759 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
8760 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
8761 "signal, giving the parent a chance to gain control before the new program "
8762 "begins execution."
8763 msgstr ""
8764
8765 #. type: Plain text
8766 #: build/C/man2/ptrace.2:127
8767 #, fuzzy
8768 #| msgid ""
8769 #| "When the parent is finished tracing, it can terminate the child with "
8770 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
8771 #| "mode via B<PTRACE_DETACH>."
8772 msgid ""
8773 "When the tracer is finished tracing, it can cause the tracee to continue "
8774 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
8775 msgstr ""
8776 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
8777 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
8778 "ドにして、 実行を継続させることもできる。"
8779
8780 #. type: Plain text
8781 #: build/C/man2/ptrace.2:131
8782 msgid "The value of I<request> determines the action to be performed:"
8783 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
8784
8785 #. type: TP
8786 #: build/C/man2/ptrace.2:131
8787 #, no-wrap
8788 msgid "B<PTRACE_TRACEME>"
8789 msgstr "B<PTRACE_TRACEME>"
8790
8791 #. type: Plain text
8792 #: build/C/man2/ptrace.2:141
8793 msgid ""
8794 "Indicate that this process is to be traced by its parent.  A process "
8795 "probably shouldn't make this request if its parent isn't expecting to trace "
8796 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
8797 msgstr ""
8798 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
8799 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
8800 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
8801
8802 #. type: Plain text
8803 #: build/C/man2/ptrace.2:156
8804 #, fuzzy
8805 #| msgid ""
8806 #| "The above request is used only by the child process; the rest are used "
8807 #| "only by the parent.  In the following requests, I<pid> specifies the "
8808 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
8809 #| "the child process must be stopped."
8810 msgid ""
8811 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
8812 "requests are used only by the tracer.  In the following requests, I<pid> "
8813 "specifies the thread ID of the tracee to be acted on.  For requests other "
8814 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT>, and "
8815 "B<PTRACE_KILL>, the tracee must be stopped."
8816 msgstr ""
8817 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
8818 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
8819 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
8820 "らない。"
8821
8822 #. type: TP
8823 #: build/C/man2/ptrace.2:156
8824 #, no-wrap
8825 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
8826 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
8827
8828 #. type: Plain text
8829 #: build/C/man2/ptrace.2:167
8830 #, fuzzy
8831 #| msgid ""
8832 #| "Reads a word at the location I<addr> in the child's memory, returning the "
8833 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
8834 #| "separate text and data address spaces, so the two requests are currently "
8835 #| "equivalent.  (The argument I<data> is ignored.)"
8836 msgid ""
8837 "Read a word at the address I<addr> in the tracee's memory, returning the "
8838 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
8839 "text and data address spaces, so these two requests are currently "
8840 "equivalent.  (I<data> is ignored; but see NOTES.)"
8841 msgstr ""
8842 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
8843 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
8844 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
8845 "ものである。 (引き数 I<data> は無視される。)"
8846
8847 #. type: TP
8848 #: build/C/man2/ptrace.2:167
8849 #, no-wrap
8850 msgid "B<PTRACE_PEEKUSER>"
8851 msgstr "B<PTRACE_PEEKUSER>"
8852
8853 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
8854 #.  and that is the name that seems common on other systems.
8855 #. type: Plain text
8856 #: build/C/man2/ptrace.2:185
8857 #, fuzzy
8858 #| msgid ""
8859 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
8860 #| "registers and other information about the process (see I<E<lt>sys/user."
8861 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
8862 #| "Typically the offset must be word-aligned, though this might vary by "
8863 #| "architecture.  See NOTES.  (I<data> is ignored.)"
8864 msgid ""
8865 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
8866 "registers and other information about the process (see I<E<lt>sys/user."
8867 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
8868 "Typically, the offset must be word-aligned, though this might vary by "
8869 "architecture.  See NOTES.  (I<data> is ignored; but see NOTES.)"
8870 msgstr ""
8871 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
8872 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
8873 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
8874 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
8875 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
8876 "される。 )"
8877
8878 #. type: TP
8879 #: build/C/man2/ptrace.2:185
8880 #, no-wrap
8881 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
8882 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
8883
8884 #. type: Plain text
8885 #: build/C/man2/ptrace.2:197
8886 #, fuzzy
8887 #| msgid ""
8888 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
8889 #| "above, the two requests are currently equivalent."
8890 msgid ""
8891 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
8892 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
8893 "equivalent."
8894 msgstr ""
8895 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
8896 "に、現在のところ二つの 要求は同じものである。"
8897
8898 #. type: TP
8899 #: build/C/man2/ptrace.2:197
8900 #, no-wrap
8901 msgid "B<PTRACE_POKEUSER>"
8902 msgstr "B<PTRACE_POKEUSER>"
8903
8904 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
8905 #.  and that is the name that seems common on other systems.
8906 #.  FIXME In the preceding sentence, which modifications are disallowed,
8907 #.  and when they are disallowed, how does user space discover that fact?
8908 #. type: Plain text
8909 #: build/C/man2/ptrace.2:213
8910 #, fuzzy
8911 #| msgid ""
8912 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
8913 #| "above, the offset must typically be word-aligned.  In order to maintain "
8914 #| "the integrity of the kernel, some modifications to the USER area are "
8915 #| "disallowed."
8916 msgid ""
8917 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
8918 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
8919 "maintain the integrity of the kernel, some modifications to the USER area "
8920 "are disallowed."
8921 msgstr ""
8922 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
8923 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
8924 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
8925 "されている。"
8926
8927 #. type: TP
8928 #: build/C/man2/ptrace.2:213
8929 #, no-wrap
8930 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
8931 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
8932
8933 #. type: Plain text
8934 #: build/C/man2/ptrace.2:236
8935 #, fuzzy
8936 #| msgid ""
8937 #| "Copies the child's general purpose or floating-point registers, "
8938 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
8939 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
8940 msgid ""
8941 "Copy the tracee's general-purpose or floating-point registers, respectively, "
8942 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
8943 "information on the format of this data.  (I<addr> is ignored.)  Note that "
8944 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
8945 "I<data> is ignored and the registers are copied to the address I<addr>.  "
8946 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
8947 "architectures."
8948 msgstr ""
8949 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
8950 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
8951 "すること。(I<addr> は無視される。)"
8952
8953 #. type: TP
8954 #: build/C/man2/ptrace.2:236
8955 #, no-wrap
8956 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
8957 msgstr " B<PTRACE_GETREGSET> (since Linux 2.6.34)"
8958
8959 #. type: Plain text
8960 #: build/C/man2/ptrace.2:257
8961 msgid ""
8962 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
8963 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
8964 "numerical value 1)  usually results in reading of general-purpose "
8965 "registers.  If the CPU has, for example, floating-point and/or vector "
8966 "registers, they can be retrieved by setting I<addr> to the corresponding "
8967 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
8968 "the destination buffer's location and length.  On return, the kernel "
8969 "modifies B<iov.len> to indicate the actual number of bytes returned."
8970 msgstr ""
8971
8972 #. type: TP
8973 #: build/C/man2/ptrace.2:257
8974 #, no-wrap
8975 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
8976 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
8977
8978 #.  FIXME . In the preceding sentence, which modifications are disallowed,
8979 #.  and when they are disallowed, how does user space discover that fact?
8980 #. type: Plain text
8981 #: build/C/man2/ptrace.2:282
8982 #, fuzzy
8983 #| msgid ""
8984 #| "Copies the child's general purpose or floating-point registers, "
8985 #| "respectively, from location I<data> in the parent.  As for "
8986 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
8987 #| "disallowed.  (I<addr> is ignored.)"
8988 msgid ""
8989 "Modify the tracee's general-purpose or floating-point registers, "
8990 "respectively, from the address I<data> in the tracer.  As for "
8991 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
8992 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
8993 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
8994 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
8995 "B<PTRACE_SETFPREGS> are not present on all architectures."
8996 msgstr ""
8997 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
8998 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
8999 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
9000
9001 #. type: TP
9002 #: build/C/man2/ptrace.2:282
9003 #, no-wrap
9004 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9005 msgstr " B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9006
9007 #. type: Plain text
9008 #: build/C/man2/ptrace.2:291
9009 msgid ""
9010 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
9011 "analogous to B<PTRACE_GETREGSET>."
9012 msgstr ""
9013
9014 #. type: TP
9015 #: build/C/man2/ptrace.2:291
9016 #, no-wrap
9017 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
9018 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
9019
9020 #. type: Plain text
9021 #: build/C/man2/ptrace.2:303
9022 #, fuzzy
9023 #| msgid ""
9024 #| "Retrieve information about the signal that caused the stop.  Copies a "
9025 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
9026 #| "I<data> in the parent.  (I<addr> is ignored.)"
9027 msgid ""
9028 "Retrieve information about the signal that caused the stop.  Copy a "
9029 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
9030 "I<data> in the tracer.  (I<addr> is ignored.)"
9031 msgstr ""
9032 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
9033 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
9034 "る。 (I<addr> は無視される。)"
9035
9036 #. type: TP
9037 #: build/C/man2/ptrace.2:303
9038 #, no-wrap
9039 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
9040 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
9041
9042 #. type: Plain text
9043 #: build/C/man2/ptrace.2:319
9044 #, fuzzy
9045 #| msgid ""
9046 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
9047 #| "I<data> in the parent to the child.  This will only affect signals that "
9048 #| "would normally be delivered to the child and were caught by the tracer.  "
9049 #| "It may be difficult to tell these normal signals from synthetic signals "
9050 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
9051 msgid ""
9052 "Set signal information: copy a I<siginfo_t> structure from the address "
9053 "I<data> in the tracer to the tracee.  This will affect only signals that "
9054 "would normally be delivered to the tracee and were caught by the tracer.  It "
9055 "may be difficult to tell these normal signals from synthetic signals "
9056 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
9057 msgstr ""
9058 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
9059 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
9060 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
9061 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
9062 "かもしれない。 (I<addr> は無視される。)"
9063
9064 #. type: TP
9065 #: build/C/man2/ptrace.2:319
9066 #, no-wrap
9067 msgid "B<PTRACE_PEEKSIGINFO> (since Linux 3.10)"
9068 msgstr "B<PTRACE_PEEKSIGINFO> (Linux 3.10 以降)"
9069
9070 #.  commit 84c751bd4aebbaae995fe32279d3dba48327bad4
9071 #. type: Plain text
9072 #: build/C/man2/ptrace.2:345
9073 msgid ""
9074 "Retrieve I<siginfo_t> structures without removing signals from a queue.  "
9075 "I<addr> points to a I<ptrace_peeksiginfo_args> structure that specifies the "
9076 "ordinal position from which copying of signals should start, and the number "
9077 "of signals to copy.  I<siginfo_t> structures are copied into the buffer "
9078 "pointed to by I<data>.  The return value contains the number of copied "
9079 "signals (zero indicates that there is no signal corresponding to the "
9080 "specified ordinal position).  Within the returned I<siginfo> structures, the "
9081 "I<si_code> field includes information (B<__SI_CHLD>, B<__SI_FAULT>, etc.) "
9082 "that are not otherwise exposed to user space."
9083 msgstr ""
9084
9085 #. type: Plain text
9086 #: build/C/man2/ptrace.2:354
9087 #, no-wrap
9088 msgid ""
9089 "struct ptrace_peeksiginfo_args {\n"
9090 "    u64 off;    /* Ordinal position in queue at which\n"
9091 "                   to start copying signals */\n"
9092 "    u32 flags;  /* PTRACE_PEEKSIGINFO_SHARED or 0 */\n"
9093 "    s32 nr;     /* Number of signals to copy */\n"
9094 "};\n"
9095 msgstr ""
9096
9097 #. type: Plain text
9098 #: build/C/man2/ptrace.2:361
9099 msgid ""
9100 "Currently, there is only one flag, B<PTRACE_PEEKSIGINFO_SHARED>, for dumping "
9101 "signals from the process-wide signal queue.  If this flag is not set, "
9102 "signals are read from the per-thread queue of the specified thread."
9103 msgstr ""
9104
9105 #. type: TP
9106 #: build/C/man2/ptrace.2:363
9107 #, no-wrap
9108 msgid "B<PTRACE_GETSIGMASK> (since Linux 3.11)"
9109 msgstr "B<PTRACE_GETSIGMASK> (Linux 3.11 以降)"
9110
9111 #.  commit 29000caecbe87b6b66f144f72111f0d02fbbf0c1
9112 #. type: Plain text
9113 #: build/C/man2/ptrace.2:378
9114 msgid ""
9115 "Place a copy of the mask of blocked signals (see B<sigprocmask>(2))  in the "
9116 "buffer pointed to by I<data>, which should be a pointer to a buffer of type "
9117 "I<sigset_t>.  The I<addr> argument contains the size of the buffer pointed "
9118 "to by I<data> (i.e., I<sizeof(sigset_t)>)."
9119 msgstr ""
9120
9121 #. type: TP
9122 #: build/C/man2/ptrace.2:378
9123 #, no-wrap
9124 msgid "B<PTRACE_SETSIGMASK> (since Linux 3.11)"
9125 msgstr "B<PTRACE_SETSIGMASK> (Linux 3.11 以降)"
9126
9127 #. type: Plain text
9128 #: build/C/man2/ptrace.2:392
9129 msgid ""
9130 "Change the mask of blocked signals (see B<sigprocmask>(2))  to the value "
9131 "specified in the buffer pointed to by I<data>, which should be a pointer to "
9132 "a buffer of type I<sigset_t>.  The I<addr> argument contains the size of the "
9133 "buffer pointed to by I<data> (i.e., I<sizeof(sigset_t)>)."
9134 msgstr ""
9135
9136 #. type: TP
9137 #: build/C/man2/ptrace.2:392
9138 #, no-wrap
9139 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
9140 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
9141
9142 #. type: Plain text
9143 #: build/C/man2/ptrace.2:401
9144 msgid ""
9145 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
9146 "interpreted as a bit mask of options, which are specified by the following "
9147 "flags:"
9148 msgstr ""
9149 "I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視される)。 "
9150 "I<data> はオプションのビットマスクとして解釈され、 オプションには以下のフラグ"
9151 "を指定できる:"
9152
9153 #. type: TP
9154 #: build/C/man2/ptrace.2:402
9155 #, no-wrap
9156 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9157 msgstr " B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9158
9159 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
9160 #. type: Plain text
9161 #: build/C/man2/ptrace.2:410
9162 msgid ""
9163 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
9164 "if the tracer exits.  This option is useful for ptrace jailers that want to "
9165 "ensure that tracees can never escape the tracer's control."
9166 msgstr ""
9167
9168 #. type: TP
9169 #: build/C/man2/ptrace.2:410
9170 #, no-wrap
9171 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
9172 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
9173
9174 #. type: Plain text
9175 #: build/C/man2/ptrace.2:427
9176 #, fuzzy
9177 #| msgid ""
9178 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
9179 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9180 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
9181 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9182 msgid ""
9183 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
9184 "newly cloned process, which will start with a B<SIGSTOP>, or "
9185 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9186 "tracer will return a I<status> value such that"
9187 msgstr ""
9188 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
9189 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
9190 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9191 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9192
9193 #. type: Plain text
9194 #: build/C/man2/ptrace.2:430
9195 #, no-wrap
9196 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9197 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9198
9199 #. type: Plain text
9200 #: build/C/man2/ptrace.2:434 build/C/man2/ptrace.2:520
9201 #: build/C/man2/ptrace.2:553
9202 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9203 msgstr "新規のプロセスの PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9204
9205 #. type: Plain text
9206 #: build/C/man2/ptrace.2:455
9207 #, fuzzy
9208 #| msgid ""
9209 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
9210 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9211 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
9212 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
9213 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
9214 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
9215 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
9216 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
9217 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
9218 msgid ""
9219 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
9220 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
9221 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
9222 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
9223 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
9224 msgstr ""
9225 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
9226 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
9227 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
9228 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
9229 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
9230 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
9231 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
9232 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
9233 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
9234
9235 #. type: TP
9236 #: build/C/man2/ptrace.2:455
9237 #, no-wrap
9238 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
9239 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
9240
9241 #. type: Plain text
9242 #: build/C/man2/ptrace.2:464
9243 msgid ""
9244 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
9245 "will return a I<status> value such that"
9246 msgstr ""
9247
9248 #. type: Plain text
9249 #: build/C/man2/ptrace.2:467
9250 #, no-wrap
9251 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9252 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9253
9254 #. type: Plain text
9255 #: build/C/man2/ptrace.2:473
9256 msgid ""
9257 "If the execing thread is not a thread group leader, the thread ID is reset "
9258 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
9259 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
9260 msgstr ""
9261
9262 #. type: TP
9263 #: build/C/man2/ptrace.2:473
9264 #, no-wrap
9265 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
9266 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
9267
9268 #. type: Plain text
9269 #: build/C/man2/ptrace.2:481
9270 msgid ""
9271 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
9272 "I<status> value such that"
9273 msgstr ""
9274
9275 #. type: Plain text
9276 #: build/C/man2/ptrace.2:484
9277 #, no-wrap
9278 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9279 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9280
9281 #. type: Plain text
9282 #: build/C/man2/ptrace.2:488
9283 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
9284 msgstr ""
9285
9286 #. type: Plain text
9287 #: build/C/man2/ptrace.2:496
9288 #, fuzzy
9289 #| msgid ""
9290 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
9291 #| "8>.  The child's exit status can be retrieved with "
9292 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
9293 #| "when registers are still available, allowing the tracer to see where the "
9294 #| "exit occurred, whereas the normal exit notification is done after the "
9295 #| "process is finished exiting.  Even though context is available, the "
9296 #| "tracer cannot prevent the exit from happening at this point."
9297 msgid ""
9298 "The tracee is stopped early during process exit, when registers are still "
9299 "available, allowing the tracer to see where the exit occurred, whereas the "
9300 "normal exit notification is done after the process is finished exiting.  "
9301 "Even though context is available, the tracer cannot prevent the exit from "
9302 "happening at this point."
9303 msgstr ""
9304 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
9305 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
9306 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
9307 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
9308 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
9309 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
9310 "できない。"
9311
9312 #. type: TP
9313 #: build/C/man2/ptrace.2:496
9314 #, no-wrap
9315 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
9316 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
9317
9318 #. type: Plain text
9319 #: build/C/man2/ptrace.2:513
9320 #, fuzzy
9321 #| msgid ""
9322 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
9323 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9324 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
9325 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9326 msgid ""
9327 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
9328 "newly forked process, which will start with a B<SIGSTOP>, or "
9329 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9330 "tracer will return a I<status> value such that"
9331 msgstr ""
9332 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
9333 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
9334 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9335 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9336
9337 #. type: Plain text
9338 #: build/C/man2/ptrace.2:516
9339 #, no-wrap
9340 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9341 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9342
9343 #. type: TP
9344 #: build/C/man2/ptrace.2:520
9345 #, no-wrap
9346 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
9347 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
9348
9349 #. type: Plain text
9350 #: build/C/man2/ptrace.2:529
9351 #, fuzzy
9352 #| msgid ""
9353 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
9354 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
9355 #| "the difference between normal traps and those caused by a syscall.  "
9356 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
9357 msgid ""
9358 "When delivering system call traps, set bit 7 in the signal number (i.e., "
9359 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
9360 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
9361 "may not work on all architectures.)"
9362 msgstr ""
9363 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
9364 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
9365 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
9366 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
9367
9368 #. type: TP
9369 #: build/C/man2/ptrace.2:529
9370 #, no-wrap
9371 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
9372 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
9373
9374 #. type: Plain text
9375 #: build/C/man2/ptrace.2:546
9376 #, fuzzy
9377 #| msgid ""
9378 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
9379 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9380 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
9381 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9382 msgid ""
9383 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
9384 "newly vforked process, which will start with a B<SIGSTOP>, or "
9385 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9386 "tracer will return a I<status> value such that"
9387 msgstr ""
9388 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
9389 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
9390 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9391 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9392
9393 #. type: Plain text
9394 #: build/C/man2/ptrace.2:549
9395 #, no-wrap
9396 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9397 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9398
9399 #. type: TP
9400 #: build/C/man2/ptrace.2:553
9401 #, no-wrap
9402 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
9403 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
9404
9405 #. type: Plain text
9406 #: build/C/man2/ptrace.2:562
9407 msgid ""
9408 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
9409 "by the tracer will return a I<status> value such that"
9410 msgstr ""
9411
9412 #. type: Plain text
9413 #: build/C/man2/ptrace.2:565
9414 #, no-wrap
9415 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
9416 msgstr ""
9417
9418 #. type: Plain text
9419 #: build/C/man2/ptrace.2:569
9420 msgid ""
9421 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
9422 "B<PTRACE_GETEVENTMSG>."
9423 msgstr ""
9424
9425 #. type: TP
9426 #: build/C/man2/ptrace.2:570
9427 #, no-wrap
9428 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
9429 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
9430
9431 #. type: Plain text
9432 #: build/C/man2/ptrace.2:590
9433 #, fuzzy
9434 #| msgid ""
9435 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
9436 #| "just happened, placing it in the location I<data> in the parent.  For "
9437 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
9438 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
9439 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
9440 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
9441 #| "is ignored.)"
9442 msgid ""
9443 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
9444 "just happened, placing it at the address I<data> in the tracer.  For "
9445 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
9446 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
9447 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
9448 "ignored.)"
9449 msgstr ""
9450 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
9451 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
9452 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
9453 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
9454 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
9455 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
9456
9457 #. type: TP
9458 #: build/C/man2/ptrace.2:590
9459 #, no-wrap
9460 msgid "B<PTRACE_CONT>"
9461 msgstr "B<PTRACE_CONT>"
9462
9463 #. type: Plain text
9464 #: build/C/man2/ptrace.2:602
9465 #, fuzzy
9466 #| msgid ""
9467 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
9468 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
9469 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
9470 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
9471 #| "is ignored.)"
9472 msgid ""
9473 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
9474 "interpreted as the number of a signal to be delivered to the tracee; "
9475 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
9476 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
9477 "is ignored.)"
9478 msgstr ""
9479 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
9480 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
9481 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
9482 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
9483 "は無視される。)"
9484
9485 #. type: TP
9486 #: build/C/man2/ptrace.2:602
9487 #, no-wrap
9488 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9489 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9490
9491 #. type: Plain text
9492 #: build/C/man2/ptrace.2:626
9493 #, fuzzy
9494 #| msgid ""
9495 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
9496 #| "child to be stopped at the next entry to or exit from a system call, or "
9497 #| "after execution of a single instruction, respectively.  (The child will "
9498 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
9499 #| "perspective, the child will appear to have been stopped by receipt of a "
9500 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
9501 #| "inspect the arguments to the system call at the first stop, then do "
9502 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
9503 #| "at the second stop.  The I<data> argument is treated as for "
9504 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
9505 msgid ""
9506 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
9507 "to be stopped at the next entry to or exit from a system call, or after "
9508 "execution of a single instruction, respectively.  (The tracee will also, as "
9509 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
9510 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
9511 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
9512 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
9513 "inspect the return value of the system call at the second stop.  The I<data> "
9514 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
9515 msgstr ""
9516 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
9517 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
9518 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
9519 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
9520 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
9521 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
9522 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
9523 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
9524 "同じ様に解釈される。 (I<addr> は無視される。)"
9525
9526 #. type: TP
9527 #: build/C/man2/ptrace.2:626
9528 #, no-wrap
9529 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
9530 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
9531
9532 #.  As at 3.7
9533 #. type: Plain text
9534 #: build/C/man2/ptrace.2:647
9535 #, fuzzy
9536 #| msgid ""
9537 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
9538 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
9539 #| "but also singlestep if not a syscall.  This call is used by programs like "
9540 #| "User Mode Linux that want to emulate all the child's system calls.  The "
9541 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
9542 #| "not supported on all architectures.)"
9543 msgid ""
9544 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
9545 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
9546 "but also singlestep if not a system call.  This call is used by programs "
9547 "like User Mode Linux that want to emulate all the tracee's system calls.  "
9548 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
9549 "is ignored.  These requests are currently supported only on x86."
9550 msgstr ""
9551 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
9552 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
9553 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
9554 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
9555 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
9556 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
9557 "ポートされているわけではない。)"
9558
9559 #. type: TP
9560 #: build/C/man2/ptrace.2:647
9561 #, no-wrap
9562 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
9563 msgstr " B<PTRACE_LISTEN> (since Linux 3.4)"
9564
9565 #. type: Plain text
9566 #: build/C/man2/ptrace.2:658
9567 msgid ""
9568 "Restart the stopped tracee, but prevent it from executing.  The resulting "
9569 "state of the tracee is similar to a process which has been stopped by a "
9570 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
9571 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
9572 "by B<PTRACE_SEIZE>."
9573 msgstr ""
9574
9575 #. type: TP
9576 #: build/C/man2/ptrace.2:658
9577 #, no-wrap
9578 msgid "B<PTRACE_KILL>"
9579 msgstr "B<PTRACE_KILL>"
9580
9581 #. type: Plain text
9582 #: build/C/man2/ptrace.2:667
9583 #, fuzzy
9584 #| msgid ""
9585 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
9586 #| "ignored.)"
9587 msgid ""
9588 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
9589 "ignored.)"
9590 msgstr ""
9591 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
9592
9593 #.  [Note from Denys Vlasenko:
9594 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
9595 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
9596 #. type: Plain text
9597 #: build/C/man2/ptrace.2:686
9598 msgid ""
9599 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
9600 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
9601 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
9602 "may not work (i.e., may complete successfully but won't kill the tracee).  "
9603 "By contrast, sending a B<SIGKILL> directly has no such limitation."
9604 msgstr ""
9605
9606 #. type: TP
9607 #: build/C/man2/ptrace.2:686
9608 #, no-wrap
9609 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
9610 msgstr " B<PTRACE_INTERRUPT> (since Linux 3.4)"
9611
9612 #. type: Plain text
9613 #: build/C/man2/ptrace.2:714
9614 msgid ""
9615 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
9616 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
9617 "exit-stop is reported.  (The interrupted system call is restarted when the "
9618 "tracee is restarted.)  If the tracee was already stopped by a signal and "
9619 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
9620 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
9621 "is generated at the same time (for example, if a signal is sent to the "
9622 "tracee), this ptrace-stop happens.  If none of the above applies (for "
9623 "example, if the tracee is running in user space), it stops with "
9624 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
9625 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
9626 msgstr ""
9627
9628 #. type: TP
9629 #: build/C/man2/ptrace.2:714
9630 #, no-wrap
9631 msgid "B<PTRACE_ATTACH>"
9632 msgstr "B<PTRACE_ATTACH>"
9633
9634 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
9635 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
9636 #.          Basically, it's not true for any Linux in practical use.
9637 #.  ; the behavior of the tracee is as if it had done a
9638 #.  .BR PTRACE_TRACEME .
9639 #.  The calling process actually becomes the parent of the tracee
9640 #.  process for most purposes (e.g., it will receive
9641 #.  notification of tracee events and appears in
9642 #.  .BR ps (1)
9643 #.  output as the tracee's parent), but a
9644 #.  .BR getppid (2)
9645 #.  by the tracee will still return the PID of the original parent.
9646 #. type: Plain text
9647 #: build/C/man2/ptrace.2:742
9648 msgid ""
9649 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9650 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
9651 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
9652 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
9653 "additional information.  (I<addr> and I<data> are ignored.)"
9654 msgstr ""
9655
9656 #. type: TP
9657 #: build/C/man2/ptrace.2:742
9658 #, no-wrap
9659 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
9660 msgstr " B<PTRACE_SEIZE> (since Linux 3.4)"
9661
9662 #. type: Plain text
9663 #: build/C/man2/ptrace.2:762
9664 msgid ""
9665 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9666 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
9667 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
9668 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
9669 "mask of ptrace options to activate immediately."
9670 msgstr ""
9671
9672 #. type: TP
9673 #: build/C/man2/ptrace.2:762
9674 #, no-wrap
9675 msgid "B<PTRACE_DETACH>"
9676 msgstr "B<PTRACE_DETACH>"
9677
9678 #. type: Plain text
9679 #: build/C/man2/ptrace.2:771
9680 #, fuzzy
9681 #| msgid ""
9682 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
9683 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
9684 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
9685 #| "a traced child can be detached in this way regardless of which method was "
9686 #| "used to initiate tracing.  (I<addr> is ignored.)"
9687 msgid ""
9688 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
9689 "Under Linux, a tracee can be detached in this way regardless of which method "
9690 "was used to initiate tracing.  (I<addr> is ignored.)"
9691 msgstr ""
9692 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
9693 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
9694 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
9695 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
9696 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
9697
9698 #. type: SS
9699 #: build/C/man2/ptrace.2:771
9700 #, no-wrap
9701 msgid "Death under ptrace"
9702 msgstr ""
9703
9704 #. type: Plain text
9705 #: build/C/man2/ptrace.2:780
9706 msgid ""
9707 "When a (possibly multithreaded) process receives a killing signal (one whose "
9708 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
9709 "process), all threads exit.  Tracees report their death to their tracer(s).  "
9710 "Notification of this event is delivered via B<waitpid>(2)."
9711 msgstr ""
9712
9713 #. type: Plain text
9714 #: build/C/man2/ptrace.2:789
9715 msgid ""
9716 "Note that the killing signal will first cause signal-delivery-stop (on one "
9717 "tracee only), and only after it is injected by the tracer (or after it was "
9718 "dispatched to a thread which isn't traced), will death from the signal "
9719 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
9720 "delivery-stop\" is explained below.)"
9721 msgstr ""
9722
9723 #. type: Plain text
9724 #: build/C/man2/ptrace.2:801
9725 msgid ""
9726 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
9727 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
9728 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
9729 "B<SIGKILL> always kills the process (all its threads), even if some threads "
9730 "of the process are ptraced."
9731 msgstr ""
9732
9733 #. type: Plain text
9734 #: build/C/man2/ptrace.2:806
9735 msgid ""
9736 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
9737 "Other threads are not affected."
9738 msgstr ""
9739
9740 #. type: Plain text
9741 #: build/C/man2/ptrace.2:810
9742 msgid ""
9743 "When any thread executes B<exit_group>(2), every tracee in its thread group "
9744 "reports its death to its tracer."
9745 msgstr ""
9746
9747 #. type: Plain text
9748 #: build/C/man2/ptrace.2:824
9749 msgid ""
9750 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
9751 "before actual death.  This applies to exits via B<exit>(2), "
9752 "B<exit_group>(2), and signal deaths (except B<SIGKILL>), and when threads "
9753 "are torn down on B<execve>(2)  in a multithreaded process."
9754 msgstr ""
9755
9756 #. type: Plain text
9757 #: build/C/man2/ptrace.2:849
9758 msgid ""
9759 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
9760 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
9761 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
9762 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
9763 "exists but is not ptrace-stopped (for commands which require a stopped "
9764 "tracee), or if it is not traced by the process which issued the ptrace "
9765 "call.  The tracer needs to keep track of the stopped/running state of the "
9766 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
9767 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
9768 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
9769 "tracee's death status if a ptrace operation returned B<ESRCH>.  "
9770 "I<waitpid(WNOHANG)> may return 0 instead.  In other words, the tracee may be "
9771 "\"not yet fully dead\", but already refusing ptrace requests."
9772 msgstr ""
9773
9774 #. type: Plain text
9775 #: build/C/man2/ptrace.2:863
9776 msgid ""
9777 "The tracer can't assume that the tracee I<always> ends its life by reporting "
9778 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
9779 "does not occur.  For example, if a thread other than thread group leader "
9780 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
9781 "any subsequent ptrace stops will be reported under the thread group leader's "
9782 "PID."
9783 msgstr ""
9784
9785 #. type: SS
9786 #: build/C/man2/ptrace.2:863
9787 #, no-wrap
9788 msgid "Stopped states"
9789 msgstr ""
9790
9791 #. type: Plain text
9792 #: build/C/man2/ptrace.2:885
9793 msgid ""
9794 "A tracee can be in two states: running or stopped.  For the purposes of "
9795 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
9796 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
9797 "tracee is blocked for a long time.  The state of the tracee after "
9798 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
9799 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
9800 "notifications), but it also may be considered \"stopped\" because it is not "
9801 "executing instructions (is not scheduled), and if it was in group-stop "
9802 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
9803 "received."
9804 msgstr ""
9805
9806 #. type: Plain text
9807 #: build/C/man2/ptrace.2:889
9808 msgid ""
9809 "There are many kinds of states when the tracee is stopped, and in ptrace "
9810 "discussions they are often conflated.  Therefore, it is important to use "
9811 "precise terms."
9812 msgstr ""
9813
9814 #. type: Plain text
9815 #: build/C/man2/ptrace.2:900
9816 msgid ""
9817 "In this manual page, any stopped state in which the tracee is ready to "
9818 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
9819 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
9820 "I<syscall-stop>, and so on.  These stopped states are described in detail "
9821 "below."
9822 msgstr ""
9823
9824 #. type: Plain text
9825 #: build/C/man2/ptrace.2:905
9826 msgid ""
9827 "When the running tracee enters ptrace-stop, it notifies its tracer using "
9828 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
9829 "manual page assumes that the tracer waits with:"
9830 msgstr ""
9831
9832 #. type: Plain text
9833 #: build/C/man2/ptrace.2:907
9834 #, no-wrap
9835 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
9836 msgstr ""
9837
9838 #.  Denys Vlasenko:
9839 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
9840 #.      I am not 100% sure there aren't ugly corner cases.) Are the
9841 #.      rules different if user wants to use waitid? Will waitid require
9842 #.      WEXITED?
9843 #. type: Plain text
9844 #: build/C/man2/ptrace.2:919
9845 msgid ""
9846 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
9847 "and I<WIFSTOPPED(status)> true."
9848 msgstr ""
9849
9850 #. type: Plain text
9851 #: build/C/man2/ptrace.2:927
9852 msgid ""
9853 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
9854 "but implies their functionality."
9855 msgstr ""
9856
9857 #. type: Plain text
9858 #: build/C/man2/ptrace.2:934
9859 msgid ""
9860 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
9861 "recommended: the \"continued\" state is per-process and consuming it can "
9862 "confuse the real parent of the tracee."
9863 msgstr ""
9864
9865 #. type: Plain text
9866 #: build/C/man2/ptrace.2:942
9867 msgid ""
9868 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
9869 "results available yet\")  even if the tracer knows there should be a "
9870 "notification.  Example:"
9871 msgstr ""
9872
9873 #. type: Plain text
9874 #: build/C/man2/ptrace.2:951
9875 #, no-wrap
9876 msgid ""
9877 "    errno = 0;\n"
9878 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
9879 "    if (errno == ESRCH) {\n"
9880 "        /* tracee is dead */\n"
9881 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
9882 "        /* r can still be 0 here! */\n"
9883 "    }\n"
9884 msgstr ""
9885
9886 #. type: Plain text
9887 #: build/C/man2/ptrace.2:974
9888 msgid ""
9889 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
9890 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
9891 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
9892 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
9893 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the "
9894 "I<WSTOPSIG(status)> macro can't be used to perform this examination, because "
9895 "it returns the value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
9896 msgstr ""
9897
9898 #. type: SS
9899 #: build/C/man2/ptrace.2:974
9900 #, no-wrap
9901 msgid "Signal-delivery-stop"
9902 msgstr ""
9903
9904 #. type: Plain text
9905 #: build/C/man2/ptrace.2:994
9906 msgid ""
9907 "When a (possibly multithreaded) process receives any signal except "
9908 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
9909 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
9910 "can be explicitly selected by the caller.)  If the selected thread is "
9911 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
9912 "yet delivered to the process, and can be suppressed by the tracer.  If the "
9913 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
9914 "the next ptrace restart request.  This second step of signal delivery is "
9915 "called I<signal injection> in this manual page.  Note that if the signal is "
9916 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
9917 "with the usual exception that B<SIGSTOP> can't be blocked."
9918 msgstr ""
9919
9920 #. type: Plain text
9921 #: build/C/man2/ptrace.2:1008
9922 msgid ""
9923 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
9924 "with I<WIFSTOPPED(status)> true, with the signal returned by "
9925 "I<WSTOPSIG(status)>.  If the signal is B<SIGTRAP>, this may be a different "
9926 "kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below "
9927 "for details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be "
9928 "a group-stop; see below."
9929 msgstr ""
9930
9931 #. type: SS
9932 #: build/C/man2/ptrace.2:1008
9933 #, no-wrap
9934 msgid "Signal injection and suppression"
9935 msgstr ""
9936
9937 #. type: Plain text
9938 #: build/C/man2/ptrace.2:1011
9939 msgid ""
9940 "After signal-delivery-stop is observed by the tracer, the tracer should "
9941 "restart the tracee with the call"
9942 msgstr ""
9943
9944 #. type: Plain text
9945 #: build/C/man2/ptrace.2:1013
9946 #, no-wrap
9947 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
9948 msgstr ""
9949
9950 #. type: Plain text
9951 #: build/C/man2/ptrace.2:1026
9952 msgid ""
9953 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
9954 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
9955 "delivered.  This operation is called I<signal injection> in this manual "
9956 "page, to distinguish it from signal-delivery-stop."
9957 msgstr ""
9958
9959 #. type: Plain text
9960 #: build/C/man2/ptrace.2:1032
9961 msgid ""
9962 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
9963 "tracer can cause a different signal to be injected."
9964 msgstr ""
9965
9966 #. type: Plain text
9967 #: build/C/man2/ptrace.2:1048
9968 msgid ""
9969 "Note that a suppressed signal still causes system calls to return "
9970 "prematurely.  In this case, system calls will be restarted: the tracer will "
9971 "observe the tracee to reexecute the interrupted system call (or "
9972 "B<restart_syscall>(2)  system call for a few system calls which use a "
9973 "different mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  "
9974 "Even system calls (such as B<poll>(2))  which are not restartable after "
9975 "signal are restarted after signal is suppressed; however, kernel bugs exist "
9976 "which cause some system calls to fail with B<EINTR> even though no "
9977 "observable signal is injected to the tracee."
9978 msgstr ""
9979
9980 #. type: Plain text
9981 #: build/C/man2/ptrace.2:1059
9982 msgid ""
9983 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
9984 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
9985 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
9986 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
9987 "instead."
9988 msgstr ""
9989
9990 #. type: Plain text
9991 #: build/C/man2/ptrace.2:1066
9992 msgid ""
9993 "The fact that signal injection requests may be ignored when restarting the "
9994 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
9995 "confusion among ptrace users.  One typical scenario is that the tracer "
9996 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
9997 "tracee with"
9998 msgstr ""
9999
10000 #. type: Plain text
10001 #: build/C/man2/ptrace.2:1068
10002 #, no-wrap
10003 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
10004 msgstr ""
10005
10006 #. type: Plain text
10007 #: build/C/man2/ptrace.2:1074
10008 msgid ""
10009 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
10010 "the tracee continues to run."
10011 msgstr ""
10012
10013 #. type: Plain text
10014 #: build/C/man2/ptrace.2:1094
10015 msgid ""
10016 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
10017 "group-stopped process.  This side effect happens before signal-delivery-"
10018 "stop.  The tracer can't suppress this side effect (it can only suppress "
10019 "signal injection, which only causes the B<SIGCONT> handler to not be "
10020 "executed in the tracee, if such a handler is installed).  In fact, waking up "
10021 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
10022 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
10023 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
10024 "by the tracee after it was sent."
10025 msgstr ""
10026
10027 #. type: Plain text
10028 #: build/C/man2/ptrace.2:1098
10029 msgid ""
10030 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
10031 "side effect happens after signal injection, and therefore can be suppressed "
10032 "by the tracer."
10033 msgstr ""
10034
10035 #
10036 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
10037 #.  there is:
10038 #.              /* The debugger continued.  Ignore SIGSTOP.  */
10039 #.              if (signr == SIGSTOP)
10040 #.                      continue;
10041 #. type: Plain text
10042 #: build/C/man2/ptrace.2:1108
10043 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
10044 msgstr ""
10045
10046 #. type: Plain text
10047 #: build/C/man2/ptrace.2:1125
10048 msgid ""
10049 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
10050 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
10051 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
10052 "I<si_signo> field and the I<sig> parameter in the restarting command must "
10053 "match, otherwise the result is undefined."
10054 msgstr ""
10055
10056 #. type: SS
10057 #: build/C/man2/ptrace.2:1125
10058 #, no-wrap
10059 msgid "Group-stop"
10060 msgstr ""
10061
10062 #. type: Plain text
10063 #: build/C/man2/ptrace.2:1137
10064 msgid ""
10065 "When a (possibly multithreaded) process receives a stopping signal, all "
10066 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
10067 "that the stopping signal will first cause signal-delivery-stop (on one "
10068 "tracee only), and only after it is injected by the tracer (or after it was "
10069 "dispatched to a thread which isn't traced), will group-stop be initiated on "
10070 "I<all> tracees within the multithreaded process.  As usual, every tracee "
10071 "reports its group-stop separately to the corresponding tracer."
10072 msgstr ""
10073
10074 #. type: Plain text
10075 #: build/C/man2/ptrace.2:1146
10076 msgid ""
10077 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
10078 "I<WIFSTOPPED(status)> true, with the stopping signal available via "
10079 "I<WSTOPSIG(status)>.  The same result is returned by some other classes of "
10080 "ptrace-stops, therefore the recommended practice is to perform the call"
10081 msgstr ""
10082
10083 #. type: Plain text
10084 #: build/C/man2/ptrace.2:1148
10085 #, no-wrap
10086 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
10087 msgstr ""
10088
10089 #. type: Plain text
10090 #: build/C/man2/ptrace.2:1169
10091 msgid ""
10092 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
10093 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
10094 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
10095 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
10096 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
10097 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
10098 "the tracee.)"
10099 msgstr ""
10100
10101 #. type: Plain text
10102 #: build/C/man2/ptrace.2:1179
10103 msgid ""
10104 "If tracee was attached using B<PTRACE_SEIZE>, group-stop is indicated by "
10105 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
10106 "allows detection of group-stops without requiring an extra "
10107 "B<PTRACE_GETSIGINFO> call."
10108 msgstr ""
10109
10110 #. type: Plain text
10111 #: build/C/man2/ptrace.2:1188
10112 msgid ""
10113 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
10114 "it restarts or kills it, the tracee will not run, and will not send "
10115 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
10116 "enters into another B<waitpid>(2)  call."
10117 msgstr ""
10118
10119 #. type: Plain text
10120 #: build/C/man2/ptrace.2:1202
10121 msgid ""
10122 "The kernel behavior described in the previous paragraph causes a problem "
10123 "with transparent handling of stopping signals.  If the tracer restarts the "
10124 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
10125 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
10126 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
10127 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
10128 "signals to have no effect on the tracee."
10129 msgstr ""
10130
10131 #. type: Plain text
10132 #: build/C/man2/ptrace.2:1213
10133 msgid ""
10134 "Since Linux 3.4, there is a method to overcome this problem: instead of "
10135 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
10136 "in a way where it does not execute, but waits for a new event which it can "
10137 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
10138 msgstr ""
10139
10140 #. type: SS
10141 #: build/C/man2/ptrace.2:1213
10142 #, no-wrap
10143 msgid "PTRACE_EVENT stops"
10144 msgstr ""
10145
10146 #. type: Plain text
10147 #: build/C/man2/ptrace.2:1219
10148 msgid ""
10149 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
10150 "stops called B<PTRACE_EVENT> stops."
10151 msgstr ""
10152
10153 #. type: Plain text
10154 #: build/C/man2/ptrace.2:1233
10155 msgid ""
10156 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
10157 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
10158 "additional bit is set in the higher byte of the status word: the value "
10159 "I<statusE<gt>E<gt>8> will be"
10160 msgstr ""
10161
10162 #. type: Plain text
10163 #: build/C/man2/ptrace.2:1235
10164 #, no-wrap
10165 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
10166 msgstr ""
10167
10168 #. type: Plain text
10169 #: build/C/man2/ptrace.2:1237
10170 msgid "The following events exist:"
10171 msgstr ""
10172
10173 #. type: TP
10174 #: build/C/man2/ptrace.2:1237
10175 #, no-wrap
10176 msgid "B<PTRACE_EVENT_VFORK>"
10177 msgstr "B<PTRACE_EVENT_VFORK>"
10178
10179 #. type: Plain text
10180 #: build/C/man2/ptrace.2:1250
10181 msgid ""
10182 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10183 "flag.  When the tracee is continued after this stop, it will wait for child "
10184 "to exit/exec before continuing its execution (in other words, the usual "
10185 "behavior on B<vfork>(2))."
10186 msgstr ""
10187
10188 #. type: TP
10189 #: build/C/man2/ptrace.2:1250
10190 #, no-wrap
10191 msgid "B<PTRACE_EVENT_FORK>"
10192 msgstr "B<PTRACE_EVENT_FORK>"
10193
10194 #. type: Plain text
10195 #: build/C/man2/ptrace.2:1258
10196 msgid ""
10197 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
10198 "to B<SIGCHLD>."
10199 msgstr ""
10200
10201 #. type: TP
10202 #: build/C/man2/ptrace.2:1258
10203 #, no-wrap
10204 msgid "B<PTRACE_EVENT_CLONE>"
10205 msgstr "B<PTRACE_EVENT_CLONE>"
10206
10207 #. type: Plain text
10208 #: build/C/man2/ptrace.2:1262
10209 msgid "Stop before return from B<clone>(2)."
10210 msgstr ""
10211
10212 #. type: TP
10213 #: build/C/man2/ptrace.2:1262
10214 #, no-wrap
10215 msgid "B<PTRACE_EVENT_VFORK_DONE>"
10216 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
10217
10218 #. type: Plain text
10219 #: build/C/man2/ptrace.2:1272
10220 msgid ""
10221 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10222 "flag, but after the child unblocked this tracee by exiting or execing."
10223 msgstr ""
10224
10225 #. type: Plain text
10226 #: build/C/man2/ptrace.2:1278
10227 msgid ""
10228 "For all four stops described above, the stop occurs in the parent (i.e., the "
10229 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
10230 "to retrieve the new thread's ID."
10231 msgstr ""
10232
10233 #. type: TP
10234 #: build/C/man2/ptrace.2:1278
10235 #, no-wrap
10236 msgid "B<PTRACE_EVENT_EXEC>"
10237 msgstr "B<PTRACE_EVENT_EXEC>"
10238
10239 #. type: Plain text
10240 #: build/C/man2/ptrace.2:1285
10241 msgid ""
10242 "Stop before return from B<execve>(2).  Since Linux 3.0, "
10243 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
10244 msgstr ""
10245
10246 #. type: TP
10247 #: build/C/man2/ptrace.2:1285
10248 #, no-wrap
10249 msgid "B<PTRACE_EVENT_EXIT>"
10250 msgstr "B<PTRACE_EVENT_EXIT>"
10251
10252 #. type: Plain text
10253 #: build/C/man2/ptrace.2:1301
10254 msgid ""
10255 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
10256 "exit caused by B<execve>(2)  in a multithreaded process.  "
10257 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
10258 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
10259 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
10260 msgstr ""
10261
10262 #. type: TP
10263 #: build/C/man2/ptrace.2:1301
10264 #, no-wrap
10265 msgid "B<PTRACE_EVENT_STOP>"
10266 msgstr "B<PTRACE_EVENT_STOP>"
10267
10268 #. type: Plain text
10269 #: build/C/man2/ptrace.2:1313
10270 msgid ""
10271 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
10272 "ptrace-stop when a new child is attached (only if attached using "
10273 "B<PTRACE_SEIZE>), or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
10274 msgstr ""
10275
10276 #. type: Plain text
10277 #: build/C/man2/ptrace.2:1325
10278 msgid ""
10279 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
10280 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
10281 msgstr ""
10282
10283 #. type: SS
10284 #: build/C/man2/ptrace.2:1325
10285 #, no-wrap
10286 msgid "Syscall-stops"
10287 msgstr ""
10288
10289 #. type: Plain text
10290 #: build/C/man2/ptrace.2:1338
10291 msgid ""
10292 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
10293 "enter-stop just prior to entering any system call.  If the tracer restarts "
10294 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
10295 "the system call is finished, or if it is interrupted by a signal.  (That is, "
10296 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
10297 "exit-stop; it happens I<after> syscall-exit-stop.)"
10298 msgstr ""
10299
10300 #. type: Plain text
10301 #: build/C/man2/ptrace.2:1352
10302 msgid ""
10303 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
10304 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
10305 "B<SIGKILL>, or die silently (if it is a thread group leader, the "
10306 "B<execve>(2)  happened in another thread, and that thread is not traced by "
10307 "the same tracer; this situation is discussed later)."
10308 msgstr ""
10309
10310 #. type: Plain text
10311 #: build/C/man2/ptrace.2:1367
10312 msgid ""
10313 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
10314 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and "
10315 "I<WSTOPSIG(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> "
10316 "option was set by the tracer, then I<WSTOPSIG(status)> will give the value "
10317 "I<(SIGTRAP\\ |\\ 0x80)>."
10318 msgstr ""
10319
10320 #. type: Plain text
10321 #: build/C/man2/ptrace.2:1373
10322 msgid ""
10323 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
10324 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
10325 msgstr ""
10326
10327 #. type: TP
10328 #: build/C/man2/ptrace.2:1373
10329 #, no-wrap
10330 msgid "I<si_code> E<lt>= 0"
10331 msgstr ""
10332
10333 #. type: Plain text
10334 #: build/C/man2/ptrace.2:1385
10335 msgid ""
10336 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
10337 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
10338 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
10339 "asynchronous I/O request."
10340 msgstr ""
10341
10342 #. type: TP
10343 #: build/C/man2/ptrace.2:1385
10344 #, no-wrap
10345 msgid "I<si_code> == SI_KERNEL (0x80)"
10346 msgstr ""
10347
10348 #. type: Plain text
10349 #: build/C/man2/ptrace.2:1389
10350 msgid "B<SIGTRAP> was sent by the kernel."
10351 msgstr ""
10352
10353 #. type: TP
10354 #: build/C/man2/ptrace.2:1389
10355 #, no-wrap
10356 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
10357 msgstr ""
10358
10359 #. type: Plain text
10360 #: build/C/man2/ptrace.2:1392
10361 msgid "This is a syscall-stop."
10362 msgstr ""
10363
10364 #. type: Plain text
10365 #: build/C/man2/ptrace.2:1397
10366 msgid ""
10367 "However, syscall-stops happen very often (twice per system call), and "
10368 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
10369 "expensive."
10370 msgstr ""
10371
10372 #. type: Plain text
10373 #: build/C/man2/ptrace.2:1420
10374 msgid ""
10375 "Some architectures allow the cases to be distinguished by examining "
10376 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
10377 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
10378 "syscall-exit-stop, and at this point I<rax> almost never contains -"
10379 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
10380 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
10381 "and can be detected this way.  But such detection is fragile and is best "
10382 "avoided."
10383 msgstr ""
10384
10385 #. type: Plain text
10386 #: build/C/man2/ptrace.2:1426
10387 msgid ""
10388 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
10389 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
10390 "reliable and does not incur a performance penalty."
10391 msgstr ""
10392
10393 #. type: Plain text
10394 #: build/C/man2/ptrace.2:1437
10395 msgid ""
10396 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
10397 "other by the tracer.  The tracer needs to keep track of the sequence of "
10398 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
10399 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
10400 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
10401 "kinds of ptrace-stop can occur in between."
10402 msgstr ""
10403
10404 #. type: Plain text
10405 #: build/C/man2/ptrace.2:1442
10406 msgid ""
10407 "If after syscall-enter-stop, the tracer uses a restarting command other than "
10408 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
10409 msgstr ""
10410
10411 #. type: Plain text
10412 #: build/C/man2/ptrace.2:1454
10413 msgid ""
10414 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
10415 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
10416 msgstr ""
10417
10418 #. type: SS
10419 #: build/C/man2/ptrace.2:1454
10420 #, no-wrap
10421 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
10422 msgstr ""
10423
10424 #
10425 #.  FIXME .
10426 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
10427 #.  PTRACE_SYSEMU_SINGLESTEP
10428 #. type: Plain text
10429 #: build/C/man2/ptrace.2:1460
10430 msgid "[Details of these kinds of stops are yet to be documented.]"
10431 msgstr ""
10432
10433 #. type: SS
10434 #: build/C/man2/ptrace.2:1460
10435 #, no-wrap
10436 msgid "Informational and restarting ptrace commands"
10437 msgstr ""
10438
10439 #. type: Plain text
10440 #: build/C/man2/ptrace.2:1470
10441 msgid ""
10442 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
10443 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
10444 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
10445 msgstr ""
10446
10447 #. type: Plain text
10448 #: build/C/man2/ptrace.2:1475
10449 msgid ""
10450 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
10451 "tracee using informational commands.  These commands leave the tracee in "
10452 "ptrace-stopped state:"
10453 msgstr ""
10454
10455 #. type: Plain text
10456 #: build/C/man2/ptrace.2:1487
10457 #, no-wrap
10458 msgid ""
10459 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
10460 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
10461 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
10462 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
10463 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
10464 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
10465 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
10466 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
10467 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
10468 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10469 msgstr ""
10470
10471 #. type: Plain text
10472 #: build/C/man2/ptrace.2:1499
10473 msgid ""
10474 "Note that some errors are not reported.  For example, setting signal "
10475 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
10476 "call may succeed (return 0 and not set I<errno>); querying "
10477 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
10478 "ptrace-stop is not documented as returning a meaningful event message."
10479 msgstr ""
10480
10481 #. type: Plain text
10482 #: build/C/man2/ptrace.2:1501
10483 msgid "The call"
10484 msgstr ""
10485
10486 #. type: Plain text
10487 #: build/C/man2/ptrace.2:1503
10488 #, no-wrap
10489 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10490 msgstr ""
10491
10492 #. type: Plain text
10493 #: build/C/man2/ptrace.2:1512
10494 msgid ""
10495 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
10496 "inherited by new tracees created and \"auto-attached\" via active "
10497 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
10498 "options."
10499 msgstr ""
10500
10501 #. type: Plain text
10502 #: build/C/man2/ptrace.2:1515
10503 msgid ""
10504 "Another group of commands makes the ptrace-stopped tracee run.  They have "
10505 "the form:"
10506 msgstr ""
10507
10508 #. type: Plain text
10509 #: build/C/man2/ptrace.2:1517
10510 #, no-wrap
10511 msgid "    ptrace(cmd, pid, 0, sig);\n"
10512 msgstr ""
10513
10514 #. type: Plain text
10515 #: build/C/man2/ptrace.2:1538
10516 msgid ""
10517 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
10518 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
10519 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
10520 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
10521 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
10522 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
10523 msgstr ""
10524
10525 #. type: SS
10526 #: build/C/man2/ptrace.2:1538
10527 #, no-wrap
10528 msgid "Attaching and detaching"
10529 msgstr ""
10530
10531 #. type: Plain text
10532 #: build/C/man2/ptrace.2:1540
10533 msgid "A thread can be attached to the tracer using the call"
10534 msgstr ""
10535
10536 #. type: Plain text
10537 #: build/C/man2/ptrace.2:1542
10538 #, no-wrap
10539 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
10540 msgstr ""
10541
10542 #. type: Plain text
10543 #: build/C/man2/ptrace.2:1544 build/C/man2/ptrace.2:2046
10544 msgid "or"
10545 msgstr ""
10546
10547 #. type: Plain text
10548 #: build/C/man2/ptrace.2:1546
10549 #, no-wrap
10550 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
10551 msgstr ""
10552
10553 #
10554 #.  FIXME . Describe how to attach to a thread which is already group-stopped.
10555 #. type: Plain text
10556 #: build/C/man2/ptrace.2:1570
10557 msgid ""
10558 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
10559 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
10560 "signals are concurrently sent to this thread during attach, the tracer may "
10561 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
10562 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
10563 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
10564 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
10565 "B<SIGSTOP> may be lost."
10566 msgstr ""
10567
10568 #. type: Plain text
10569 #: build/C/man2/ptrace.2:1577
10570 msgid ""
10571 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
10572 "may cause a stray B<EINTR> return from the currently executing system call "
10573 "in the tracee, as described in the \"Signal injection and suppression\" "
10574 "section."
10575 msgstr ""
10576
10577 #. type: Plain text
10578 #: build/C/man2/ptrace.2:1589
10579 msgid ""
10580 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
10581 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
10582 "after attach (or at any other time) without sending it any signals, use "
10583 "B<PTRACE_INTERRUPT> command."
10584 msgstr ""
10585
10586 #. type: Plain text
10587 #: build/C/man2/ptrace.2:1591
10588 msgid "The request"
10589 msgstr ""
10590
10591 #. type: Plain text
10592 #: build/C/man2/ptrace.2:1593
10593 #, no-wrap
10594 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
10595 msgstr ""
10596
10597 #. type: Plain text
10598 #: build/C/man2/ptrace.2:1599
10599 msgid ""
10600 "turns the calling thread into a tracee.  The thread continues to run "
10601 "(doesn't enter ptrace-stop).  A common practice is to follow the "
10602 "B<PTRACE_TRACEME> with"
10603 msgstr ""
10604
10605 #. type: Plain text
10606 #: build/C/man2/ptrace.2:1601
10607 #, no-wrap
10608 msgid "    raise(SIGSTOP);\n"
10609 msgstr ""
10610
10611 #. type: Plain text
10612 #: build/C/man2/ptrace.2:1604
10613 msgid ""
10614 "and allow the parent (which is our tracer now) to observe our signal-"
10615 "delivery-stop."
10616 msgstr ""
10617
10618 #. type: Plain text
10619 #: build/C/man2/ptrace.2:1628
10620 msgid ""
10621 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
10622 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
10623 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
10624 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
10625 "other kinds of B<clone>(2), are automatically attached to the same tracer "
10626 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
10627 "them to enter signal-delivery-stop after they exit the system call which "
10628 "created them."
10629 msgstr ""
10630
10631 #. type: Plain text
10632 #: build/C/man2/ptrace.2:1630
10633 msgid "Detaching of the tracee is performed by:"
10634 msgstr ""
10635
10636 #. type: Plain text
10637 #: build/C/man2/ptrace.2:1632
10638 #, no-wrap
10639 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
10640 msgstr ""
10641
10642 #. type: Plain text
10643 #: build/C/man2/ptrace.2:1640
10644 msgid ""
10645 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
10646 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
10647 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
10648 msgstr ""
10649
10650 #.  FIXME . Describe how to detach from a group-stopped tracee so that it
10651 #.         doesn't run, but continues to wait for SIGCONT.
10652 #. type: Plain text
10653 #: build/C/man2/ptrace.2:1664
10654 msgid ""
10655 "If the tracee is running when the tracer wants to detach it, the usual "
10656 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
10657 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
10658 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
10659 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
10660 "is that the tracee may enter other ptrace-stops and needs to be restarted "
10661 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
10662 "to be sure that the tracee is not already ptrace-stopped, because no signal "
10663 "delivery happens while it is\\(emnot even B<SIGSTOP>."
10664 msgstr ""
10665
10666 #. type: Plain text
10667 #: build/C/man2/ptrace.2:1672
10668 msgid ""
10669 "If the tracer dies, all tracees are automatically detached and restarted, "
10670 "unless they were in group-stop.  Handling of restart from group-stop is "
10671 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
10672 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
10673 "stop, the pending signal is injected."
10674 msgstr ""
10675
10676 #. type: SS
10677 #: build/C/man2/ptrace.2:1672
10678 #, no-wrap
10679 msgid "execve(2) under ptrace"
10680 msgstr ""
10681
10682 #
10683 #.  clone(2) CLONE_THREAD says:
10684 #.      If  any  of the threads in a thread group performs an execve(2),
10685 #.      then all threads other than the thread group leader are terminated,
10686 #.      and the new program is executed in the thread group leader.
10687 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
10688 #. type: Plain text
10689 #: build/C/man2/ptrace.2:1691
10690 msgid ""
10691 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
10692 "destroys all other threads in the process, and resets the thread ID of the "
10693 "execing thread to the thread group ID (process ID).  (Or, to put things "
10694 "another way, when a multithreaded process does an B<execve>(2), at "
10695 "completion of the call, it appears as though the B<execve>(2)  occurred in "
10696 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
10697 "This resetting of the thread ID looks very confusing to tracers:"
10698 msgstr ""
10699
10700 #. type: Plain text
10701 #: build/C/man2/ptrace.2:1701
10702 msgid ""
10703 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
10704 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
10705 "the thread group leader report death as if they exited via B<_exit>(2)  with "
10706 "exit code 0."
10707 msgstr ""
10708
10709 #. type: Plain text
10710 #: build/C/man2/ptrace.2:1709
10711 msgid ""
10712 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
10713 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
10714 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
10715 "ID is reset to be the same as its process ID, which is the same as the "
10716 "thread group leader's thread ID."
10717 msgstr ""
10718
10719 #. type: Plain text
10720 #: build/C/man2/ptrace.2:1715
10721 msgid ""
10722 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
10723 "option was turned on."
10724 msgstr ""
10725
10726 #. type: Plain text
10727 #: build/C/man2/ptrace.2:1736
10728 msgid ""
10729 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
10730 "this time, it appears to the tracer that the dead thread leader \"reappears "
10731 "from nowhere\".  (Note: the thread group leader does not report death via "
10732 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
10733 "eliminates the possibility that the tracer will see it dying and then "
10734 "reappearing.)  If the thread group leader was still alive, for the tracer "
10735 "this may look as if thread group leader returns from a different system call "
10736 "than it entered, or even \"returned from a system call even though it was "
10737 "not in any system call\".  If the thread group leader was not traced (or was "
10738 "traced by a different tracer), then during B<execve>(2)  it will appear as "
10739 "if it has become a tracee of the tracer of the execing tracee."
10740 msgstr ""
10741
10742 #. type: Plain text
10743 #: build/C/man2/ptrace.2:1739
10744 msgid ""
10745 "All of the above effects are the artifacts of the thread ID change in the "
10746 "tracee."
10747 msgstr ""
10748
10749 #. type: Plain text
10750 #: build/C/man2/ptrace.2:1759
10751 msgid ""
10752 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
10753 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
10754 "before B<execve>(2)  returns.  In this stop, the tracer can use "
10755 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
10756 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
10757 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
10758 msgstr ""
10759
10760 #. type: Plain text
10761 #: build/C/man2/ptrace.2:1765
10762 msgid ""
10763 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
10764 "guaranteed that except this tracee and the thread group leader, no other "
10765 "threads from the process are alive."
10766 msgstr ""
10767
10768 #. type: Plain text
10769 #: build/C/man2/ptrace.2:1773
10770 msgid ""
10771 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
10772 "clean up all its internal data structures describing the threads of this "
10773 "process, and retain only one data structure\\(emone which describes the "
10774 "single still running tracee, with"
10775 msgstr ""
10776
10777 #. type: Plain text
10778 #: build/C/man2/ptrace.2:1775
10779 #, no-wrap
10780 msgid "    thread ID == thread group ID == process ID.\n"
10781 msgstr ""
10782
10783 #. type: Plain text
10784 #: build/C/man2/ptrace.2:1779
10785 msgid "Example: two threads call B<execve>(2)  at the same time:"
10786 msgstr ""
10787
10788 #. type: Plain text
10789 #: build/C/man2/ptrace.2:1790
10790 #, no-wrap
10791 msgid ""
10792 "*** we get syscall-enter-stop in thread 1: **\n"
10793 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
10794 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
10795 "*** we get syscall-enter-stop in thread 2: **\n"
10796 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
10797 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
10798 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
10799 "*** we get syscall-exit-stop for PID0: **\n"
10800 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
10801 msgstr ""
10802
10803 #. type: Plain text
10804 #: build/C/man2/ptrace.2:1813
10805 msgid ""
10806 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
10807 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after "
10808 "B<execve>(2)  returns.  This is an ordinary signal (similar to one which can "
10809 "be generated by I<kill -TRAP>), not a special kind of ptrace-stop.  "
10810 "Employing B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
10811 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
10812 "delivered (much) later."
10813 msgstr ""
10814
10815 #. type: Plain text
10816 #: build/C/man2/ptrace.2:1832
10817 msgid ""
10818 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
10819 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
10820 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
10821 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
10822 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
10823 "B<SIGTRAP> is the recommended approach."
10824 msgstr ""
10825
10826 #. type: SS
10827 #: build/C/man2/ptrace.2:1832
10828 #, no-wrap
10829 msgid "Real parent"
10830 msgstr ""
10831
10832 #. type: Plain text
10833 #: build/C/man2/ptrace.2:1839
10834 msgid ""
10835 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
10836 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
10837 "receiving several kinds of B<waitpid>(2)  notifications when the child "
10838 "process is traced by some other process."
10839 msgstr ""
10840
10841 #. type: Plain text
10842 #: build/C/man2/ptrace.2:1842
10843 msgid ""
10844 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
10845 "exist; see BUGS below."
10846 msgstr ""
10847
10848 #. type: Plain text
10849 #: build/C/man2/ptrace.2:1844
10850 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
10851 msgstr ""
10852
10853 #. type: Plain text
10854 #: build/C/man2/ptrace.2:1852
10855 msgid ""
10856 "exit/death by signal is reported first to the tracer, then, when the tracer "
10857 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
10858 "only when the whole multithreaded process exits).  If the tracer and the "
10859 "real parent are the same process, the report is sent only once."
10860 msgstr ""
10861
10862 #. type: Plain text
10863 #: build/C/man2/ptrace.2:1857
10864 msgid ""
10865 "On success, the B<PTRACE_PEEK*> requests return the requested data (but see "
10866 "NOTES), while other requests return zero."
10867 msgstr ""
10868
10869 #. type: Plain text
10870 #: build/C/man2/ptrace.2:1867
10871 #, fuzzy
10872 #| msgid ""
10873 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
10874 #| "other requests return zero.  On error, all requests return -1, and "
10875 #| "I<errno> is set appropriately.  Since the value returned by a successful "
10876 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
10877 #| "such requests to determine whether or not an error occurred."
10878 msgid ""
10879 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
10880 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
10881 "caller must clear I<errno> before the call, and then check it afterward to "
10882 "determine whether or not an error occurred."
10883 msgstr ""
10884 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
10885 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
10886 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
10887 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
10888 "なければならない。"
10889
10890 #. type: Plain text
10891 #: build/C/man2/ptrace.2:1871
10892 msgid ""
10893 "(i386 only) There was an error with allocating or freeing a debug register."
10894 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
10895
10896 #. type: Plain text
10897 #: build/C/man2/ptrace.2:1882
10898 #, fuzzy
10899 #| msgid ""
10900 #| "There was an attempt to read from or write to an invalid area in the "
10901 #| "parent's or child's memory, probably because the area wasn't mapped or "
10902 #| "accessible.  Unfortunately, under Linux, different variations of this "
10903 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
10904 msgid ""
10905 "There was an attempt to read from or write to an invalid area in the "
10906 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
10907 "accessible.  Unfortunately, under Linux, different variations of this fault "
10908 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
10909 msgstr ""
10910 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
10911 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
10912 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
10913 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
10914
10915 #. type: Plain text
10916 #: build/C/man2/ptrace.2:1885
10917 msgid "An attempt was made to set an invalid option."
10918 msgstr "不正なオプションを設定しようとした。"
10919
10920 #. type: Plain text
10921 #: build/C/man2/ptrace.2:1892
10922 #, fuzzy
10923 #| msgid ""
10924 #| "I<request> is invalid, or an attempt was made to read from or write to an "
10925 #| "invalid area in the parent's or child's memory, or there was a word-"
10926 #| "alignment violation, or an invalid signal was specified during a restart "
10927 #| "request."
10928 msgid ""
10929 "I<request> is invalid, or an attempt was made to read from or write to an "
10930 "invalid area in the tracer's or the tracee's memory, or there was a word-"
10931 "alignment violation, or an invalid signal was specified during a restart "
10932 "request."
10933 msgstr ""
10934 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
10935 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
10936 "開の要求で不正なシグナルを指定した。"
10937
10938 #. type: Plain text
10939 #: build/C/man2/ptrace.2:1905
10940 #, fuzzy
10941 #| msgid ""
10942 #| "The specified process cannot be traced.  This could be because the parent "
10943 #| "has insufficient privileges (the required capability is "
10944 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
10945 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
10946 #| "programs, for obvious reasons.  Alternatively, the process may already be "
10947 #| "being traced, or be B<init>(8)  (PID 1)."
10948 msgid ""
10949 "The specified process cannot be traced.  This could be because the tracer "
10950 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
10951 "unprivileged processes cannot trace processes that they cannot send signals "
10952 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
10953 "Alternatively, the process may already be being traced, or (on kernels "
10954 "before 2.6.26) be B<init>(1)  (PID 1)."
10955 msgstr ""
10956 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
10957 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
10958 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
10959 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
10960 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
10961 "る、 または B<init>(8)  プロセス (PID が 1) である。"
10962
10963 #. type: Plain text
10964 #: build/C/man2/ptrace.2:1910
10965 #, fuzzy
10966 #| msgid ""
10967 #| "The specified process does not exist, or is not currently being traced by "
10968 #| "the caller, or is not stopped (for requests that require that)."
10969 msgid ""
10970 "The specified process does not exist, or is not currently being traced by "
10971 "the caller, or is not stopped (for requests that require a stopped tracee)."
10972 msgstr ""
10973 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
10974 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
10975 "ない (停止していることが必要な要求の場合)。"
10976
10977 #. type: Plain text
10978 #: build/C/man2/ptrace.2:1912
10979 msgid "SVr4, 4.3BSD."
10980 msgstr "SVr4, 4.3BSD."
10981
10982 #. type: Plain text
10983 #: build/C/man2/ptrace.2:1927
10984 #, fuzzy
10985 #| msgid ""
10986 #| "Although arguments to B<ptrace>()  are interpreted according to the "
10987 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
10988 #| "function with only the I<request> argument fixed.  This means that "
10989 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
10990 #| "undocumented B<gcc>(1)  behavior."
10991 msgid ""
10992 "Although arguments to B<ptrace>()  are interpreted according to the "
10993 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
10994 "function with only the I<request> argument fixed.  It is recommended to "
10995 "always supply four arguments, even if the requested operation does not use "
10996 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
10997 msgstr ""
10998 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
10999 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
11000 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
11001 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
11002 "になる。"
11003
11004 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
11005 #. type: Plain text
11006 #: build/C/man2/ptrace.2:1932
11007 msgid ""
11008 "In Linux kernels before 2.6.26, B<init>(1), the process with PID 1, may not "
11009 "be traced."
11010 msgstr "バージョン 2.6.26 より前の Linux カーネルでは、 B<init>(1) すなわち PID が 1 のプロセスはトレースすることができない。"
11011
11012 #.  See http://lkml.org/lkml/2008/5/8/375
11013 #. type: Plain text
11014 #: build/C/man2/ptrace.2:1939
11015 msgid ""
11016 "The layout of the contents of memory and the USER area are quite operating-"
11017 "system- and architecture-specific.  The offset supplied, and the data "
11018 "returned, might not entirely match with the definition of I<struct user>."
11019 msgstr ""
11020 "メモリや USER 領域の内容や配置はオペレーティングシステムごと、アーキテクチャ"
11021 "ごとに 非常に依存する。 オフセットが指定された場合、返されるデータは "
11022 "I<struct user> の定義と完全に一致しないこともありえる。"
11023
11024 #. type: Plain text
11025 #: build/C/man2/ptrace.2:1942
11026 msgid ""
11027 "The size of a \"word\" is determined by the operating-system variant (e.g., "
11028 "for 32-bit Linux it is 32 bits)."
11029 msgstr ""
11030 "「ワード (word) 」の大きさはオペレーティングシステムによって決まる。 (例え"
11031 "ば、32 ビットの Linux では 32 ビットである、など。)"
11032
11033 #. type: Plain text
11034 #: build/C/man2/ptrace.2:1950
11035 msgid ""
11036 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
11037 "Its behavior differs significantly on other flavors of UNIX.  In any case, "
11038 "use of B<ptrace>()  is highly specific to the operating system and "
11039 "architecture."
11040 msgstr ""
11041 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
11042 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
11043 "を使うとオペレーションシステムやアーキテクチャに非常に依存したものになる。"
11044
11045 #. type: SS
11046 #: build/C/man2/ptrace.2:1950
11047 #, no-wrap
11048 msgid "C library/kernel ABI differences"
11049 msgstr "C ライブラリとカーネル ABI の違い"
11050
11051 #. type: Plain text
11052 #: build/C/man2/ptrace.2:1962
11053 msgid ""
11054 "At the system call level, the B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>, and "
11055 "B<PTRACE_PEEKUSER> requests have a different API: they store the result at "
11056 "the address specified by the I<data> parameter, and the return value is the "
11057 "error flag.  The glibc wrapper function provides the API given in "
11058 "DESCRIPTION above, with the result being returned via the function return "
11059 "value."
11060 msgstr ""
11061
11062 #. type: Plain text
11063 #: build/C/man2/ptrace.2:1973
11064 msgid ""
11065 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
11066 "different value than the one for 2.4.  This leads to applications compiled "
11067 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
11068 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
11069 "that is defined."
11070 msgstr ""
11071 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
11072 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
11073 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
11074 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
11075 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
11076
11077 #. type: Plain text
11078 #: build/C/man2/ptrace.2:1976
11079 msgid ""
11080 "Group-stop notifications are sent to the tracer, but not to real parent.  "
11081 "Last confirmed on 2.6.38.6."
11082 msgstr ""
11083
11084 #.  Note from Denys Vlasenko:
11085 #.      Here "exits" means any kind of death - _exit, exit_group,
11086 #.      signal death. Signal death and exit_group cases are trivial,
11087 #.      though: since signal death and exit_group kill all other threads
11088 #.      too, "until all other threads exit" thing happens rather soon
11089 #.      in these cases. Therefore, only _exit presents observably
11090 #.      puzzling behavior to ptrace users: thread leader _exit's,
11091 #.      but WIFEXITED isn't reported! We are trying to explain here
11092 #.      why it is so.
11093 #.   FIXME . need to test/verify this scenario
11094 #. type: Plain text
11095 #: build/C/man2/ptrace.2:2007
11096 msgid ""
11097 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
11098 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
11099 "subsequent B<WIFEXITED> notification will not be delivered until all other "
11100 "threads exit.  As explained above, if one of other threads calls "
11101 "B<execve>(2), the death of the thread group leader will I<never> be "
11102 "reported.  If the execed thread is not traced by this tracer, the tracer "
11103 "will never know that B<execve>(2)  happened.  One possible workaround is to "
11104 "B<PTRACE_DETACH> the thread group leader instead of restarting it in this "
11105 "case.  Last confirmed on 2.6.38.6."
11106 msgstr ""
11107
11108 #. type: Plain text
11109 #: build/C/man2/ptrace.2:2017
11110 msgid ""
11111 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
11112 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
11113 "to always immediately kill tasks even under ptrace.  Last confirmed on "
11114 "2.6.38.6."
11115 msgstr ""
11116
11117 #. type: Plain text
11118 #: build/C/man2/ptrace.2:2035
11119 msgid ""
11120 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
11121 "delivery was suppressed by the tracer.  (This is very typical operation: it "
11122 "is usually done by debuggers on every attach, in order to not introduce a "
11123 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
11124 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
11125 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
11126 "that when you attach to a quiescent process with the command"
11127 msgstr ""
11128
11129 #. type: Plain text
11130 #: build/C/man2/ptrace.2:2037
11131 #, no-wrap
11132 msgid "    strace -p E<lt>process-IDE<gt>\n"
11133 msgstr ""
11134
11135 #. type: Plain text
11136 #: build/C/man2/ptrace.2:2040
11137 msgid "then, instead of the usual and expected one-line output such as"
11138 msgstr ""
11139
11140 #. type: Plain text
11141 #: build/C/man2/ptrace.2:2043
11142 #, no-wrap
11143 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
11144 msgstr ""
11145
11146 #. type: Plain text
11147 #: build/C/man2/ptrace.2:2049
11148 #, no-wrap
11149 msgid "    select(6, [5], NULL, [5], NULL_\n"
11150 msgstr ""
11151
11152 #. type: Plain text
11153 #: build/C/man2/ptrace.2:2053
11154 msgid ""
11155 "('_' denotes the cursor position), you observe more than one line.  For "
11156 "example:"
11157 msgstr ""
11158
11159 #. type: Plain text
11160 #: build/C/man2/ptrace.2:2057
11161 #, no-wrap
11162 msgid ""
11163 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
11164 "    epoll_wait(4,_\n"
11165 msgstr ""
11166
11167 #. type: Plain text
11168 #: build/C/man2/ptrace.2:2078
11169 msgid ""
11170 "What is not visible here is that the process was blocked in "
11171 "B<epoll_wait>(2)  before B<strace>(1)  has attached to it.  Attaching caused "
11172 "B<epoll_wait>(2)  to return to user space with the error B<EINTR>.  In this "
11173 "particular case, the program reacted to B<EINTR> by checking the current "
11174 "time, and then executing B<epoll_wait>(2)  again.  (Programs which do not "
11175 "expect such \"stray\" B<EINTR> errors may behave in an unintended way upon "
11176 "an B<strace>(1)  attach.)"
11177 msgstr ""
11178
11179 #. type: Plain text
11180 #: build/C/man2/ptrace.2:2092
11181 msgid ""
11182 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
11183 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), "
11184 "B<exec>(3), B<capabilities>(7), B<signal>(7)"
11185 msgstr ""
11186 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
11187 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
11188 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
11189
11190 #. type: TH
11191 #: build/C/man2/quotactl.2:27
11192 #, no-wrap
11193 msgid "QUOTACTL"
11194 msgstr "QUOTACTL"
11195
11196 #. type: TH
11197 #: build/C/man2/quotactl.2:27
11198 #, no-wrap
11199 msgid "2010-06-16"
11200 msgstr "2010-06-16"
11201
11202 #. type: Plain text
11203 #: build/C/man2/quotactl.2:30
11204 msgid "quotactl - manipulate disk quotas"
11205 msgstr "quotactl - ディスク quota を操作する"
11206
11207 #. type: Plain text
11208 #: build/C/man2/quotactl.2:34
11209 #, no-wrap
11210 msgid ""
11211 "B<#include E<lt>sys/quota.hE<gt>>\n"
11212 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11213 msgstr ""
11214 "B<#include E<lt>sys/quota.hE<gt>>\n"
11215 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11216
11217 #. type: Plain text
11218 #: build/C/man2/quotactl.2:37
11219 #, no-wrap
11220 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11221 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11222
11223 #. type: Plain text
11224 #: build/C/man2/quotactl.2:49
11225 #, fuzzy
11226 #| msgid ""
11227 #| "The quota system defines for each user and/or group a soft limit and a "
11228 #| "hard limit bounding the amount of disk space that can be used on a given "
11229 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
11230 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
11231 #| "soft limit for more than one week (by default)  at a time: after this "
11232 #| "week the soft limit counts as hard limit."
11233 msgid ""
11234 "The quota system can be used to set per-user and per-group limits on the "
11235 "amount of disk space used on a filesystem.  For each user and/or group, a "
11236 "soft limit and a hard limit can be set for each filesystem.  The hard limit "
11237 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
11238 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
11239 "week (by default) at a time; after this time, the soft limit counts as a "
11240 "hard limit."
11241 msgstr ""
11242 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
11243 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
11244 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
11245 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
11246 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
11247 "過した後はハード・リミットを超過したと みなされる。"
11248
11249 #. type: Plain text
11250 #: build/C/man2/quotactl.2:74
11251 #, fuzzy
11252 #| msgid ""
11253 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
11254 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
11255 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
11256 #| "respectively), and I<subcmd> is described below."
11257 msgid ""
11258 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
11259 "indicates a command to be applied to the user or group ID specified in "
11260 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
11261 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
11262 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
11263 msgstr ""
11264 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
11265 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
11266 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
11267 "を指定する。 I<subcmd> は以下で説明する。"
11268
11269 #. type: Plain text
11270 #: build/C/man2/quotactl.2:79
11271 msgid ""
11272 "The I<special> argument is a pointer to a null-terminated string containing "
11273 "the pathname of the (mounted) block special device for the filesystem being "
11274 "manipulated."
11275 msgstr ""
11276
11277 #. type: Plain text
11278 #: build/C/man2/quotactl.2:87
11279 msgid ""
11280 "The I<addr> argument is the address of an optional, command-specific, data "
11281 "structure that is copied in or out of the system.  The interpretation of "
11282 "I<addr> is given with each command below."
11283 msgstr ""
11284
11285 #. type: Plain text
11286 #: build/C/man2/quotactl.2:91
11287 msgid "The I<subcmd> value is one of the following:"
11288 msgstr "I<subcmd> の値は以下のいずれかである"
11289
11290 #. type: TP
11291 #: build/C/man2/quotactl.2:91
11292 #, no-wrap
11293 msgid "B<Q_QUOTAON>"
11294 msgstr "B<Q_QUOTAON>"
11295
11296 #. type: Plain text
11297 #: build/C/man2/quotactl.2:98
11298 msgid ""
11299 "Turn on quotas for a filesystem.  The I<id> argument is the identification "
11300 "number of the quota format to be used.  Currently, there are three supported "
11301 "quota formats:"
11302 msgstr ""
11303
11304 #. type: TP
11305 #: build/C/man2/quotactl.2:99
11306 #, no-wrap
11307 msgid "B<QFMT_VFS_OLD>"
11308 msgstr ""
11309
11310 #. type: Plain text
11311 #: build/C/man2/quotactl.2:102
11312 msgid "The original quota format."
11313 msgstr ""
11314
11315 #. type: TP
11316 #: build/C/man2/quotactl.2:102
11317 #, no-wrap
11318 msgid "B<QFMT_VFS_V0>"
11319 msgstr ""
11320
11321 #. type: Plain text
11322 #: build/C/man2/quotactl.2:106
11323 msgid ""
11324 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
11325 "quota limits up to 2^42 bytes and 2^32 inodes."
11326 msgstr ""
11327
11328 #. type: TP
11329 #: build/C/man2/quotactl.2:106
11330 #, no-wrap
11331 msgid "B<QFMT_VFS_V1>"
11332 msgstr ""
11333
11334 #. type: Plain text
11335 #: build/C/man2/quotactl.2:110
11336 msgid ""
11337 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
11338 "bytes and 2^64 inodes."
11339 msgstr ""
11340
11341 #. type: Plain text
11342 #: build/C/man2/quotactl.2:121
11343 msgid ""
11344 "The I<addr> argument points to the pathname of a file containing the quotas "
11345 "for the filesystem.  The quota file must exist; it is normally created with "
11346 "the B<quotacheck>(8)  program.  This operation requires privilege "
11347 "(B<CAP_SYS_ADMIN>)."
11348 msgstr ""
11349
11350 #. type: TP
11351 #: build/C/man2/quotactl.2:121
11352 #, no-wrap
11353 msgid "B<Q_QUOTAOFF>"
11354 msgstr "B<Q_QUOTAOFF>"
11355
11356 #. type: Plain text
11357 #: build/C/man2/quotactl.2:131
11358 msgid ""
11359 "Turn off quotas for a filesystem.  The I<addr> and I<id> arguments are "
11360 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
11361 msgstr ""
11362
11363 #. type: TP
11364 #: build/C/man2/quotactl.2:131
11365 #, no-wrap
11366 msgid "B<Q_GETQUOTA>"
11367 msgstr "B<Q_GETQUOTA>"
11368
11369 #. type: Plain text
11370 #: build/C/man2/quotactl.2:142
11371 #, fuzzy
11372 #| msgid ""
11373 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
11374 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
11375 msgid ""
11376 "Get disk quota limits and current usage for user or group I<id>.  The "
11377 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
11378 "quota.hE<gt>> as follows:"
11379 msgstr ""
11380 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
11381 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
11382
11383 #. type: Plain text
11384 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
11385 #, no-wrap
11386 msgid ""
11387 "/* uint64_t is an unsigned 64-bit integer;\n"
11388 "   uint32_t is an unsigned 32-bit integer */\n"
11389 msgstr ""
11390
11391 #. type: Plain text
11392 #: build/C/man2/quotactl.2:167
11393 #, no-wrap
11394 msgid ""
11395 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
11396 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
11397 "                                  quota blocks alloc */\n"
11398 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
11399 "                                  disk quota blocks */\n"
11400 "    uint64_t dqb_curspace;     /* current quota block\n"
11401 "                                  count */\n"
11402 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
11403 "                                  allocated inodes */\n"
11404 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
11405 "    uint64_t dqb_curinodes;    /* current number of\n"
11406 "                                  allocated inodes */\n"
11407 "    uint64_t dqb_btime;        /* time limit for excessive\n"
11408 "                                  disk use */\n"
11409 "    uint64_t dqb_itime;        /* time limit for excessive\n"
11410 "                                  files */\n"
11411 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
11412 "                                  constants */\n"
11413 "};\n"
11414 msgstr ""
11415
11416 #. type: Plain text
11417 #: build/C/man2/quotactl.2:170
11418 #, no-wrap
11419 msgid ""
11420 "/* Flags in dqb_valid that indicate which fields in\n"
11421 "   dqblk structure are valid. */\n"
11422 msgstr ""
11423
11424 #. type: Plain text
11425 #: build/C/man2/quotactl.2:181
11426 #, no-wrap
11427 msgid ""
11428 "#define QIF_BLIMITS   1\n"
11429 "#define QIF_SPACE     2\n"
11430 "#define QIF_ILIMITS   4\n"
11431 "#define QIF_INODES    8\n"
11432 "#define QIF_BTIME     16\n"
11433 "#define QIF_ITIME     32\n"
11434 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
11435 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
11436 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
11437 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
11438 msgstr ""
11439
11440 #. type: Plain text
11441 #: build/C/man2/quotactl.2:198
11442 msgid ""
11443 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
11444 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
11445 "entries of the I<dqblk> structure and marks them as valid in the "
11446 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
11447 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
11448 msgstr ""
11449
11450 #. type: TP
11451 #: build/C/man2/quotactl.2:198
11452 #, no-wrap
11453 msgid "B<Q_SETQUOTA>"
11454 msgstr "B<Q_SETQUOTA>"
11455
11456 #. type: Plain text
11457 #: build/C/man2/quotactl.2:218
11458 msgid ""
11459 "Set quota information for user or group I<id>, using the information "
11460 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
11461 "field of the I<dqblk> structure indicates which entries in the structure "
11462 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
11463 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
11464 "requires privilege (B<CAP_SYS_ADMIN>)."
11465 msgstr ""
11466
11467 #. type: TP
11468 #: build/C/man2/quotactl.2:218
11469 #, no-wrap
11470 msgid "B<Q_GETINFO>"
11471 msgstr "B<Q_GETINFO>"
11472
11473 #. type: Plain text
11474 #: build/C/man2/quotactl.2:229
11475 #, fuzzy
11476 #| msgid ""
11477 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
11478 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
11479 msgid ""
11480 "Get information (like grace times) about quotafile.  The I<addr> argument "
11481 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
11482 "I<E<lt>sys/quota.hE<gt>> as follows:"
11483 msgstr ""
11484 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
11485 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
11486
11487 #. type: Plain text
11488 #: build/C/man2/quotactl.2:238
11489 #, no-wrap
11490 msgid ""
11491 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11492 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11493 "                               becomes hard limit */\n"
11494 msgstr ""
11495 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11496 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11497 "                               becomes hard limit */\n"
11498
11499 #. type: Plain text
11500 #: build/C/man2/quotactl.2:245
11501 #, no-wrap
11502 msgid ""
11503 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11504 "                               becomes hard limit */\n"
11505 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11506 "                               (DQF_*) */\n"
11507 "    uint32_t dqi_valid;\n"
11508 "};\n"
11509 msgstr ""
11510 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11511 "                               becomes hard limit */\n"
11512 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11513 "                               (DQF_*) */\n"
11514 "    uint32_t dqi_valid;\n"
11515 "};\n"
11516
11517 #. type: Plain text
11518 #: build/C/man2/quotactl.2:247
11519 #, no-wrap
11520 msgid "/* Bits for dqi_flags */\n"
11521 msgstr "/* Bits for dqi_flags */\n"
11522
11523 #. type: Plain text
11524 #: build/C/man2/quotactl.2:249
11525 #, no-wrap
11526 msgid "/* Quota format QFMT_VFS_OLD */\n"
11527 msgstr "/* Quota format QFMT_VFS_OLD */\n"
11528
11529 #. type: Plain text
11530 #: build/C/man2/quotactl.2:251
11531 #, no-wrap
11532 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11533 msgstr "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11534
11535 #. type: Plain text
11536 #: build/C/man2/quotactl.2:253
11537 #, no-wrap
11538 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
11539 msgstr "/* Other quota formats have no dqi_flags bits defined */\n"
11540
11541 #. type: Plain text
11542 #: build/C/man2/quotactl.2:256
11543 #, no-wrap
11544 msgid ""
11545 "/* Flags in dqi_valid that indicate which fields in\n"
11546 "   dqinfo structure are valid. */\n"
11547 msgstr ""
11548 "/* Flags in dqi_valid that indicate which fields in\n"
11549 "   dqinfo structure are valid. */\n"
11550
11551 #. type: Plain text
11552 #: build/C/man2/quotactl.2:261
11553 #, no-wrap
11554 msgid ""
11555 "# define IIF_BGRACE\t1\n"
11556 "# define IIF_IGRACE\t2\n"
11557 "# define IIF_FLAGS\t4\n"
11558 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11559 msgstr ""
11560 "# define IIF_BGRACE\t1\n"
11561 "# define IIF_IGRACE\t2\n"
11562 "# define IIF_FLAGS\t4\n"
11563 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11564
11565 #. type: Plain text
11566 #: build/C/man2/quotactl.2:277
11567 msgid ""
11568 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
11569 "the structure that are valid.  Currently, the kernel fills in all entries of "
11570 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
11571 "field.  The I<id> argument is ignored."
11572 msgstr ""
11573
11574 #. type: TP
11575 #: build/C/man2/quotactl.2:277
11576 #, no-wrap
11577 msgid "B<Q_SETINFO>"
11578 msgstr "B<Q_SETINFO>"
11579
11580 #. type: Plain text
11581 #: build/C/man2/quotactl.2:301
11582 msgid ""
11583 "Set information about quotafile.  The I<addr> argument should be a pointer "
11584 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
11585 "indicates the entries in the structure that have been set by the caller.  "
11586 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
11587 "the previous quota interfaces.  The I<id> argument is ignored.  This "
11588 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11589 msgstr ""
11590
11591 #. type: TP
11592 #: build/C/man2/quotactl.2:301
11593 #, no-wrap
11594 msgid "B<Q_GETFMT>"
11595 msgstr "B<Q_GETFMT>"
11596
11597 #. type: Plain text
11598 #: build/C/man2/quotactl.2:308
11599 msgid ""
11600 "Get quota format used on the specified filesystem.  The I<addr> argument "
11601 "should be a pointer to a 4-byte buffer where the format number will be "
11602 "stored."
11603 msgstr ""
11604
11605 #. type: TP
11606 #: build/C/man2/quotactl.2:308
11607 #, no-wrap
11608 msgid "B<Q_SYNC>"
11609 msgstr "B<Q_SYNC>"
11610
11611 #. type: Plain text
11612 #: build/C/man2/quotactl.2:319
11613 msgid ""
11614 "Update the on-disk copy of quota usages for a filesystem.  If I<special> is "
11615 "NULL, then all filesystems with active quotas are sync'ed.  The I<addr> and "
11616 "I<id> arguments are ignored."
11617 msgstr ""
11618
11619 #. type: TP
11620 #: build/C/man2/quotactl.2:319
11621 #, no-wrap
11622 msgid "B<Q_GETSTATS>"
11623 msgstr "B<Q_GETSTATS>"
11624
11625 #.  Q_GETSTATS was removed in kernel 2.4.22.
11626 #. type: Plain text
11627 #: build/C/man2/quotactl.2:339
11628 msgid ""
11629 "Get statistics and other generic information about the quota subsystem.  The "
11630 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
11631 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>>.  "
11632 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
11633 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
11634 "the information instead."
11635 msgstr ""
11636
11637 #. type: Plain text
11638 #: build/C/man2/quotactl.2:342
11639 msgid ""
11640 "For XFS filesystems making use of the XFS Quota Manager (XQM), the above "
11641 "commands are bypassed and the following commands are used:"
11642 msgstr ""
11643
11644 #. type: TP
11645 #: build/C/man2/quotactl.2:342
11646 #, no-wrap
11647 msgid "B<Q_XQUOTAON>"
11648 msgstr "B<Q_XQUOTAON>"
11649
11650 #. type: Plain text
11651 #: build/C/man2/quotactl.2:363
11652 msgid ""
11653 "Turn on quotas for an XFS filesystem.  XFS provides the ability to turn on/"
11654 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
11655 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
11656 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
11657 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
11658 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
11659 "(B<CAP_SYS_ADMIN>)."
11660 msgstr ""
11661
11662 #. type: TP
11663 #: build/C/man2/quotactl.2:363
11664 #, no-wrap
11665 msgid "B<Q_XQUOTAOFF>"
11666 msgstr "B<Q_XQUOTAOFF>"
11667
11668 #. type: Plain text
11669 #: build/C/man2/quotactl.2:374
11670 msgid ""
11671 "Turn off quotas for an XFS filesystem.  As with B<Q_QUOTAON>, XFS "
11672 "filesystems expect a pointer to an I<unsigned int> that specifies whether "
11673 "quota accounting and/or limit enforcement need to be turned off.  This "
11674 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11675 msgstr ""
11676
11677 #. type: TP
11678 #: build/C/man2/quotactl.2:374
11679 #, no-wrap
11680 msgid "B<Q_XGETQUOTA>"
11681 msgstr "B<Q_XGETQUOTA>"
11682
11683 #. type: Plain text
11684 #: build/C/man2/quotactl.2:388
11685 msgid ""
11686 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
11687 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
11688 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
11689 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
11690 "user."
11691 msgstr ""
11692
11693 #. type: TP
11694 #: build/C/man2/quotactl.2:388
11695 #, no-wrap
11696 msgid "B<Q_XSETQLIM>"
11697 msgstr "B<Q_XSETQLIM>"
11698
11699 #. type: Plain text
11700 #: build/C/man2/quotactl.2:400
11701 msgid ""
11702 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
11703 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
11704 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11705 msgstr ""
11706
11707 #. type: TP
11708 #: build/C/man2/quotactl.2:400
11709 #, no-wrap
11710 msgid "B<Q_XGETQSTAT>"
11711 msgstr "B<Q_XGETQSTAT>"
11712
11713 #. type: Plain text
11714 #: build/C/man2/quotactl.2:408
11715 msgid ""
11716 "Returns an I<fs_quota_stat> structure containing XFS filesystem-specific "
11717 "quota information.  This is useful for finding out how much space is used to "
11718 "store quota information, and also to get quotaon/off status of a given local "
11719 "XFS filesystem."
11720 msgstr ""
11721
11722 #. type: TP
11723 #: build/C/man2/quotactl.2:408
11724 #, no-wrap
11725 msgid "B<Q_XQUOTARM>"
11726 msgstr "B<Q_XQUOTARM>"
11727
11728 #. type: Plain text
11729 #: build/C/man2/quotactl.2:412
11730 msgid ""
11731 "Free the disk space taken by disk quotas.  Quotas must have already been "
11732 "turned off."
11733 msgstr ""
11734
11735 #. type: Plain text
11736 #: build/C/man2/quotactl.2:419
11737 msgid ""
11738 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
11739 "quota information to disk (in addition to the other filesystem metadata that "
11740 "it writes out)."
11741 msgstr ""
11742
11743 #. type: Plain text
11744 #: build/C/man2/quotactl.2:427
11745 msgid ""
11746 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
11747 "is set to indicate the error."
11748 msgstr ""
11749 "成功すると、 B<quotactl>()  は 0 を返す。\n"
11750 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
11751
11752 #. type: Plain text
11753 #: build/C/man2/quotactl.2:434
11754 msgid "I<addr> or I<special> is invalid."
11755 msgstr ""
11756
11757 #. type: Plain text
11758 #: build/C/man2/quotactl.2:440
11759 msgid "I<cmd> or I<type> is invalid."
11760 msgstr ""
11761
11762 #. type: Plain text
11763 #: build/C/man2/quotactl.2:447
11764 msgid "The file specified by I<special> or I<addr> does not exist."
11765 msgstr ""
11766
11767 #. type: Plain text
11768 #: build/C/man2/quotactl.2:452
11769 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
11770 msgstr ""
11771
11772 #. type: TP
11773 #: build/C/man2/quotactl.2:452
11774 #, no-wrap
11775 msgid "B<ENOTBLK>"
11776 msgstr "B<ENOTBLK>"
11777
11778 #. type: Plain text
11779 #: build/C/man2/quotactl.2:456
11780 msgid "I<special> is not a block device."
11781 msgstr "I<special> がブロックデバイスではない。"
11782
11783 #. type: Plain text
11784 #: build/C/man2/quotactl.2:461
11785 msgid ""
11786 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
11787 "specified operation."
11788 msgstr ""
11789
11790 #. type: Plain text
11791 #: build/C/man2/quotactl.2:465
11792 msgid ""
11793 "No disk quota is found for the indicated user.  Quotas have not been turned "
11794 "on for this filesystem."
11795 msgstr ""
11796
11797 #. type: Plain text
11798 #: build/C/man2/quotactl.2:474
11799 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
11800 msgstr ""
11801
11802 #. type: Plain text
11803 #: build/C/man2/quotactl.2:477
11804 msgid "Specified limits are out of range allowed by quota format."
11805 msgstr ""
11806
11807 #. type: Plain text
11808 #: build/C/man2/quotactl.2:486
11809 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
11810 msgstr ""
11811
11812 #. type: Plain text
11813 #: build/C/man2/quotactl.2:495
11814 msgid ""
11815 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
11816 "the quota file pointed to by I<addr> exists, but is not on the filesystem "
11817 "pointed to by I<special>."
11818 msgstr ""
11819
11820 #. type: Plain text
11821 #: build/C/man2/quotactl.2:501
11822 msgid ""
11823 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
11824 msgstr ""
11825
11826 #. type: Plain text
11827 #: build/C/man2/quotactl.2:504
11828 msgid "The quota file is corrupted."
11829 msgstr "quota ファイルが壊れている。"
11830
11831 #. type: Plain text
11832 #: build/C/man2/quotactl.2:507
11833 msgid "Specified quota format was not found."
11834 msgstr ""
11835
11836 #. type: Plain text
11837 #: build/C/man2/quotactl.2:512
11838 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
11839 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
11840
11841 #. type: TH
11842 #: build/C/man2/sendfile.2:19
11843 #, no-wrap
11844 msgid "SENDFILE"
11845 msgstr "SENDFILE"
11846
11847 #. type: TH
11848 #: build/C/man2/sendfile.2:19
11849 #, no-wrap
11850 msgid "2011-09-14"
11851 msgstr "2011-09-14"
11852
11853 #. type: Plain text
11854 #: build/C/man2/sendfile.2:22
11855 msgid "sendfile - transfer data between file descriptors"
11856 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
11857
11858 #. type: Plain text
11859 #: build/C/man2/sendfile.2:24
11860 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
11861 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
11862
11863 #.  The below is too ugly. Comments about glibc versions belong
11864 #.  in the notes, not in the header.
11865 #.  .B #include <features.h>
11866 #.  .br
11867 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
11868 #.  .br
11869 #.  .B #include <sys/sendfile.h>
11870 #.  .br
11871 #.  #else
11872 #.  .br
11873 #.  .B #include <sys/types.h>
11874 #.  .br
11875 #.  .B /* No system prototype before glibc 2.1. */
11876 #.  .br
11877 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
11878 #.  .br
11879 #.  .B #endif
11880 #. type: Plain text
11881 #: build/C/man2/sendfile.2:47
11882 msgid ""
11883 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
11884 "size_t>I< count>B<);>"
11885 msgstr ""
11886 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
11887 "size_t>I< count>B<);>"
11888
11889 #. type: Plain text
11890 #: build/C/man2/sendfile.2:57
11891 msgid ""
11892 "B<sendfile>()  copies data between one file descriptor and another.  Because "
11893 "this copying is done within the kernel, B<sendfile>()  is more efficient "
11894 "than the combination of B<read>(2)  and B<write>(2), which would require "
11895 "transferring data to and from user space."
11896 msgstr ""
11897 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
11898 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
11899 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
11900 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
11901 "るからである。"
11902
11903 #. type: Plain text
11904 #: build/C/man2/sendfile.2:62
11905 msgid ""
11906 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
11907 "be a descriptor opened for writing."
11908 msgstr ""
11909 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
11910 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
11911
11912 #. type: Plain text
11913 #: build/C/man2/sendfile.2:83
11914 msgid ""
11915 "If I<offset> is not NULL, then it points to a variable holding the file "
11916 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
11917 "When B<sendfile>()  returns, this variable will be set to the offset of the "
11918 "byte following the last byte that was read.  If I<offset> is not NULL, then "
11919 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
11920 "otherwise the current file offset is adjusted to reflect the number of bytes "
11921 "read from I<in_fd>."
11922 msgstr ""
11923 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
11924 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
11925 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
11926 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
11927 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
11928 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
11929 "整する。"
11930
11931 #. type: Plain text
11932 #: build/C/man2/sendfile.2:90
11933 msgid ""
11934 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
11935 "current file offset, and the file offset will be updated by the call."
11936 msgstr ""
11937 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
11938 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
11939
11940 #. type: Plain text
11941 #: build/C/man2/sendfile.2:93
11942 msgid "I<count> is the number of bytes to copy between the file descriptors."
11943 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
11944
11945 #. type: Plain text
11946 #: build/C/man2/sendfile.2:100
11947 msgid ""
11948 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
11949 "like operations (i.e., it cannot be a socket)."
11950 msgstr ""
11951 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
11952 "な\n"
11953 "い (ソケットを指定することはできない)。"
11954
11955 #. type: Plain text
11956 #: build/C/man2/sendfile.2:108
11957 msgid ""
11958 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
11959 "Linux 2.6.33 it can be any file.  If it is a regular file, then "
11960 "B<sendfile>()  changes the file offset appropriately."
11961 msgstr ""
11962 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
11963 "な\n"
11964 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
11965 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
11966
11967 #. type: Plain text
11968 #: build/C/man2/sendfile.2:115
11969 msgid ""
11970 "If the transfer was successful, the number of bytes written to I<out_fd> is "
11971 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
11972 msgstr ""
11973 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
11974 "合、-1 を返し、 I<errno> に適切な値を設定する。"
11975
11976 #. type: Plain text
11977 #: build/C/man2/sendfile.2:121
11978 msgid ""
11979 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
11980 "block."
11981 msgstr ""
11982 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
11983 "た。"
11984
11985 #. type: Plain text
11986 #: build/C/man2/sendfile.2:125
11987 msgid ""
11988 "The input file was not opened for reading or the output file was not opened "
11989 "for writing."
11990 msgstr ""
11991 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
11992 "のためにオープンされていない。"
11993
11994 #. type: Plain text
11995 #: build/C/man2/sendfile.2:128
11996 msgid "Bad address."
11997 msgstr "アドレスがおかしい。"
11998
11999 #. type: Plain text
12000 #: build/C/man2/sendfile.2:134
12001 msgid ""
12002 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
12003 "available for I<in_fd>."
12004 msgstr ""
12005 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
12006 "が I<in_fd> では利用できない。"
12007
12008 #. type: Plain text
12009 #: build/C/man2/sendfile.2:138
12010 msgid "Unspecified error while reading from I<in_fd>."
12011 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
12012
12013 #. type: Plain text
12014 #: build/C/man2/sendfile.2:142
12015 msgid "Insufficient memory to read from I<in_fd>."
12016 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
12017
12018 #. type: Plain text
12019 #: build/C/man2/sendfile.2:148
12020 msgid ""
12021 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
12022 "sendfile.hE<gt>> is present since glibc 2.1."
12023 msgstr ""
12024 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
12025 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
12026
12027 #. type: Plain text
12028 #: build/C/man2/sendfile.2:150
12029 msgid "Not specified in POSIX.1-2001, or other standards."
12030 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
12031
12032 #. type: Plain text
12033 #: build/C/man2/sendfile.2:155
12034 msgid ""
12035 "Other UNIX systems implement B<sendfile>()  with different semantics and "
12036 "prototypes.  It should not be used in portable programs."
12037 msgstr ""
12038 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
12039 "ている。移植性を考慮したプログラムでは使用すべきではない。"
12040
12041 #. type: Plain text
12042 #: build/C/man2/sendfile.2:165
12043 msgid ""
12044 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
12045 "need to send some header data in front of the file contents, you will find "
12046 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
12047 "minimize the number of packets and to tune performance."
12048 msgstr ""
12049 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
12050 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
12051 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
12052 "いいだろう。"
12053
12054 #. type: Plain text
12055 #: build/C/man2/sendfile.2:171
12056 msgid ""
12057 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
12058 "B<sendfile>()  changed the current offset of that file."
12059 msgstr ""
12060 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
12061 "き、\n"
12062 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
12063
12064 #. type: Plain text
12065 #: build/C/man2/sendfile.2:183
12066 msgid ""
12067 "The original Linux B<sendfile>()  system call was not designed to handle "
12068 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
12069 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
12070 "function transparently deals with the kernel differences."
12071 msgstr ""
12072 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
12073 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
12074 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
12075 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
12076
12077 #. type: Plain text
12078 #: build/C/man2/sendfile.2:192
12079 msgid ""
12080 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
12081 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
12082 msgstr ""
12083 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
12084 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
12085
12086 #. type: Plain text
12087 #: build/C/man2/sendfile.2:197
12088 msgid ""
12089 "The Linux-specific B<splice>(2)  call supports transferring data between "
12090 "arbitrary files (e.g., a pair of sockets)."
12091 msgstr ""
12092 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
12093 "ソケット同士) でのデータ転送をサポートしている。"
12094
12095 #. type: Plain text
12096 #: build/C/man2/sendfile.2:202
12097 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12098 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12099
12100 #. type: TH
12101 #: build/C/man2/set_tid_address.2:25
12102 #, no-wrap
12103 msgid "SET_TID_ADDRESS"
12104 msgstr "SET_TID_ADDRESS"
12105
12106 #. type: TH
12107 #: build/C/man2/set_tid_address.2:25
12108 #, no-wrap
12109 msgid "2014-07-08"
12110 msgstr "2014-07-08"
12111
12112 #. type: Plain text
12113 #: build/C/man2/set_tid_address.2:28
12114 msgid "set_tid_address - set pointer to thread ID"
12115 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
12116
12117 #. type: Plain text
12118 #: build/C/man2/set_tid_address.2:31
12119 #, no-wrap
12120 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
12121 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
12122
12123 #. type: Plain text
12124 #: build/C/man2/set_tid_address.2:33
12125 #, no-wrap
12126 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12127 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12128
12129 #. type: Plain text
12130 #: build/C/man2/set_tid_address.2:40
12131 msgid ""
12132 "For each thread, the kernel maintains two attributes (addresses) called "
12133 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
12134 "value NULL by default."
12135 msgstr ""
12136 "各スレッドについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
12137 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
12138
12139 #. type: TP
12140 #: build/C/man2/set_tid_address.2:40
12141 #, no-wrap
12142 msgid "I<set_child_tid>"
12143 msgstr "I<set_child_tid>"
12144
12145 #. type: Plain text
12146 #: build/C/man2/set_tid_address.2:51
12147 msgid ""
12148 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
12149 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
12150 "that system call."
12151 msgstr ""
12152 "スレッドが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
12153 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
12154 "で渡された値に設定される。"
12155
12156 #. type: Plain text
12157 #: build/C/man2/set_tid_address.2:56
12158 msgid ""
12159 "When I<set_child_tid> is set, the very first thing the new thread does is to "
12160 "write its thread ID at this address."
12161 msgstr ""
12162 "I<set_child_tid> が設定された場合、一番最初に新しいスレッドが行うことは、 こ"
12163 "のアドレスに自身のスレッド ID を書き込むことである。"
12164
12165 #. type: TP
12166 #: build/C/man2/set_tid_address.2:56
12167 #, no-wrap
12168 msgid "I<clear_child_tid>"
12169 msgstr "I<clear_child_tid>"
12170
12171 #. type: Plain text
12172 #: build/C/man2/set_tid_address.2:67
12173 msgid ""
12174 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
12175 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
12176 "of that system call."
12177 msgstr ""
12178 "スレッドが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
12179 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
12180 "き数で渡された値に設定される。"
12181
12182 #. type: Plain text
12183 #: build/C/man2/set_tid_address.2:74
12184 msgid ""
12185 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
12186 "the calling thread to I<tidptr>."
12187 msgstr ""
12188 "システムコール B<set_tid_address>()  は呼び出し元スレッドの "
12189 "I<clear_child_tid> の値を I<tidptr> に設定する。"
12190
12191 #. type: Plain text
12192 #: build/C/man2/set_tid_address.2:82
12193 msgid ""
12194 "When a thread whose I<clear_child_tid> is not NULL terminates, then, if the "
12195 "thread is sharing memory with other threads, then 0 is written at the "
12196 "address specified in I<clear_child_tid> and the kernel performs the "
12197 "following operation:"
12198 msgstr ""
12199 "I<clear_child_tid> が NULL でないスレッドが終了すると、そのスレッドが他のス"
12200 "レッドとメモリを共有していれば、 I<clear_child_tid> で指定されたアドレスに 0 "
12201 "が書き込まれ、カーネルは以下の処理を実行する。"
12202
12203 #. type: Plain text
12204 #: build/C/man2/set_tid_address.2:84
12205 #, no-wrap
12206 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12207 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12208
12209 #. type: Plain text
12210 #: build/C/man2/set_tid_address.2:88
12211 msgid ""
12212 "The effect of this operation is to wake a single thread that is performing a "
12213 "futex wait on the memory location.  Errors from the futex wake operation are "
12214 "ignored."
12215 msgstr ""
12216 "この処理の結果、このメモリアドレスに対する futex wait を実行しているスレッド"
12217 "を一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
12218
12219 #. type: Plain text
12220 #: build/C/man2/set_tid_address.2:91
12221 msgid "B<set_tid_address>()  always returns the caller's thread ID."
12222 msgstr "B<set_tid_address>()  は常に呼び出し元のスレッド ID を返す。"
12223
12224 #. type: Plain text
12225 #: build/C/man2/set_tid_address.2:94
12226 msgid "B<set_tid_address>()  always succeeds."
12227 msgstr "B<set_tid_address>()  は常に成功する。"
12228
12229 #. type: Plain text
12230 #: build/C/man2/set_tid_address.2:97
12231 msgid ""
12232 "This call is present since Linux 2.5.48.  Details as given here are valid "
12233 "since Linux 2.5.49."
12234 msgstr ""
12235 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
12236 "2.5.49 以降で有効である。"
12237
12238 #. type: Plain text
12239 #: build/C/man2/set_tid_address.2:103
12240 msgid "B<clone>(2), B<futex>(2), B<gettid>(2)"
12241 msgstr "B<clone>(2), B<futex>(2), B<gettid>(2)"
12242
12243 #. type: TH
12244 #: build/C/man2/splice.2:26
12245 #, no-wrap
12246 msgid "SPLICE"
12247 msgstr "SPLICE"
12248
12249 #. type: TH
12250 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26
12251 #, no-wrap
12252 msgid "2014-12-31"
12253 msgstr "2014-12-31"
12254
12255 #. type: Plain text
12256 #: build/C/man2/splice.2:29
12257 msgid "splice - splice data to/from a pipe"
12258 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
12259
12260 #. type: Plain text
12261 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
12262 #, no-wrap
12263 msgid ""
12264 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
12265 "B<#include E<lt>fcntl.hE<gt>>\n"
12266 msgstr ""
12267 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
12268 "B<#include E<lt>fcntl.hE<gt>>\n"
12269
12270 #.  Return type was long before glibc 2.7
12271 #. type: Plain text
12272 #: build/C/man2/splice.2:38
12273 #, no-wrap
12274 msgid ""
12275 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12276 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12277 msgstr ""
12278 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12279 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12280
12281 #. type: Plain text
12282 #: build/C/man2/splice.2:50
12283 msgid ""
12284 "B<splice>()  moves data between two file descriptors without copying between "
12285 "kernel address space and user address space.  It transfers up to I<len> "
12286 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
12287 "I<fd_out>, where one of the descriptors must refer to a pipe."
12288 msgstr ""
12289 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
12290 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
12291 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
12292 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
12293 "ならない。"
12294
12295 #. type: Plain text
12296 #: build/C/man2/splice.2:55
12297 #, fuzzy
12298 #| msgid "The following restrictions apply to I<new_root> and I<put_old>:"
12299 msgid "The following semantics apply for I<fd_in> and I<off_in>:"
12300 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
12301
12302 #. type: Plain text
12303 #: build/C/man2/splice.2:61
12304 msgid "If I<fd_in> refers to a pipe, then I<off_in> must be NULL."
12305 msgstr ""
12306
12307 #. type: Plain text
12308 #: build/C/man2/splice.2:70
12309 #, fuzzy
12310 #| msgid ""
12311 #| "If I<offset> is NULL, then data will be read from I<in_fd> starting at "
12312 #| "the current file offset, and the file offset will be updated by the call."
12313 msgid ""
12314 "If I<fd_in> does not refer to a pipe and I<off_in> is NULL, then bytes are "
12315 "read from I<fd_in> starting from the current file offset, and the current "
12316 "file offset is adjusted appropriately."
12317 msgstr ""
12318 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
12319 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
12320
12321 #. type: Plain text
12322 #: build/C/man2/splice.2:83
12323 #, fuzzy
12324 #| msgid ""
12325 #| "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> "
12326 #| "does not refer to a pipe and I<off_in> is NULL, then bytes are read from "
12327 #| "I<fd_in> starting from the current file offset, and the current file "
12328 #| "offset is adjusted appropriately.  If I<fd_in> does not refer to a pipe "
12329 #| "and I<off_in> is not NULL, then I<off_in> must point to a buffer which "
12330 #| "specifies the starting offset from which bytes will be read from "
12331 #| "I<fd_in>; in this case, the current file offset of I<fd_in> is not "
12332 #| "changed.  Analogous statements apply for I<fd_out> and I<off_out>."
12333 msgid ""
12334 "If I<fd_in> does not refer to a pipe and I<off_in> is not NULL, then "
12335 "I<off_in> must point to a buffer which specifies the starting offset from "
12336 "which bytes will be read from I<fd_in>; in this case, the current file "
12337 "offset of I<fd_in> is not changed."
12338 msgstr ""
12339 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
12340 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
12341 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
12342 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
12343 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
12344 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
12345 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
12346 "る。"
12347
12348 #. type: Plain text
12349 #: build/C/man2/splice.2:88
12350 msgid "Analogous statements apply for I<fd_out> and I<off_out>."
12351 msgstr ""
12352
12353 #. type: Plain text
12354 #: build/C/man2/splice.2:93 build/C/man2/vmsplice.2:78
12355 msgid ""
12356 "The I<flags> argument is a bit mask that is composed by ORing together zero "
12357 "or more of the following values:"
12358 msgstr ""
12359 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
12360
12361 #. type: TP
12362 #: build/C/man2/splice.2:93 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
12363 #, no-wrap
12364 msgid "B<SPLICE_F_MOVE>"
12365 msgstr "B<SPLICE_F_MOVE>"
12366
12367 #. type: Plain text
12368 #: build/C/man2/splice.2:106
12369 msgid ""
12370 "Attempt to move pages instead of copying.  This is only a hint to the "
12371 "kernel: pages may still be copied if the kernel cannot move the pages from "
12372 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
12373 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
12374 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
12375 "correct implementation may be restored."
12376 msgstr ""
12377 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
12378 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
12379 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
12380 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
12381 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
12382 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
12383
12384 #. type: TP
12385 #: build/C/man2/splice.2:106 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
12386 #, no-wrap
12387 msgid "B<SPLICE_F_NONBLOCK>"
12388 msgstr "B<SPLICE_F_NONBLOCK>"
12389
12390 #. type: Plain text
12391 #: build/C/man2/splice.2:115
12392 msgid ""
12393 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
12394 "B<splice>()  may nevertheless block because the file descriptors that are "
12395 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
12396 msgstr ""
12397 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
12398 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも "
12399 "B<splice>()  は停止することもある。なぜなら、データのやり取りを行う ファイル"
12400 "ディスクリプタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能"
12401 "性があるからである。"
12402
12403 #. type: TP
12404 #: build/C/man2/splice.2:115 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12405 #, no-wrap
12406 msgid "B<SPLICE_F_MORE>"
12407 msgstr "B<SPLICE_F_MORE>"
12408
12409 #. type: Plain text
12410 #: build/C/man2/splice.2:129
12411 msgid ""
12412 "More data will be coming in a subsequent splice.  This is a helpful hint "
12413 "when the I<fd_out> refers to a socket (see also the description of "
12414 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
12415 msgstr ""
12416 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
12417 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
12418 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
12419
12420 #. type: TP
12421 #: build/C/man2/splice.2:129 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
12422 #, no-wrap
12423 msgid "B<SPLICE_F_GIFT>"
12424 msgstr "B<SPLICE_F_GIFT>"
12425
12426 #. type: Plain text
12427 #: build/C/man2/splice.2:135
12428 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
12429 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
12430
12431 #. type: Plain text
12432 #: build/C/man2/splice.2:144
12433 msgid ""
12434 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
12435 "to or from the pipe.  A return value of 0 means that there was no data to "
12436 "transfer, and it would not make sense to block, because there are no writers "
12437 "connected to the write end of the pipe referred to by I<fd_in>."
12438 msgstr ""
12439 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
12440 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
12441 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
12442 "れている者がいないからである。"
12443
12444 #. type: Plain text
12445 #: build/C/man2/splice.2:150
12446 msgid ""
12447 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
12448 msgstr ""
12449 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
12450 "る。"
12451
12452 #. type: Plain text
12453 #: build/C/man2/splice.2:157 build/C/man2/tee.2:107
12454 #: build/C/man2/vmsplice.2:133
12455 msgid ""
12456 "B<SPLICE_F_NONBLOCK> was specified in I<flags>, and the operation would "
12457 "block."
12458 msgstr ""
12459
12460 #. type: Plain text
12461 #: build/C/man2/splice.2:161
12462 msgid ""
12463 "One or both file descriptors are not valid, or do not have proper read-write "
12464 "mode."
12465 msgstr ""
12466 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
12467 "write モードではない。"
12468
12469 #.  The append-mode error is given since 2.6.27; in earlier kernels,
12470 #.  splice() in append mode was broken
12471 #. type: Plain text
12472 #: build/C/man2/splice.2:169
12473 msgid ""
12474 "Target filesystem doesn't support splicing; target file is opened in append "
12475 "mode; neither of the descriptors refers to a pipe; or offset given for "
12476 "nonseekable device."
12477 msgstr ""
12478 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
12479 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
12480 "ない、 または seek できないデバイスに対してオフセットが指定された。"
12481
12482 #. type: Plain text
12483 #: build/C/man2/splice.2:172 build/C/man2/tee.2:120
12484 #: build/C/man2/vmsplice.2:148
12485 msgid "Out of memory."
12486 msgstr "メモリ不足。"
12487
12488 #. type: TP
12489 #: build/C/man2/splice.2:172
12490 #, no-wrap
12491 msgid "B<ESPIPE>"
12492 msgstr "B<ESPIPE>"
12493
12494 #. type: Plain text
12495 #: build/C/man2/splice.2:179
12496 msgid ""
12497 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
12498 "descriptor refers to a pipe."
12499 msgstr ""
12500 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
12501 "クリプタが パイプを参照している。"
12502
12503 #. type: Plain text
12504 #: build/C/man2/splice.2:184
12505 msgid ""
12506 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
12507 "was added to glibc in version 2.5."
12508 msgstr ""
12509 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12510 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12511
12512 #. type: Plain text
12513 #: build/C/man2/splice.2:196
12514 msgid ""
12515 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
12516 "user-space programs with full control over an arbitrary kernel buffer, "
12517 "implemented within the kernel using the same type of buffer that is used for "
12518 "a pipe.  In overview, these system calls perform the following tasks:"
12519 msgstr ""
12520 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
12521 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
12522 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
12523 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
12524
12525 #. type: TP
12526 #: build/C/man2/splice.2:196
12527 #, no-wrap
12528 msgid "B<splice>()"
12529 msgstr "B<splice>()"
12530
12531 #. type: Plain text
12532 #: build/C/man2/splice.2:200
12533 msgid ""
12534 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
12535 "or from one buffer to another."
12536 msgstr ""
12537 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
12538 "から別のバッファへの、データ移動を行う。"
12539
12540 #. type: TP
12541 #: build/C/man2/splice.2:200
12542 #, no-wrap
12543 msgid "B<tee>(2)"
12544 msgstr "B<tee>(2)"
12545
12546 #. type: Plain text
12547 #: build/C/man2/splice.2:203
12548 msgid "\"copies\" the data from one buffer to another."
12549 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
12550
12551 #. type: TP
12552 #: build/C/man2/splice.2:203
12553 #, no-wrap
12554 msgid "B<vmsplice>(2)"
12555 msgstr "B<vmsplice>(2)"
12556
12557 #. type: Plain text
12558 #: build/C/man2/splice.2:206
12559 msgid "\"copies\" data from user space into the buffer."
12560 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
12561
12562 #.  Linus: Now, imagine using the above in a media server, for example.
12563 #.  Let's say that a year or two has passed, so that the video drivers
12564 #.  have been updated to be able to do the splice thing, and what can
12565 #.  you do? You can:
12566 #.  - splice from the (mpeg or whatever - let's just assume that the video
12567 #.    input is either digital or does the encoding on its own - like they
12568 #.    pretty much all do) video input into a pipe (remember: no copies - the
12569 #.    video input will just DMA directly into memory, and splice will just
12570 #.    set up the pages in the pipe buffer)
12571 #.  - tee that pipe to split it up
12572 #.  - splice one end to a file (ie "save the compressed stream to disk")
12573 #.  - splice the other end to a real-time video decoder window for your
12574 #.    real-time viewing pleasure.
12575 #.  Linus: Now, the advantage of splice()/tee() is that you can
12576 #.  do zero-copy movement of data, and unlike sendfile() you can
12577 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
12578 #.  than just sending the data to somebody else: you can duplicate
12579 #.  the data and choose to forward it to two or more different
12580 #.  users - for things like logging etc.).
12581 #. type: Plain text
12582 #: build/C/man2/splice.2:237
12583 msgid ""
12584 "Though we talk of copying, actual copies are generally avoided.  The kernel "
12585 "does this by implementing a pipe buffer as a set of reference-counted "
12586 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
12587 "in a buffer by creating new pointers (for the output buffer) referring to "
12588 "the pages, and increasing the reference counts for the pages: only pointers "
12589 "are copied, not the pages of the buffer."
12590 msgstr ""
12591 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
12592 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
12593 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
12594 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
12595 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
12596 "タだけがコピーされ、 バッファのページはコピーされない。"
12597
12598 #. type: Plain text
12599 #: build/C/man2/splice.2:240
12600 msgid "See B<tee>(2)."
12601 msgstr "B<tee>(2)  参照。"
12602
12603 #. type: Plain text
12604 #: build/C/man2/splice.2:244
12605 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12606 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12607
12608 #. type: TH
12609 #: build/C/man2/tee.2:26
12610 #, no-wrap
12611 msgid "TEE"
12612 msgstr "TEE"
12613
12614 #. type: Plain text
12615 #: build/C/man2/tee.2:29
12616 msgid "tee - duplicating pipe content"
12617 msgstr "tee - パイプの中身を複製する"
12618
12619 #. type: Plain text
12620 #: build/C/man2/tee.2:36
12621 #, no-wrap
12622 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"
12623 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"
12624
12625 #.  Example programs http://brick.kernel.dk/snaps
12626 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
12627 #.  (again, incrementing their reference count, not copying the data) from
12628 #.  one pipe to two other pipes.
12629 #. type: Plain text
12630 #: build/C/man2/tee.2:56
12631 msgid ""
12632 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
12633 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
12634 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
12635 "therefore, that data can be copied by a subsequent B<splice>(2)."
12636 msgstr ""
12637 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
12638 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
12639 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
12640 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
12641
12642 #. type: Plain text
12643 #: build/C/man2/tee.2:62
12644 msgid ""
12645 "I<flags> is a series of modifier flags, which share the name space with "
12646 "B<splice>(2)  and B<vmsplice>(2):"
12647 msgstr ""
12648 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
12649 "名前である。"
12650
12651 #. type: Plain text
12652 #: build/C/man2/tee.2:68
12653 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
12654 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
12655
12656 #.  Not used for vmsplice
12657 #.  May be in the future -- therefore EAGAIN
12658 #. type: Plain text
12659 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12660 msgid "Do not block on I/O; see B<splice>(2)  for further details."
12661 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
12662
12663 #. type: Plain text
12664 #: build/C/man2/tee.2:79
12665 msgid ""
12666 "Currently has no effect for B<tee>(), but may be implemented in the future; "
12667 "see B<splice>(2)."
12668 msgstr ""
12669 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
12670 "る。 B<splice>(2)  参照。"
12671
12672 #. type: Plain text
12673 #: build/C/man2/tee.2:85
12674 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
12675 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
12676
12677 #. type: Plain text
12678 #: build/C/man2/tee.2:94
12679 msgid ""
12680 "Upon successful completion, B<tee>()  returns the number of bytes that were "
12681 "duplicated between the input and output.  A return value of 0 means that "
12682 "there was no data to transfer, and it would not make sense to block, because "
12683 "there are no writers connected to the write end of the pipe referred to by "
12684 "I<fd_in>."
12685 msgstr ""
12686 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
12687 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
12688 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
12689 "ている者がいないからである。"
12690
12691 #. type: Plain text
12692 #: build/C/man2/tee.2:100
12693 msgid ""
12694 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
12695 msgstr ""
12696 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
12697
12698 #. type: Plain text
12699 #: build/C/man2/tee.2:117
12700 msgid ""
12701 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
12702 "refer to the same pipe."
12703 msgstr ""
12704 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
12705 "と I<fd_out> が同じパイプを参照している。"
12706
12707 #. type: Plain text
12708 #: build/C/man2/tee.2:125
12709 msgid ""
12710 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
12711 "was added to glibc in version 2.5."
12712 msgstr ""
12713 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12714 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12715
12716 #. type: Plain text
12717 #: build/C/man2/tee.2:136
12718 msgid ""
12719 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
12720 "no real data copying takes place though: under the covers, B<tee>()  assigns "
12721 "data in the output by merely grabbing a reference to the input."
12722 msgstr ""
12723 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
12724 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
12725 "照だけを作成することで出力側にデータを 追加する。"
12726
12727 #. type: Plain text
12728 #: build/C/man2/tee.2:143
12729 msgid ""
12730 "The example below implements a basic B<tee>(1)  program using the B<tee>()  "
12731 "system call.  Here is an example of its use:"
12732 msgstr "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラムを実装したものである。 以下は利用例である。"
12733
12734 #. type: Plain text
12735 #: build/C/man2/tee.2:150
12736 #, no-wrap
12737 msgid ""
12738 "$ B<date |./a.out out.log | cat>\n"
12739 "Tue Oct 28 10:06:00 CET 2014\n"
12740 "$ B<cat out.log>\n"
12741 "Tue Oct 28 10:06:00 CET 2014\n"
12742 msgstr ""
12743 "$ B<date |./a.out out.log | cat>\n"
12744 "Tue Oct 28 10:06:00 CET 2014\n"
12745 "$ B<cat out.log>\n"
12746 "Tue Oct 28 10:06:00 CET 2014\n"
12747
12748 #. type: SS
12749 #: build/C/man2/tee.2:152
12750 #, no-wrap
12751 msgid "Program source"
12752 msgstr "プログラムのソース"
12753
12754 #. type: Plain text
12755 #: build/C/man2/tee.2:162
12756 #, no-wrap
12757 msgid ""
12758 "#define _GNU_SOURCE\n"
12759 "#include E<lt>fcntl.hE<gt>\n"
12760 "#include E<lt>stdio.hE<gt>\n"
12761 "#include E<lt>stdlib.hE<gt>\n"
12762 "#include E<lt>unistd.hE<gt>\n"
12763 "#include E<lt>errno.hE<gt>\n"
12764 "#include E<lt>limits.hE<gt>\n"
12765 msgstr ""
12766 "#define _GNU_SOURCE\n"
12767 "#include E<lt>fcntl.hE<gt>\n"
12768 "#include E<lt>stdio.hE<gt>\n"
12769 "#include E<lt>stdlib.hE<gt>\n"
12770 "#include E<lt>unistd.hE<gt>\n"
12771 "#include E<lt>errno.hE<gt>\n"
12772 "#include E<lt>limits.hE<gt>\n"
12773
12774 #. type: Plain text
12775 #: build/C/man2/tee.2:168
12776 #, no-wrap
12777 msgid ""
12778 "int\n"
12779 "main(int argc, char *argv[])\n"
12780 "{\n"
12781 "    int fd;\n"
12782 "    int len, slen;\n"
12783 msgstr ""
12784 "int\n"
12785 "main(int argc, char *argv[])\n"
12786 "{\n"
12787 "    int fd;\n"
12788 "    int len, slen;\n"
12789
12790 #. type: Plain text
12791 #: build/C/man2/tee.2:173
12792 #, no-wrap
12793 msgid ""
12794 "    if (argc != 2) {\n"
12795 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
12796 "        exit(EXIT_FAILURE);\n"
12797 "    }\n"
12798 msgstr ""
12799 "    if (argc != 2) {\n"
12800 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
12801 "        exit(EXIT_FAILURE);\n"
12802 "    }\n"
12803
12804 #. type: Plain text
12805 #: build/C/man2/tee.2:179
12806 #, no-wrap
12807 msgid ""
12808 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
12809 "    if (fd == -1) {\n"
12810 "        perror(\"open\");\n"
12811 "        exit(EXIT_FAILURE);\n"
12812 "    }\n"
12813 msgstr ""
12814 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
12815 "    if (fd == -1) {\n"
12816 "        perror(\"open\");\n"
12817 "        exit(EXIT_FAILURE);\n"
12818 "    }\n"
12819
12820 #. type: Plain text
12821 #: build/C/man2/tee.2:186
12822 #, no-wrap
12823 msgid ""
12824 "    do {\n"
12825 "        /*\n"
12826 "         * tee stdin to stdout.\n"
12827 "         */\n"
12828 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
12829 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
12830 msgstr ""
12831 "    do {\n"
12832 "        /*\n"
12833 "         * tee stdin to stdout.\n"
12834 "         */\n"
12835 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
12836 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
12837
12838 #. type: Plain text
12839 #: build/C/man2/tee.2:195
12840 #, no-wrap
12841 msgid ""
12842 "        if (len E<lt> 0) {\n"
12843 "            if (errno == EAGAIN)\n"
12844 "                continue;\n"
12845 "            perror(\"tee\");\n"
12846 "            exit(EXIT_FAILURE);\n"
12847 "        } else\n"
12848 "            if (len == 0)\n"
12849 "                break;\n"
12850 msgstr ""
12851 "        if (len E<lt> 0) {\n"
12852 "            if (errno == EAGAIN)\n"
12853 "                continue;\n"
12854 "            perror(\"tee\");\n"
12855 "            exit(EXIT_FAILURE);\n"
12856 "        } else\n"
12857 "            if (len == 0)\n"
12858 "                break;\n"
12859
12860 #. type: Plain text
12861 #: build/C/man2/tee.2:209
12862 #, no-wrap
12863 msgid ""
12864 "        /*\n"
12865 "         * Consume stdin by splicing it to a file.\n"
12866 "         */\n"
12867 "        while (len E<gt> 0) {\n"
12868 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
12869 "                          len, SPLICE_F_MOVE);\n"
12870 "            if (slen E<lt> 0) {\n"
12871 "                perror(\"splice\");\n"
12872 "                break;\n"
12873 "            }\n"
12874 "            len -= slen;\n"
12875 "        }\n"
12876 "    } while (1);\n"
12877 msgstr ""
12878 "        /*\n"
12879 "         * Consume stdin by splicing it to a file.\n"
12880 "         */\n"
12881 "        while (len E<gt> 0) {\n"
12882 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
12883 "                          len, SPLICE_F_MOVE);\n"
12884 "            if (slen E<lt> 0) {\n"
12885 "                perror(\"splice\");\n"
12886 "                break;\n"
12887 "            }\n"
12888 "            len -= slen;\n"
12889 "        }\n"
12890 "    } while (1);\n"
12891
12892 #. type: Plain text
12893 #: build/C/man2/tee.2:213
12894 #, no-wrap
12895 msgid ""
12896 "    close(fd);\n"
12897 "    exit(EXIT_SUCCESS);\n"
12898 "}\n"
12899 msgstr ""
12900 "    close(fd);\n"
12901 "    exit(EXIT_SUCCESS);\n"
12902 "}\n"
12903
12904 #. type: Plain text
12905 #: build/C/man2/tee.2:217
12906 msgid "B<splice>(2), B<vmsplice>(2)"
12907 msgstr "B<splice>(2), B<vmsplice>(2)"
12908
12909 #. type: TH
12910 #: build/C/man2/vm86.2:26
12911 #, no-wrap
12912 msgid "VM86"
12913 msgstr "VM86"
12914
12915 #. type: TH
12916 #: build/C/man2/vm86.2:26
12917 #, no-wrap
12918 msgid "2009-02-20"
12919 msgstr "2009-02-20"
12920
12921 #. type: Plain text
12922 #: build/C/man2/vm86.2:29
12923 msgid "vm86old, vm86 - enter virtual 8086 mode"
12924 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
12925
12926 #. type: Plain text
12927 #: build/C/man2/vm86.2:31
12928 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
12929 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
12930
12931 #. type: Plain text
12932 #: build/C/man2/vm86.2:33
12933 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
12934 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
12935
12936 #. type: Plain text
12937 #: build/C/man2/vm86.2:35
12938 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
12939 msgstr ""
12940 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
12941
12942 #. type: Plain text
12943 #: build/C/man2/vm86.2:48
12944 msgid ""
12945 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
12946 "and 2.0.28, it was renamed to B<vm86old>(), and a new B<vm86>()  was "
12947 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
12948 "and 1.1.9."
12949 msgstr ""
12950 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
12951 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
12952 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
12953
12954 #. type: Plain text
12955 #: build/C/man2/vm86.2:52
12956 msgid ""
12957 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
12958 "literature), and are used by B<dosemu>."
12959 msgstr ""
12960 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
12961 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
12962
12963 #. type: Plain text
12964 #: build/C/man2/vm86.2:54
12965 msgid "VM86 mode is an emulation of real mode within a protected mode task."
12966 msgstr ""
12967 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
12968 "ある。"
12969
12970 #. type: Plain text
12971 #: build/C/man2/vm86.2:64
12972 msgid ""
12973 "This return value is specific to i386 and indicates a problem with getting "
12974 "user-space data."
12975 msgstr ""
12976 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
12977 "あったことを示す。"
12978
12979 #. type: Plain text
12980 #: build/C/man2/vm86.2:68
12981 msgid ""
12982 "This return value indicates the call is not implemented on the present "
12983 "architecture."
12984 msgstr ""
12985 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
12986
12987 #. type: Plain text
12988 #: build/C/man2/vm86.2:73
12989 msgid ""
12990 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
12991 "should exist only within vm86 mode itself.)"
12992 msgstr ""
12993 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
12994 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
12995 "い。)"
12996
12997 #. type: Plain text
12998 #: build/C/man2/vm86.2:76
12999 msgid ""
13000 "This call is specific to Linux on 32-bit Intel processors, and should not be "
13001 "used in programs intended to be portable."
13002 msgstr ""
13003 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
13004 "したプログラムでは使用すべきでない。"
13005
13006 #. type: TH
13007 #: build/C/man2/vmsplice.2:26
13008 #, no-wrap
13009 msgid "VMSPLICE"
13010 msgstr "VMSPLICE"
13011
13012 #. type: TH
13013 #: build/C/man2/vmsplice.2:26
13014 #, no-wrap
13015 msgid "2014-10-02"
13016 msgstr "2014-10-02"
13017
13018 #. type: Plain text
13019 #: build/C/man2/vmsplice.2:29
13020 msgid "vmsplice - splice user pages into a pipe"
13021 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
13022
13023 #. type: Plain text
13024 #: build/C/man2/vmsplice.2:34
13025 #, no-wrap
13026 msgid ""
13027 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
13028 "B<#include E<lt>fcntl.hE<gt>>\n"
13029 "B<#include E<lt>sys/uio.hE<gt>>\n"
13030 msgstr ""
13031 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
13032 "B<#include E<lt>fcntl.hE<gt>>\n"
13033 "B<#include E<lt>sys/uio.hE<gt>>\n"
13034
13035 #. type: Plain text
13036 #: build/C/man2/vmsplice.2:37
13037 #, no-wrap
13038 msgid ""
13039 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13040 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13041 msgstr ""
13042 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13043 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13044
13045 #.  Linus: vmsplice() system call to basically do a "write to
13046 #.  the buffer", but using the reference counting and VM traversal
13047 #.  to actually fill the buffer. This means that the user needs to
13048 #.  be careful not to reuse the user-space buffer it spliced into
13049 #.  the kernel-space one (contrast this to "write()", which copies
13050 #.  the actual data, and you can thus reuse the buffer immediately
13051 #.  after a successful write), but that is often easy to do.
13052 #. type: Plain text
13053 #: build/C/man2/vmsplice.2:57
13054 msgid ""
13055 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
13056 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
13057 "pipe."
13058 msgstr ""
13059 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
13060 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
13061 "ばならない。"
13062
13063 #. type: Plain text
13064 #: build/C/man2/vmsplice.2:64
13065 msgid ""
13066 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
13067 "I<E<lt>sys/uio.hE<gt>>:"
13068 msgstr ""
13069 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
13070 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
13071
13072 #. type: Plain text
13073 #: build/C/man2/vmsplice.2:71
13074 #, no-wrap
13075 msgid ""
13076 "struct iovec {\n"
13077 "    void  *iov_base;            /* Starting address */\n"
13078 "    size_t iov_len;             /* Number of bytes */\n"
13079 "};\n"
13080 msgstr ""
13081 "struct iovec {\n"
13082 "    void  *iov_base;            /* 開始アドレス */\n"
13083 "    size_t iov_len;             /* バイト数 */\n"
13084 "};\n"
13085
13086 #. type: Plain text
13087 #: build/C/man2/vmsplice.2:84
13088 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
13089 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
13090
13091 #. type: Plain text
13092 #: build/C/man2/vmsplice.2:97
13093 msgid ""
13094 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
13095 "future; see B<splice>(2)."
13096 msgstr ""
13097 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
13098 "がある。 B<splice>(2)  参照。"
13099
13100 #.  FIXME . Explain the following line in a little more detail:
13101 #.  FIXME
13102 #.      It looks like the page-alignment requirement went away with
13103 #.      commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d
13104 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
13105 #. type: Plain text
13106 #: build/C/man2/vmsplice.2:117
13107 msgid ""
13108 "The user pages are a gift to the kernel.  The application may not modify "
13109 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
13110 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
13111 "successfully move the pages; if this flag is not specified, then a "
13112 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
13113 "also be properly page aligned, both in memory and length."
13114 msgstr ""
13115 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
13116 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
13117 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
13118 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
13119 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
13120 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
13121 "なければならず、 長さもページ境界の倍数でなければならない。"
13122
13123 #. type: Plain text
13124 #: build/C/man2/vmsplice.2:126
13125 msgid ""
13126 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
13127 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
13128 "is set to indicate the error."
13129 msgstr ""
13130 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
13131 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
13132
13133 #. type: Plain text
13134 #: build/C/man2/vmsplice.2:137
13135 msgid "I<fd> either not valid, or doesn't refer to a pipe."
13136 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
13137
13138 #. type: Plain text
13139 #: build/C/man2/vmsplice.2:145
13140 msgid ""
13141 "I<nr_segs> is greater than B<IOV_MAX>; or memory not aligned if "
13142 "B<SPLICE_F_GIFT> set."
13143 msgstr ""
13144 "I<nr_segs> が B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が設定されたが"
13145 "メモリがページ境界にあっていない。"
13146
13147 #. type: Plain text
13148 #: build/C/man2/vmsplice.2:153
13149 msgid ""
13150 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
13151 "support was added to glibc in version 2.5."
13152 msgstr ""
13153 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
13154 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
13155
13156 #. type: Plain text
13157 #: build/C/man2/vmsplice.2:164
13158 msgid ""
13159 "B<vmsplice>()  follows the other vectorized read/write type functions when "
13160 "it comes to limitations on number of segments being passed in.  This limit "
13161 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
13162 "writing, that limit is 1024."
13163 msgstr ""
13164 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
13165 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
13166 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
13167 "は 1024 である。"
13168
13169 #. type: Plain text
13170 #: build/C/man2/vmsplice.2:167
13171 msgid "B<splice>(2), B<tee>(2)"
13172 msgstr "B<splice>(2), B<tee>(2)"
13173
13174 #~ msgid "2014-04-17"
13175 #~ msgstr "2014-04-17"
13176
13177 #~ msgid "2014-05-05"
13178 #~ msgstr "2014-05-05"
13179
13180 #~ msgid "2014-02-20"
13181 #~ msgstr "2014-02-20"
13182
13183 #~ msgid "2012-07-19"
13184 #~ msgstr "2012-07-19"
13185
13186 #~ msgid "2012-05-04"
13187 #~ msgstr "2012-05-04"
13188
13189 #~ msgid "2013-12-12"
13190 #~ msgstr "2013-12-12"
13191
13192 #~ msgid "2012-04-25"
13193 #~ msgstr "2012-04-25"
13194
13195 #~ msgid "2003-01-01"
13196 #~ msgstr "2003-01-01"
13197
13198 #~ msgid ""
13199 #~ "This function will return the current B<personality>()  when I<persona> "
13200 #~ "equals 0xffffffff.  Otherwise, it will make the execution domain "
13201 #~ "referenced by I<persona> the new execution domain of the calling process."
13202 #~ msgstr ""
13203 #~ "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パー"
13204 #~ "ソナリティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメ"
13205 #~ "インを、 呼び出し元のプロセスの新しい実行ドメインとする。"
13206
13207 #~ msgid ""
13208 #~ "Depending on which operation was executed, the returned value for a "
13209 #~ "successful call can have differing meanings."
13210 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
13211
13212 #~ msgid ""
13213 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
13214 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
13215 #~ "was not equal to the expected value, the operation fails with the error "
13216 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
13217 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
13218 #~ msgstr ""
13219 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
13220 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
13221 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
13222 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
13223 #~ "敗する。"
13224
13225 #~ msgid "An operation was not defined or error in page alignment."
13226 #~ msgstr ""
13227 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
13228
13229 #~ msgid ""
13230 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
13231 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
13232 #~ msgstr ""
13233 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
13234 #~ "\\ 8> で子プロセスの動作を停止させる。"
13235
13236 #~ msgid ""
13237 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
13238 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
13239 #~ msgstr ""
13240 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
13241 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
13242
13243 #~ msgid ""
13244 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
13245 #~ "of the calling process; the behavior of the child is as if it had done a "
13246 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
13247 #~ "the child process for most purposes (e.g., it will receive notification "
13248 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
13249 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
13250 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
13251 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
13252 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
13253 #~ msgstr ""
13254 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
13255 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
13256 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
13257 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
13258 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
13259 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
13260 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
13261 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには "
13262 #~ "B<wait>(2)  を使用すること。(I<addr> と I<data> は無視される。)"
13263
13264 #~ msgid ""
13265 #~ "Tracing causes a few subtle differences in the semantics of traced "
13266 #~ "processes.  For example, if a process is attached to with "
13267 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
13268 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
13269 #~ "effectively simulate this notification."
13270 #~ msgstr ""
13271 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
13272 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
13273 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
13274 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
13275
13276 #~ msgid ""
13277 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
13278 #~ "is not in the normal signal delivery path.  This means the parent cannot "
13279 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
13280 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
13281 #~ "child process after receiving one of these messages."
13282 #~ msgstr ""
13283 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
13284 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
13285 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 "
13286 #~ "B<ptrace>(PTRACE_KILL)  を行ったりできないということである。 こららのメッ"
13287 #~ "セージの受信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> "
13288 #~ "を指定して B<kill>(2)  を行う方法を代わりに使用できる。"
13289
13290 #~ msgid ""
13291 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
13292 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
13293 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
13294 #~ "and uniform way."
13295 #~ msgstr ""
13296 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
13297 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
13298 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
13299 #~ "るものとなっている。"
13300
13301 #~ msgid ""
13302 #~ "The second argument I<special> is the block special device these quota "
13303 #~ "apply to.  It must be mounted."
13304 #~ msgstr ""
13305 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
13306 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
13307
13308 #~ msgid ""
13309 #~ "The third argument I<id> is the user or group ID these quota apply to "
13310 #~ "(when relevant)."
13311 #~ msgstr ""
13312 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
13313 #~ "グループの ID を指定する。"
13314
13315 #~ msgid ""
13316 #~ "The fourth argument I<addr> is the address of a data structure, depending "
13317 #~ "on the command."
13318 #~ msgstr ""
13319 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
13320 #~ "指定する。"
13321
13322 #~ msgid ""
13323 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
13324 #~ "containing the quota for the file system."
13325 #~ msgstr ""
13326 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
13327 #~ "記録されているファイルの パス名を指定する。"
13328
13329 #~ msgid "Disable quota."
13330 #~ msgstr "quota を無効にする。"
13331
13332 #~ msgid "Set limits and current usage; I<addr> is as before."
13333 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
13334
13335 #~ msgid "Set limits; I<addr> is as before."
13336 #~ msgstr "制限値を設定する; I<addr> は同上。"
13337
13338 #~ msgid "Set usage."
13339 #~ msgstr "使用量を設定する。"
13340
13341 #~ msgid "Sync disk copy of a file system's quota."
13342 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
13343
13344 #~ msgid "Get collected stats."
13345 #~ msgstr "収集された統計を取得する。"
13346
13347 #~ msgid ""
13348 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
13349 #~ "I<errno> is set appropriately."
13350 #~ msgstr ""
13351 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
13352 #~ "I<errno> が適切な値に設定される。"
13353
13354 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
13355 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
13356
13357 #~ msgid "Bad I<addr> value."
13358 #~ msgstr "I<addr> の値に誤りがある。"
13359
13360 #~ msgid ""
13361 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
13362 #~ msgstr ""
13363 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
13364 #~ "付からなかった。"
13365
13366 #~ msgid "Too many open files: cannot open quota file."
13367 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
13368
13369 #~ msgid "I<special> cannot be found in the mount table."
13370 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
13371
13372 #~ msgid "The kernel was compiled without quota support."
13373 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
13374
13375 #~ msgid ""
13376 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
13377 #~ "asked for another I<id> than that of the process itself, or anything "
13378 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
13379 #~ msgstr ""
13380 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
13381 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
13382 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
13383
13384 #~ msgid ""
13385 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
13386 #~ "for a file system that didn't have quota enabled."
13387 #~ msgstr ""
13388 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
13389 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"