OSDN Git Service

db7aff7b78f56ee024c0db54715e3b7b2bcbb14d
[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-23 22:24+0900\n"
10 "PO-Revision-Date: 2015-01-25 01:03+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:46
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:46 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:47
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:49
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:56
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:2551
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:1896 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:2557 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:1911 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:2603
250 #: build/C/man2/process_vm_readv.2:267 build/C/man2/process_vm_readv.2:272
251 #: build/C/man2/ptrace.2:1915 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:2608
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:1926
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:2675
290 #: build/C/man2/pivot_root.2:120 build/C/man2/process_vm_readv.2:283
291 #: build/C/man2/ptrace.2:1936 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:2696
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:1954 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:118 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:2701
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:1956
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:127 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:2832 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:2122 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:136 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:2838 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:2137
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:144 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:2846 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:2145
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.78 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.78 の一部\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:2579
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:2661
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 build/C/man2/ptrace.2:46
968 #, no-wrap
969 msgid "2015-01-22"
970 msgstr "2015-01-22"
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:2688
1075 #: build/C/man2/process_vm_readv.2:287 build/C/man2/ptrace.2:1949
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:118
1094 msgid "These system calls were added in Linux 2.6.17."
1095 msgstr "これらのシステムコールは Linux 2.6.17 で追加された。"
1096
1097 #. type: Plain text
1098 #: build/C/man2/get_robust_list.2:123
1099 msgid ""
1100 "These system calls are not needed by normal applications.  No support for "
1101 "them is provided in glibc.  In the unlikely event that you want to call them "
1102 "directly, use B<syscall>(2)."
1103 msgstr ""
1104 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1105 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1106 "呼び出したい場合は B<syscall>(2) を使うこと。"
1107
1108 #. type: Plain text
1109 #: build/C/man2/get_robust_list.2:127
1110 msgid ""
1111 "A thread can have only one robust futex list; therefore applications that "
1112 "wish to use this functionality should use the robust mutexes provided by "
1113 "glibc."
1114 msgstr ""
1115
1116 #.  .BR pthread_mutexattr_setrobust_np (3)
1117 #. type: Plain text
1118 #: build/C/man2/get_robust_list.2:130
1119 msgid "B<futex>(2)"
1120 msgstr "B<futex>(2)"
1121
1122 #.  http://lwn.net/Articles/172149/
1123 #. type: Plain text
1124 #: build/C/man2/get_robust_list.2:136
1125 msgid ""
1126 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1127 "txt> in the Linux kernel source tree"
1128 msgstr ""
1129
1130 #. type: TH
1131 #: build/C/man2/getunwind.2:27
1132 #, no-wrap
1133 msgid "GETUNWIND"
1134 msgstr ""
1135
1136 #. type: TH
1137 #: build/C/man2/getunwind.2:27
1138 #, no-wrap
1139 msgid "2014-09-21"
1140 msgstr "2014-09-21"
1141
1142 #. type: Plain text
1143 #: build/C/man2/getunwind.2:30
1144 msgid "getunwind - copy the unwind data to caller's buffer"
1145 msgstr ""
1146
1147 #. type: Plain text
1148 #: build/C/man2/getunwind.2:34
1149 #, no-wrap
1150 msgid ""
1151 "B<#include E<lt>syscall.hE<gt>>\n"
1152 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1153 msgstr ""
1154 "B<#include E<lt>syscall.hE<gt>>\n"
1155 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1156
1157 #. type: Plain text
1158 #: build/C/man2/getunwind.2:36
1159 #, no-wrap
1160 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1161 msgstr ""
1162
1163 #. type: Plain text
1164 #: build/C/man2/getunwind.2:42
1165 msgid "I<Note: this function is obsolete.>"
1166 msgstr ""
1167
1168 #. type: Plain text
1169 #: build/C/man2/getunwind.2:52
1170 msgid ""
1171 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1172 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1173 "of the unwind data; this data describes the gate page (kernel code that is "
1174 "mapped into user space)."
1175 msgstr ""
1176
1177 #. type: Plain text
1178 #: build/C/man2/getunwind.2:64
1179 msgid ""
1180 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1181 "copied only if I<buf_size> is greater than or equal to the size of the "
1182 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1183 "call succeeds, returning the size that would be needed to store the unwind "
1184 "data."
1185 msgstr ""
1186
1187 #. type: Plain text
1188 #: build/C/man2/getunwind.2:68
1189 msgid ""
1190 "The first part of the unwind data contains an unwind table.  The rest "
1191 "contains the associated unwind information, in no particular order.  The "
1192 "unwind table contains entries of the following form:"
1193 msgstr ""
1194
1195 #. type: Plain text
1196 #: build/C/man2/getunwind.2:73
1197 #, no-wrap
1198 msgid ""
1199 "    u64 start;      (64-bit address of start of function)\n"
1200 "    u64 end;        (64-bit address of end of function)\n"
1201 "    u64 info;       (BUF-relative offset to unwind info)\n"
1202 msgstr ""
1203
1204 #. type: Plain text
1205 #: build/C/man2/getunwind.2:81
1206 msgid ""
1207 "An entry whose I<start> value is zero indicates the end of the table.  For "
1208 "more information about the format, see the I<IA-64 Software Conventions and "
1209 "Runtime Architecture> manual."
1210 msgstr ""
1211
1212 #. type: Plain text
1213 #: build/C/man2/getunwind.2:88
1214 msgid ""
1215 "On success, B<getunwind>()  returns the size of the unwind data.  On error, "
1216 "-1 is returned and I<errno> is set to indicate the error."
1217 msgstr ""
1218 "成功すると、 B<getunwind> は unwind されたデータのサイズを返す。 エラーの場"
1219 "合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1220
1221 #. type: Plain text
1222 #: build/C/man2/getunwind.2:94
1223 msgid ""
1224 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1225 "stored in the space specified by I<buf>."
1226 msgstr ""
1227
1228 #. type: Plain text
1229 #: build/C/man2/getunwind.2:96
1230 msgid "This system call is available since Linux 2.4."
1231 msgstr ""
1232
1233 #. type: Plain text
1234 #: build/C/man2/getunwind.2:99
1235 msgid ""
1236 "This system call is Linux-specific, and is available only on the IA-64 "
1237 "architecture."
1238 msgstr ""
1239
1240 #. type: Plain text
1241 #: build/C/man2/getunwind.2:107
1242 msgid ""
1243 "This system call has been deprecated.  The modern way to obtain the kernel's "
1244 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1245 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1246 msgstr ""
1247
1248 #. type: Plain text
1249 #: build/C/man2/getunwind.2:111
1250 msgid ""
1251 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1252 "that you want to call it, use B<syscall>(2)."
1253 msgstr ""
1254 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1255 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1256
1257 #. type: Plain text
1258 #: build/C/man2/getunwind.2:113
1259 msgid "B<getauxval>(3)"
1260 msgstr "B<getauxval>(3)"
1261
1262 #. type: TH
1263 #: build/C/man2/kexec_load.2:26
1264 #, no-wrap
1265 msgid "KEXEC_LOAD"
1266 msgstr "KEXEC_LOAD"
1267
1268 #. type: TH
1269 #: build/C/man2/kexec_load.2:26 build/C/man2/process_vm_readv.2:29
1270 #, no-wrap
1271 msgid "2014-08-19"
1272 msgstr "2014-08-19"
1273
1274 #. type: Plain text
1275 #: build/C/man2/kexec_load.2:29
1276 msgid "kexec_load - load a new kernel for later execution"
1277 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1278
1279 #. type: Plain text
1280 #: build/C/man2/kexec_load.2:31
1281 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1282 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1283
1284 #. type: Plain text
1285 #: build/C/man2/kexec_load.2:33
1286 msgid ""
1287 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1288 ">"
1289 msgstr ""
1290 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1291 ">"
1292
1293 #. type: Plain text
1294 #: build/C/man2/kexec_load.2:36
1295 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1296 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1297
1298 #. type: Plain text
1299 #: build/C/man2/kexec_load.2:44
1300 msgid ""
1301 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1302 "later by B<reboot>(2)."
1303 msgstr ""
1304 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1305 "その後の B<reboot>(2) で実行できるようにする。"
1306
1307 #. type: Plain text
1308 #: build/C/man2/kexec_load.2:50
1309 msgid ""
1310 "The I<flags> argument is a bit mask that controls the operation of the "
1311 "call.  The following values can be specified in I<flags>:"
1312 msgstr ""
1313 "I<flags> 引き数は、システムコールの呼び出しの動作を制御するマスクビットであ"
1314 "る。 I<flags> には以下の値を指定できる。"
1315
1316 #. type: TP
1317 #: build/C/man2/kexec_load.2:50
1318 #, no-wrap
1319 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1320 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1321
1322 #.  FIXME Explain in more detail how KEXEC_ON_CRASH is actually used
1323 #. type: Plain text
1324 #: build/C/man2/kexec_load.2:54
1325 msgid "Execute the new kernel automatically on a system crash."
1326 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1327
1328 #. type: TP
1329 #: build/C/man2/kexec_load.2:54
1330 #, no-wrap
1331 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1332 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1333
1334 #. type: Plain text
1335 #: build/C/man2/kexec_load.2:64
1336 msgid ""
1337 "Preserve the system hardware and software states before executing the new "
1338 "kernel.  This could be used for system suspend.  This flag is available only "
1339 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1340 "only if I<nr_segments> is greater than 0."
1341 msgstr ""
1342 "新しいカーネルを実行する前に、\n"
1343 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1344 "システムの中断時 (suspend) などで使用できる。\n"
1345 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1346 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1347
1348 #. type: Plain text
1349 #: build/C/man2/kexec_load.2:85
1350 msgid ""
1351 "The high-order bits (corresponding to the mask 0xffff0000) of I<flags> "
1352 "contain the architecture of the to-be-executed kernel.  Specify (OR) the "
1353 "constant B<KEXEC_ARCH_DEFAULT> to use the current architecture, or one of "
1354 "the following architecture constants B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1355 "B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, "
1356 "B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, "
1357 "B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and B<KEXEC_ARCH_MIPS_LE>.  The "
1358 "architecture must be executable on the CPU of the system."
1359 msgstr ""
1360 "I<flags> の上位ビット (マスク 0xffff0000 に対応) には、\n"
1361 "実行されるカーネルのアーキテクチャが入る。\n"
1362 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1363 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1364 "B<KEXEC_ARCH_X86_64>,\n"
1365 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1366 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1367 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1368 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1369 "システムの CPU で実行可能なものでなければならない。"
1370
1371 #. type: Plain text
1372 #: build/C/man2/kexec_load.2:100
1373 msgid ""
1374 "The I<entry> argument is the physical entry address in the kernel image.  "
1375 "The I<nr_segments> argument is the number of segments pointed to by the "
1376 "I<segments> pointer; the kernel imposes an (arbitrary) limit of 16 on the "
1377 "number of segments.  The I<segments> argument is an array of "
1378 "I<kexec_segment> structures which define the kernel layout:"
1379 msgstr ""
1380 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。 "
1381 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの数である。 な"
1382 "お、セグメント数には、カーネルにより 16 という (強制的な) 上限が課される。 "
1383 "I<segments> 引き数は I<kexec_segment> 構造体の配列で、 この構造体によりカーネ"
1384 "ルの配置が定義される。"
1385
1386 #. type: Plain text
1387 #: build/C/man2/kexec_load.2:109
1388 #, no-wrap
1389 msgid ""
1390 "struct kexec_segment {\n"
1391 "    void   *buf;        /* Buffer in user space */\n"
1392 "    size_t  bufsz;      /* Buffer length in user space */\n"
1393 "    void   *mem;        /* Physical address of kernel */\n"
1394 "    size_t  memsz;      /* Physical address length */\n"
1395 "};\n"
1396 msgstr ""
1397 "struct kexec_segment {\n"
1398 "    void   *buf;        /* Buffer in user space */\n"
1399 "    size_t  bufsz;      /* Buffer length in user space */\n"
1400 "    void   *mem;        /* Physical address of kernel */\n"
1401 "    size_t  memsz;      /* Physical address length */\n"
1402 "};\n"
1403
1404 #.  FIXME Explain the details of how the kernel image defined by segments
1405 #.  is copied from the calling process into previously reserved memory.
1406 #. type: Plain text
1407 #: build/C/man2/kexec_load.2:117
1408 msgid ""
1409 "The kernel image defined by I<segments> is copied from the calling process "
1410 "into previously reserved memory."
1411 msgstr ""
1412 "I<segments> で定義されたカーネルイメージは、\n"
1413 "呼び出したプロセスから予約済みメモリにコピーされる。"
1414
1415 #. type: Plain text
1416 #: build/C/man2/kexec_load.2:124
1417 msgid ""
1418 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1419 "I<errno> is set to indicate the error."
1420 msgstr ""
1421 "成功すると、 B<kexec_load> は 0 を返す。\n"
1422 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1423
1424 #. type: TP
1425 #: build/C/man2/kexec_load.2:125 build/C/man2/pivot_root.2:110
1426 #: build/C/man2/ptrace.2:1912 build/C/man2/quotactl.2:495
1427 #, no-wrap
1428 msgid "B<EBUSY>"
1429 msgstr "B<EBUSY>"
1430
1431 #. type: Plain text
1432 #: build/C/man2/kexec_load.2:129
1433 msgid ""
1434 "Another crash kernel is already being loaded or a crash kernel is already in "
1435 "use."
1436 msgstr ""
1437 "別のクラッシュカーネルがすでにロードされているか、\n"
1438 "クラッシュカーネルがすでに使用されている。"
1439
1440 #.  KEXEC_SEGMENT_MAX == 16
1441 #. type: Plain text
1442 #: build/C/man2/kexec_load.2:136
1443 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1444 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1445
1446 #. type: Plain text
1447 #: build/C/man2/kexec_load.2:141
1448 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1449 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1450
1451 #. type: Plain text
1452 #: build/C/man2/kexec_load.2:145
1453 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1454 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1455
1456 #. type: Plain text
1457 #: build/C/man2/kexec_load.2:152
1458 msgid ""
1459 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1460 "B<syscall>(2)."
1461 msgstr ""
1462 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1463 "B<syscall>(2) を使って呼び出すこと。"
1464
1465 #.  FIXME . Andi submitted a patch for this.
1466 #.  Check if it got accepted later.
1467 #. type: Plain text
1468 #: build/C/man2/kexec_load.2:159
1469 msgid ""
1470 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1471 "which is not currently exported to glibc.  Therefore, these constants must "
1472 "be defined manually."
1473 msgstr ""
1474 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されてい"
1475 "る\n"
1476 "が、現在のところ glibc には公開されていない。\n"
1477 "そのため、これらの定数は手動で定義しなければならない。"
1478
1479 #. type: Plain text
1480 #: build/C/man2/kexec_load.2:162
1481 msgid ""
1482 "This system call is available only if the kernel was configured with "
1483 "B<CONFIG_KEXEC>."
1484 msgstr ""
1485 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1486 "いる場合にのみ利用できる。"
1487
1488 #. type: Plain text
1489 #: build/C/man2/kexec_load.2:165
1490 msgid "B<reboot>(2), B<syscall>(2)"
1491 msgstr "B<reboot>(2), B<syscall>(2)"
1492
1493 #. type: TH
1494 #: build/C/man2/lookup_dcookie.2:27
1495 #, no-wrap
1496 msgid "LOOKUP_DCOOKIE"
1497 msgstr "LOOKUP_DCOOKIE"
1498
1499 #. type: TH
1500 #: build/C/man2/lookup_dcookie.2:27
1501 #, no-wrap
1502 msgid "2004-06-17"
1503 msgstr "2004-06-17"
1504
1505 #. type: Plain text
1506 #: build/C/man2/lookup_dcookie.2:30
1507 msgid "lookup_dcookie - return a directory entry's path"
1508 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1509
1510 #. type: Plain text
1511 #: build/C/man2/lookup_dcookie.2:32
1512 msgid ""
1513 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1514 ">"
1515 msgstr ""
1516 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1517 ">"
1518
1519 #. type: Plain text
1520 #: build/C/man2/lookup_dcookie.2:38
1521 msgid ""
1522 "Look up the full path of the directory entry specified by the value "
1523 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1524 "particular directory entry.  The buffer given is filled in with the full "
1525 "path of the directory entry."
1526 msgstr ""
1527 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1528 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1529 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1530 "ルパス名が格納される。"
1531
1532 #. type: Plain text
1533 #: build/C/man2/lookup_dcookie.2:43
1534 msgid ""
1535 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1536 "a cookie reference to the directory entry."
1537 msgstr ""
1538 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1539 "リへの cookie 参照を 保持していなければならない。"
1540
1541 #. type: Plain text
1542 #: build/C/man2/lookup_dcookie.2:50
1543 msgid ""
1544 "On success, B<lookup_dcookie>()  returns the length of the path string "
1545 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1546 "appropriately."
1547 msgstr ""
1548 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1549 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1550
1551 #. type: Plain text
1552 #: build/C/man2/lookup_dcookie.2:54
1553 msgid "The buffer was not valid."
1554 msgstr "バッファが有効でなかった。"
1555
1556 #. type: Plain text
1557 #: build/C/man2/lookup_dcookie.2:58
1558 msgid ""
1559 "The kernel has no registered cookie/directory entry mappings at the time of "
1560 "lookup, or the cookie does not refer to a valid directory entry."
1561 msgstr ""
1562 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1563 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1564 "いない。"
1565
1566 #. type: TP
1567 #: build/C/man2/lookup_dcookie.2:58
1568 #, no-wrap
1569 msgid "B<ENAMETOOLONG>"
1570 msgstr "B<ENAMETOOLONG>"
1571
1572 #. type: Plain text
1573 #: build/C/man2/lookup_dcookie.2:61
1574 msgid "The name could not fit in the buffer."
1575 msgstr "名前がバッファに入り切らなかった。"
1576
1577 #. type: TP
1578 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:278
1579 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:169
1580 #: build/C/man2/tee.2:117 build/C/man2/vmsplice.2:145
1581 #, no-wrap
1582 msgid "B<ENOMEM>"
1583 msgstr "B<ENOMEM>"
1584
1585 #. type: Plain text
1586 #: build/C/man2/lookup_dcookie.2:65
1587 msgid ""
1588 "The kernel could not allocate memory for the temporary buffer holding the "
1589 "path."
1590 msgstr ""
1591 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1592 "かった。"
1593
1594 #. type: Plain text
1595 #: build/C/man2/lookup_dcookie.2:70
1596 msgid ""
1597 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1598 "up cookie values."
1599 msgstr ""
1600 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1601 "持っていない。"
1602
1603 #. type: TP
1604 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1605 #, no-wrap
1606 msgid "B<ERANGE>"
1607 msgstr "B<ERANGE>"
1608
1609 #. type: Plain text
1610 #: build/C/man2/lookup_dcookie.2:73
1611 msgid ""
1612 "The buffer was not large enough to hold the path of the directory entry."
1613 msgstr ""
1614 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1615 "かった。"
1616
1617 #. type: Plain text
1618 #: build/C/man2/lookup_dcookie.2:78
1619 msgid ""
1620 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1621 "2.5.70."
1622 msgstr ""
1623 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1624 "追加された。"
1625
1626 #. type: Plain text
1627 #: build/C/man2/lookup_dcookie.2:81
1628 msgid "B<lookup_dcookie>()  is Linux-specific."
1629 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1630
1631 #. type: Plain text
1632 #: build/C/man2/lookup_dcookie.2:85
1633 msgid ""
1634 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1635 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1636 "for directory entries."
1637 msgstr ""
1638 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1639 "oprofile profiler で 使われているだけである。"
1640
1641 #. type: Plain text
1642 #: build/C/man2/lookup_dcookie.2:88
1643 msgid ""
1644 "The path returned may be suffixed by the string \" (deleted)\" if the "
1645 "directory entry has been removed."
1646 msgstr ""
1647 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1648 "\" (deleted)\" という文字列が付加されることがある。"
1649
1650 #. type: TH
1651 #: build/C/man2/modify_ldt.2:24
1652 #, no-wrap
1653 msgid "MODIFY_LDT"
1654 msgstr "MODIFY_LDT"
1655
1656 #. type: TH
1657 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
1658 #, no-wrap
1659 msgid "2012-07-13"
1660 msgstr "2012-07-13"
1661
1662 #. type: Plain text
1663 #: build/C/man2/modify_ldt.2:27
1664 msgid "modify_ldt - get or set ldt"
1665 msgstr "modify_ldt - ldt を設定または取得する"
1666
1667 #. type: Plain text
1668 #: build/C/man2/modify_ldt.2:30
1669 #, no-wrap
1670 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1671 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1672
1673 #. type: Plain text
1674 #: build/C/man2/modify_ldt.2:32
1675 #, no-wrap
1676 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1677 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1678
1679 #. type: Plain text
1680 #: build/C/man2/modify_ldt.2:41
1681 msgid ""
1682 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1683 "process.  The ldt is a per-process memory management table used by the i386 "
1684 "processor.  For more information on this table, see an Intel 386 processor "
1685 "handbook."
1686 msgstr ""
1687 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1688 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1689 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1690 "は Intel 386 processor handbook を 参照すること。"
1691
1692 #. type: Plain text
1693 #: build/C/man2/modify_ldt.2:51
1694 msgid ""
1695 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1696 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1697 "actual size of the ldt."
1698 msgstr ""
1699 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1700 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1701 "である。"
1702
1703 #.  FIXME Should this page say something about func == 2 and func == 0x11?
1704 #.  In Linux 2.4, func == 2 returned "the default ldt"
1705 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1706 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1707 #. type: Plain text
1708 #: build/C/man2/modify_ldt.2:69
1709 msgid ""
1710 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1711 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1712 "structure."
1713 msgstr ""
1714 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1715 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1716 "くなければならない。"
1717
1718 #. type: Plain text
1719 #: build/C/man2/modify_ldt.2:73
1720 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1721 msgstr ""
1722 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1723
1724 #. type: Plain text
1725 #: build/C/man2/modify_ldt.2:87
1726 #, no-wrap
1727 msgid ""
1728 "struct user_desc {\n"
1729 "    unsigned int  entry_number;\n"
1730 "    unsigned long base_addr;\n"
1731 "    unsigned int  limit;\n"
1732 "    unsigned int  seg_32bit:1;\n"
1733 "    unsigned int  contents:2;\n"
1734 "    unsigned int  read_exec_only:1;\n"
1735 "    unsigned int  limit_in_pages:1;\n"
1736 "    unsigned int  seg_not_present:1;\n"
1737 "    unsigned int  useable:1;\n"
1738 "};\n"
1739 msgstr ""
1740 "struct user_desc {\n"
1741 "    unsigned int  entry_number;\n"
1742 "    unsigned long base_addr;\n"
1743 "    unsigned int  limit;\n"
1744 "    unsigned int  seg_32bit:1;\n"
1745 "    unsigned int  contents:2;\n"
1746 "    unsigned int  read_exec_only:1;\n"
1747 "    unsigned int  limit_in_pages:1;\n"
1748 "    unsigned int  seg_not_present:1;\n"
1749 "    unsigned int  useable:1;\n"
1750 "};\n"
1751
1752 #.  .PP
1753 #.  The ldt is specific for the calling process. Any attempts to change
1754 #.  the ldt to include the address space of another process or the kernel
1755 #.  will result in a segmentation violation when trying to access the memory
1756 #.  outside of the process address space. The memory protection is enforced
1757 #.  at the paging layer.
1758 #. type: Plain text
1759 #: build/C/man2/modify_ldt.2:98
1760 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1761 msgstr ""
1762 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1763
1764 #. type: Plain text
1765 #: build/C/man2/modify_ldt.2:108
1766 msgid ""
1767 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1768 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1769 "and sets I<errno> to indicate the error."
1770 msgstr ""
1771 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1772 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1773 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1774
1775 #. type: Plain text
1776 #: build/C/man2/modify_ldt.2:113
1777 msgid "I<ptr> points outside the address space."
1778 msgstr "I<ptr> がアドレス空間の外を指している。"
1779
1780 #. type: Plain text
1781 #: build/C/man2/modify_ldt.2:126
1782 msgid ""
1783 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1784 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1785 "invalid values."
1786 msgstr ""
1787 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1788 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1789 "エントリが無効な値である。"
1790
1791 #. type: Plain text
1792 #: build/C/man2/modify_ldt.2:130
1793 msgid "I<func> is neither 0 nor 1."
1794 msgstr "I<func> が 0 でも 1 でもない。"
1795
1796 #. type: Plain text
1797 #: build/C/man2/modify_ldt.2:133
1798 msgid ""
1799 "This call is Linux-specific and should not be used in programs intended to "
1800 "be portable."
1801 msgstr ""
1802 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1803 "い。"
1804
1805 #. type: Plain text
1806 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1807 #: build/C/man2/pivot_root.2:134
1808 msgid ""
1809 "Glibc does not provide a wrapper for this system call; call it using "
1810 "B<syscall>(2)."
1811 msgstr ""
1812 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
1813 "B<syscall>(2)  を使って呼び出すこと。"
1814
1815 #. type: Plain text
1816 #: build/C/man2/modify_ldt.2:138
1817 msgid "B<vm86>(2)"
1818 msgstr "B<vm86>(2)"
1819
1820 #. type: TH
1821 #: build/C/man2/nfsservctl.2:8
1822 #, no-wrap
1823 msgid "NFSSERVCTL"
1824 msgstr "NFSSERVCTL"
1825
1826 #. type: TH
1827 #: build/C/man2/nfsservctl.2:8
1828 #, no-wrap
1829 msgid "2013-09-17"
1830 msgstr "2013-09-17"
1831
1832 #. type: Plain text
1833 #: build/C/man2/nfsservctl.2:11
1834 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1835 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1836
1837 #. type: Plain text
1838 #: build/C/man2/nfsservctl.2:14
1839 #, no-wrap
1840 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1841 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1842
1843 #. type: Plain text
1844 #: build/C/man2/nfsservctl.2:17
1845 #, no-wrap
1846 msgid ""
1847 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1848 "B<                union nfsctl_res *>I<resp>B<);>\n"
1849 msgstr ""
1850 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1851 "B<                union nfsctl_res *>I<resp>B<);>\n"
1852
1853 #. type: Plain text
1854 #: build/C/man2/nfsservctl.2:21
1855 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1856 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1857
1858 #. type: Plain text
1859 #: build/C/man2/nfsservctl.2:35
1860 #, no-wrap
1861 msgid ""
1862 "/*\n"
1863 " * These are the commands understood by nfsctl().\n"
1864 " */\n"
1865 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1866 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1867 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1868 "#define NFSCTL_EXPORT       3    /* Export a filesystem. */\n"
1869 "#define NFSCTL_UNEXPORT     4    /* Unexport a filesystem. */\n"
1870 "#define NFSCTL_UGIDUPDATE   5    /* Update a client's UID/GID map\n"
1871 "                                    (only in Linux 2.4.x and earlier). */\n"
1872 "#define NFSCTL_GETFH        6    /* Get a file handle (used by mountd)\n"
1873 "                                    (only in Linux 2.4.x and earlier). */\n"
1874 msgstr ""
1875 "/*\n"
1876 " * nfsctl() によって理解されるコマンド\n"
1877 " */\n"
1878 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1879 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1880 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1881 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1882 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1883 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新\n"
1884 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
1885 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得\n"
1886 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
1887
1888 #. type: Plain text
1889 #: build/C/man2/nfsservctl.2:47
1890 #, no-wrap
1891 msgid ""
1892 "struct nfsctl_arg {\n"
1893 "    int                       ca_version;     /* safeguard */\n"
1894 "    union {\n"
1895 "        struct nfsctl_svc     u_svc;\n"
1896 "        struct nfsctl_client  u_client;\n"
1897 "        struct nfsctl_export  u_export;\n"
1898 "        struct nfsctl_uidmap  u_umap;\n"
1899 "        struct nfsctl_fhparm  u_getfh;\n"
1900 "        unsigned int          u_debug;\n"
1901 "    } u;\n"
1902 "}\n"
1903 msgstr ""
1904 "struct nfsctl_arg {\n"
1905 "    int                       ca_version;     /* safeguard */\n"
1906 "    union {\n"
1907 "        struct nfsctl_svc     u_svc;\n"
1908 "        struct nfsctl_client  u_client;\n"
1909 "        struct nfsctl_export  u_export;\n"
1910 "        struct nfsctl_uidmap  u_umap;\n"
1911 "        struct nfsctl_fhparm  u_getfh;\n"
1912 "        unsigned int          u_debug;\n"
1913 "    } u;\n"
1914 "}\n"
1915
1916 #. type: Plain text
1917 #: build/C/man2/nfsservctl.2:52
1918 #, no-wrap
1919 msgid ""
1920 "union nfsctl_res {\n"
1921 "        struct knfs_fh          cr_getfh;\n"
1922 "        unsigned int            cr_debug;\n"
1923 "};\n"
1924 msgstr ""
1925 "union nfsctl_res {\n"
1926 "        struct knfs_fh          cr_getfh;\n"
1927 "        unsigned int            cr_debug;\n"
1928 "};\n"
1929
1930 #. type: Plain text
1931 #: build/C/man2/nfsservctl.2:58 build/C/man2/pivot_root.2:105
1932 #: build/C/man2/vm86.2:59
1933 msgid ""
1934 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1935 "appropriately."
1936 msgstr ""
1937 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1938 "定される。"
1939
1940 #. type: Plain text
1941 #: build/C/man2/nfsservctl.2:60
1942 msgid "This call is Linux-specific."
1943 msgstr "このコールは Linux 特有である。"
1944
1945 #. type: TH
1946 #: build/C/man2/outb.2:26
1947 #, no-wrap
1948 msgid "OUTB"
1949 msgstr "OUTB"
1950
1951 #. type: TH
1952 #: build/C/man2/outb.2:26
1953 #, no-wrap
1954 msgid "2012-12-31"
1955 msgstr "2012-12-31"
1956
1957 #. type: Plain text
1958 #: build/C/man2/outb.2:31
1959 msgid ""
1960 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1961 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1962 msgstr ""
1963 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1964 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1965
1966 #. type: Plain text
1967 #: build/C/man2/outb.2:34
1968 #, no-wrap
1969 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1970 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1971
1972 #. type: Plain text
1973 #: build/C/man2/outb.2:41
1974 #, no-wrap
1975 msgid ""
1976 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1977 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1978 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1979 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1980 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1981 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1982 msgstr ""
1983 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1984 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1985 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1986 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1987 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1988 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1989
1990 #. type: Plain text
1991 #: build/C/man2/outb.2:48
1992 #, no-wrap
1993 msgid ""
1994 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1995 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1996 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1997 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1998 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1999 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2000 msgstr ""
2001 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2002 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2003 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2004 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2005 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2006 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2007
2008 #. type: Plain text
2009 #: build/C/man2/outb.2:61
2010 #, no-wrap
2011 msgid ""
2012 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2013 "B<           unsigned long int >I<count>B<);>\n"
2014 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2015 "B<           unsigned long int >I<count>B<);>\n"
2016 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2017 "B<           unsigned long int >I<count>B<);>\n"
2018 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2019 "B<           unsigned long int >I<count>B<);>\n"
2020 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2021 "B<           unsigned long int >I<count>B<);>\n"
2022 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2023 "B<           unsigned long int >I<count>B<);>\n"
2024 msgstr ""
2025 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2026 "B<           unsigned long int >I<count>B<);>\n"
2027 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2028 "B<           unsigned long int >I<count>B<);>\n"
2029 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2030 "B<           unsigned long int >I<count>B<);>\n"
2031 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2032 "B<           unsigned long int >I<count>B<);>\n"
2033 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2034 "B<           unsigned long int >I<count>B<);>\n"
2035 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2036 "B<           unsigned long int >I<count>B<);>\n"
2037
2038 #. type: Plain text
2039 #: build/C/man2/outb.2:67
2040 msgid ""
2041 "This family of functions is used to do low-level port input and output.  The "
2042 "out* functions do port output, the in* functions do port input; the b-suffix "
2043 "functions are byte-width and the w-suffix functions word-width; the _p-"
2044 "suffix functions pause until the I/O completes."
2045 msgstr ""
2046 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2047 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2048 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2049 "待つ。"
2050
2051 #.  , given the following information
2052 #.  in addition to that given in
2053 #.  .BR outb (9).
2054 #. type: Plain text
2055 #: build/C/man2/outb.2:73
2056 msgid ""
2057 "They are primarily designed for internal kernel use, but can be used from "
2058 "user space."
2059 msgstr ""
2060 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2061 "ザー空間からでも使用できる。"
2062
2063 #. type: Plain text
2064 #: build/C/man2/outb.2:78
2065 msgid ""
2066 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2067 "as inline macros, and will not be substituted in without optimization "
2068 "enabled, causing unresolved references at link time."
2069 msgstr ""
2070 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2071 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2072 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2073
2074 #. type: Plain text
2075 #: build/C/man2/outb.2:87
2076 msgid ""
2077 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2078 "allow the user space application to access the I/O ports in question.  "
2079 "Failure to do this will cause the application to receive a segmentation "
2080 "fault."
2081 msgstr ""
2082 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2083 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2084 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2085 "になる。"
2086
2087 #. type: Plain text
2088 #: build/C/man2/outb.2:96
2089 msgid ""
2090 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2091 "passed first and the I<port> argument is passed second, which is the "
2092 "opposite order from most DOS implementations."
2093 msgstr ""
2094 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2095 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2096 "である。"
2097
2098 #. type: Plain text
2099 #: build/C/man2/outb.2:99
2100 msgid "B<ioperm>(2), B<iopl>(2)"
2101 msgstr "B<ioperm>(2), B<iopl>(2)"
2102
2103 #. type: TH
2104 #: build/C/man2/pciconfig_read.2:8
2105 #, no-wrap
2106 msgid "PCICONFIG_READ"
2107 msgstr "PCICONFIG_READ"
2108
2109 #. type: TH
2110 #: build/C/man2/pciconfig_read.2:8
2111 #, no-wrap
2112 msgid "2003-07-14"
2113 msgstr "2003-07-14"
2114
2115 #. type: Plain text
2116 #: build/C/man2/pciconfig_read.2:11
2117 msgid ""
2118 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2119 "handling"
2120 msgstr ""
2121 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2122
2123 #. type: Plain text
2124 #: build/C/man2/pciconfig_read.2:14
2125 #, no-wrap
2126 msgid "B<#include E<lt>pci.hE<gt>>\n"
2127 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2128
2129 #. type: Plain text
2130 #: build/C/man2/pciconfig_read.2:21
2131 #, no-wrap
2132 msgid ""
2133 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2134 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2135 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2136 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2137 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2138 "B<          unsigned long >I<devfn>B<);>\n"
2139 msgstr ""
2140 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2141 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2142 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2143 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2144 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2145 "B<          unsigned long >I<devfn>B<);>\n"
2146
2147 #. type: Plain text
2148 #: build/C/man2/pciconfig_read.2:27
2149 msgid ""
2150 "Most of the interaction with PCI devices is already handled by the kernel "
2151 "PCI layer, and thus these calls should not normally need to be accessed from "
2152 "user space."
2153 msgstr ""
2154 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2155 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2156
2157 #. type: TP
2158 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2159 #, no-wrap
2160 msgid "B<pciconfig_read>()"
2161 msgstr "B<pciconfig_read>()"
2162
2163 #. type: Plain text
2164 #: build/C/man2/pciconfig_read.2:36
2165 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2166 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2167
2168 #. type: TP
2169 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2170 #, no-wrap
2171 msgid "B<pciconfig_write>()"
2172 msgstr "B<pciconfig_write>()"
2173
2174 #. type: Plain text
2175 #: build/C/man2/pciconfig_read.2:45
2176 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2177 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2178
2179 #. type: TP
2180 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2181 #, no-wrap
2182 msgid "B<pciconfig_iobase>()"
2183 msgstr "B<pciconfig_iobase>()"
2184
2185 #. type: Plain text
2186 #: build/C/man2/pciconfig_read.2:50
2187 msgid ""
2188 "You pass it a bus/devfn pair and get a physical address for either the "
2189 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2190 "PIO cycles, or the ISA holes if any."
2191 msgstr ""
2192 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2193 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2194 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2195
2196 #. type: Plain text
2197 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2198 msgid ""
2199 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2200 "appropriately."
2201 msgstr ""
2202 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2203 "定される。"
2204
2205 #. type: Plain text
2206 #: build/C/man2/pciconfig_read.2:77
2207 msgid ""
2208 "Returns information on locations of various I/O regions in physical memory "
2209 "according to the I<which> value.  Values for I<which> are: "
2210 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2211 "B<IOBASE_ISA_MEM>."
2212 msgstr ""
2213 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2214 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2215 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2216
2217 #. type: Plain text
2218 #: build/C/man2/pciconfig_read.2:84
2219 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2220 msgstr ""
2221 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2222 "い。"
2223
2224 #. type: TP
2225 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1929
2226 #: build/C/man2/sendfile.2:134
2227 #, no-wrap
2228 msgid "B<EIO>"
2229 msgstr "B<EIO>"
2230
2231 #. type: Plain text
2232 #: build/C/man2/pciconfig_read.2:87
2233 msgid "I/O error."
2234 msgstr "I/O エラー。"
2235
2236 #. type: TP
2237 #: build/C/man2/pciconfig_read.2:87 build/C/man2/perf_event_open.2:2640
2238 #, no-wrap
2239 msgid "B<ENODEV>"
2240 msgstr "B<ENODEV>"
2241
2242 #. type: Plain text
2243 #: build/C/man2/pciconfig_read.2:93
2244 msgid ""
2245 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2246 "could not find a slot."
2247 msgstr ""
2248 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2249 "出しの場合、スロット (slot) が見つからない。"
2250
2251 #. type: Plain text
2252 #: build/C/man2/pciconfig_read.2:98
2253 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2254 msgstr ""
2255 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2256 "いない)。"
2257
2258 #. type: TP
2259 #: build/C/man2/pciconfig_read.2:98 build/C/man2/perf_event_open.2:2668
2260 #, no-wrap
2261 msgid "B<EOPNOTSUPP>"
2262 msgstr "B<EOPNOTSUPP>"
2263
2264 #. type: Plain text
2265 #: build/C/man2/pciconfig_read.2:105
2266 msgid ""
2267 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2268 "if the value for I<which> is invalid."
2269 msgstr ""
2270 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2271 "の値が無効であるときに返される。"
2272
2273 #. type: Plain text
2274 #: build/C/man2/pciconfig_read.2:112
2275 msgid ""
2276 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2277 "B<pciconfig_iobase>()."
2278 msgstr ""
2279 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2280 "B<pciconfig_iobase>()  には適用されない。"
2281
2282 #. type: Plain text
2283 #: build/C/man2/pciconfig_read.2:114
2284 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2285 msgstr ""
2286 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2287 "である。"
2288
2289 #. type: Plain text
2290 #: build/C/man2/pciconfig_read.2:116
2291 msgid "B<capabilities>(7)"
2292 msgstr "B<capabilities>(7)"
2293
2294 #. type: TH
2295 #: build/C/man2/perf_event_open.2:27
2296 #, no-wrap
2297 msgid "PERF_EVENT_OPEN"
2298 msgstr "PERF_EVENT_OPEN"
2299
2300 #. type: TH
2301 #: build/C/man2/perf_event_open.2:27
2302 #, no-wrap
2303 msgid "2015-01-10"
2304 msgstr "2015-01-10"
2305
2306 #. type: Plain text
2307 #: build/C/man2/perf_event_open.2:30
2308 msgid "perf_event_open - set up performance monitoring"
2309 msgstr ""
2310
2311 #. type: Plain text
2312 #: build/C/man2/perf_event_open.2:34
2313 #, no-wrap
2314 msgid ""
2315 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2316 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2317 msgstr ""
2318 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2319 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2320
2321 #. type: Plain text
2322 #: build/C/man2/perf_event_open.2:38
2323 #, no-wrap
2324 msgid ""
2325 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2326 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2327 "B<                    unsigned long >I<flags>B<);>\n"
2328 msgstr ""
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
2333 #. type: Plain text
2334 #: build/C/man2/perf_event_open.2:47
2335 msgid ""
2336 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2337 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2338 "B<fcntl>(2), etc.)."
2339 msgstr ""
2340
2341 #. type: Plain text
2342 #: build/C/man2/perf_event_open.2:55
2343 msgid ""
2344 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2345 "measuring performance information.  Each file descriptor corresponds to one "
2346 "event that is measured; these can be grouped together to measure multiple "
2347 "events simultaneously."
2348 msgstr ""
2349
2350 #. type: Plain text
2351 #: build/C/man2/perf_event_open.2:62
2352 msgid ""
2353 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2354 "B<prctl>(2).  When an event is disabled it does not count or generate "
2355 "overflows but does continue to exist and maintain its count value."
2356 msgstr ""
2357
2358 #. type: Plain text
2359 #: build/C/man2/perf_event_open.2:76
2360 msgid ""
2361 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2362 "one that is used for counting the aggregate number of events that occur.  In "
2363 "general, counting event results are gathered with a B<read>(2)  call.  A "
2364 "I<sampling> event periodically writes measurements to a buffer that can then "
2365 "be accessed via B<mmap>(2)."
2366 msgstr ""
2367
2368 #. type: SS
2369 #: build/C/man2/perf_event_open.2:76
2370 #, no-wrap
2371 msgid "Arguments"
2372 msgstr ""
2373
2374 #. type: Plain text
2375 #: build/C/man2/perf_event_open.2:83
2376 msgid ""
2377 "The I<pid> and I<cpu> arguments allow specifying which process and CPU to "
2378 "monitor:"
2379 msgstr ""
2380
2381 #. type: TP
2382 #: build/C/man2/perf_event_open.2:83
2383 #, no-wrap
2384 msgid "B<pid == 0> and B<cpu == -1>"
2385 msgstr ""
2386
2387 #. type: Plain text
2388 #: build/C/man2/perf_event_open.2:86
2389 msgid "This measures the calling process/thread on any CPU."
2390 msgstr ""
2391
2392 #. type: TP
2393 #: build/C/man2/perf_event_open.2:86
2394 #, no-wrap
2395 msgid "B<pid == 0> and B<cpu E<gt>= 0>"
2396 msgstr ""
2397
2398 #. type: Plain text
2399 #: build/C/man2/perf_event_open.2:90
2400 msgid ""
2401 "This measures the calling process/thread only when running on the specified "
2402 "CPU."
2403 msgstr ""
2404
2405 #. type: TP
2406 #: build/C/man2/perf_event_open.2:90
2407 #, no-wrap
2408 msgid "B<pid E<gt> 0> and B<cpu == -1>"
2409 msgstr ""
2410
2411 #. type: Plain text
2412 #: build/C/man2/perf_event_open.2:93
2413 msgid "This measures the specified process/thread on any CPU."
2414 msgstr ""
2415
2416 #. type: TP
2417 #: build/C/man2/perf_event_open.2:93
2418 #, no-wrap
2419 msgid "B<pid E<gt> 0> and B<cpu E<gt>= 0>"
2420 msgstr ""
2421
2422 #. type: Plain text
2423 #: build/C/man2/perf_event_open.2:97
2424 msgid ""
2425 "This measures the specified process/thread only when running on the "
2426 "specified CPU."
2427 msgstr ""
2428
2429 #. type: TP
2430 #: build/C/man2/perf_event_open.2:97
2431 #, no-wrap
2432 msgid "B<pid == -1> and B<cpu E<gt>= 0>"
2433 msgstr ""
2434
2435 #. type: Plain text
2436 #: build/C/man2/perf_event_open.2:105
2437 msgid ""
2438 "This measures all processes/threads on the specified CPU.  This requires "
2439 "B<CAP_SYS_ADMIN> capability or a I</proc/sys/kernel/perf_event_paranoid> "
2440 "value of less than 1."
2441 msgstr ""
2442
2443 #. type: TP
2444 #: build/C/man2/perf_event_open.2:105
2445 #, no-wrap
2446 msgid "B<pid == -1> and B<cpu == -1>"
2447 msgstr ""
2448
2449 #. type: Plain text
2450 #: build/C/man2/perf_event_open.2:108
2451 msgid "This setting is invalid and will return an error."
2452 msgstr ""
2453
2454 #. type: Plain text
2455 #: build/C/man2/perf_event_open.2:130
2456 msgid ""
2457 "The I<group_fd> argument allows event groups to be created.  An event group "
2458 "has one event which is the group leader.  The leader is created first, with "
2459 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2460 "B<perf_event_open>()  calls with I<group_fd> being set to the file "
2461 "descriptor of the group leader.  (A single event on its own is created with "
2462 "I<group_fd> = -1 and is considered to be a group with only 1 member.)  An "
2463 "event group is scheduled onto the CPU as a unit: it will be put onto the CPU "
2464 "only if all of the events in the group can be put onto the CPU.  This means "
2465 "that the values of the member events can be meaningfully compared\\(emadded, "
2466 "divided (to get ratios), and so on\\(emwith each other, since they have "
2467 "counted events for the same set of executed instructions."
2468 msgstr ""
2469
2470 #. type: Plain text
2471 #: build/C/man2/perf_event_open.2:134
2472 msgid ""
2473 "The I<flags> argument is formed by ORing together zero or more of the "
2474 "following values:"
2475 msgstr ""
2476 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2477
2478 #. type: TP
2479 #: build/C/man2/perf_event_open.2:134
2480 #, no-wrap
2481 msgid "B<PERF_FLAG_FD_CLOEXEC> (since Linux 3.14)"
2482 msgstr "B<PERF_FLAG_FD_CLOEXEC> (Linux 3.14 以降)"
2483
2484 #.  commit a21b0b354d4ac39be691f51c53562e2c24443d9e
2485 #. type: Plain text
2486 #: build/C/man2/perf_event_open.2:151
2487 msgid ""
2488 "This flag enables the close-on-exec flag for the created event file "
2489 "descriptor, so that the file descriptor is automatically closed on "
2490 "B<execve>(2).  Setting the close-on-exec flags at creation time, rather than "
2491 "later with B<fcntl>(2), avoids potential race conditions where the calling "
2492 "thread invokes B<perf_event_open>()  and B<fcntl>(2)  at the same time as "
2493 "another thread calls B<fork>(2)  then B<execve>(2)."
2494 msgstr ""
2495
2496 #. type: TP
2497 #: build/C/man2/perf_event_open.2:151
2498 #, no-wrap
2499 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2500 msgstr "B<PERF_FLAG_FD_NO_GROUP>"
2501
2502 #. type: Plain text
2503 #: build/C/man2/perf_event_open.2:159
2504 msgid ""
2505 "This flag tells the event to ignore the I<group_fd> parameter except for the "
2506 "purpose of setting up output redirection using the B<PERF_FLAG_FD_OUTPUT> "
2507 "flag."
2508 msgstr ""
2509
2510 #. type: TP
2511 #: build/C/man2/perf_event_open.2:159
2512 #, no-wrap
2513 msgid "B<PERF_FLAG_FD_OUTPUT> (broken since Linux 2.6.35)"
2514 msgstr "B<PERF_FLAG_FD_OUTPUT> (Linux 2.6.35 以降では正しく動作しない)"
2515
2516 #. type: Plain text
2517 #: build/C/man2/perf_event_open.2:164
2518 msgid ""
2519 "This flag re-routes the event's sampled output to instead be included in the "
2520 "mmap buffer of the event specified by I<group_fd>."
2521 msgstr ""
2522
2523 #. type: TP
2524 #: build/C/man2/perf_event_open.2:164
2525 #, no-wrap
2526 msgid "B<PERF_FLAG_PID_CGROUP> (since Linux 2.6.39)"
2527 msgstr "B<PERF_FLAG_PID_CGROUP> (Linux 2.6.39 以降)"
2528
2529 #.  commit e5d1367f17ba6a6fed5fd8b74e4d5720923e0c25
2530 #. type: Plain text
2531 #: build/C/man2/perf_event_open.2:188
2532 msgid ""
2533 "This flag activates per-container system-wide monitoring.  A container is an "
2534 "abstraction that isolates a set of resources for finer-grained control "
2535 "(CPUs, memory, etc.).  In this mode, the event is measured only if the "
2536 "thread running on the monitored CPU belongs to the designated container "
2537 "(cgroup).  The cgroup is identified by passing a file descriptor opened on "
2538 "its directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2539 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2540 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2541 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2542 "events and may therefore require extra permissions."
2543 msgstr ""
2544
2545 #. type: Plain text
2546 #: build/C/man2/perf_event_open.2:193
2547 msgid ""
2548 "The I<perf_event_attr> structure provides detailed configuration information "
2549 "for the event being created."
2550 msgstr ""
2551
2552 #. type: Plain text
2553 #: build/C/man2/perf_event_open.2:200
2554 #, no-wrap
2555 msgid ""
2556 "struct perf_event_attr {\n"
2557 "    __u32 type;         /* Type of event */\n"
2558 "    __u32 size;         /* Size of attribute structure */\n"
2559 "    __u64 config;       /* Type-specific configuration */\n"
2560 msgstr ""
2561 "struct perf_event_attr {\n"
2562 "    __u32 type;         /* Type of event */\n"
2563 "    __u32 size;         /* Size of attribute structure */\n"
2564 "    __u64 config;       /* Type-specific configuration */\n"
2565
2566 #. type: Plain text
2567 #: build/C/man2/perf_event_open.2:205
2568 #, no-wrap
2569 msgid ""
2570 "    union {\n"
2571 "        __u64 sample_period;    /* Period of sampling */\n"
2572 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2573 "    };\n"
2574 msgstr ""
2575 "    union {\n"
2576 "        __u64 sample_period;    /* Period of sampling */\n"
2577 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2578 "    };\n"
2579
2580 #. type: Plain text
2581 #: build/C/man2/perf_event_open.2:208
2582 #, no-wrap
2583 msgid ""
2584 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2585 "    __u64 read_format;  /* Specifies values returned in read */\n"
2586 msgstr ""
2587 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2588 "    __u64 read_format;  /* Specifies values returned in read */\n"
2589
2590 #. type: Plain text
2591 #: build/C/man2/perf_event_open.2:236
2592 #, no-wrap
2593 msgid ""
2594 "    __u64 disabled       : 1,   /* off by default */\n"
2595 "          inherit        : 1,   /* children inherit it */\n"
2596 "          pinned         : 1,   /* must always be on PMU */\n"
2597 "          exclusive      : 1,   /* only group on PMU */\n"
2598 "          exclude_user   : 1,   /* don't count user */\n"
2599 "          exclude_kernel : 1,   /* don't count kernel */\n"
2600 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2601 "          exclude_idle   : 1,   /* don't count when idle */\n"
2602 "          mmap           : 1,   /* include mmap data */\n"
2603 "          comm           : 1,   /* include comm data */\n"
2604 "          freq           : 1,   /* use freq, not period */\n"
2605 "          inherit_stat   : 1,   /* per task counts */\n"
2606 "          enable_on_exec : 1,   /* next exec enables */\n"
2607 "          task           : 1,   /* trace fork/exit */\n"
2608 "          watermark      : 1,   /* wakeup_watermark */\n"
2609 "          precise_ip     : 2,   /* skid constraint */\n"
2610 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2611 "          sample_id_all  : 1,   /* sample_type all events */\n"
2612 "          exclude_host   : 1,   /* don't count in host */\n"
2613 "          exclude_guest  : 1,   /* don't count in guest */\n"
2614 "          exclude_callchain_kernel : 1,\n"
2615 "                                /* exclude kernel callchains */\n"
2616 "          exclude_callchain_user   : 1,\n"
2617 "                                /* exclude user callchains */\n"
2618 "          mmap2          :  1,  /* include mmap with inode data */\n"
2619 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2620 "          __reserved_1   : 39;\n"
2621 msgstr ""
2622 "    __u64 disabled       : 1,   /* off by default */\n"
2623 "          inherit        : 1,   /* children inherit it */\n"
2624 "          pinned         : 1,   /* must always be on PMU */\n"
2625 "          exclusive      : 1,   /* only group on PMU */\n"
2626 "          exclude_user   : 1,   /* don't count user */\n"
2627 "          exclude_kernel : 1,   /* don't count kernel */\n"
2628 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2629 "          exclude_idle   : 1,   /* don't count when idle */\n"
2630 "          mmap           : 1,   /* include mmap data */\n"
2631 "          comm           : 1,   /* include comm data */\n"
2632 "          freq           : 1,   /* use freq, not period */\n"
2633 "          inherit_stat   : 1,   /* per task counts */\n"
2634 "          enable_on_exec : 1,   /* next exec enables */\n"
2635 "          task           : 1,   /* trace fork/exit */\n"
2636 "          watermark      : 1,   /* wakeup_watermark */\n"
2637 "          precise_ip     : 2,   /* skid constraint */\n"
2638 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2639 "          sample_id_all  : 1,   /* sample_type all events */\n"
2640 "          exclude_host   : 1,   /* don't count in host */\n"
2641 "          exclude_guest  : 1,   /* don't count in guest */\n"
2642 "          exclude_callchain_kernel : 1,\n"
2643 "                                /* exclude kernel callchains */\n"
2644 "          exclude_callchain_user   : 1,\n"
2645 "                                /* exclude user callchains */\n"
2646 "          mmap2          :  1,  /* include mmap with inode data */\n"
2647 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2648 "          __reserved_1   : 39;\n"
2649
2650 #. type: Plain text
2651 #: build/C/man2/perf_event_open.2:241
2652 #, no-wrap
2653 msgid ""
2654 "    union {\n"
2655 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2656 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2657 "    };\n"
2658 msgstr ""
2659 "    union {\n"
2660 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2661 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2662 "    };\n"
2663
2664 #. type: Plain text
2665 #: build/C/man2/perf_event_open.2:243
2666 #, no-wrap
2667 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2668 msgstr "    __u32     bp_type;          /* breakpoint type */\n"
2669
2670 #. type: Plain text
2671 #: build/C/man2/perf_event_open.2:248
2672 #, no-wrap
2673 msgid ""
2674 "    union {\n"
2675 "        __u64 bp_addr;          /* breakpoint address */\n"
2676 "        __u64 config1;          /* extension of config */\n"
2677 "    };\n"
2678 msgstr ""
2679 "    union {\n"
2680 "        __u64 bp_addr;          /* breakpoint address */\n"
2681 "        __u64 config1;          /* extension of config */\n"
2682 "    };\n"
2683
2684 #. type: Plain text
2685 #: build/C/man2/perf_event_open.2:258
2686 #, no-wrap
2687 msgid ""
2688 "    union {\n"
2689 "        __u64 bp_len;           /* breakpoint length */\n"
2690 "        __u64 config2;          /* extension of config1 */\n"
2691 "    };\n"
2692 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2693 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2694 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2695 "                                   samples */\n"
2696 "    __u32 __reserved_2;         /* Align to u64 */\n"
2697 msgstr ""
2698 "    union {\n"
2699 "        __u64 bp_len;           /* breakpoint length */\n"
2700 "        __u64 config2;          /* extension of config1 */\n"
2701 "    };\n"
2702 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2703 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2704 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2705 "                                   samples */\n"
2706 "    __u32 __reserved_2;         /* Align to u64 */\n"
2707
2708 #. type: Plain text
2709 #: build/C/man2/perf_event_open.2:260
2710 #, no-wrap
2711 msgid "};\n"
2712 msgstr "};\n"
2713
2714 #. type: Plain text
2715 #: build/C/man2/perf_event_open.2:266
2716 msgid ""
2717 "The fields of the I<perf_event_attr> structure are described in more detail "
2718 "below:"
2719 msgstr ""
2720
2721 #. type: TP
2722 #: build/C/man2/perf_event_open.2:266 build/C/man2/perf_event_open.2:1627
2723 #, no-wrap
2724 msgid "I<type>"
2725 msgstr "I<type>"
2726
2727 #. type: Plain text
2728 #: build/C/man2/perf_event_open.2:270
2729 msgid ""
2730 "This field specifies the overall event type.  It has one of the following "
2731 "values:"
2732 msgstr ""
2733
2734 #. type: TP
2735 #: build/C/man2/perf_event_open.2:271
2736 #, no-wrap
2737 msgid "B<PERF_TYPE_HARDWARE>"
2738 msgstr "B<PERF_TYPE_HARDWARE>"
2739
2740 #. type: Plain text
2741 #: build/C/man2/perf_event_open.2:278
2742 msgid ""
2743 "This indicates one of the \"generalized\" hardware events provided by the "
2744 "kernel.  See the I<config> field definition for more details."
2745 msgstr ""
2746
2747 #. type: TP
2748 #: build/C/man2/perf_event_open.2:278
2749 #, no-wrap
2750 msgid "B<PERF_TYPE_SOFTWARE>"
2751 msgstr "B<PERF_TYPE_SOFTWARE>"
2752
2753 #. type: Plain text
2754 #: build/C/man2/perf_event_open.2:282
2755 msgid ""
2756 "This indicates one of the software-defined events provided by the kernel "
2757 "(even if no hardware support is available)."
2758 msgstr ""
2759
2760 #. type: TP
2761 #: build/C/man2/perf_event_open.2:282
2762 #, no-wrap
2763 msgid "B<PERF_TYPE_TRACEPOINT>"
2764 msgstr "B<PERF_TYPE_TRACEPOINT>"
2765
2766 #. type: Plain text
2767 #: build/C/man2/perf_event_open.2:286
2768 msgid ""
2769 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2770 msgstr ""
2771
2772 #. type: TP
2773 #: build/C/man2/perf_event_open.2:286
2774 #, no-wrap
2775 msgid "B<PERF_TYPE_HW_CACHE>"
2776 msgstr "B<PERF_TYPE_HW_CACHE>"
2777
2778 #. type: Plain text
2779 #: build/C/man2/perf_event_open.2:292
2780 msgid ""
2781 "This indicates a hardware cache event.  This has a special encoding, "
2782 "described in the I<config> field definition."
2783 msgstr ""
2784
2785 #. type: TP
2786 #: build/C/man2/perf_event_open.2:292
2787 #, no-wrap
2788 msgid "B<PERF_TYPE_RAW>"
2789 msgstr "B<PERF_TYPE_RAW>"
2790
2791 #. type: Plain text
2792 #: build/C/man2/perf_event_open.2:296
2793 msgid ""
2794 "This indicates a \"raw\" implementation-specific event in the I<config> "
2795 "field."
2796 msgstr ""
2797
2798 #. type: TP
2799 #: build/C/man2/perf_event_open.2:296
2800 #, no-wrap
2801 msgid "B<PERF_TYPE_BREAKPOINT> (since Linux 2.6.33)"
2802 msgstr "B<PERF_TYPE_BREAKPOINT> (Linux 2.6.33 以降)"
2803
2804 #.  commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
2805 #. type: Plain text
2806 #: build/C/man2/perf_event_open.2:302
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:302
2815 #, no-wrap
2816 msgid "dynamic PMU"
2817 msgstr ""
2818
2819 #. type: Plain text
2820 #: build/C/man2/perf_event_open.2:321
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:322 build/C/man2/perf_event_open.2:1559
2834 #, no-wrap
2835 msgid "I<size>"
2836 msgstr "I<size>"
2837
2838 #. type: Plain text
2839 #: build/C/man2/perf_event_open.2:331
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:346
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_ATTR_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:346
2859 #, no-wrap
2860 msgid "I<config>"
2861 msgstr "I<config>"
2862
2863 #. type: Plain text
2864 #: build/C/man2/perf_event_open.2:357
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:368
2874 msgid ""
2875 "There are various ways to set the I<config> field that are dependent on the "
2876 "value of the previously described I<type> field.  What follows are various "
2877 "possible settings for I<config> separated out by I<type>."
2878 msgstr ""
2879
2880 #. type: Plain text
2881 #: build/C/man2/perf_event_open.2:378
2882 msgid ""
2883 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2884 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2885 "I<config> to one of the following:"
2886 msgstr ""
2887
2888 #. type: TP
2889 #: build/C/man2/perf_event_open.2:379
2890 #, no-wrap
2891 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2892 msgstr "B<PERF_COUNT_HW_CPU_CYCLES>"
2893
2894 #. type: Plain text
2895 #: build/C/man2/perf_event_open.2:383
2896 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling."
2897 msgstr ""
2898
2899 #. type: TP
2900 #: build/C/man2/perf_event_open.2:383
2901 #, no-wrap
2902 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2903 msgstr "B<PERF_COUNT_HW_INSTRUCTIONS>"
2904
2905 #. type: Plain text
2906 #: build/C/man2/perf_event_open.2:388
2907 msgid ""
2908 "Retired instructions.  Be careful, these can be affected by various issues, "
2909 "most notably hardware interrupt counts."
2910 msgstr ""
2911
2912 #. type: TP
2913 #: build/C/man2/perf_event_open.2:388
2914 #, no-wrap
2915 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2916 msgstr "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2917
2918 #. type: Plain text
2919 #: build/C/man2/perf_event_open.2:395
2920 msgid ""
2921 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2922 "may vary depending on your CPU.  This may include prefetches and coherency "
2923 "messages; again this depends on the design of your CPU."
2924 msgstr ""
2925
2926 #. type: TP
2927 #: build/C/man2/perf_event_open.2:395
2928 #, no-wrap
2929 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2930 msgstr "B<PERF_COUNT_HW_CACHE_MISSES>"
2931
2932 #. type: Plain text
2933 #: build/C/man2/perf_event_open.2:402
2934 msgid ""
2935 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2936 "intended to be used in conjunction with the "
2937 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2938 msgstr ""
2939
2940 #. type: TP
2941 #: build/C/man2/perf_event_open.2:402
2942 #, no-wrap
2943 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2944 msgstr "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2945
2946 #. type: Plain text
2947 #: build/C/man2/perf_event_open.2:407
2948 msgid ""
2949 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2950 "event on AMD processors."
2951 msgstr ""
2952
2953 #. type: TP
2954 #: build/C/man2/perf_event_open.2:407
2955 #, no-wrap
2956 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2957 msgstr "B<PERF_COUNT_HW_BRANCH_MISSES>"
2958
2959 #. type: Plain text
2960 #: build/C/man2/perf_event_open.2:410
2961 msgid "Mispredicted branch instructions."
2962 msgstr ""
2963
2964 #. type: TP
2965 #: build/C/man2/perf_event_open.2:410
2966 #, no-wrap
2967 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2968 msgstr "B<PERF_COUNT_HW_BUS_CYCLES>"
2969
2970 #. type: Plain text
2971 #: build/C/man2/perf_event_open.2:413
2972 msgid "Bus cycles, which can be different from total cycles."
2973 msgstr ""
2974
2975 #. type: TP
2976 #: build/C/man2/perf_event_open.2:413
2977 #, no-wrap
2978 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (since Linux 3.0)"
2979 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Linux 3.0 以降)"
2980
2981 #. type: Plain text
2982 #: build/C/man2/perf_event_open.2:416
2983 msgid "Stalled cycles during issue."
2984 msgstr ""
2985
2986 #. type: TP
2987 #: build/C/man2/perf_event_open.2:416
2988 #, no-wrap
2989 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (since Linux 3.0)"
2990 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Linux 3.0 以降)"
2991
2992 #. type: Plain text
2993 #: build/C/man2/perf_event_open.2:419
2994 msgid "Stalled cycles during retirement."
2995 msgstr ""
2996
2997 #. type: TP
2998 #: build/C/man2/perf_event_open.2:419
2999 #, no-wrap
3000 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (since Linux 3.3)"
3001 msgstr "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Linux 3.3 以降)"
3002
3003 #.  commit c37e17497e01fc0f5d2d6feb5723b210b3ab8890
3004 #. type: Plain text
3005 #: build/C/man2/perf_event_open.2:423
3006 msgid "Total cycles; not affected by CPU frequency scaling."
3007 msgstr ""
3008
3009 #. type: Plain text
3010 #: build/C/man2/perf_event_open.2:433
3011 msgid ""
3012 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
3013 "provided by the kernel.  Set I<config> to one of the following:"
3014 msgstr ""
3015
3016 #. type: TP
3017 #: build/C/man2/perf_event_open.2:434
3018 #, no-wrap
3019 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
3020 msgstr "B<PERF_COUNT_SW_CPU_CLOCK>"
3021
3022 #. type: Plain text
3023 #: build/C/man2/perf_event_open.2:437
3024 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
3025 msgstr ""
3026
3027 #. type: TP
3028 #: build/C/man2/perf_event_open.2:437
3029 #, no-wrap
3030 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
3031 msgstr "B<PERF_COUNT_SW_TASK_CLOCK>"
3032
3033 #. type: Plain text
3034 #: build/C/man2/perf_event_open.2:440
3035 msgid "This reports a clock count specific to the task that is running."
3036 msgstr ""
3037
3038 #. type: TP
3039 #: build/C/man2/perf_event_open.2:440
3040 #, no-wrap
3041 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
3042 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS>"
3043
3044 #. type: Plain text
3045 #: build/C/man2/perf_event_open.2:443
3046 msgid "This reports the number of page faults."
3047 msgstr ""
3048
3049 #. type: TP
3050 #: build/C/man2/perf_event_open.2:443
3051 #, no-wrap
3052 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3053 msgstr "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3054
3055 #. type: Plain text
3056 #: build/C/man2/perf_event_open.2:448
3057 msgid ""
3058 "This counts context switches.  Until Linux 2.6.34, these were all reported "
3059 "as user-space events, after that they are reported as happening in the "
3060 "kernel."
3061 msgstr ""
3062
3063 #. type: TP
3064 #: build/C/man2/perf_event_open.2:448
3065 #, no-wrap
3066 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3067 msgstr "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3068
3069 #. type: Plain text
3070 #: build/C/man2/perf_event_open.2:452
3071 msgid "This reports the number of times the process has migrated to a new CPU."
3072 msgstr ""
3073
3074 #. type: TP
3075 #: build/C/man2/perf_event_open.2:452
3076 #, no-wrap
3077 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3078 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3079
3080 #. type: Plain text
3081 #: build/C/man2/perf_event_open.2:456
3082 msgid ""
3083 "This counts the number of minor page faults.  These did not require disk I/O "
3084 "to handle."
3085 msgstr ""
3086
3087 #. type: TP
3088 #: build/C/man2/perf_event_open.2:456
3089 #, no-wrap
3090 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3091 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3092
3093 #. type: Plain text
3094 #: build/C/man2/perf_event_open.2:460
3095 msgid ""
3096 "This counts the number of major page faults.  These required disk I/O to "
3097 "handle."
3098 msgstr ""
3099
3100 #. type: TP
3101 #: build/C/man2/perf_event_open.2:460
3102 #, no-wrap
3103 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (since Linux 2.6.33)"
3104 msgstr "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Linux 2.6.33 以降)"
3105
3106 #.  commit f7d7986060b2890fc26db6ab5203efbd33aa2497
3107 #. type: Plain text
3108 #: build/C/man2/perf_event_open.2:467
3109 msgid ""
3110 "This counts the number of alignment faults.  These happen when unaligned "
3111 "memory accesses happen; the kernel can handle these but it reduces "
3112 "performance.  This happens only on some architectures (never on x86)."
3113 msgstr ""
3114
3115 #. type: TP
3116 #: build/C/man2/perf_event_open.2:467
3117 #, no-wrap
3118 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (since Linux 2.6.33)"
3119 msgstr "B<PERF_COUNT_SW_EMULATION_FAULTS> (Linux 2.6.33 以降)"
3120
3121 #.  commit f7d7986060b2890fc26db6ab5203efbd33aa2497
3122 #. type: Plain text
3123 #: build/C/man2/perf_event_open.2:474
3124 msgid ""
3125 "This counts the number of emulation faults.  The kernel sometimes traps on "
3126 "unimplemented instructions and emulates them for user space.  This can "
3127 "negatively impact performance."
3128 msgstr ""
3129
3130 #. type: TP
3131 #: build/C/man2/perf_event_open.2:474
3132 #, no-wrap
3133 msgid "B<PERF_COUNT_SW_DUMMY> (since Linux 3.12)"
3134 msgstr "B<PERF_COUNT_SW_DUMMY> (Linux 3.12 以降)"
3135
3136 #.  commit fa0097ee690693006ab1aea6c01ad3c851b65c77
3137 #. type: Plain text
3138 #: build/C/man2/perf_event_open.2:482
3139 msgid ""
3140 "This is a placeholder event that counts nothing.  Informational sample "
3141 "record types such as mmap or comm must be associated with an active event.  "
3142 "This dummy event allows gathering such records without requiring a counting "
3143 "event."
3144 msgstr ""
3145
3146 #. type: Plain text
3147 #: build/C/man2/perf_event_open.2:495
3148 msgid ""
3149 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3150 "tracepoints.  The value to use in I<config> can be obtained from under "
3151 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3152 msgstr ""
3153
3154 #. type: Plain text
3155 #: build/C/man2/perf_event_open.2:506
3156 msgid ""
3157 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3158 "cache event.  To calculate the appropriate I<config> value use the following "
3159 "equation:"
3160 msgstr ""
3161
3162 #. type: Plain text
3163 #: build/C/man2/perf_event_open.2:511
3164 #, no-wrap
3165 msgid ""
3166 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3167 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3168 msgstr ""
3169 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3170 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3171
3172 #. type: Plain text
3173 #: build/C/man2/perf_event_open.2:516
3174 msgid "where I<perf_hw_cache_id> is one of:"
3175 msgstr ""
3176
3177 #. type: TP
3178 #: build/C/man2/perf_event_open.2:517
3179 #, no-wrap
3180 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3181 msgstr "B<PERF_COUNT_HW_CACHE_L1D>"
3182
3183 #. type: Plain text
3184 #: build/C/man2/perf_event_open.2:520
3185 msgid "for measuring Level 1 Data Cache"
3186 msgstr ""
3187
3188 #. type: TP
3189 #: build/C/man2/perf_event_open.2:520
3190 #, no-wrap
3191 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3192 msgstr "B<PERF_COUNT_HW_CACHE_L1I>"
3193
3194 #. type: Plain text
3195 #: build/C/man2/perf_event_open.2:523
3196 msgid "for measuring Level 1 Instruction Cache"
3197 msgstr ""
3198
3199 #. type: TP
3200 #: build/C/man2/perf_event_open.2:523
3201 #, no-wrap
3202 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3203 msgstr "B<PERF_COUNT_HW_CACHE_LL>"
3204
3205 #. type: Plain text
3206 #: build/C/man2/perf_event_open.2:526
3207 msgid "for measuring Last-Level Cache"
3208 msgstr ""
3209
3210 #. type: TP
3211 #: build/C/man2/perf_event_open.2:526
3212 #, no-wrap
3213 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3214 msgstr "B<PERF_COUNT_HW_CACHE_DTLB>"
3215
3216 #. type: Plain text
3217 #: build/C/man2/perf_event_open.2:529
3218 msgid "for measuring the Data TLB"
3219 msgstr ""
3220
3221 #. type: TP
3222 #: build/C/man2/perf_event_open.2:529
3223 #, no-wrap
3224 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3225 msgstr "B<PERF_COUNT_HW_CACHE_ITLB>"
3226
3227 #. type: Plain text
3228 #: build/C/man2/perf_event_open.2:532
3229 msgid "for measuring the Instruction TLB"
3230 msgstr ""
3231
3232 #. type: TP
3233 #: build/C/man2/perf_event_open.2:532
3234 #, no-wrap
3235 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3236 msgstr "B<PERF_COUNT_HW_CACHE_BPU>"
3237
3238 #. type: Plain text
3239 #: build/C/man2/perf_event_open.2:535
3240 msgid "for measuring the branch prediction unit"
3241 msgstr ""
3242
3243 #. type: TP
3244 #: build/C/man2/perf_event_open.2:535
3245 #, no-wrap
3246 msgid "B<PERF_COUNT_HW_CACHE_NODE> (since Linux 3.1)"
3247 msgstr "B<PERF_COUNT_HW_CACHE_NODE> (Linux 3.1 以降)"
3248
3249 #.  commit 89d6c0b5bdbb1927775584dcf532d98b3efe1477
3250 #. type: Plain text
3251 #: build/C/man2/perf_event_open.2:539
3252 msgid "for measuring local memory accesses"
3253 msgstr ""
3254
3255 #. type: Plain text
3256 #: build/C/man2/perf_event_open.2:544
3257 msgid "and I<perf_hw_cache_op_id> is one of"
3258 msgstr ""
3259
3260 #. type: TP
3261 #: build/C/man2/perf_event_open.2:545
3262 #, no-wrap
3263 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3264 msgstr "B<PERF_COUNT_HW_CACHE_OP_READ>"
3265
3266 #. type: Plain text
3267 #: build/C/man2/perf_event_open.2:548
3268 msgid "for read accesses"
3269 msgstr ""
3270
3271 #. type: TP
3272 #: build/C/man2/perf_event_open.2:548
3273 #, no-wrap
3274 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3275 msgstr "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3276
3277 #. type: Plain text
3278 #: build/C/man2/perf_event_open.2:551
3279 msgid "for write accesses"
3280 msgstr ""
3281
3282 #. type: TP
3283 #: build/C/man2/perf_event_open.2:551
3284 #, no-wrap
3285 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3286 msgstr "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3287
3288 #. type: Plain text
3289 #: build/C/man2/perf_event_open.2:554
3290 msgid "for prefetch accesses"
3291 msgstr ""
3292
3293 #. type: Plain text
3294 #: build/C/man2/perf_event_open.2:559
3295 msgid "and I<perf_hw_cache_op_result_id> is one of"
3296 msgstr ""
3297
3298 #. type: TP
3299 #: build/C/man2/perf_event_open.2:560
3300 #, no-wrap
3301 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3302 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3303
3304 #. type: Plain text
3305 #: build/C/man2/perf_event_open.2:563
3306 msgid "to measure accesses"
3307 msgstr ""
3308
3309 #. type: TP
3310 #: build/C/man2/perf_event_open.2:563
3311 #, no-wrap
3312 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3313 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3314
3315 #. type: Plain text
3316 #: build/C/man2/perf_event_open.2:566
3317 msgid "to measure misses"
3318 msgstr ""
3319
3320 #. type: Plain text
3321 #: build/C/man2/perf_event_open.2:584
3322 msgid ""
3323 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3324 "needed.  Most CPUs support events that are not covered by the \"generalized"
3325 "\" events.  These are implementation defined; see your CPU manual (for "
3326 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3327 "Developer Guide).  The libpfm4 library can be used to translate from the "
3328 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3329 "expects in this field."
3330 msgstr ""
3331
3332 #. type: Plain text
3333 #: build/C/man2/perf_event_open.2:593
3334 msgid ""
3335 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3336 "Its parameters are set in other places."
3337 msgstr ""
3338
3339 #. type: TP
3340 #: build/C/man2/perf_event_open.2:594
3341 #, no-wrap
3342 msgid "I<sample_period>, I<sample_freq>"
3343 msgstr "I<sample_period>, I<sample_freq>"
3344
3345 #. type: Plain text
3346 #: build/C/man2/perf_event_open.2:606
3347 msgid ""
3348 "A \"sampling\" event is one that generates an overflow notification every N "
3349 "events, where N is given by I<sample_period>.  A sampling event has "
3350 "I<sample_period> E<gt> 0.  When an overflow occurs, requested data is "
3351 "recorded in the mmap buffer.  The I<sample_type> field controls what data is "
3352 "recorded on each overflow."
3353 msgstr ""
3354
3355 #. type: Plain text
3356 #: build/C/man2/perf_event_open.2:616
3357 msgid ""
3358 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3359 "In this case, you set the I<freq> flag.  The kernel will adjust the sampling "
3360 "period to try and achieve the desired rate.  The rate of adjustment is a "
3361 "timer tick."
3362 msgstr ""
3363
3364 #. type: TP
3365 #: build/C/man2/perf_event_open.2:616
3366 #, no-wrap
3367 msgid "I<sample_type>"
3368 msgstr "I<sample_type>"
3369
3370 #. type: Plain text
3371 #: build/C/man2/perf_event_open.2:628
3372 msgid ""
3373 "The various bits in this field specify which values to include in the "
3374 "sample.  They will be recorded in a ring-buffer, which is available to user "
3375 "space using B<mmap>(2).  The order in which the values are saved in the "
3376 "sample are documented in the MMAP Layout subsection below; it is not the "
3377 "I<enum perf_event_sample_format> order."
3378 msgstr ""
3379
3380 #. type: TP
3381 #: build/C/man2/perf_event_open.2:629
3382 #, no-wrap
3383 msgid "B<PERF_SAMPLE_IP>"
3384 msgstr "B<PERF_SAMPLE_IP>"
3385
3386 #. type: Plain text
3387 #: build/C/man2/perf_event_open.2:632
3388 msgid "Records instruction pointer."
3389 msgstr ""
3390
3391 #. type: TP
3392 #: build/C/man2/perf_event_open.2:632
3393 #, no-wrap
3394 msgid "B<PERF_SAMPLE_TID>"
3395 msgstr "B<PERF_SAMPLE_TID>"
3396
3397 #. type: Plain text
3398 #: build/C/man2/perf_event_open.2:635
3399 msgid "Records the process and thread IDs."
3400 msgstr ""
3401
3402 #. type: TP
3403 #: build/C/man2/perf_event_open.2:635
3404 #, no-wrap
3405 msgid "B<PERF_SAMPLE_TIME>"
3406 msgstr "B<PERF_SAMPLE_TIME>"
3407
3408 #. type: Plain text
3409 #: build/C/man2/perf_event_open.2:638
3410 msgid "Records a timestamp."
3411 msgstr ""
3412
3413 #. type: TP
3414 #: build/C/man2/perf_event_open.2:638
3415 #, no-wrap
3416 msgid "B<PERF_SAMPLE_ADDR>"
3417 msgstr "B<PERF_SAMPLE_ADDR>"
3418
3419 #. type: Plain text
3420 #: build/C/man2/perf_event_open.2:641
3421 msgid "Records an address, if applicable."
3422 msgstr ""
3423
3424 #. type: TP
3425 #: build/C/man2/perf_event_open.2:641
3426 #, no-wrap
3427 msgid "B<PERF_SAMPLE_READ>"
3428 msgstr "B<PERF_SAMPLE_READ>"
3429
3430 #. type: Plain text
3431 #: build/C/man2/perf_event_open.2:644
3432 msgid ""
3433 "Record counter values for all events in a group, not just the group leader."
3434 msgstr ""
3435
3436 #. type: TP
3437 #: build/C/man2/perf_event_open.2:644
3438 #, no-wrap
3439 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3440 msgstr "B<PERF_SAMPLE_CALLCHAIN>"
3441
3442 #. type: Plain text
3443 #: build/C/man2/perf_event_open.2:647
3444 msgid "Records the callchain (stack backtrace)."
3445 msgstr ""
3446
3447 #. type: TP
3448 #: build/C/man2/perf_event_open.2:647
3449 #, no-wrap
3450 msgid "B<PERF_SAMPLE_ID>"
3451 msgstr "B<PERF_SAMPLE_ID>"
3452
3453 #. type: Plain text
3454 #: build/C/man2/perf_event_open.2:650
3455 msgid "Records a unique ID for the opened event's group leader."
3456 msgstr ""
3457
3458 #. type: TP
3459 #: build/C/man2/perf_event_open.2:650
3460 #, no-wrap
3461 msgid "B<PERF_SAMPLE_CPU>"
3462 msgstr "B<PERF_SAMPLE_CPU>"
3463
3464 #. type: Plain text
3465 #: build/C/man2/perf_event_open.2:653
3466 msgid "Records CPU number."
3467 msgstr ""
3468
3469 #. type: TP
3470 #: build/C/man2/perf_event_open.2:653
3471 #, no-wrap
3472 msgid "B<PERF_SAMPLE_PERIOD>"
3473 msgstr "B<PERF_SAMPLE_PERIOD>"
3474
3475 #. type: Plain text
3476 #: build/C/man2/perf_event_open.2:656
3477 msgid "Records the current sampling period."
3478 msgstr ""
3479
3480 #. type: TP
3481 #: build/C/man2/perf_event_open.2:656
3482 #, no-wrap
3483 msgid "B<PERF_SAMPLE_STREAM_ID>"
3484 msgstr "B<PERF_SAMPLE_STREAM_ID>"
3485
3486 #. type: Plain text
3487 #: build/C/man2/perf_event_open.2:664
3488 msgid ""
3489 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3490 "actual ID is returned, not the group leader.  This ID is the same as the one "
3491 "returned by B<PERF_FORMAT_ID>."
3492 msgstr ""
3493
3494 #. type: TP
3495 #: build/C/man2/perf_event_open.2:664
3496 #, no-wrap
3497 msgid "B<PERF_SAMPLE_RAW>"
3498 msgstr "B<PERF_SAMPLE_RAW>"
3499
3500 #. type: Plain text
3501 #: build/C/man2/perf_event_open.2:668
3502 msgid ""
3503 "Records additional data, if applicable.  Usually returned by tracepoint "
3504 "events."
3505 msgstr ""
3506
3507 #. type: TP
3508 #: build/C/man2/perf_event_open.2:668
3509 #, no-wrap
3510 msgid "B<PERF_SAMPLE_BRANCH_STACK> (since Linux 3.4)"
3511 msgstr "B<PERF_SAMPLE_BRANCH_STACK> (Linux 3.4 以降)"
3512
3513 #.  commit bce38cd53e5ddba9cb6d708c4ef3d04a4016ec7e
3514 #. type: Plain text
3515 #: build/C/man2/perf_event_open.2:674
3516 msgid ""
3517 "This provides a record of recent branches, as provided by CPU branch "
3518 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3519 "supports this feature."
3520 msgstr ""
3521
3522 #. type: Plain text
3523 #: build/C/man2/perf_event_open.2:678
3524 msgid ""
3525 "See the I<branch_sample_type> field for how to filter which branches are "
3526 "reported."
3527 msgstr ""
3528
3529 #. type: TP
3530 #: build/C/man2/perf_event_open.2:678
3531 #, no-wrap
3532 msgid "B<PERF_SAMPLE_REGS_USER> (since Linux 3.7)"
3533 msgstr "B<PERF_SAMPLE_REGS_USER> (Linux 3.7 以降)"
3534
3535 #.  commit 4018994f3d8785275ef0e7391b75c3462c029e56
3536 #. type: Plain text
3537 #: build/C/man2/perf_event_open.2:683
3538 msgid ""
3539 "Records the current user-level CPU register state (the values in the process "
3540 "before the kernel was called)."
3541 msgstr ""
3542
3543 #. type: TP
3544 #: build/C/man2/perf_event_open.2:683
3545 #, no-wrap
3546 msgid "B<PERF_SAMPLE_STACK_USER> (since Linux 3.7)"
3547 msgstr "B<PERF_SAMPLE_STACK_USER> (Linux 3.7 以降)"
3548
3549 #.  commit c5ebcedb566ef17bda7b02686e0d658a7bb42ee7
3550 #. type: Plain text
3551 #: build/C/man2/perf_event_open.2:687
3552 msgid "Records the user level stack, allowing stack unwinding."
3553 msgstr ""
3554
3555 #. type: TP
3556 #: build/C/man2/perf_event_open.2:687
3557 #, no-wrap
3558 msgid "B<PERF_SAMPLE_WEIGHT> (since Linux 3.10)"
3559 msgstr "B<PERF_SAMPLE_WEIGHT> (Linux 3.10 以降)"
3560
3561 #.  commit c3feedf2aaf9ac8bad6f19f5d21e4ee0b4b87e9c
3562 #. type: Plain text
3563 #: build/C/man2/perf_event_open.2:694
3564 msgid ""
3565 "Records a hardware provided weight value that expresses how costly the "
3566 "sampled event was.  This allows the hardware to highlight expensive events "
3567 "in a profile."
3568 msgstr ""
3569
3570 #. type: TP
3571 #: build/C/man2/perf_event_open.2:694
3572 #, no-wrap
3573 msgid "B<PERF_SAMPLE_DATA_SRC> (since Linux 3.10)"
3574 msgstr "B<PERF_SAMPLE_DATA_SRC> (Linux 3.10 以降)"
3575
3576 #.  commit d6be9ad6c960f43800a6f118932bc8a5a4eadcd1
3577 #. type: Plain text
3578 #: build/C/man2/perf_event_open.2:701
3579 msgid ""
3580 "Records the data source: where in the memory hierarchy the data associated "
3581 "with the sampled instruction came from.  This is only available if the "
3582 "underlying hardware supports this feature."
3583 msgstr ""
3584
3585 #. type: TP
3586 #: build/C/man2/perf_event_open.2:701
3587 #, no-wrap
3588 msgid "B<PERF_SAMPLE_IDENTIFIER> (since Linux 3.12)"
3589 msgstr "B<PERF_SAMPLE_IDENTIFIER> (Linux 3.12 以降)"
3590
3591 #.  commit ff3d527cebc1fa3707c617bfe9e74f53fcfb0955
3592 #. type: Plain text
3593 #: build/C/man2/perf_event_open.2:709
3594 msgid ""
3595 "Places the B<SAMPLE_ID> value in a fixed position in the record, either at "
3596 "the beginning (for sample events) or at the end (if a non-sample event)."
3597 msgstr ""
3598
3599 #. type: Plain text
3600 #: build/C/man2/perf_event_open.2:721
3601 msgid ""
3602 "This was necessary because a sample stream may have records from various "
3603 "different event sources with different I<sample_type> settings.  Parsing the "
3604 "event stream properly was not possible because the format of the record was "
3605 "needed to find B<SAMPLE_ID>, but the format could not be found without "
3606 "knowing what event the sample belonged to (causing a circular dependency)."
3607 msgstr ""
3608
3609 #. type: Plain text
3610 #: build/C/man2/perf_event_open.2:731
3611 msgid ""
3612 "The B<PERF_SAMPLE_IDENTIFIER> setting makes the event stream always parsable "
3613 "by putting B<SAMPLE_ID> in a fixed location, even though it means having "
3614 "duplicate B<SAMPLE_ID> values in records."
3615 msgstr ""
3616
3617 #. type: TP
3618 #: build/C/man2/perf_event_open.2:731
3619 #, no-wrap
3620 msgid "B<PERF_SAMPLE_TRANSACTION> (since Linux 3.13)"
3621 msgstr "B<PERF_SAMPLE_TRANSACTION> (Linux 3.13 以降)"
3622
3623 #.  commit fdfbbd07e91f8fe387140776f3fd94605f0c89e5
3624 #. type: Plain text
3625 #: build/C/man2/perf_event_open.2:736
3626 msgid ""
3627 "Records reasons for transactional memory abort events (for example, from "
3628 "Intel TSX transactional memory support)."
3629 msgstr ""
3630
3631 #. type: Plain text
3632 #: build/C/man2/perf_event_open.2:744
3633 msgid ""
3634 "The I<precise_ip> setting must be greater than 0 and a transactional memory "
3635 "abort event must be measured or no values will be recorded.  Also note that "
3636 "some perf_event measurements, such as sampled cycle counting, may cause "
3637 "extraneous aborts (by causing an interrupt during a transaction)."
3638 msgstr ""
3639
3640 #. type: TP
3641 #: build/C/man2/perf_event_open.2:745
3642 #, no-wrap
3643 msgid "I<read_format>"
3644 msgstr "I<read_format>"
3645
3646 #. type: Plain text
3647 #: build/C/man2/perf_event_open.2:752
3648 msgid ""
3649 "This field specifies the format of the data returned by B<read>(2)  on a "
3650 "B<perf_event_open>()  file descriptor."
3651 msgstr ""
3652
3653 #. type: TP
3654 #: build/C/man2/perf_event_open.2:753
3655 #, no-wrap
3656 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3657 msgstr "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3658
3659 #. type: Plain text
3660 #: build/C/man2/perf_event_open.2:760
3661 msgid ""
3662 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3663 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3664 msgstr ""
3665
3666 #. type: TP
3667 #: build/C/man2/perf_event_open.2:760
3668 #, no-wrap
3669 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3670 msgstr "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3671
3672 #. type: Plain text
3673 #: build/C/man2/perf_event_open.2:767
3674 msgid ""
3675 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3676 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3677 msgstr ""
3678
3679 #. type: TP
3680 #: build/C/man2/perf_event_open.2:767
3681 #, no-wrap
3682 msgid "B<PERF_FORMAT_ID>"
3683 msgstr "B<PERF_FORMAT_ID>"
3684
3685 #. type: Plain text
3686 #: build/C/man2/perf_event_open.2:770
3687 msgid "Adds a 64-bit unique value that corresponds to the event group."
3688 msgstr ""
3689
3690 #. type: TP
3691 #: build/C/man2/perf_event_open.2:770
3692 #, no-wrap
3693 msgid "B<PERF_FORMAT_GROUP>"
3694 msgstr "B<PERF_FORMAT_GROUP>"
3695
3696 #. type: Plain text
3697 #: build/C/man2/perf_event_open.2:773
3698 msgid "Allows all counter values in an event group to be read with one read."
3699 msgstr ""
3700
3701 #. type: TP
3702 #: build/C/man2/perf_event_open.2:774
3703 #, no-wrap
3704 msgid "I<disabled>"
3705 msgstr "I<disabled>"
3706
3707 #. type: Plain text
3708 #: build/C/man2/perf_event_open.2:784
3709 msgid ""
3710 "The I<disabled> bit specifies whether the counter starts out disabled or "
3711 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3712 "B<prctl>(2), or I<enable_on_exec>."
3713 msgstr ""
3714
3715 #. type: Plain text
3716 #: build/C/man2/perf_event_open.2:795
3717 msgid ""
3718 "When creating an event group, typically the group leader is initialized with "
3719 "I<disabled> set to 1 and any child events are initialized with I<disabled> "
3720 "set to 0.  Despite I<disabled> being 0, the child events will not start "
3721 "until the group leader is enabled."
3722 msgstr ""
3723
3724 #. type: TP
3725 #: build/C/man2/perf_event_open.2:795
3726 #, no-wrap
3727 msgid "I<inherit>"
3728 msgstr "I<inherit>"
3729
3730 #. type: Plain text
3731 #: build/C/man2/perf_event_open.2:804
3732 msgid ""
3733 "The I<inherit> bit specifies that this counter should count events of child "
3734 "tasks as well as the task specified.  This applies only to new children, not "
3735 "to any existing children at the time the counter is created (nor to any new "
3736 "children of existing children)."
3737 msgstr ""
3738
3739 #. type: Plain text
3740 #: build/C/man2/perf_event_open.2:809
3741 msgid ""
3742 "Inherit does not work for some combinations of I<read_format>s, such as "
3743 "B<PERF_FORMAT_GROUP>."
3744 msgstr ""
3745
3746 #. type: TP
3747 #: build/C/man2/perf_event_open.2:809
3748 #, no-wrap
3749 msgid "I<pinned>"
3750 msgstr "I<pinned>"
3751
3752 #. type: Plain text
3753 #: build/C/man2/perf_event_open.2:822
3754 msgid ""
3755 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3756 "at all possible.  It applies only to hardware counters and only to group "
3757 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3758 "there are not enough hardware counters or because of a conflict with some "
3759 "other event), then the counter goes into an 'error' state, where reads "
3760 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3761 "subsequently enabled or disabled."
3762 msgstr ""
3763
3764 #. type: TP
3765 #: build/C/man2/perf_event_open.2:822
3766 #, no-wrap
3767 msgid "I<exclusive>"
3768 msgstr "I<exclusive>"
3769
3770 #. type: Plain text
3771 #: build/C/man2/perf_event_open.2:831
3772 msgid ""
3773 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3774 "it should be the only group using the CPU's counters.  In the future this "
3775 "may allow monitoring programs to support PMU features that need to run alone "
3776 "so that they do not disrupt other hardware counters."
3777 msgstr ""
3778
3779 #. type: Plain text
3780 #: build/C/man2/perf_event_open.2:838
3781 msgid ""
3782 "Note that many unexpected situations may prevent events with the "
3783 "I<exclusive> bit set from ever running.  This includes any users running a "
3784 "system-wide measurement as well as any kernel use of the performance "
3785 "counters (including the commonly enabled NMI Watchdog Timer interface)."
3786 msgstr ""
3787
3788 #. type: TP
3789 #: build/C/man2/perf_event_open.2:838
3790 #, no-wrap
3791 msgid "I<exclude_user>"
3792 msgstr "I<exclude_user>"
3793
3794 #. type: Plain text
3795 #: build/C/man2/perf_event_open.2:841
3796 msgid ""
3797 "If this bit is set, the count excludes events that happen in user space."
3798 msgstr ""
3799
3800 #. type: TP
3801 #: build/C/man2/perf_event_open.2:841
3802 #, no-wrap
3803 msgid "I<exclude_kernel>"
3804 msgstr "I<exclude_kernel>"
3805
3806 #. type: Plain text
3807 #: build/C/man2/perf_event_open.2:844
3808 msgid ""
3809 "If this bit is set, the count excludes events that happen in kernel-space."
3810 msgstr ""
3811
3812 #. type: TP
3813 #: build/C/man2/perf_event_open.2:844
3814 #, no-wrap
3815 msgid "I<exclude_hv>"
3816 msgstr "I<exclude_hv>"
3817
3818 #. type: Plain text
3819 #: build/C/man2/perf_event_open.2:852
3820 msgid ""
3821 "If this bit is set, the count excludes events that happen in the "
3822 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3823 "this (such as POWER).  Extra support is needed for handling hypervisor "
3824 "measurements on most machines."
3825 msgstr ""
3826
3827 #. type: TP
3828 #: build/C/man2/perf_event_open.2:852
3829 #, no-wrap
3830 msgid "I<exclude_idle>"
3831 msgstr "I<exclude_idle>"
3832
3833 #. type: Plain text
3834 #: build/C/man2/perf_event_open.2:855
3835 msgid "If set, don't count when the CPU is idle."
3836 msgstr ""
3837
3838 #. type: TP
3839 #: build/C/man2/perf_event_open.2:855
3840 #, no-wrap
3841 msgid "I<mmap>"
3842 msgstr "I<mmap>"
3843
3844 #. type: Plain text
3845 #: build/C/man2/perf_event_open.2:869
3846 msgid ""
3847 "The I<mmap> bit enables generation of B<PERF_RECORD_MMAP> samples for every "
3848 "B<mmap>(2)  call that has B<PROT_EXEC> set.  This allows tools to notice new "
3849 "executable code being mapped into a program (dynamic shared libraries for "
3850 "example)  so that addresses can be mapped back to the original code."
3851 msgstr ""
3852
3853 #. type: TP
3854 #: build/C/man2/perf_event_open.2:869 build/C/man2/perf_event_open.2:1719
3855 #, no-wrap
3856 msgid "I<comm>"
3857 msgstr "I<comm>"
3858
3859 #. type: Plain text
3860 #: build/C/man2/perf_event_open.2:887
3861 msgid ""
3862 "The I<comm> bit enables tracking of process command name as modified by the "
3863 "B<exec>(2)  and B<prctl>(PR_SET_NAME)  system calls as well as writing to I</"
3864 "proc/self/comm>.  If the I<comm_exec> flag is also successfully set "
3865 "(possible since Linux 3.16), then the misc flag "
3866 "B<PERF_RECORD_MISC_COMM_EXEC> can be used to differentiate the B<exec>(2)  "
3867 "case from the others."
3868 msgstr ""
3869
3870 #. type: TP
3871 #: build/C/man2/perf_event_open.2:887
3872 #, no-wrap
3873 msgid "I<freq>"
3874 msgstr "I<freq>"
3875
3876 #. type: Plain text
3877 #: build/C/man2/perf_event_open.2:894
3878 msgid ""
3879 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3880 "when setting up the sampling interval."
3881 msgstr ""
3882
3883 #. type: TP
3884 #: build/C/man2/perf_event_open.2:894
3885 #, no-wrap
3886 msgid "I<inherit_stat>"
3887 msgstr "I<inherit_stat>"
3888
3889 #. type: Plain text
3890 #: build/C/man2/perf_event_open.2:901
3891 msgid ""
3892 "This bit enables saving of event counts on context switch for inherited "
3893 "tasks.  This is meaningful only if the I<inherit> field is set."
3894 msgstr ""
3895
3896 #. type: TP
3897 #: build/C/man2/perf_event_open.2:901
3898 #, no-wrap
3899 msgid "I<enable_on_exec>"
3900 msgstr "I<enable_on_exec>"
3901
3902 #. type: Plain text
3903 #: build/C/man2/perf_event_open.2:906
3904 msgid ""
3905 "If this bit is set, a counter is automatically enabled after a call to "
3906 "B<exec>(2)."
3907 msgstr ""
3908
3909 #. type: TP
3910 #: build/C/man2/perf_event_open.2:906
3911 #, no-wrap
3912 msgid "I<task>"
3913 msgstr "I<task>"
3914
3915 #. type: Plain text
3916 #: build/C/man2/perf_event_open.2:910
3917 msgid ""
3918 "If this bit is set, then fork/exit notifications are included in the ring "
3919 "buffer."
3920 msgstr ""
3921
3922 #. type: TP
3923 #: build/C/man2/perf_event_open.2:910
3924 #, no-wrap
3925 msgid "I<watermark>"
3926 msgstr "I<watermark>"
3927
3928 #. type: Plain text
3929 #: build/C/man2/perf_event_open.2:918
3930 msgid ""
3931 "If set, have an overflow notification happen when we cross the "
3932 "I<wakeup_watermark> boundary.  Otherwise, overflow notifications happen "
3933 "after I<wakeup_events> samples."
3934 msgstr ""
3935
3936 #. type: TP
3937 #: build/C/man2/perf_event_open.2:918
3938 #, no-wrap
3939 msgid "I<precise_ip> (since Linux 2.6.35)"
3940 msgstr "I<precise_ip> (Linux 2.6.35 以降)"
3941
3942 #. type: Plain text
3943 #: build/C/man2/perf_event_open.2:928
3944 msgid ""
3945 "This controls the amount of skid.  Skid is how many instructions execute "
3946 "between an event of interest happening and the kernel being able to stop and "
3947 "record the event.  Smaller skid is better and allows more accurate reporting "
3948 "of which events correspond to which instructions, but hardware is often "
3949 "limited with how small this can be."
3950 msgstr ""
3951
3952 #. type: Plain text
3953 #: build/C/man2/perf_event_open.2:930
3954 msgid "The values of this are the following:"
3955 msgstr ""
3956
3957 #. type: TP
3958 #: build/C/man2/perf_event_open.2:931
3959 #, no-wrap
3960 msgid "0 -"
3961 msgstr "0 -"
3962
3963 #. type: Plain text
3964 #: build/C/man2/perf_event_open.2:935
3965 msgid "B<SAMPLE_IP> can have arbitrary skid."
3966 msgstr ""
3967
3968 #. type: TP
3969 #: build/C/man2/perf_event_open.2:935
3970 #, no-wrap
3971 msgid "1 -"
3972 msgstr "1 -"
3973
3974 #. type: Plain text
3975 #: build/C/man2/perf_event_open.2:939
3976 msgid "B<SAMPLE_IP> must have constant skid."
3977 msgstr ""
3978
3979 #. type: TP
3980 #: build/C/man2/perf_event_open.2:939
3981 #, no-wrap
3982 msgid "2 -"
3983 msgstr "2 -"
3984
3985 #. type: Plain text
3986 #: build/C/man2/perf_event_open.2:943
3987 msgid "B<SAMPLE_IP> requested to have 0 skid."
3988 msgstr ""
3989
3990 #. type: TP
3991 #: build/C/man2/perf_event_open.2:943
3992 #, no-wrap
3993 msgid "3 -"
3994 msgstr "3 -"
3995
3996 #. type: Plain text
3997 #: build/C/man2/perf_event_open.2:949
3998 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3999 msgstr ""
4000
4001 #. type: TP
4002 #: build/C/man2/perf_event_open.2:950
4003 #, no-wrap
4004 msgid "I<mmap_data> (since Linux 2.6.36)"
4005 msgstr "I<mmap_data> (Linux 2.6.36 以降)"
4006
4007 #. type: Plain text
4008 #: build/C/man2/perf_event_open.2:962
4009 msgid ""
4010 "The counterpart of the I<mmap> field.  This enables generation of "
4011 "B<PERF_RECORD_MMAP> samples for B<mmap>(2)  calls that do not have "
4012 "B<PROT_EXEC> set (for example data and SysV shared memory)."
4013 msgstr ""
4014
4015 #. type: TP
4016 #: build/C/man2/perf_event_open.2:962
4017 #, no-wrap
4018 msgid "I<sample_id_all> (since Linux 2.6.38)"
4019 msgstr "I<sample_id_all> (Linux 2.6.38 以降)"
4020
4021 #. type: Plain text
4022 #: build/C/man2/perf_event_open.2:970
4023 msgid ""
4024 "If set, then TID, TIME, ID, STREAM_ID, and CPU can additionally be included "
4025 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
4026 "selected."
4027 msgstr ""
4028
4029 #. type: Plain text
4030 #: build/C/man2/perf_event_open.2:978
4031 msgid ""
4032 "If B<PERF_SAMPLE_IDENTIFIER> is specified, then an additional ID value is "
4033 "included as the last value to ease parsing the record stream.  This may lead "
4034 "to the I<id> value appearing twice."
4035 msgstr ""
4036
4037 #. type: Plain text
4038 #: build/C/man2/perf_event_open.2:980
4039 msgid "The layout is described by this pseudo-structure:"
4040 msgstr ""
4041
4042 #. type: Plain text
4043 #: build/C/man2/perf_event_open.2:990
4044 #, no-wrap
4045 msgid ""
4046 "struct sample_id {\n"
4047 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4048 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4049 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4050 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4051 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4052 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4053 "};\n"
4054 msgstr ""
4055 "struct sample_id {\n"
4056 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4057 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4058 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4059 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4060 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4061 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4062 "};\n"
4063
4064 #. type: TP
4065 #: build/C/man2/perf_event_open.2:991
4066 #, no-wrap
4067 msgid "I<exclude_host> (since Linux 3.2)"
4068 msgstr "I<exclude_host> (Linux 3.2 以降)"
4069
4070 #. type: Plain text
4071 #: build/C/man2/perf_event_open.2:994
4072 msgid "Do not measure time spent in VM host."
4073 msgstr ""
4074
4075 #. type: TP
4076 #: build/C/man2/perf_event_open.2:994
4077 #, no-wrap
4078 msgid "I<exclude_guest> (since Linux 3.2)"
4079 msgstr "I<exclude_guest> (Linux 3.2 以降)"
4080
4081 #. type: Plain text
4082 #: build/C/man2/perf_event_open.2:997
4083 msgid "Do not measure time spent in VM guest."
4084 msgstr ""
4085
4086 #. type: TP
4087 #: build/C/man2/perf_event_open.2:997
4088 #, no-wrap
4089 msgid "I<exclude_callchain_kernel> (since Linux 3.7)"
4090 msgstr "I<exclude_callchain_kernel> (Linux 3.7 以降)"
4091
4092 #. type: Plain text
4093 #: build/C/man2/perf_event_open.2:1000
4094 msgid "Do not include kernel callchains."
4095 msgstr ""
4096
4097 #. type: TP
4098 #: build/C/man2/perf_event_open.2:1000
4099 #, no-wrap
4100 msgid "I<exclude_callchain_user> (since Linux 3.7)"
4101 msgstr "I<exclude_callchain_user> (Linux 3.7 以降)"
4102
4103 #. type: Plain text
4104 #: build/C/man2/perf_event_open.2:1003
4105 msgid "Do not include user callchains."
4106 msgstr ""
4107
4108 #. type: TP
4109 #: build/C/man2/perf_event_open.2:1003
4110 #, no-wrap
4111 msgid "I<mmap2> (since Linux 3.16)"
4112 msgstr "I<mmap2> (Linux 3.16 以降)"
4113
4114 #. type: Plain text
4115 #: build/C/man2/perf_event_open.2:1010
4116 msgid ""
4117 "Generate an extended executable mmap record that contains enough additional "
4118 "information to uniquely identify shared mappings.  The I<mmap> flag must "
4119 "also be set for this to work."
4120 msgstr ""
4121
4122 #. type: TP
4123 #: build/C/man2/perf_event_open.2:1010
4124 #, no-wrap
4125 msgid "I<comm_exec> (since Linux 3.16)"
4126 msgstr "I<comm_exec> (Linux 3.16 以降)"
4127
4128 #. type: Plain text
4129 #: build/C/man2/perf_event_open.2:1025
4130 msgid ""
4131 "This is purely a feature-detection flag, it does not change kernel "
4132 "behavior.  If this flag can successfully be set, then, when I<comm> is "
4133 "enabled, the B<PERF_RECORD_MISC_COMM_EXEC> flag will be set in the I<misc> "
4134 "field of a comm record header if the rename event being reported was caused "
4135 "by a call to B<exec>(2).  This allows tools to distinguish between the "
4136 "various types of process renaming."
4137 msgstr ""
4138
4139 #. type: TP
4140 #: build/C/man2/perf_event_open.2:1025
4141 #, no-wrap
4142 msgid "I<wakeup_events>, I<wakeup_watermark>"
4143 msgstr "I<wakeup_events>, I<wakeup_watermark>"
4144
4145 #. type: Plain text
4146 #: build/C/man2/perf_event_open.2:1035
4147 msgid ""
4148 "This union sets how many samples (I<wakeup_events>)  or bytes "
4149 "(I<wakeup_watermark>)  happen before an overflow notification happens.  "
4150 "Which one is used is selected by the I<watermark> bit flag."
4151 msgstr ""
4152
4153 #. type: Plain text
4154 #: build/C/man2/perf_event_open.2:1045
4155 msgid ""
4156 "I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types.  To receive "
4157 "overflow notification for all B<PERF_RECORD> types choose watermark and set "
4158 "I<wakeup_watermark> to 1."
4159 msgstr ""
4160
4161 #. type: Plain text
4162 #: build/C/man2/perf_event_open.2:1050
4163 msgid ""
4164 "Prior to Linux 3.0 setting I<wakeup_events> to 0 resulted in no overflow "
4165 "notifications; more recent kernels treat 0 the same as 1."
4166 msgstr ""
4167
4168 #. type: TP
4169 #: build/C/man2/perf_event_open.2:1050
4170 #, no-wrap
4171 msgid "I<bp_type> (since Linux 2.6.33)"
4172 msgstr "I<bp_type> (Linux 2.6.33 以降)"
4173
4174 #. type: Plain text
4175 #: build/C/man2/perf_event_open.2:1054
4176 msgid "This chooses the breakpoint type.  It is one of:"
4177 msgstr ""
4178
4179 #. type: TP
4180 #: build/C/man2/perf_event_open.2:1055
4181 #, no-wrap
4182 msgid "B<HW_BREAKPOINT_EMPTY>"
4183 msgstr "B<HW_BREAKPOINT_EMPTY>"
4184
4185 #. type: Plain text
4186 #: build/C/man2/perf_event_open.2:1058
4187 msgid "No breakpoint."
4188 msgstr ""
4189
4190 #. type: TP
4191 #: build/C/man2/perf_event_open.2:1058
4192 #, no-wrap
4193 msgid "B<HW_BREAKPOINT_R>"
4194 msgstr "B<HW_BREAKPOINT_R>"
4195
4196 #. type: Plain text
4197 #: build/C/man2/perf_event_open.2:1061
4198 msgid "Count when we read the memory location."
4199 msgstr ""
4200
4201 #. type: TP
4202 #: build/C/man2/perf_event_open.2:1061
4203 #, no-wrap
4204 msgid "B<HW_BREAKPOINT_W>"
4205 msgstr "B<HW_BREAKPOINT_W>"
4206
4207 #. type: Plain text
4208 #: build/C/man2/perf_event_open.2:1064
4209 msgid "Count when we write the memory location."
4210 msgstr ""
4211
4212 #. type: TP
4213 #: build/C/man2/perf_event_open.2:1064
4214 #, no-wrap
4215 msgid "B<HW_BREAKPOINT_RW>"
4216 msgstr "B<HW_BREAKPOINT_RW>"
4217
4218 #. type: Plain text
4219 #: build/C/man2/perf_event_open.2:1067
4220 msgid "Count when we read or write the memory location."
4221 msgstr ""
4222
4223 #. type: TP
4224 #: build/C/man2/perf_event_open.2:1067
4225 #, no-wrap
4226 msgid "B<HW_BREAKPOINT_X>"
4227 msgstr "B<HW_BREAKPOINT_X>"
4228
4229 #. type: Plain text
4230 #: build/C/man2/perf_event_open.2:1070
4231 msgid "Count when we execute code at the memory location."
4232 msgstr ""
4233
4234 #. type: Plain text
4235 #: build/C/man2/perf_event_open.2:1079
4236 msgid ""
4237 "The values can be combined via a bitwise or, but the combination of "
4238 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
4239 "allowed."
4240 msgstr ""
4241
4242 #. type: TP
4243 #: build/C/man2/perf_event_open.2:1080
4244 #, no-wrap
4245 msgid "I<bp_addr> (since Linux 2.6.33)"
4246 msgstr "I<bp_addr> (Linux 2.6.33 以降)"
4247
4248 #. type: Plain text
4249 #: build/C/man2/perf_event_open.2:1087
4250 msgid ""
4251 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
4252 "memory address of the instruction of interest; for read and write "
4253 "breakpoints it is the memory address of the memory location of interest."
4254 msgstr ""
4255
4256 #. type: TP
4257 #: build/C/man2/perf_event_open.2:1087
4258 #, no-wrap
4259 msgid "I<config1> (since Linux 2.6.39)"
4260 msgstr "I<config1> (Linux 2.6.39 以降)"
4261
4262 #. type: Plain text
4263 #: build/C/man2/perf_event_open.2:1094
4264 msgid ""
4265 "I<config1> is used for setting events that need an extra register or "
4266 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
4267 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
4268 msgstr ""
4269
4270 #. type: TP
4271 #: build/C/man2/perf_event_open.2:1094
4272 #, no-wrap
4273 msgid "I<bp_len> (since Linux 2.6.33)"
4274 msgstr "I<bp_len> (Linux 2.6.33 以降)"
4275
4276 #. type: Plain text
4277 #: build/C/man2/perf_event_open.2:1108
4278 msgid ""
4279 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
4280 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
4281 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
4282 "an execution breakpoint, set this to I<sizeof(long)>."
4283 msgstr ""
4284
4285 #. type: TP
4286 #: build/C/man2/perf_event_open.2:1108
4287 #, no-wrap
4288 msgid "I<config2> (since Linux 2.6.39)"
4289 msgstr "I<config2> (Linux 2.6.39 以降)"
4290
4291 #. type: Plain text
4292 #: build/C/man2/perf_event_open.2:1115
4293 msgid "I<config2> is a further extension of the I<config1> field."
4294 msgstr ""
4295
4296 #. type: TP
4297 #: build/C/man2/perf_event_open.2:1115
4298 #, no-wrap
4299 msgid "I<branch_sample_type> (since Linux 3.4)"
4300 msgstr "I<branch_sample_type> (Linux 3.4 以降)"
4301
4302 #. type: Plain text
4303 #: build/C/man2/perf_event_open.2:1121
4304 msgid ""
4305 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
4306 "to include in the branch record."
4307 msgstr ""
4308
4309 #. type: Plain text
4310 #: build/C/man2/perf_event_open.2:1127
4311 msgid ""
4312 "The first part of the value is the privilege level, which is a combination "
4313 "of one of the following values.  If the user does not set privilege level "
4314 "explicitly, the kernel will use the event's privilege level.  Event and "
4315 "branch privilege levels do not have to match."
4316 msgstr ""
4317
4318 #. type: TP
4319 #: build/C/man2/perf_event_open.2:1128
4320 #, no-wrap
4321 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4322 msgstr ""
4323
4324 #. type: Plain text
4325 #: build/C/man2/perf_event_open.2:1131
4326 msgid "Branch target is in user space."
4327 msgstr ""
4328
4329 #. type: TP
4330 #: build/C/man2/perf_event_open.2:1131
4331 #, no-wrap
4332 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4333 msgstr ""
4334
4335 #. type: Plain text
4336 #: build/C/man2/perf_event_open.2:1134
4337 msgid "Branch target is in kernel space."
4338 msgstr ""
4339
4340 #. type: TP
4341 #: build/C/man2/perf_event_open.2:1134
4342 #, no-wrap
4343 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4344 msgstr ""
4345
4346 #. type: Plain text
4347 #: build/C/man2/perf_event_open.2:1137
4348 msgid "Branch target is in hypervisor."
4349 msgstr ""
4350
4351 #. type: TP
4352 #: build/C/man2/perf_event_open.2:1137
4353 #, no-wrap
4354 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4355 msgstr ""
4356
4357 #. type: Plain text
4358 #: build/C/man2/perf_event_open.2:1140
4359 msgid "A convenience value that is the three preceding values ORed together."
4360 msgstr ""
4361
4362 #. type: Plain text
4363 #: build/C/man2/perf_event_open.2:1144
4364 msgid ""
4365 "In addition to the privilege value, at least one or more of the following "
4366 "bits must be set."
4367 msgstr ""
4368
4369 #. type: TP
4370 #: build/C/man2/perf_event_open.2:1145
4371 #, no-wrap
4372 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4373 msgstr ""
4374
4375 #. type: Plain text
4376 #: build/C/man2/perf_event_open.2:1148
4377 msgid "Any branch type."
4378 msgstr ""
4379
4380 #. type: TP
4381 #: build/C/man2/perf_event_open.2:1148
4382 #, no-wrap
4383 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4384 msgstr ""
4385
4386 #. type: Plain text
4387 #: build/C/man2/perf_event_open.2:1151
4388 msgid "Any call branch."
4389 msgstr ""
4390
4391 #. type: TP
4392 #: build/C/man2/perf_event_open.2:1151
4393 #, no-wrap
4394 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4395 msgstr ""
4396
4397 #. type: Plain text
4398 #: build/C/man2/perf_event_open.2:1154
4399 msgid "Any return branch."
4400 msgstr ""
4401
4402 #. type: TP
4403 #: build/C/man2/perf_event_open.2:1154
4404 #, no-wrap
4405 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4406 msgstr ""
4407
4408 #. type: Plain text
4409 #: build/C/man2/perf_event_open.2:1157
4410 msgid "Indirect calls."
4411 msgstr ""
4412
4413 #. type: TP
4414 #: build/C/man2/perf_event_open.2:1157
4415 #, no-wrap
4416 msgid "B<PERF_SAMPLE_BRANCH_COND> (since Linux 3.16)"
4417 msgstr "B<PERF_SAMPLE_BRANCH_COND> (Linux 3.16 以降)"
4418
4419 #.  commit bac52139f0b7ab31330e98fd87fc5a2664951050
4420 #. type: Plain text
4421 #: build/C/man2/perf_event_open.2:1161
4422 msgid "Conditional branches."
4423 msgstr ""
4424
4425 #. type: TP
4426 #: build/C/man2/perf_event_open.2:1161
4427 #, no-wrap
4428 msgid "B<PERF_SAMPLE_BRANCH_ABORT_TX> (since Linux 3.11)"
4429 msgstr "B<PERF_SAMPLE_BRANCH_ABORT_TX> (Linux 3.11 以降)"
4430
4431 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4432 #. type: Plain text
4433 #: build/C/man2/perf_event_open.2:1165
4434 msgid "Transactional memory aborts."
4435 msgstr ""
4436
4437 #. type: TP
4438 #: build/C/man2/perf_event_open.2:1165
4439 #, no-wrap
4440 msgid "B<PERF_SAMPLE_BRANCH_IN_TX> (since Linux 3.11)"
4441 msgstr "B<PERF_SAMPLE_BRANCH_IN_TX> (Linux 3.11 以降)"
4442
4443 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4444 #. type: Plain text
4445 #: build/C/man2/perf_event_open.2:1169
4446 msgid "Branch in transactional memory transaction."
4447 msgstr ""
4448
4449 #. type: TP
4450 #: build/C/man2/perf_event_open.2:1169
4451 #, no-wrap
4452 msgid "B<PERF_SAMPLE_BRANCH_NO_TX> (since Linux 3.11)"
4453 msgstr "B<PERF_SAMPLE_BRANCH_NO_TX> (Linux 3.11 以降)"
4454
4455 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4456 #. type: Plain text
4457 #: build/C/man2/perf_event_open.2:1173
4458 msgid "Branch not in transactional memory transaction."
4459 msgstr ""
4460
4461 #. type: TP
4462 #: build/C/man2/perf_event_open.2:1175
4463 #, no-wrap
4464 msgid "I<sample_regs_user> (since Linux 3.7)"
4465 msgstr "I<sample_regs_user> (Linux 3.7 以降)"
4466
4467 #. type: Plain text
4468 #: build/C/man2/perf_event_open.2:1181
4469 msgid ""
4470 "This bit mask defines the set of user CPU registers to dump on samples.  The "
4471 "layout of the register mask is architecture-specific and described in the "
4472 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4473 msgstr ""
4474
4475 #. type: TP
4476 #: build/C/man2/perf_event_open.2:1181
4477 #, no-wrap
4478 msgid "I<sample_stack_user> (since Linux 3.7)"
4479 msgstr "I<sample_stack_user> (Linux 3.7 以降)"
4480
4481 #. type: Plain text
4482 #: build/C/man2/perf_event_open.2:1186
4483 msgid ""
4484 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4485 "is specified."
4486 msgstr ""
4487
4488 #. type: SS
4489 #: build/C/man2/perf_event_open.2:1186
4490 #, no-wrap
4491 msgid "Reading results"
4492 msgstr ""
4493
4494 #. type: Plain text
4495 #: build/C/man2/perf_event_open.2:1196
4496 msgid ""
4497 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4498 "the events can be read from the file descriptor.  The values that are there "
4499 "are specified by the I<read_format> field in the I<attr> structure at open "
4500 "time."
4501 msgstr ""
4502
4503 #. type: Plain text
4504 #: build/C/man2/perf_event_open.2:1201
4505 msgid ""
4506 "If you attempt to read into a buffer that is not big enough to hold the data "
4507 "B<ENOSPC> is returned"
4508 msgstr ""
4509
4510 #. type: Plain text
4511 #: build/C/man2/perf_event_open.2:1203
4512 msgid "Here is the layout of the data returned by a read:"
4513 msgstr ""
4514
4515 #. type: IP
4516 #: build/C/man2/perf_event_open.2:1203 build/C/man2/perf_event_open.2:1221
4517 #: build/C/man2/ptrace.2:1735 build/C/man2/ptrace.2:1745
4518 #: build/C/man2/ptrace.2:1753 build/C/man2/ptrace.2:1759
4519 #: build/C/man2/ptrace.2:1888 build/C/man2/splice.2:55
4520 #: build/C/man2/splice.2:61 build/C/man2/splice.2:70
4521 #, no-wrap
4522 msgid "*"
4523 msgstr "*"
4524
4525 #. type: Plain text
4526 #: build/C/man2/perf_event_open.2:1207
4527 msgid ""
4528 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4529 "at once:"
4530 msgstr ""
4531
4532 #. type: Plain text
4533 #: build/C/man2/perf_event_open.2:1219
4534 #, no-wrap
4535 msgid ""
4536 "struct read_format {\n"
4537 "    u64 nr;            /* The number of events */\n"
4538 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4539 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4540 "    struct {\n"
4541 "        u64 value;     /* The value of the event */\n"
4542 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4543 "    } values[nr];\n"
4544 "};\n"
4545 msgstr ""
4546
4547 #. type: Plain text
4548 #: build/C/man2/perf_event_open.2:1227
4549 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4550 msgstr ""
4551
4552 #. type: Plain text
4553 #: build/C/man2/perf_event_open.2:1236
4554 #, no-wrap
4555 msgid ""
4556 "struct read_format {\n"
4557 "    u64 value;         /* The value of the event */\n"
4558 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4559 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4560 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4561 "};\n"
4562 msgstr ""
4563
4564 #. type: Plain text
4565 #: build/C/man2/perf_event_open.2:1240
4566 msgid "The values read are as follows:"
4567 msgstr ""
4568
4569 #. type: TP
4570 #: build/C/man2/perf_event_open.2:1240
4571 #, no-wrap
4572 msgid "I<nr>"
4573 msgstr ""
4574
4575 #. type: Plain text
4576 #: build/C/man2/perf_event_open.2:1246
4577 msgid ""
4578 "The number of events in this file descriptor.  Only available if "
4579 "B<PERF_FORMAT_GROUP> was specified."
4580 msgstr ""
4581
4582 #. type: TP
4583 #: build/C/man2/perf_event_open.2:1246
4584 #, no-wrap
4585 msgid "I<time_enabled>, I<time_running>"
4586 msgstr ""
4587
4588 #. type: Plain text
4589 #: build/C/man2/perf_event_open.2:1258
4590 msgid ""
4591 "Total time the event was enabled and running.  Normally these are the same.  "
4592 "If more events are started, then available counter slots on the PMU, then "
4593 "multiplexing happens and events run only part of the time.  In that case, "
4594 "the I<time_enabled> and I<time running> values can be used to scale an "
4595 "estimated value for the count."
4596 msgstr ""
4597
4598 #. type: TP
4599 #: build/C/man2/perf_event_open.2:1258
4600 #, no-wrap
4601 msgid "I<value>"
4602 msgstr ""
4603
4604 #. type: Plain text
4605 #: build/C/man2/perf_event_open.2:1261
4606 msgid "An unsigned 64-bit value containing the counter result."
4607 msgstr ""
4608
4609 #. type: TP
4610 #: build/C/man2/perf_event_open.2:1261 build/C/man2/perf_event_open.2:1690
4611 #: build/C/man2/perf_event_open.2:1856
4612 #, no-wrap
4613 msgid "I<id>"
4614 msgstr ""
4615
4616 #. type: Plain text
4617 #: build/C/man2/perf_event_open.2:1267
4618 msgid ""
4619 "A globally unique value for this particular event, only there if "
4620 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4621 msgstr ""
4622
4623 #. type: SS
4624 #: build/C/man2/perf_event_open.2:1267
4625 #, no-wrap
4626 msgid "MMAP layout"
4627 msgstr ""
4628
4629 #. type: Plain text
4630 #: build/C/man2/perf_event_open.2:1277
4631 msgid ""
4632 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4633 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4634 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4635 msgstr ""
4636
4637 #. type: Plain text
4638 #: build/C/man2/perf_event_open.2:1283
4639 msgid ""
4640 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4641 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4642 "such as where the ring-buffer head is."
4643 msgstr ""
4644
4645 #. type: Plain text
4646 #: build/C/man2/perf_event_open.2:1286
4647 msgid ""
4648 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4649 "ring buffer when sampling even if you do not plan to access it."
4650 msgstr ""
4651
4652 #. type: Plain text
4653 #: build/C/man2/perf_event_open.2:1288
4654 msgid "The structure of the first metadata mmap page is as follows:"
4655 msgstr ""
4656
4657 #. type: Plain text
4658 #: build/C/man2/perf_event_open.2:1317
4659 #, no-wrap
4660 msgid ""
4661 "struct perf_event_mmap_page {\n"
4662 "    __u32 version;        /* version number of this structure */\n"
4663 "    __u32 compat_version; /* lowest version this is compat with */\n"
4664 "    __u32 lock;           /* seqlock for synchronization */\n"
4665 "    __u32 index;          /* hardware counter identifier */\n"
4666 "    __s64 offset;         /* add to hardware counter value */\n"
4667 "    __u64 time_enabled;   /* time event active */\n"
4668 "    __u64 time_running;   /* time event on CPU */\n"
4669 "    union {\n"
4670 "        __u64   capabilities;\n"
4671 "        struct {\n"
4672 "            __u64 cap_usr_time / cap_usr_rdpmc / cap_bit0 : 1,\n"
4673 "                  cap_bit0_is_deprecated : 1,\n"
4674 "                  cap_user_rdpmc         : 1,\n"
4675 "                  cap_user_time          : 1,\n"
4676 "                  cap_user_time_zero     : 1,\n"
4677 "        };\n"
4678 "    };\n"
4679 "    __u16 pmc_width;\n"
4680 "    __u16 time_shift;\n"
4681 "    __u32 time_mult;\n"
4682 "    __u64 time_offset;\n"
4683 "    __u64 __reserved[120];   /* Pad to 1k */\n"
4684 "    __u64 data_head;         /* head in the data section */\n"
4685 "    __u64 data_tail;         /* user-space written tail */\n"
4686 "}\n"
4687 msgstr ""
4688
4689 #. type: Plain text
4690 #: build/C/man2/perf_event_open.2:1323
4691 msgid ""
4692 "The following list describes the fields in the I<perf_event_mmap_page> "
4693 "structure in more detail:"
4694 msgstr ""
4695
4696 #. type: TP
4697 #: build/C/man2/perf_event_open.2:1323
4698 #, no-wrap
4699 msgid "I<version>"
4700 msgstr ""
4701
4702 #. type: Plain text
4703 #: build/C/man2/perf_event_open.2:1326
4704 msgid "Version number of this structure."
4705 msgstr ""
4706
4707 #. type: TP
4708 #: build/C/man2/perf_event_open.2:1326
4709 #, no-wrap
4710 msgid "I<compat_version>"
4711 msgstr ""
4712
4713 #. type: Plain text
4714 #: build/C/man2/perf_event_open.2:1329
4715 msgid "The lowest version this is compatible with."
4716 msgstr ""
4717
4718 #. type: TP
4719 #: build/C/man2/perf_event_open.2:1329
4720 #, no-wrap
4721 msgid "I<lock>"
4722 msgstr ""
4723
4724 #. type: Plain text
4725 #: build/C/man2/perf_event_open.2:1332
4726 msgid "A seqlock for synchronization."
4727 msgstr ""
4728
4729 #. type: TP
4730 #: build/C/man2/perf_event_open.2:1332
4731 #, no-wrap
4732 msgid "I<index>"
4733 msgstr ""
4734
4735 #. type: Plain text
4736 #: build/C/man2/perf_event_open.2:1335
4737 msgid "A unique hardware counter identifier."
4738 msgstr ""
4739
4740 #. type: TP
4741 #: build/C/man2/perf_event_open.2:1335
4742 #, no-wrap
4743 msgid "I<offset>"
4744 msgstr ""
4745
4746 #. type: Plain text
4747 #: build/C/man2/perf_event_open.2:1340
4748 msgid ""
4749 "When using rdpmc for reads this offset value must be added to the one "
4750 "returned by rdpmc to get the current total event count."
4751 msgstr ""
4752
4753 #. type: TP
4754 #: build/C/man2/perf_event_open.2:1340
4755 #, no-wrap
4756 msgid "I<time_enabled>"
4757 msgstr ""
4758
4759 #. type: Plain text
4760 #: build/C/man2/perf_event_open.2:1343
4761 msgid "Time the event was active."
4762 msgstr ""
4763
4764 #. type: TP
4765 #: build/C/man2/perf_event_open.2:1343
4766 #, no-wrap
4767 msgid "I<time_running>"
4768 msgstr ""
4769
4770 #. type: Plain text
4771 #: build/C/man2/perf_event_open.2:1346
4772 msgid "Time the event was running."
4773 msgstr ""
4774
4775 #. type: TP
4776 #: build/C/man2/perf_event_open.2:1346
4777 #, no-wrap
4778 msgid "I<cap_usr_time> / I<cap_usr_rdpmc> / I<cap_bit0> (since Linux 3.4)"
4779 msgstr ""
4780
4781 #. type: Plain text
4782 #: build/C/man2/perf_event_open.2:1359
4783 msgid ""
4784 "There was a bug in the definition of I<cap_usr_time> and I<cap_usr_rdpmc> "
4785 "from Linux 3.4 until Linux 3.11.  Both bits were defined to point to the "
4786 "same location, so it was impossible to know if I<cap_usr_time> or "
4787 "I<cap_usr_rdpmc> were actually set."
4788 msgstr ""
4789
4790 #. type: Plain text
4791 #: build/C/man2/perf_event_open.2:1367
4792 msgid ""
4793 "Starting with Linux 3.12, these are renamed to I<cap_bit0> and you should "
4794 "use the I<cap_user_time> and I<cap_user_rdpmc> fields instead."
4795 msgstr ""
4796
4797 #. type: TP
4798 #: build/C/man2/perf_event_open.2:1368
4799 #, no-wrap
4800 msgid "I<cap_bit0_is_deprecated> (since Linux 3.12)"
4801 msgstr "I<cap_bit0_is_deprecated> (Linux 3.12 以降)"
4802
4803 #. type: Plain text
4804 #: build/C/man2/perf_event_open.2:1376
4805 msgid ""
4806 "If set, this bit indicates that the kernel supports the properly separated "
4807 "I<cap_user_time> and I<cap_user_rdpmc> bits."
4808 msgstr ""
4809
4810 #. type: Plain text
4811 #: build/C/man2/perf_event_open.2:1383
4812 msgid ""
4813 "If not-set, it indicates an older kernel where I<cap_usr_time> and "
4814 "I<cap_usr_rdpmc> map to the same bit and thus both features should be used "
4815 "with caution."
4816 msgstr ""
4817
4818 #. type: TP
4819 #: build/C/man2/perf_event_open.2:1384
4820 #, no-wrap
4821 msgid "I<cap_user_rdpmc> (since Linux 3.12)"
4822 msgstr "I<cap_user_rdpmc> (Linux 3.12 以降)"
4823
4824 #. type: Plain text
4825 #: build/C/man2/perf_event_open.2:1389
4826 msgid ""
4827 "If the hardware supports user-space read of performance counters without "
4828 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4829 "can be used to do a read:"
4830 msgstr ""
4831
4832 #. type: Plain text
4833 #: build/C/man2/perf_event_open.2:1395
4834 #, no-wrap
4835 msgid ""
4836 "u32 seq, time_mult, time_shift, idx, width;\n"
4837 "u64 count, enabled, running;\n"
4838 "u64 cyc, time_offset;\n"
4839 msgstr ""
4840 "u32 seq, time_mult, time_shift, idx, width;\n"
4841 "u64 count, enabled, running;\n"
4842 "u64 cyc, time_offset;\n"
4843
4844 #. type: Plain text
4845 #: build/C/man2/perf_event_open.2:1401
4846 #, no-wrap
4847 msgid ""
4848 "do {\n"
4849 "    seq = pc-E<gt>lock;\n"
4850 "    barrier();\n"
4851 "    enabled = pc-E<gt>time_enabled;\n"
4852 "    running = pc-E<gt>time_running;\n"
4853 msgstr ""
4854 "do {\n"
4855 "    seq = pc-E<gt>lock;\n"
4856 "    barrier();\n"
4857 "    enabled = pc-E<gt>time_enabled;\n"
4858 "    running = pc-E<gt>time_running;\n"
4859
4860 #. type: Plain text
4861 #: build/C/man2/perf_event_open.2:1408
4862 #, no-wrap
4863 msgid ""
4864 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4865 "        cyc = rdtsc();\n"
4866 "        time_offset = pc-E<gt>time_offset;\n"
4867 "        time_mult   = pc-E<gt>time_mult;\n"
4868 "        time_shift  = pc-E<gt>time_shift;\n"
4869 "    }\n"
4870 msgstr ""
4871 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4872 "        cyc = rdtsc();\n"
4873 "        time_offset = pc-E<gt>time_offset;\n"
4874 "        time_mult   = pc-E<gt>time_mult;\n"
4875 "        time_shift  = pc-E<gt>time_shift;\n"
4876 "    }\n"
4877
4878 #. type: Plain text
4879 #: build/C/man2/perf_event_open.2:1411
4880 #, no-wrap
4881 msgid ""
4882 "    idx = pc-E<gt>index;\n"
4883 "    count = pc-E<gt>offset;\n"
4884 msgstr ""
4885 "    idx = pc-E<gt>index;\n"
4886 "    count = pc-E<gt>offset;\n"
4887
4888 #. type: Plain text
4889 #: build/C/man2/perf_event_open.2:1416
4890 #, no-wrap
4891 msgid ""
4892 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4893 "        width = pc-E<gt>pmc_width;\n"
4894 "        count += rdpmc(idx - 1);\n"
4895 "    }\n"
4896 msgstr ""
4897 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4898 "        width = pc-E<gt>pmc_width;\n"
4899 "        count += rdpmc(idx - 1);\n"
4900 "    }\n"
4901
4902 #. type: Plain text
4903 #: build/C/man2/perf_event_open.2:1419
4904 #, no-wrap
4905 msgid ""
4906 "    barrier();\n"
4907 "} while (pc-E<gt>lock != seq);\n"
4908 msgstr ""
4909 "    barrier();\n"
4910 "} while (pc-E<gt>lock != seq);\n"
4911
4912 #. type: TP
4913 #: build/C/man2/perf_event_open.2:1421
4914 #, no-wrap
4915 msgid "I<cap_user_time> (since Linux 3.12)"
4916 msgstr "I<cap_user_time> (Linux 3.12 以降)"
4917
4918 #. type: Plain text
4919 #: build/C/man2/perf_event_open.2:1425
4920 msgid ""
4921 "This bit indicates the hardware has a constant, nonstop timestamp counter "
4922 "(TSC on x86)."
4923 msgstr ""
4924
4925 #. type: TP
4926 #: build/C/man2/perf_event_open.2:1425
4927 #, no-wrap
4928 msgid "I<cap_user_time_zero> (since Linux 3.12)"
4929 msgstr "I<cap_user_time_zero> (Linux 3.12 以降)"
4930
4931 #. type: Plain text
4932 #: build/C/man2/perf_event_open.2:1431
4933 msgid ""
4934 "Indicates the presence of I<time_zero> which allows mapping timestamp values "
4935 "to the hardware clock."
4936 msgstr ""
4937
4938 #. type: TP
4939 #: build/C/man2/perf_event_open.2:1431
4940 #, no-wrap
4941 msgid "I<pmc_width>"
4942 msgstr "I<pmc_width>"
4943
4944 #. type: Plain text
4945 #: build/C/man2/perf_event_open.2:1438
4946 msgid ""
4947 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4948 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4949 "the result like:"
4950 msgstr ""
4951
4952 #. type: Plain text
4953 #: build/C/man2/perf_event_open.2:1444
4954 #, no-wrap
4955 msgid ""
4956 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4957 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4958 "count += pmc;\n"
4959 msgstr ""
4960 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4961 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4962 "count += pmc;\n"
4963
4964 #. type: TP
4965 #: build/C/man2/perf_event_open.2:1446
4966 #, no-wrap
4967 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4968 msgstr "I<time_shift>, I<time_mult>, I<time_offset>"
4969
4970 #. type: Plain text
4971 #: build/C/man2/perf_event_open.2:1453
4972 msgid ""
4973 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4974 "time_enabled (in nanoseconds) using rdtsc or similar."
4975 msgstr ""
4976
4977 #. type: Plain text
4978 #: build/C/man2/perf_event_open.2:1461
4979 #, no-wrap
4980 msgid ""
4981 "    u64 quot, rem;\n"
4982 "    u64 delta;\n"
4983 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4984 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4985 "    delta = time_offset + quot * time_mult +\n"
4986 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4987 msgstr ""
4988 "    u64 quot, rem;\n"
4989 "    u64 delta;\n"
4990 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4991 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4992 "    delta = time_offset + quot * time_mult +\n"
4993 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4994
4995 #. type: Plain text
4996 #: build/C/man2/perf_event_open.2:1473
4997 msgid ""
4998 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4999 "the seqcount loop described above.  This delta can then be added to enabled "
5000 "and possible running (if idx), improving the scaling:"
5001 msgstr ""
5002
5003 #. type: Plain text
5004 #: build/C/man2/perf_event_open.2:1481
5005 #, no-wrap
5006 msgid ""
5007 "    enabled += delta;\n"
5008 "    if (idx)\n"
5009 "        running += delta;\n"
5010 "    quot = count / running;\n"
5011 "    rem  = count % running;\n"
5012 "    count = quot * enabled + (rem * enabled) / running;\n"
5013 msgstr ""
5014 "    enabled += delta;\n"
5015 "    if (idx)\n"
5016 "        running += delta;\n"
5017 "    quot = count / running;\n"
5018 "    rem  = count % running;\n"
5019 "    count = quot * enabled + (rem * enabled) / running;\n"
5020
5021 #. type: TP
5022 #: build/C/man2/perf_event_open.2:1482
5023 #, no-wrap
5024 msgid "I<time_zero> (since Linux 3.12)"
5025 msgstr "I<time_zero> (Linux 3.12 以降)"
5026
5027 #. type: Plain text
5028 #: build/C/man2/perf_event_open.2:1490
5029 msgid ""
5030 "If I<cap_usr_time_zero> is set, then the hardware clock (the TSC timestamp "
5031 "counter on x86)  can be calculated from the I<time_zero>, I<time_mult>, and "
5032 "I<time_shift> values:"
5033 msgstr ""
5034
5035 #. type: Plain text
5036 #: build/C/man2/perf_event_open.2:1496
5037 #, no-wrap
5038 msgid ""
5039 "    time = timestamp - time_zero;\n"
5040 "    quot = time / time_mult;\n"
5041 "    rem  = time % time_mult;\n"
5042 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5043 msgstr ""
5044 "    time = timestamp - time_zero;\n"
5045 "    quot = time / time_mult;\n"
5046 "    rem  = time % time_mult;\n"
5047 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5048
5049 #. type: Plain text
5050 #: build/C/man2/perf_event_open.2:1499
5051 msgid "And vice versa:"
5052 msgstr ""
5053
5054 #. type: Plain text
5055 #: build/C/man2/perf_event_open.2:1505
5056 #, no-wrap
5057 msgid ""
5058 "    quot = cyc E<gt>E<gt> time_shift;\n"
5059 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5060 "    timestamp = time_zero + quot * time_mult +\n"
5061 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5062 msgstr ""
5063 "    quot = cyc E<gt>E<gt> time_shift;\n"
5064 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5065 "    timestamp = time_zero + quot * time_mult +\n"
5066 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5067
5068 #. type: TP
5069 #: build/C/man2/perf_event_open.2:1506
5070 #, no-wrap
5071 msgid "I<data_head>"
5072 msgstr "I<data_head>"
5073
5074 #. type: Plain text
5075 #: build/C/man2/perf_event_open.2:1512
5076 msgid ""
5077 "This points to the head of the data section.  The value continuously "
5078 "increases, it does not wrap.  The value needs to be manually wrapped by the "
5079 "size of the mmap buffer before accessing the samples."
5080 msgstr ""
5081
5082 #. type: Plain text
5083 #: build/C/man2/perf_event_open.2:1517
5084 msgid ""
5085 "On SMP-capable platforms, after reading the I<data_head> value, user space "
5086 "should issue an rmb()."
5087 msgstr ""
5088
5089 #. type: TP
5090 #: build/C/man2/perf_event_open.2:1517
5091 #, no-wrap
5092 msgid "I<data_tail>"
5093 msgstr "I<data_tail>"
5094
5095 #. type: Plain text
5096 #: build/C/man2/perf_event_open.2:1525
5097 msgid ""
5098 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
5099 "by user space to reflect the last read data.  In this case, the kernel will "
5100 "not overwrite unread data."
5101 msgstr ""
5102
5103 #. type: Plain text
5104 #: build/C/man2/perf_event_open.2:1527
5105 msgid "The following 2^n ring-buffer pages have the layout described below."
5106 msgstr ""
5107
5108 #. type: Plain text
5109 #: build/C/man2/perf_event_open.2:1541
5110 msgid ""
5111 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
5112 "the sample_type selected fields related to where/when (identity)  an event "
5113 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
5114 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
5115 "I<perf_event_header> and the fields already present for the existing fields, "
5116 "that is, at the end of the payload.  That way a newer perf.data file will be "
5117 "supported by older perf tools, with these new optional fields being ignored."
5118 msgstr ""
5119
5120 #. type: Plain text
5121 #: build/C/man2/perf_event_open.2:1543
5122 msgid "The mmap values start with a header:"
5123 msgstr ""
5124
5125 #. type: Plain text
5126 #: build/C/man2/perf_event_open.2:1551
5127 #, no-wrap
5128 msgid ""
5129 "struct perf_event_header {\n"
5130 "    __u32   type;\n"
5131 "    __u16   misc;\n"
5132 "    __u16   size;\n"
5133 "};\n"
5134 msgstr ""
5135 "struct perf_event_header {\n"
5136 "    __u32   type;\n"
5137 "    __u16   misc;\n"
5138 "    __u16   size;\n"
5139 "};\n"
5140
5141 #. type: Plain text
5142 #: build/C/man2/perf_event_open.2:1559
5143 msgid ""
5144 "Below, we describe the I<perf_event_header> fields in more detail.  For ease "
5145 "of reading, the fields with shorter descriptions are presented first."
5146 msgstr ""
5147
5148 #. type: Plain text
5149 #: build/C/man2/perf_event_open.2:1562
5150 msgid "This indicates the size of the record."
5151 msgstr ""
5152
5153 #. type: TP
5154 #: build/C/man2/perf_event_open.2:1562
5155 #, no-wrap
5156 msgid "I<misc>"
5157 msgstr "I<misc>"
5158
5159 #. type: Plain text
5160 #: build/C/man2/perf_event_open.2:1567
5161 msgid "The I<misc> field contains additional information about the sample."
5162 msgstr ""
5163
5164 #. type: Plain text
5165 #: build/C/man2/perf_event_open.2:1572
5166 msgid ""
5167 "The CPU mode can be determined from this value by masking with "
5168 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5169 "these are not bit masks, only one can be set at a time):"
5170 msgstr ""
5171
5172 #. type: TP
5173 #: build/C/man2/perf_event_open.2:1573
5174 #, no-wrap
5175 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5176 msgstr "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5177
5178 #. type: Plain text
5179 #: build/C/man2/perf_event_open.2:1576
5180 msgid "Unknown CPU mode."
5181 msgstr ""
5182
5183 #. type: TP
5184 #: build/C/man2/perf_event_open.2:1576
5185 #, no-wrap
5186 msgid "B<PERF_RECORD_MISC_KERNEL>"
5187 msgstr "B<PERF_RECORD_MISC_KERNEL>"
5188
5189 #. type: Plain text
5190 #: build/C/man2/perf_event_open.2:1579
5191 msgid "Sample happened in the kernel."
5192 msgstr ""
5193
5194 #. type: TP
5195 #: build/C/man2/perf_event_open.2:1579
5196 #, no-wrap
5197 msgid "B<PERF_RECORD_MISC_USER>"
5198 msgstr "B<PERF_RECORD_MISC_USER>"
5199
5200 #. type: Plain text
5201 #: build/C/man2/perf_event_open.2:1582
5202 msgid "Sample happened in user code."
5203 msgstr ""
5204
5205 #. type: TP
5206 #: build/C/man2/perf_event_open.2:1582
5207 #, no-wrap
5208 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5209 msgstr "B<PERF_RECORD_MISC_HYPERVISOR>"
5210
5211 #. type: Plain text
5212 #: build/C/man2/perf_event_open.2:1585
5213 msgid "Sample happened in the hypervisor."
5214 msgstr ""
5215
5216 #. type: TP
5217 #: build/C/man2/perf_event_open.2:1585
5218 #, no-wrap
5219 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL> (since Linux2.6.35)"
5220 msgstr "B<PERF_RECORD_MISC_GUEST_KERNEL> (Linux 2.6.35 以降)"
5221
5222 #.  commit 39447b386c846bbf1c56f6403c5282837486200f
5223 #. type: Plain text
5224 #: build/C/man2/perf_event_open.2:1589
5225 msgid "Sample happened in the guest kernel."
5226 msgstr ""
5227
5228 #. type: TP
5229 #: build/C/man2/perf_event_open.2:1589
5230 #, no-wrap
5231 msgid "B<PERF_RECORD_MISC_GUEST_USER  (since Linux2.6.35)>"
5232 msgstr "B<PERF_RECORD_MISC_GUEST_USER  (Linux 2.6.35 以降)>"
5233
5234 #.  commit 39447b386c846bbf1c56f6403c5282837486200f
5235 #. type: Plain text
5236 #: build/C/man2/perf_event_open.2:1593
5237 msgid "Sample happened in guest user code."
5238 msgstr ""
5239
5240 #. type: Plain text
5241 #: build/C/man2/perf_event_open.2:1597
5242 msgid "In addition, one of the following bits can be set:"
5243 msgstr ""
5244
5245 #. type: TP
5246 #: build/C/man2/perf_event_open.2:1597
5247 #, no-wrap
5248 msgid "B<PERF_RECORD_MISC_MMAP_DATA> (since Linux 3.10)"
5249 msgstr "B<PERF_RECORD_MISC_MMAP_DATA> (Linux 3.10 以降)"
5250
5251 #.  commit 2fe85427e3bf65d791700d065132772fc26e4d75
5252 #. type: Plain text
5253 #: build/C/man2/perf_event_open.2:1602
5254 msgid ""
5255 "This is set when the mapping is not executable; otherwise the mapping is "
5256 "executable."
5257 msgstr ""
5258
5259 #. type: TP
5260 #: build/C/man2/perf_event_open.2:1602
5261 #, no-wrap
5262 msgid "B<PERF_RECORD_MISC_COMM_EXEC> (since Linux 3.16)"
5263 msgstr "B<PERF_RECORD_MISC_COMM_EXEC> (Linux 3.16 以降)"
5264
5265 #.  commit 82b897782d10fcc4930c9d4a15b175348fdd2871
5266 #. type: Plain text
5267 #: build/C/man2/perf_event_open.2:1614
5268 msgid ""
5269 "This is set for a B<PERF_RECORD_COMM> record on kernels more recent than "
5270 "Linux 3.16 if a process name change was caused by an B<exec>(2)  system "
5271 "call.  It is an alias for B<PERF_RECORD_MISC_MMAP_DATA> since the two values "
5272 "would not be set in the same record."
5273 msgstr ""
5274
5275 #. type: TP
5276 #: build/C/man2/perf_event_open.2:1614
5277 #, no-wrap
5278 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5279 msgstr "B<PERF_RECORD_MISC_EXACT_IP>"
5280
5281 #. type: Plain text
5282 #: build/C/man2/perf_event_open.2:1622
5283 msgid ""
5284 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5285 "instruction that triggered the event.  See also I<perf_event_attr."
5286 "precise_ip>."
5287 msgstr ""
5288
5289 #. type: TP
5290 #: build/C/man2/perf_event_open.2:1622
5291 #, no-wrap
5292 msgid "B<PERF_RECORD_MISC_EXT_RESERVED> (since Linux 2.6.35)"
5293 msgstr "B<PERF_RECORD_MISC_EXT_RESERVED> (Linux 2.6.35 以降)"
5294
5295 #.  commit 1676b8a077c352085d52578fb4f29350b58b6e74
5296 #. type: Plain text
5297 #: build/C/man2/perf_event_open.2:1626
5298 msgid "This indicates there is extended data available (currently not used)."
5299 msgstr ""
5300
5301 #. type: Plain text
5302 #: build/C/man2/perf_event_open.2:1636
5303 msgid ""
5304 "The I<type> value is one of the below.  The values in the corresponding "
5305 "record (that follows the header)  depend on the I<type> selected as shown."
5306 msgstr ""
5307
5308 #. type: TP
5309 #: build/C/man2/perf_event_open.2:1638
5310 #, no-wrap
5311 msgid "B<PERF_RECORD_MMAP>"
5312 msgstr "B<PERF_RECORD_MMAP>"
5313
5314 #. type: Plain text
5315 #: build/C/man2/perf_event_open.2:1645
5316 msgid ""
5317 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
5318 "user-space IPs to code.  They have the following structure:"
5319 msgstr ""
5320
5321 #. type: Plain text
5322 #: build/C/man2/perf_event_open.2:1656
5323 #, no-wrap
5324 msgid ""
5325 "struct {\n"
5326 "    struct perf_event_header header;\n"
5327 "    u32    pid, tid;\n"
5328 "    u64    addr;\n"
5329 "    u64    len;\n"
5330 "    u64    pgoff;\n"
5331 "    char   filename[];\n"
5332 "};\n"
5333 msgstr ""
5334 "struct {\n"
5335 "    struct perf_event_header header;\n"
5336 "    u32    pid, tid;\n"
5337 "    u64    addr;\n"
5338 "    u64    len;\n"
5339 "    u64    pgoff;\n"
5340 "    char   filename[];\n"
5341 "};\n"
5342
5343 #. type: TP
5344 #: build/C/man2/perf_event_open.2:1659 build/C/man2/perf_event_open.2:1713
5345 #: build/C/man2/perf_event_open.2:2232
5346 #, no-wrap
5347 msgid "I<pid>"
5348 msgstr "I<pid>"
5349
5350 #. type: Plain text
5351 #: build/C/man2/perf_event_open.2:1662 build/C/man2/perf_event_open.2:1716
5352 #: build/C/man2/perf_event_open.2:2235
5353 msgid "is the process ID."
5354 msgstr ""
5355
5356 #. type: TP
5357 #: build/C/man2/perf_event_open.2:1662 build/C/man2/perf_event_open.2:1716
5358 #: build/C/man2/perf_event_open.2:2235
5359 #, no-wrap
5360 msgid "I<tid>"
5361 msgstr "I<tid>"
5362
5363 #. type: Plain text
5364 #: build/C/man2/perf_event_open.2:1665 build/C/man2/perf_event_open.2:1719
5365 #: build/C/man2/perf_event_open.2:2238
5366 msgid "is the thread ID."
5367 msgstr ""
5368
5369 #. type: TP
5370 #: build/C/man2/perf_event_open.2:1665 build/C/man2/perf_event_open.2:1849
5371 #: build/C/man2/perf_event_open.2:2238
5372 #, no-wrap
5373 msgid "I<addr>"
5374 msgstr "I<addr>"
5375
5376 #. type: Plain text
5377 #: build/C/man2/perf_event_open.2:1674
5378 msgid ""
5379 "is the address of the allocated memory.  I<len> is the length of the "
5380 "allocated memory.  I<pgoff> is the page offset of the allocated memory.  "
5381 "I<filename> is a string describing the backing of the allocated memory."
5382 msgstr ""
5383
5384 #. type: TP
5385 #: build/C/man2/perf_event_open.2:1675
5386 #, no-wrap
5387 msgid "B<PERF_RECORD_LOST>"
5388 msgstr "B<PERF_RECORD_LOST>"
5389
5390 #. type: Plain text
5391 #: build/C/man2/perf_event_open.2:1678
5392 msgid "This record indicates when events are lost."
5393 msgstr ""
5394
5395 #. type: Plain text
5396 #: build/C/man2/perf_event_open.2:1687
5397 #, no-wrap
5398 msgid ""
5399 "struct {\n"
5400 "    struct perf_event_header header;\n"
5401 "    u64 id;\n"
5402 "    u64 lost;\n"
5403 "    struct sample_id sample_id;\n"
5404 "};\n"
5405 msgstr ""
5406 "struct {\n"
5407 "    struct perf_event_header header;\n"
5408 "    u64 id;\n"
5409 "    u64 lost;\n"
5410 "    struct sample_id sample_id;\n"
5411 "};\n"
5412
5413 #. type: Plain text
5414 #: build/C/man2/perf_event_open.2:1693
5415 msgid "is the unique event ID for the samples that were lost."
5416 msgstr ""
5417
5418 #. type: TP
5419 #: build/C/man2/perf_event_open.2:1693
5420 #, no-wrap
5421 msgid "I<lost>"
5422 msgstr "I<lost>"
5423
5424 #. type: Plain text
5425 #: build/C/man2/perf_event_open.2:1696
5426 msgid "is the number of events that were lost."
5427 msgstr ""
5428
5429 #. type: TP
5430 #: build/C/man2/perf_event_open.2:1697
5431 #, no-wrap
5432 msgid "B<PERF_RECORD_COMM>"
5433 msgstr "B<PERF_RECORD_COMM>"
5434
5435 #. type: Plain text
5436 #: build/C/man2/perf_event_open.2:1700
5437 msgid "This record indicates a change in the process name."
5438 msgstr ""
5439
5440 #. type: Plain text
5441 #: build/C/man2/perf_event_open.2:1710
5442 #, no-wrap
5443 msgid ""
5444 "struct {\n"
5445 "    struct perf_event_header header;\n"
5446 "    u32 pid;\n"
5447 "    u32 tid;\n"
5448 "    char comm[];\n"
5449 "    struct sample_id sample_id;\n"
5450 "};\n"
5451 msgstr ""
5452 "struct {\n"
5453 "    struct perf_event_header header;\n"
5454 "    u32 pid;\n"
5455 "    u32 tid;\n"
5456 "    char comm[];\n"
5457 "    struct sample_id sample_id;\n"
5458 "};\n"
5459
5460 #. type: Plain text
5461 #: build/C/man2/perf_event_open.2:1722
5462 msgid "is a string containing the new name of the process."
5463 msgstr ""
5464
5465 #. type: TP
5466 #: build/C/man2/perf_event_open.2:1723
5467 #, no-wrap
5468 msgid "B<PERF_RECORD_EXIT>"
5469 msgstr "B<PERF_RECORD_EXIT>"
5470
5471 #. type: Plain text
5472 #: build/C/man2/perf_event_open.2:1726
5473 msgid "This record indicates a process exit event."
5474 msgstr ""
5475
5476 #. type: Plain text
5477 #: build/C/man2/perf_event_open.2:1736 build/C/man2/perf_event_open.2:1766
5478 #, no-wrap
5479 msgid ""
5480 "struct {\n"
5481 "    struct perf_event_header header;\n"
5482 "    u32 pid, ppid;\n"
5483 "    u32 tid, ptid;\n"
5484 "    u64 time;\n"
5485 "    struct sample_id sample_id;\n"
5486 "};\n"
5487 msgstr ""
5488 "struct {\n"
5489 "    struct perf_event_header header;\n"
5490 "    u32 pid, ppid;\n"
5491 "    u32 tid, ptid;\n"
5492 "    u64 time;\n"
5493 "    struct sample_id sample_id;\n"
5494 "};\n"
5495
5496 #. type: TP
5497 #: build/C/man2/perf_event_open.2:1738
5498 #, no-wrap
5499 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5500 msgstr "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5501
5502 #. type: Plain text
5503 #: build/C/man2/perf_event_open.2:1741
5504 msgid "This record indicates a throttle/unthrottle event."
5505 msgstr ""
5506
5507 #. type: Plain text
5508 #: build/C/man2/perf_event_open.2:1751
5509 #, no-wrap
5510 msgid ""
5511 "struct {\n"
5512 "    struct perf_event_header header;\n"
5513 "    u64 time;\n"
5514 "    u64 id;\n"
5515 "    u64 stream_id;\n"
5516 "    struct sample_id sample_id;\n"
5517 "};\n"
5518 msgstr ""
5519 "struct {\n"
5520 "    struct perf_event_header header;\n"
5521 "    u64 time;\n"
5522 "    u64 id;\n"
5523 "    u64 stream_id;\n"
5524 "    struct sample_id sample_id;\n"
5525 "};\n"
5526
5527 #. type: TP
5528 #: build/C/man2/perf_event_open.2:1753
5529 #, no-wrap
5530 msgid "B<PERF_RECORD_FORK>"
5531 msgstr "B<PERF_RECORD_FORK>"
5532
5533 #. type: Plain text
5534 #: build/C/man2/perf_event_open.2:1756
5535 msgid "This record indicates a fork event."
5536 msgstr ""
5537
5538 #. type: TP
5539 #: build/C/man2/perf_event_open.2:1768
5540 #, no-wrap
5541 msgid "B<PERF_RECORD_READ>"
5542 msgstr "B<PERF_RECORD_READ>"
5543
5544 #. type: Plain text
5545 #: build/C/man2/perf_event_open.2:1771
5546 msgid "This record indicates a read event."
5547 msgstr ""
5548
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1780
5551 #, no-wrap
5552 msgid ""
5553 "struct {\n"
5554 "    struct perf_event_header header;\n"
5555 "    u32 pid, tid;\n"
5556 "    struct read_format values;\n"
5557 "    struct sample_id sample_id;\n"
5558 "};\n"
5559 msgstr ""
5560 "struct {\n"
5561 "    struct perf_event_header header;\n"
5562 "    u32 pid, tid;\n"
5563 "    struct read_format values;\n"
5564 "    struct sample_id sample_id;\n"
5565 "};\n"
5566
5567 #. type: TP
5568 #: build/C/man2/perf_event_open.2:1782
5569 #, no-wrap
5570 msgid "B<PERF_RECORD_SAMPLE>"
5571 msgstr "B<PERF_RECORD_SAMPLE>"
5572
5573 #. type: Plain text
5574 #: build/C/man2/perf_event_open.2:1785
5575 msgid "This record indicates a sample."
5576 msgstr ""
5577
5578 #. type: Plain text
5579 #: build/C/man2/perf_event_open.2:1817
5580 #, no-wrap
5581 msgid ""
5582 "struct {\n"
5583 "    struct perf_event_header header;\n"
5584 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5585 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5586 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5587 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5588 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5589 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5590 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5591 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5592 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5593 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5594 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5595 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5596 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5597 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5598 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5599 "    struct perf_branch_entry lbr[bnr];\n"
5600 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5601 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5602 "    u64   regs[weight(mask)];\n"
5603 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5604 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5605 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5606 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5607 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5608 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5609 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5610 "};\n"
5611 msgstr ""
5612 "struct {\n"
5613 "    struct perf_event_header header;\n"
5614 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5615 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5616 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5617 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5618 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5619 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5620 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5621 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5622 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5623 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5624 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5625 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5626 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5627 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5628 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5629 "    struct perf_branch_entry lbr[bnr];\n"
5630 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5631 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5632 "    u64   regs[weight(mask)];\n"
5633 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5634 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5635 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5636 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5637 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5638 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5639 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5640 "};\n"
5641
5642 #. type: TP
5643 #: build/C/man2/perf_event_open.2:1819
5644 #, no-wrap
5645 msgid "I<sample_id>"
5646 msgstr "I<sample_id>"
5647
5648 #. type: Plain text
5649 #: build/C/man2/perf_event_open.2:1829
5650 msgid ""
5651 "If B<PERF_SAMPLE_IDENTIFIER> is enabled, a 64-bit unique ID is included.  "
5652 "This is a duplication of the B<PERF_SAMPLE_ID> I<id> value, but included at "
5653 "the beginning of the sample so parsers can easily obtain the value."
5654 msgstr ""
5655
5656 #. type: TP
5657 #: build/C/man2/perf_event_open.2:1829
5658 #, no-wrap
5659 msgid "I<ip>"
5660 msgstr "I<ip>"
5661
5662 #. type: Plain text
5663 #: build/C/man2/perf_event_open.2:1835
5664 msgid ""
5665 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
5666 "included."
5667 msgstr ""
5668
5669 #. type: TP
5670 #: build/C/man2/perf_event_open.2:1835
5671 #, no-wrap
5672 msgid "I<pid>, I<tid>"
5673 msgstr "I<pid>, I<tid>"
5674
5675 #. type: Plain text
5676 #: build/C/man2/perf_event_open.2:1841
5677 msgid ""
5678 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
5679 "ID are included."
5680 msgstr ""
5681
5682 #. type: TP
5683 #: build/C/man2/perf_event_open.2:1841
5684 #, no-wrap
5685 msgid "I<time>"
5686 msgstr "I<time>"
5687
5688 #. type: Plain text
5689 #: build/C/man2/perf_event_open.2:1849
5690 msgid ""
5691 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
5692 "This is obtained via local_clock() which is a hardware timestamp if "
5693 "available and the jiffies value if not."
5694 msgstr ""
5695
5696 #. type: Plain text
5697 #: build/C/man2/perf_event_open.2:1856
5698 msgid ""
5699 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
5700 "is usually the address of a tracepoint, breakpoint, or software event; "
5701 "otherwise the value is 0."
5702 msgstr ""
5703
5704 #. type: Plain text
5705 #: build/C/man2/perf_event_open.2:1864
5706 msgid ""
5707 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
5708 "event is a member of an event group, the group leader ID is returned.  This "
5709 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
5710 msgstr ""
5711
5712 #. type: TP
5713 #: build/C/man2/perf_event_open.2:1864
5714 #, no-wrap
5715 msgid "I<stream_id>"
5716 msgstr "I<stream_id>"
5717
5718 #. type: Plain text
5719 #: build/C/man2/perf_event_open.2:1874
5720 msgid ""
5721 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
5722 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
5723 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
5724 msgstr ""
5725
5726 #. type: TP
5727 #: build/C/man2/perf_event_open.2:1874
5728 #, no-wrap
5729 msgid "I<cpu>, I<res>"
5730 msgstr "I<cpu>, I<res>"
5731
5732 #. type: Plain text
5733 #: build/C/man2/perf_event_open.2:1881
5734 msgid ""
5735 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
5736 "CPU was being used, in addition to a reserved (unused)  32-bit value."
5737 msgstr ""
5738
5739 #. type: TP
5740 #: build/C/man2/perf_event_open.2:1881
5741 #, no-wrap
5742 msgid "I<period>"
5743 msgstr "I<period>"
5744
5745 #. type: Plain text
5746 #: build/C/man2/perf_event_open.2:1887
5747 msgid ""
5748 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
5749 "sampling period is written."
5750 msgstr ""
5751
5752 #. type: TP
5753 #: build/C/man2/perf_event_open.2:1887
5754 #, no-wrap
5755 msgid "I<v>"
5756 msgstr "I<v>"
5757
5758 #. type: Plain text
5759 #: build/C/man2/perf_event_open.2:1898
5760 msgid ""
5761 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
5762 "included which has values for all events in the event group.  The values "
5763 "included depend on the I<read_format> value used at B<perf_event_open>()  "
5764 "time."
5765 msgstr ""
5766
5767 #. type: TP
5768 #: build/C/man2/perf_event_open.2:1898
5769 #, no-wrap
5770 msgid "I<nr>, I<ips[nr]>"
5771 msgstr "I<nr>, I<ips[nr]>"
5772
5773 #. type: Plain text
5774 #: build/C/man2/perf_event_open.2:1906
5775 msgid ""
5776 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
5777 "which indicates how many following 64-bit instruction pointers will follow.  "
5778 "This is the current callchain."
5779 msgstr ""
5780
5781 #. type: TP
5782 #: build/C/man2/perf_event_open.2:1906
5783 #, no-wrap
5784 msgid "I<size>, I<data[size]>"
5785 msgstr "I<size>, I<data[size]>"
5786
5787 #. type: Plain text
5788 #: build/C/man2/perf_event_open.2:1913
5789 msgid ""
5790 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
5791 "included followed by an array of 8-bit values of length size.  The values "
5792 "are padded with 0 to have 64-bit alignment."
5793 msgstr ""
5794
5795 #. type: Plain text
5796 #: build/C/man2/perf_event_open.2:1918
5797 msgid ""
5798 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
5799 "make any promises with respect to the stability of its content, it may vary "
5800 "depending on event, hardware, and kernel version."
5801 msgstr ""
5802
5803 #. type: TP
5804 #: build/C/man2/perf_event_open.2:1918
5805 #, no-wrap
5806 msgid "I<bnr>, I<lbr[bnr]>"
5807 msgstr "I<bnr>, I<lbr[bnr]>"
5808
5809 #. type: Plain text
5810 #: build/C/man2/perf_event_open.2:1927
5811 msgid ""
5812 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5813 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5814 "structures which each include the fields:"
5815 msgstr ""
5816
5817 #. type: TP
5818 #: build/C/man2/perf_event_open.2:1928
5819 #, no-wrap
5820 msgid "I<from>"
5821 msgstr "I<from>"
5822
5823 #. type: Plain text
5824 #: build/C/man2/perf_event_open.2:1931
5825 msgid "This indicates the source instruction (may not be a branch)."
5826 msgstr ""
5827
5828 #. type: TP
5829 #: build/C/man2/perf_event_open.2:1931
5830 #, no-wrap
5831 msgid "I<to>"
5832 msgstr "I<to>"
5833
5834 #. type: Plain text
5835 #: build/C/man2/perf_event_open.2:1934
5836 msgid "The branch target."
5837 msgstr ""
5838
5839 #. type: TP
5840 #: build/C/man2/perf_event_open.2:1934
5841 #, no-wrap
5842 msgid "I<mispred>"
5843 msgstr "I<mispred>"
5844
5845 #. type: Plain text
5846 #: build/C/man2/perf_event_open.2:1937
5847 msgid "The branch target was mispredicted."
5848 msgstr ""
5849
5850 #. type: TP
5851 #: build/C/man2/perf_event_open.2:1937
5852 #, no-wrap
5853 msgid "I<predicted>"
5854 msgstr "I<predicted>"
5855
5856 #. type: Plain text
5857 #: build/C/man2/perf_event_open.2:1940
5858 msgid "The branch target was predicted."
5859 msgstr ""
5860
5861 #. type: TP
5862 #: build/C/man2/perf_event_open.2:1940
5863 #, no-wrap
5864 msgid "I<in_tx> (since Linux 3.11)"
5865 msgstr "I<in_tx> (Linux 3.11 以降)"
5866
5867 #. type: Plain text
5868 #: build/C/man2/perf_event_open.2:1943
5869 msgid "The branch was in a transactional memory transaction."
5870 msgstr ""
5871
5872 #. type: TP
5873 #: build/C/man2/perf_event_open.2:1943
5874 #, no-wrap
5875 msgid "I<abort> (since Linux 3.11)"
5876 msgstr "I<abort> (Linux 3.11 以降)"
5877
5878 #. type: Plain text
5879 #: build/C/man2/perf_event_open.2:1946
5880 msgid "The branch was in an aborted transactional memory transaction."
5881 msgstr ""
5882
5883 #. type: Plain text
5884 #: build/C/man2/perf_event_open.2:1950
5885 msgid ""
5886 "The entries are from most to least recent, so the first entry has the most "
5887 "recent branch."
5888 msgstr ""
5889
5890 #. type: Plain text
5891 #: build/C/man2/perf_event_open.2:1957
5892 msgid ""
5893 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
5894 "values will be 0."
5895 msgstr ""
5896
5897 #. type: Plain text
5898 #: build/C/man2/perf_event_open.2:1961
5899 msgid ""
5900 "The type of branches recorded is specified by the I<branch_sample_type> "
5901 "field."
5902 msgstr ""
5903
5904 #. type: TP
5905 #: build/C/man2/perf_event_open.2:1963
5906 #, no-wrap
5907 msgid "I<abi>, I<regs[weight(mask)]>"
5908 msgstr "I<abi>, I<regs[weight(mask)]>"
5909
5910 #. type: Plain text
5911 #: build/C/man2/perf_event_open.2:1968
5912 msgid ""
5913 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
5914 "recorded."
5915 msgstr ""
5916
5917 #. type: Plain text
5918 #: build/C/man2/perf_event_open.2:1974
5919 msgid ""
5920 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5921 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5922 msgstr ""
5923
5924 #. type: Plain text
5925 #: build/C/man2/perf_event_open.2:1984
5926 msgid ""
5927 "The I<regs> field is an array of the CPU registers that were specified by "
5928 "the I<sample_regs_user> attr field.  The number of values is the number of "
5929 "bits set in the I<sample_regs_user> bit mask."
5930 msgstr ""
5931
5932 #. type: TP
5933 #: build/C/man2/perf_event_open.2:1984
5934 #, no-wrap
5935 msgid "I<size>, I<data[size]>, I<dyn_size>"
5936 msgstr "I<size>, I<data[size]>, I<dyn_size>"
5937
5938 #. type: Plain text
5939 #: build/C/man2/perf_event_open.2:2000
5940 msgid ""
5941 "If B<PERF_SAMPLE_STACK_USER> is enabled, then the user stack is recorded.  "
5942 "This can be used to generate stack backtraces.  I<size> is the size "
5943 "requested by the user in I<sample_stack_user> or else the maximum record "
5944 "size.  I<data> is the stack data (a raw dump of the memory pointed to by the "
5945 "stack pointer at the time of sampling).  I<dyn_size> is the amount of data "
5946 "actually dumped (can be less than I<size>)."
5947 msgstr ""
5948
5949 #. type: TP
5950 #: build/C/man2/perf_event_open.2:2000
5951 #, no-wrap
5952 msgid "I<weight>"
5953 msgstr "I<weight>"
5954
5955 #. type: Plain text
5956 #: build/C/man2/perf_event_open.2:2008
5957 msgid ""
5958 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64-bit value provided by the "
5959 "hardware is recorded that indicates how costly the event was.  This allows "
5960 "expensive events to stand out more clearly in profiles."
5961 msgstr ""
5962
5963 #. type: TP
5964 #: build/C/man2/perf_event_open.2:2008
5965 #, no-wrap
5966 msgid "I<data_src>"
5967 msgstr "I<data_src>"
5968
5969 #. type: Plain text
5970 #: build/C/man2/perf_event_open.2:2014
5971 msgid ""
5972 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64-bit value is recorded that "
5973 "is made up of the following fields:"
5974 msgstr ""
5975
5976 #. type: TP
5977 #: build/C/man2/perf_event_open.2:2015
5978 #, no-wrap
5979 msgid "I<mem_op>"
5980 msgstr "I<mem_op>"
5981
5982 #. type: Plain text
5983 #: build/C/man2/perf_event_open.2:2018
5984 msgid "Type of opcode, a bitwise combination of:"
5985 msgstr ""
5986
5987 #. type: TP
5988 #: build/C/man2/perf_event_open.2:2021
5989 #, no-wrap
5990 msgid "B<PERF_MEM_OP_NA>"
5991 msgstr "B<PERF_MEM_OP_NA>"
5992
5993 #. type: Plain text
5994 #: build/C/man2/perf_event_open.2:2024 build/C/man2/perf_event_open.2:2049
5995 #: build/C/man2/perf_event_open.2:2100 build/C/man2/perf_event_open.2:2124
5996 #: build/C/man2/perf_event_open.2:2140
5997 msgid "Not available"
5998 msgstr ""
5999
6000 #. type: TP
6001 #: build/C/man2/perf_event_open.2:2024
6002 #, no-wrap
6003 msgid "B<PERF_MEM_OP_LOAD>"
6004 msgstr "B<PERF_MEM_OP_LOAD>"
6005
6006 #. type: Plain text
6007 #: build/C/man2/perf_event_open.2:2027
6008 msgid "Load instruction"
6009 msgstr ""
6010
6011 #. type: TP
6012 #: build/C/man2/perf_event_open.2:2027
6013 #, no-wrap
6014 msgid "B<PERF_MEM_OP_STORE>"
6015 msgstr "B<PERF_MEM_OP_STORE>"
6016
6017 #. type: Plain text
6018 #: build/C/man2/perf_event_open.2:2030
6019 msgid "Store instruction"
6020 msgstr ""
6021
6022 #. type: TP
6023 #: build/C/man2/perf_event_open.2:2030
6024 #, no-wrap
6025 msgid "B<PERF_MEM_OP_PFETCH>"
6026 msgstr "B<PERF_MEM_OP_PFETCH>"
6027
6028 #. type: Plain text
6029 #: build/C/man2/perf_event_open.2:2033
6030 msgid "Prefetch"
6031 msgstr ""
6032
6033 #. type: TP
6034 #: build/C/man2/perf_event_open.2:2033
6035 #, no-wrap
6036 msgid "B<PERF_MEM_OP_EXEC>"
6037 msgstr "B<PERF_MEM_OP_EXEC>"
6038
6039 #. type: Plain text
6040 #: build/C/man2/perf_event_open.2:2036
6041 msgid "Executable code"
6042 msgstr ""
6043
6044 #. type: TP
6045 #: build/C/man2/perf_event_open.2:2038
6046 #, no-wrap
6047 msgid "I<mem_lvl>"
6048 msgstr "I<mem_lvl>"
6049
6050 #. type: Plain text
6051 #: build/C/man2/perf_event_open.2:2043
6052 msgid ""
6053 "Memory hierarchy level hit or miss, a bitwise combination of the following, "
6054 "shifted left by B<PERF_MEM_LVL_SHIFT>:"
6055 msgstr ""
6056
6057 #. type: TP
6058 #: build/C/man2/perf_event_open.2:2046
6059 #, no-wrap
6060 msgid "B<PERF_MEM_LVL_NA>"
6061 msgstr "B<PERF_MEM_LVL_NA>"
6062
6063 #. type: TP
6064 #: build/C/man2/perf_event_open.2:2049
6065 #, no-wrap
6066 msgid "B<PERF_MEM_LVL_HIT>"
6067 msgstr "B<PERF_MEM_LVL_HIT>"
6068
6069 #. type: Plain text
6070 #: build/C/man2/perf_event_open.2:2052 build/C/man2/perf_event_open.2:2143
6071 msgid "Hit"
6072 msgstr ""
6073
6074 #. type: TP
6075 #: build/C/man2/perf_event_open.2:2052
6076 #, no-wrap
6077 msgid "B<PERF_MEM_LVL_MISS>"
6078 msgstr "B<PERF_MEM_LVL_MISS>"
6079
6080 #. type: Plain text
6081 #: build/C/man2/perf_event_open.2:2055 build/C/man2/perf_event_open.2:2146
6082 msgid "Miss"
6083 msgstr ""
6084
6085 #. type: TP
6086 #: build/C/man2/perf_event_open.2:2055
6087 #, no-wrap
6088 msgid "B<PERF_MEM_LVL_L1>"
6089 msgstr "B<PERF_MEM_LVL_L1>"
6090
6091 #. type: Plain text
6092 #: build/C/man2/perf_event_open.2:2058
6093 msgid "Level 1 cache"
6094 msgstr ""
6095
6096 #. type: TP
6097 #: build/C/man2/perf_event_open.2:2058
6098 #, no-wrap
6099 msgid "B<PERF_MEM_LVL_LFB>"
6100 msgstr "B<PERF_MEM_LVL_LFB>"
6101
6102 #. type: Plain text
6103 #: build/C/man2/perf_event_open.2:2061
6104 msgid "Line fill buffer"
6105 msgstr ""
6106
6107 #. type: TP
6108 #: build/C/man2/perf_event_open.2:2061
6109 #, no-wrap
6110 msgid "B<PERF_MEM_LVL_L2>"
6111 msgstr "B<PERF_MEM_LVL_L2>"
6112
6113 #. type: Plain text
6114 #: build/C/man2/perf_event_open.2:2064
6115 msgid "Level 2 cache"
6116 msgstr ""
6117
6118 #. type: TP
6119 #: build/C/man2/perf_event_open.2:2064
6120 #, no-wrap
6121 msgid "B<PERF_MEM_LVL_L3>"
6122 msgstr "B<PERF_MEM_LVL_L3>"
6123
6124 #. type: Plain text
6125 #: build/C/man2/perf_event_open.2:2067
6126 msgid "Level 3 cache"
6127 msgstr ""
6128
6129 #. type: TP
6130 #: build/C/man2/perf_event_open.2:2067
6131 #, no-wrap
6132 msgid "B<PERF_MEM_LVL_LOC_RAM>"
6133 msgstr "B<PERF_MEM_LVL_LOC_RAM>"
6134
6135 #. type: Plain text
6136 #: build/C/man2/perf_event_open.2:2070
6137 msgid "Local DRAM"
6138 msgstr ""
6139
6140 #. type: TP
6141 #: build/C/man2/perf_event_open.2:2070
6142 #, no-wrap
6143 msgid "B<PERF_MEM_LVL_REM_RAM1>"
6144 msgstr "B<PERF_MEM_LVL_REM_RAM1>"
6145
6146 #. type: Plain text
6147 #: build/C/man2/perf_event_open.2:2073
6148 msgid "Remote DRAM 1 hop"
6149 msgstr ""
6150
6151 #. type: TP
6152 #: build/C/man2/perf_event_open.2:2073
6153 #, no-wrap
6154 msgid "B<PERF_MEM_LVL_REM_RAM2>"
6155 msgstr "B<PERF_MEM_LVL_REM_RAM2>"
6156
6157 #. type: Plain text
6158 #: build/C/man2/perf_event_open.2:2076
6159 msgid "Remote DRAM 2 hops"
6160 msgstr ""
6161
6162 #. type: TP
6163 #: build/C/man2/perf_event_open.2:2076
6164 #, no-wrap
6165 msgid "B<PERF_MEM_LVL_REM_CCE1>"
6166 msgstr "B<PERF_MEM_LVL_REM_CCE1>"
6167
6168 #. type: Plain text
6169 #: build/C/man2/perf_event_open.2:2079
6170 msgid "Remote cache 1 hop"
6171 msgstr ""
6172
6173 #. type: TP
6174 #: build/C/man2/perf_event_open.2:2079
6175 #, no-wrap
6176 msgid "B<PERF_MEM_LVL_REM_CCE2>"
6177 msgstr "B<PERF_MEM_LVL_REM_CCE2>"
6178
6179 #. type: Plain text
6180 #: build/C/man2/perf_event_open.2:2082
6181 msgid "Remote cache 2 hops"
6182 msgstr ""
6183
6184 #. type: TP
6185 #: build/C/man2/perf_event_open.2:2082
6186 #, no-wrap
6187 msgid "B<PERF_MEM_LVL_IO>"
6188 msgstr "B<PERF_MEM_LVL_IO>"
6189
6190 #. type: Plain text
6191 #: build/C/man2/perf_event_open.2:2085
6192 msgid "I/O memory"
6193 msgstr ""
6194
6195 #. type: TP
6196 #: build/C/man2/perf_event_open.2:2085
6197 #, no-wrap
6198 msgid "B<PERF_MEM_LVL_UNC>"
6199 msgstr "B<PERF_MEM_LVL_UNC>"
6200
6201 #. type: Plain text
6202 #: build/C/man2/perf_event_open.2:2088
6203 msgid "Uncached memory"
6204 msgstr ""
6205
6206 #. type: TP
6207 #: build/C/man2/perf_event_open.2:2090
6208 #, no-wrap
6209 msgid "I<mem_snoop>"
6210 msgstr "I<mem_snoop>"
6211
6212 #. type: Plain text
6213 #: build/C/man2/perf_event_open.2:2094
6214 msgid ""
6215 "Snoop mode, a bitwise combination of the following, shifted left by "
6216 "B<PERF_MEM_SNOOP_SHIFT>:"
6217 msgstr ""
6218
6219 #. type: TP
6220 #: build/C/man2/perf_event_open.2:2097
6221 #, no-wrap
6222 msgid "B<PERF_MEM_SNOOP_NA>"
6223 msgstr "B<PERF_MEM_SNOOP_NA>"
6224
6225 #. type: TP
6226 #: build/C/man2/perf_event_open.2:2100
6227 #, no-wrap
6228 msgid "B<PERF_MEM_SNOOP_NONE>"
6229 msgstr "B<PERF_MEM_SNOOP_NONE>"
6230
6231 #. type: Plain text
6232 #: build/C/man2/perf_event_open.2:2103
6233 msgid "No snoop"
6234 msgstr ""
6235
6236 #. type: TP
6237 #: build/C/man2/perf_event_open.2:2103
6238 #, no-wrap
6239 msgid "B<PERF_MEM_SNOOP_HIT>"
6240 msgstr "B<PERF_MEM_SNOOP_HIT>"
6241
6242 #. type: Plain text
6243 #: build/C/man2/perf_event_open.2:2106
6244 msgid "Snoop hit"
6245 msgstr ""
6246
6247 #. type: TP
6248 #: build/C/man2/perf_event_open.2:2106
6249 #, no-wrap
6250 msgid "B<PERF_MEM_SNOOP_MISS>"
6251 msgstr "B<PERF_MEM_SNOOP_MISS>"
6252
6253 #. type: Plain text
6254 #: build/C/man2/perf_event_open.2:2109
6255 msgid "Snoop miss"
6256 msgstr ""
6257
6258 #. type: TP
6259 #: build/C/man2/perf_event_open.2:2109
6260 #, no-wrap
6261 msgid "B<PERF_MEM_SNOOP_HITM>"
6262 msgstr "B<PERF_MEM_SNOOP_HITM>"
6263
6264 #. type: Plain text
6265 #: build/C/man2/perf_event_open.2:2112
6266 msgid "Snoop hit modified"
6267 msgstr ""
6268
6269 #. type: TP
6270 #: build/C/man2/perf_event_open.2:2114
6271 #, no-wrap
6272 msgid "I<mem_lock>"
6273 msgstr "I<mem_lock>"
6274
6275 #. type: Plain text
6276 #: build/C/man2/perf_event_open.2:2118
6277 msgid ""
6278 "Lock instruction, a bitwise combination of the following, shifted left by "
6279 "B<PERF_MEM_LOCK_SHIFT>:"
6280 msgstr ""
6281
6282 #. type: TP
6283 #: build/C/man2/perf_event_open.2:2121
6284 #, no-wrap
6285 msgid "B<PERF_MEM_LOCK_NA>"
6286 msgstr "B<PERF_MEM_LOCK_NA>"
6287
6288 #. type: TP
6289 #: build/C/man2/perf_event_open.2:2124
6290 #, no-wrap
6291 msgid "B<PERF_MEM_LOCK_LOCKED>"
6292 msgstr "B<PERF_MEM_LOCK_LOCKED>"
6293
6294 #. type: Plain text
6295 #: build/C/man2/perf_event_open.2:2127
6296 msgid "Locked transaction"
6297 msgstr ""
6298
6299 #. type: TP
6300 #: build/C/man2/perf_event_open.2:2129
6301 #, no-wrap
6302 msgid "I<mem_dtlb>"
6303 msgstr "I<mem_dtlb>"
6304
6305 #. type: Plain text
6306 #: build/C/man2/perf_event_open.2:2134
6307 msgid ""
6308 "TLB access hit or miss, a bitwise combination of the following, shifted left "
6309 "by B<PERF_MEM_TLB_SHIFT>:"
6310 msgstr ""
6311
6312 #. type: TP
6313 #: build/C/man2/perf_event_open.2:2137
6314 #, no-wrap
6315 msgid "B<PERF_MEM_TLB_NA>"
6316 msgstr "B<PERF_MEM_TLB_NA>"
6317
6318 #. type: TP
6319 #: build/C/man2/perf_event_open.2:2140
6320 #, no-wrap
6321 msgid "B<PERF_MEM_TLB_HIT>"
6322 msgstr "B<PERF_MEM_TLB_HIT>"
6323
6324 #. type: TP
6325 #: build/C/man2/perf_event_open.2:2143
6326 #, no-wrap
6327 msgid "B<PERF_MEM_TLB_MISS>"
6328 msgstr "B<PERF_MEM_TLB_MISS>"
6329
6330 #. type: TP
6331 #: build/C/man2/perf_event_open.2:2146
6332 #, no-wrap
6333 msgid "B<PERF_MEM_TLB_L1>"
6334 msgstr "B<PERF_MEM_TLB_L1>"
6335
6336 #. type: Plain text
6337 #: build/C/man2/perf_event_open.2:2149
6338 msgid "Level 1 TLB"
6339 msgstr ""
6340
6341 #. type: TP
6342 #: build/C/man2/perf_event_open.2:2149
6343 #, no-wrap
6344 msgid "B<PERF_MEM_TLB_L2>"
6345 msgstr "B<PERF_MEM_TLB_L2>"
6346
6347 #. type: Plain text
6348 #: build/C/man2/perf_event_open.2:2152
6349 msgid "Level 2 TLB"
6350 msgstr ""
6351
6352 #. type: TP
6353 #: build/C/man2/perf_event_open.2:2152
6354 #, no-wrap
6355 msgid "B<PERF_MEM_TLB_WK>"
6356 msgstr "B<PERF_MEM_TLB_WK>"
6357
6358 #. type: Plain text
6359 #: build/C/man2/perf_event_open.2:2155
6360 msgid "Hardware walker"
6361 msgstr ""
6362
6363 #. type: TP
6364 #: build/C/man2/perf_event_open.2:2155
6365 #, no-wrap
6366 msgid "B<PERF_MEM_TLB_OS>"
6367 msgstr "B<PERF_MEM_TLB_OS>"
6368
6369 #. type: Plain text
6370 #: build/C/man2/perf_event_open.2:2158
6371 msgid "OS fault handler"
6372 msgstr ""
6373
6374 #. type: TP
6375 #: build/C/man2/perf_event_open.2:2161
6376 #, no-wrap
6377 msgid "I<transaction>"
6378 msgstr "I<transaction>"
6379
6380 #. type: Plain text
6381 #: build/C/man2/perf_event_open.2:2167
6382 msgid ""
6383 "If the B<PERF_SAMPLE_TRANSACTION> flag is set, then a 64-bit field is "
6384 "recorded describing the sources of any transactional memory aborts."
6385 msgstr ""
6386
6387 #. type: Plain text
6388 #: build/C/man2/perf_event_open.2:2169
6389 msgid "The field is a bitwise combination of the following values:"
6390 msgstr ""
6391
6392 #. type: TP
6393 #: build/C/man2/perf_event_open.2:2170
6394 #, no-wrap
6395 msgid "B<PERF_TXN_ELISION>"
6396 msgstr "B<PERF_TXN_ELISION>"
6397
6398 #. type: Plain text
6399 #: build/C/man2/perf_event_open.2:2173
6400 msgid "Abort from an elision type transaction (Intel-CPU-specific)."
6401 msgstr ""
6402
6403 #. type: TP
6404 #: build/C/man2/perf_event_open.2:2173
6405 #, no-wrap
6406 msgid "B<PERF_TXN_TRANSACTION>"
6407 msgstr "B<PERF_TXN_TRANSACTION>"
6408
6409 #. type: Plain text
6410 #: build/C/man2/perf_event_open.2:2176
6411 msgid "Abort from a generic transaction."
6412 msgstr ""
6413
6414 #. type: TP
6415 #: build/C/man2/perf_event_open.2:2176
6416 #, no-wrap
6417 msgid "B<PERF_TXN_SYNC>"
6418 msgstr "B<PERF_TXN_SYNC>"
6419
6420 #. type: Plain text
6421 #: build/C/man2/perf_event_open.2:2179
6422 msgid "Synchronous abort (related to the reported instruction)."
6423 msgstr ""
6424
6425 #. type: TP
6426 #: build/C/man2/perf_event_open.2:2179
6427 #, no-wrap
6428 msgid "B<PERF_TXN_ASYNC>"
6429 msgstr "B<PERF_TXN_ASYNC>"
6430
6431 #. type: Plain text
6432 #: build/C/man2/perf_event_open.2:2182
6433 msgid "Asynchronous abort (not related to the reported instruction)."
6434 msgstr ""
6435
6436 #. type: TP
6437 #: build/C/man2/perf_event_open.2:2182
6438 #, no-wrap
6439 msgid "B<PERF_TXN_RETRY>"
6440 msgstr "B<PERF_TXN_RETRY>"
6441
6442 #. type: Plain text
6443 #: build/C/man2/perf_event_open.2:2185
6444 msgid "Retryable abort (retrying the transaction may have succeeded)."
6445 msgstr ""
6446
6447 #. type: TP
6448 #: build/C/man2/perf_event_open.2:2185
6449 #, no-wrap
6450 msgid "B<PERF_TXN_CONFLICT>"
6451 msgstr "B<PERF_TXN_CONFLICT>"
6452
6453 #. type: Plain text
6454 #: build/C/man2/perf_event_open.2:2188
6455 msgid "Abort due to memory conflicts with other threads."
6456 msgstr ""
6457
6458 #. type: TP
6459 #: build/C/man2/perf_event_open.2:2188
6460 #, no-wrap
6461 msgid "B<PERF_TXN_CAPACITY_WRITE>"
6462 msgstr ""
6463
6464 #. type: Plain text
6465 #: build/C/man2/perf_event_open.2:2191
6466 msgid "Abort due to write capacity overflow."
6467 msgstr ""
6468
6469 #. type: TP
6470 #: build/C/man2/perf_event_open.2:2191
6471 #, no-wrap
6472 msgid "B<PERF_TXN_CAPACITY_READ>"
6473 msgstr ""
6474
6475 #. type: Plain text
6476 #: build/C/man2/perf_event_open.2:2194
6477 msgid "Abort due to read capacity overflow."
6478 msgstr ""
6479
6480 #. type: Plain text
6481 #: build/C/man2/perf_event_open.2:2201
6482 msgid ""
6483 "In addition, a user-specified abort code can be obtained from the high 32 "
6484 "bits of the field by shifting right by B<PERF_TXN_ABORT_SHIFT> and masking "
6485 "with B<PERF_TXN_ABORT_MASK>."
6486 msgstr ""
6487
6488 #. type: TP
6489 #: build/C/man2/perf_event_open.2:2202
6490 #, no-wrap
6491 msgid "B<PERF_RECORD_MMAP2>"
6492 msgstr "B<PERF_RECORD_MMAP2>"
6493
6494 #. type: Plain text
6495 #: build/C/man2/perf_event_open.2:2211
6496 msgid ""
6497 "This record includes extended information on B<mmap>(2)  calls returning "
6498 "executable mappings.  The format is similar to that of the "
6499 "B<PERF_RECORD_MMAP> record, but includes extra values that allow uniquely "
6500 "identifying shared mappings."
6501 msgstr ""
6502
6503 #. type: Plain text
6504 #: build/C/man2/perf_event_open.2:2230
6505 #, no-wrap
6506 msgid ""
6507 "struct {\n"
6508 "    struct perf_event_header header;\n"
6509 "    u32 pid;\n"
6510 "    u32 tid;\n"
6511 "    u64 addr;\n"
6512 "    u64 len;\n"
6513 "    u64 pgoff;\n"
6514 "    u32 maj;\n"
6515 "    u32 min;\n"
6516 "    u64 ino;\n"
6517 "    u64 ino_generation;\n"
6518 "    u32 prot;\n"
6519 "    u32 flags;\n"
6520 "    char filename[];\n"
6521 "    struct sample_id sample_id;\n"
6522 "};\n"
6523 msgstr ""
6524 "struct {\n"
6525 "    struct perf_event_header header;\n"
6526 "    u32 pid;\n"
6527 "    u32 tid;\n"
6528 "    u64 addr;\n"
6529 "    u64 len;\n"
6530 "    u64 pgoff;\n"
6531 "    u32 maj;\n"
6532 "    u32 min;\n"
6533 "    u64 ino;\n"
6534 "    u64 ino_generation;\n"
6535 "    u32 prot;\n"
6536 "    u32 flags;\n"
6537 "    char filename[];\n"
6538 "    struct sample_id sample_id;\n"
6539 "};\n"
6540
6541 #. type: Plain text
6542 #: build/C/man2/perf_event_open.2:2241
6543 msgid "is the address of the allocated memory."
6544 msgstr ""
6545
6546 #. type: TP
6547 #: build/C/man2/perf_event_open.2:2241
6548 #, no-wrap
6549 msgid "I<len>"
6550 msgstr "I<len>"
6551
6552 #. type: Plain text
6553 #: build/C/man2/perf_event_open.2:2244
6554 msgid "is the length of the allocated memory."
6555 msgstr ""
6556
6557 #. type: TP
6558 #: build/C/man2/perf_event_open.2:2244
6559 #, no-wrap
6560 msgid "I<pgoff>"
6561 msgstr "I<pgoff>"
6562
6563 #. type: Plain text
6564 #: build/C/man2/perf_event_open.2:2247
6565 msgid "is the page offset of the allocated memory."
6566 msgstr ""
6567
6568 #. type: TP
6569 #: build/C/man2/perf_event_open.2:2247
6570 #, no-wrap
6571 msgid "I<maj>"
6572 msgstr "I<maj>"
6573
6574 #. type: Plain text
6575 #: build/C/man2/perf_event_open.2:2250
6576 msgid "is the major ID of the underlying device."
6577 msgstr ""
6578
6579 #. type: TP
6580 #: build/C/man2/perf_event_open.2:2250
6581 #, no-wrap
6582 msgid "I<min>"
6583 msgstr "I<min>"
6584
6585 #. type: Plain text
6586 #: build/C/man2/perf_event_open.2:2253
6587 msgid "is the minor ID of the underlying device."
6588 msgstr ""
6589
6590 #. type: TP
6591 #: build/C/man2/perf_event_open.2:2253
6592 #, no-wrap
6593 msgid "I<ino>"
6594 msgstr "I<ino>"
6595
6596 #. type: Plain text
6597 #: build/C/man2/perf_event_open.2:2256
6598 msgid "is the inode number."
6599 msgstr ""
6600
6601 #. type: TP
6602 #: build/C/man2/perf_event_open.2:2256
6603 #, no-wrap
6604 msgid "I<ino_generation>"
6605 msgstr "I<ino_generation>"
6606
6607 #. type: Plain text
6608 #: build/C/man2/perf_event_open.2:2259
6609 msgid "is the inode generation."
6610 msgstr ""
6611
6612 #. type: TP
6613 #: build/C/man2/perf_event_open.2:2259
6614 #, no-wrap
6615 msgid "I<prot>"
6616 msgstr "I<prot>"
6617
6618 #. type: Plain text
6619 #: build/C/man2/perf_event_open.2:2262
6620 msgid "is the protection information."
6621 msgstr ""
6622
6623 #. type: TP
6624 #: build/C/man2/perf_event_open.2:2262
6625 #, no-wrap
6626 msgid "I<flags>"
6627 msgstr "I<flags>"
6628
6629 #. type: Plain text
6630 #: build/C/man2/perf_event_open.2:2265
6631 msgid "is the flags information."
6632 msgstr ""
6633
6634 #. type: TP
6635 #: build/C/man2/perf_event_open.2:2265
6636 #, no-wrap
6637 msgid "I<filename>"
6638 msgstr "I<filename>"
6639
6640 #. type: Plain text
6641 #: build/C/man2/perf_event_open.2:2268
6642 msgid "is a string describing the backing of the allocated memory."
6643 msgstr ""
6644
6645 #. type: SS
6646 #: build/C/man2/perf_event_open.2:2270
6647 #, no-wrap
6648 msgid "Overflow handling"
6649 msgstr ""
6650
6651 #. type: Plain text
6652 #: build/C/man2/perf_event_open.2:2283
6653 msgid ""
6654 "Events can be set to notify when a threshold is crossed, indicating an "
6655 "overflow.  Overflow conditions can be captured by monitoring the event file "
6656 "descriptor with B<poll>(2), B<select>(2), or B<epoll>(2).  Alternately, a "
6657 "SIGIO signal handler can be created and the event configured with "
6658 "B<fcntl>(2)  to generate SIGIO signals."
6659 msgstr ""
6660
6661 #. type: Plain text
6662 #: build/C/man2/perf_event_open.2:2287
6663 msgid ""
6664 "Overflows are only generated by sampling events (I<sample_period> must have "
6665 "a nonzero value)."
6666 msgstr ""
6667
6668 #. type: Plain text
6669 #: build/C/man2/perf_event_open.2:2289
6670 msgid "There are two ways to generate overflow notifications."
6671 msgstr ""
6672
6673 #. type: Plain text
6674 #: build/C/man2/perf_event_open.2:2299
6675 msgid ""
6676 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
6677 "will trigger if a certain number of samples or bytes have been written to "
6678 "the mmap ring buffer.  In this case B<POLL_IN> is indicated."
6679 msgstr ""
6680
6681 #. type: Plain text
6682 #: build/C/man2/perf_event_open.2:2311
6683 msgid ""
6684 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
6685 "adds to a counter that decrements each time the event overflows.  When "
6686 "nonzero, B<POLL_IN> is indicated, but once the counter reaches 0 B<POLL_HUP> "
6687 "is indicated and the underlying event is disabled."
6688 msgstr ""
6689
6690 #. type: Plain text
6691 #: build/C/man2/perf_event_open.2:2316
6692 msgid ""
6693 "Starting with Linux 3.18, B<POLL_HUP> is indicated if the event being "
6694 "monitored is attached to a different process and that process exits."
6695 msgstr ""
6696
6697 #. type: SS
6698 #: build/C/man2/perf_event_open.2:2316
6699 #, no-wrap
6700 msgid "rdpmc instruction"
6701 msgstr ""
6702
6703 #. type: Plain text
6704 #: build/C/man2/perf_event_open.2:2323
6705 msgid ""
6706 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
6707 "low-latency reads without having to enter the kernel.  Note that using "
6708 "I<rdpmc> is not necessarily faster than other methods for reading event "
6709 "values."
6710 msgstr ""
6711
6712 #. type: Plain text
6713 #: build/C/man2/perf_event_open.2:2328
6714 msgid ""
6715 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
6716 "page; documentation on how to calculate event values can be found in that "
6717 "section."
6718 msgstr ""
6719
6720 #. type: SS
6721 #: build/C/man2/perf_event_open.2:2328
6722 #, no-wrap
6723 msgid "perf_event ioctl calls"
6724 msgstr ""
6725
6726 #. type: Plain text
6727 #: build/C/man2/perf_event_open.2:2333
6728 msgid "Various ioctls act on B<perf_event_open>()  file descriptors:"
6729 msgstr ""
6730
6731 #. type: TP
6732 #: build/C/man2/perf_event_open.2:2333
6733 #, no-wrap
6734 msgid "B<PERF_EVENT_IOC_ENABLE>"
6735 msgstr "B<PERF_EVENT_IOC_ENABLE>"
6736
6737 #. type: Plain text
6738 #: build/C/man2/perf_event_open.2:2337
6739 msgid ""
6740 "This enables the individual event or event group specified by the file "
6741 "descriptor argument."
6742 msgstr ""
6743
6744 #. type: Plain text
6745 #: build/C/man2/perf_event_open.2:2343
6746 msgid ""
6747 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6748 "events in a group are enabled, even if the event specified is not the group "
6749 "leader (but see BUGS)."
6750 msgstr ""
6751
6752 #. type: TP
6753 #: build/C/man2/perf_event_open.2:2343
6754 #, no-wrap
6755 msgid "B<PERF_EVENT_IOC_DISABLE>"
6756 msgstr "B<PERF_EVENT_IOC_DISABLE>"
6757
6758 #. type: Plain text
6759 #: build/C/man2/perf_event_open.2:2347
6760 msgid ""
6761 "This disables the individual counter or event group specified by the file "
6762 "descriptor argument."
6763 msgstr ""
6764
6765 #. type: Plain text
6766 #: build/C/man2/perf_event_open.2:2354
6767 msgid ""
6768 "Enabling or disabling the leader of a group enables or disables the entire "
6769 "group; that is, while the group leader is disabled, none of the counters in "
6770 "the group will count.  Enabling or disabling a member of a group other than "
6771 "the leader affects only that counter; disabling a non-leader stops that "
6772 "counter from counting but doesn't affect any other counter."
6773 msgstr ""
6774
6775 #. type: Plain text
6776 #: build/C/man2/perf_event_open.2:2360
6777 msgid ""
6778 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6779 "events in a group are disabled, even if the event specified is not the group "
6780 "leader (but see BUGS)."
6781 msgstr ""
6782
6783 #. type: TP
6784 #: build/C/man2/perf_event_open.2:2360
6785 #, no-wrap
6786 msgid "B<PERF_EVENT_IOC_REFRESH>"
6787 msgstr "B<PERF_EVENT_IOC_REFRESH>"
6788
6789 #. type: Plain text
6790 #: build/C/man2/perf_event_open.2:2374
6791 msgid ""
6792 "Non-inherited overflow counters can use this to enable a counter for a "
6793 "number of overflows specified by the argument, after which it is disabled.  "
6794 "Subsequent calls of this ioctl add the argument value to the current count.  "
6795 "An overflow notification with B<POLL_IN> set will happen on each overflow "
6796 "until the count reaches 0; when that happens a notification with B<POLL_HUP> "
6797 "set is sent and the event is disabled.  Using an argument of 0 is considered "
6798 "undefined behavior."
6799 msgstr ""
6800
6801 #. type: TP
6802 #: build/C/man2/perf_event_open.2:2374
6803 #, no-wrap
6804 msgid "B<PERF_EVENT_IOC_RESET>"
6805 msgstr "B<PERF_EVENT_IOC_RESET>"
6806
6807 #. type: Plain text
6808 #: build/C/man2/perf_event_open.2:2384
6809 msgid ""
6810 "Reset the event count specified by the file descriptor argument to zero.  "
6811 "This resets only the counts; there is no way to reset the multiplexing "
6812 "I<time_enabled> or I<time_running> values."
6813 msgstr ""
6814
6815 #. type: Plain text
6816 #: build/C/man2/perf_event_open.2:2390
6817 msgid ""
6818 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
6819 "events in a group are reset, even if the event specified is not the group "
6820 "leader (but see BUGS)."
6821 msgstr ""
6822
6823 #. type: TP
6824 #: build/C/man2/perf_event_open.2:2390
6825 #, no-wrap
6826 msgid "B<PERF_EVENT_IOC_PERIOD>"
6827 msgstr "B<PERF_EVENT_IOC_PERIOD>"
6828
6829 #. type: Plain text
6830 #: build/C/man2/perf_event_open.2:2393
6831 msgid "This updates the overflow period for the event."
6832 msgstr ""
6833
6834 #. type: Plain text
6835 #: build/C/man2/perf_event_open.2:2398
6836 msgid ""
6837 "Since Linux 3.7 (on ARM) and Linux 3.14 (all other architectures), the new "
6838 "period takes effect immediately.  On older kernels, the new period did not "
6839 "take effect until after the next overflow."
6840 msgstr ""
6841
6842 #. type: Plain text
6843 #: build/C/man2/perf_event_open.2:2401
6844 msgid ""
6845 "The argument is a pointer to a 64-bit value containing the desired new "
6846 "period."
6847 msgstr ""
6848
6849 #. type: Plain text
6850 #: build/C/man2/perf_event_open.2:2404
6851 msgid ""
6852 "Prior to Linux 2.6.36 this ioctl always failed due to a bug in the kernel."
6853 msgstr ""
6854
6855 #. type: TP
6856 #: build/C/man2/perf_event_open.2:2405
6857 #, no-wrap
6858 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
6859 msgstr ""
6860
6861 #. type: Plain text
6862 #: build/C/man2/perf_event_open.2:2410
6863 msgid ""
6864 "This tells the kernel to report event notifications to the specified file "
6865 "descriptor rather than the default one.  The file descriptors must all be on "
6866 "the same CPU."
6867 msgstr ""
6868
6869 #. type: Plain text
6870 #: build/C/man2/perf_event_open.2:2413
6871 msgid ""
6872 "The argument specifies the desired file descriptor, or -1 if output should "
6873 "be ignored."
6874 msgstr ""
6875
6876 #. type: TP
6877 #: build/C/man2/perf_event_open.2:2413
6878 #, no-wrap
6879 msgid "B<PERF_EVENT_IOC_SET_FILTER> (since Linux 2.6.33)"
6880 msgstr "B<PERF_EVENT_IOC_SET_FILTER> (Linux 2.6.33 以降)"
6881
6882 #.  commit 6fb2915df7f0747d9044da9dbff5b46dc2e20830
6883 #. type: Plain text
6884 #: build/C/man2/perf_event_open.2:2417
6885 msgid "This adds an ftrace filter to this event."
6886 msgstr ""
6887
6888 #. type: Plain text
6889 #: build/C/man2/perf_event_open.2:2419
6890 msgid "The argument is a pointer to the desired ftrace filter."
6891 msgstr ""
6892
6893 #. type: TP
6894 #: build/C/man2/perf_event_open.2:2419
6895 #, no-wrap
6896 msgid "B<PERF_EVENT_IOC_ID> (since Linux 3.12)"
6897 msgstr "B<PERF_EVENT_IOC_ID> (Linux 3.12 以降)"
6898
6899 #.  commit cf4957f17f2a89984915ea808876d9c82225b862
6900 #. type: Plain text
6901 #: build/C/man2/perf_event_open.2:2423
6902 msgid "This returns the event ID value for the given event file descriptor."
6903 msgstr ""
6904
6905 #. type: Plain text
6906 #: build/C/man2/perf_event_open.2:2426
6907 msgid ""
6908 "The argument is a pointer to a 64-bit unsigned integer to hold the result."
6909 msgstr ""
6910
6911 #. type: SS
6912 #: build/C/man2/perf_event_open.2:2426
6913 #, no-wrap
6914 msgid "Using prctl"
6915 msgstr ""
6916
6917 #. type: Plain text
6918 #: build/C/man2/perf_event_open.2:2439
6919 msgid ""
6920 "A process can enable or disable all the event groups that are attached to it "
6921 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
6922 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
6923 "the calling process, whether created by this process or by another, and does "
6924 "not affect any counters that this process has created on other processes.  "
6925 "It enables or disables only the group leaders, not any other members in the "
6926 "groups."
6927 msgstr ""
6928
6929 #. type: SS
6930 #: build/C/man2/perf_event_open.2:2439
6931 #, no-wrap
6932 msgid "perf_event related configuration files"
6933 msgstr ""
6934
6935 #. type: Plain text
6936 #: build/C/man2/perf_event_open.2:2442
6937 msgid "Files in I</proc/sys/kernel/>"
6938 msgstr ""
6939
6940 #. type: TP
6941 #: build/C/man2/perf_event_open.2:2443
6942 #, no-wrap
6943 msgid "I</proc/sys/kernel/perf_event_paranoid>"
6944 msgstr ""
6945
6946 #. type: Plain text
6947 #: build/C/man2/perf_event_open.2:2449
6948 msgid ""
6949 "The I<perf_event_paranoid> file can be set to restrict access to the "
6950 "performance counters."
6951 msgstr ""
6952
6953 #. type: IP
6954 #: build/C/man2/perf_event_open.2:2450
6955 #, no-wrap
6956 msgid "2"
6957 msgstr ""
6958
6959 #. type: Plain text
6960 #: build/C/man2/perf_event_open.2:2452
6961 msgid "only allow user-space measurements."
6962 msgstr ""
6963
6964 #. type: IP
6965 #: build/C/man2/perf_event_open.2:2452
6966 #, no-wrap
6967 msgid "1"
6968 msgstr ""
6969
6970 #. type: Plain text
6971 #: build/C/man2/perf_event_open.2:2454
6972 msgid "allow both kernel and user measurements (default)."
6973 msgstr ""
6974
6975 #. type: IP
6976 #: build/C/man2/perf_event_open.2:2454
6977 #, no-wrap
6978 msgid "0"
6979 msgstr ""
6980
6981 #. type: Plain text
6982 #: build/C/man2/perf_event_open.2:2456
6983 msgid "allow access to CPU-specific data but not raw tracepoint samples."
6984 msgstr ""
6985
6986 #. type: IP
6987 #: build/C/man2/perf_event_open.2:2456
6988 #, no-wrap
6989 msgid "-1"
6990 msgstr "-1"
6991
6992 #. type: Plain text
6993 #: build/C/man2/perf_event_open.2:2458
6994 msgid "no restrictions."
6995 msgstr ""
6996
6997 #. type: Plain text
6998 #: build/C/man2/perf_event_open.2:2464
6999 msgid ""
7000 "The existence of the I<perf_event_paranoid> file is the official method for "
7001 "determining if a kernel supports B<perf_event_open>()."
7002 msgstr ""
7003
7004 #. type: TP
7005 #: build/C/man2/perf_event_open.2:2464
7006 #, no-wrap
7007 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
7008 msgstr ""
7009
7010 #. type: Plain text
7011 #: build/C/man2/perf_event_open.2:2473
7012 msgid ""
7013 "This sets the maximum sample rate.  Setting this too high can allow users to "
7014 "sample at a rate that impacts overall machine performance and potentially "
7015 "lock up the machine.  The default value is 100000 (samples per second)."
7016 msgstr ""
7017
7018 #. type: TP
7019 #: build/C/man2/perf_event_open.2:2473
7020 #, no-wrap
7021 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
7022 msgstr ""
7023
7024 #. type: Plain text
7025 #: build/C/man2/perf_event_open.2:2479
7026 msgid ""
7027 "Maximum number of pages an unprivileged user can B<mlock>(2).  The default "
7028 "is 516 (kB)."
7029 msgstr ""
7030
7031 #. type: Plain text
7032 #: build/C/man2/perf_event_open.2:2483
7033 msgid "Files in I</sys/bus/event_source/devices/>"
7034 msgstr ""
7035
7036 #. type: Plain text
7037 #: build/C/man2/perf_event_open.2:2489
7038 msgid ""
7039 "Since Linux 2.6.34, the kernel supports having multiple PMUs available for "
7040 "monitoring.  Information on how to program these PMUs can be found under I</"
7041 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
7042 "different PMU."
7043 msgstr ""
7044
7045 #. type: TP
7046 #: build/C/man2/perf_event_open.2:2489
7047 #, no-wrap
7048 msgid "I</sys/bus/event_source/devices/*/type> (since Linux 2.6.38)"
7049 msgstr "I</sys/bus/event_source/devices/*/type> (Linux 2.6.38 以降)"
7050
7051 #. type: Plain text
7052 #: build/C/man2/perf_event_open.2:2496
7053 msgid ""
7054 "This contains an integer that can be used in the I<type> field of "
7055 "I<perf_event_attr> to indicate that you wish to use this PMU."
7056 msgstr ""
7057
7058 #. type: TP
7059 #: build/C/man2/perf_event_open.2:2496
7060 #, no-wrap
7061 msgid "I</sys/bus/event_source/devices/*/rdpmc> (since Linux 3.4)"
7062 msgstr "I</sys/bus/event_source/devices/*/rdpmc> (Linux 3.4 以降)"
7063
7064 #. type: Plain text
7065 #: build/C/man2/perf_event_open.2:2501
7066 msgid ""
7067 "If this file is 1, then direct user-space access to the performance counter "
7068 "registers is allowed via the rdpmc instruction.  This can be disabled by "
7069 "echoing 0 to the file."
7070 msgstr ""
7071
7072 #. type: TP
7073 #: build/C/man2/perf_event_open.2:2501
7074 #, no-wrap
7075 msgid "I</sys/bus/event_source/devices/*/format/> (since Linux 3.4)"
7076 msgstr "I</sys/bus/event_source/devices/*/format/> (Linux 3.4 以降)"
7077
7078 #. type: Plain text
7079 #: build/C/man2/perf_event_open.2:2509
7080 msgid ""
7081 "This subdirectory contains information on the architecture-specific "
7082 "subfields available for programming the various I<config> fields in the "
7083 "I<perf_event_attr> struct."
7084 msgstr ""
7085
7086 #. type: Plain text
7087 #: build/C/man2/perf_event_open.2:2520
7088 msgid ""
7089 "The content of each file is the name of the config field, followed by a "
7090 "colon, followed by a series of integer bit ranges separated by commas.  For "
7091 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
7092 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
7093 "I<perf_event_attr::config1>."
7094 msgstr ""
7095
7096 #. type: TP
7097 #: build/C/man2/perf_event_open.2:2520
7098 #, no-wrap
7099 msgid "I</sys/bus/event_source/devices/*/events/> (since Linux 3.4)"
7100 msgstr "I</sys/bus/event_source/devices/*/events/> (Linux 3.4 以降)"
7101
7102 #. type: Plain text
7103 #: build/C/man2/perf_event_open.2:2529
7104 msgid ""
7105 "This subdirectory contains files with predefined events.  The contents are "
7106 "strings describing the event settings expressed in terms of the fields found "
7107 "in the previously mentioned I<./format/> directory.  These are not "
7108 "necessarily complete lists of all events supported by a PMU, but usually a "
7109 "subset of events deemed useful or interesting."
7110 msgstr ""
7111
7112 #. type: Plain text
7113 #: build/C/man2/perf_event_open.2:2537
7114 msgid ""
7115 "The content of each file is a list of attribute names separated by commas.  "
7116 "Each entry has an optional value (either hex or decimal).  If no value is "
7117 "specified, then it is assumed to be a single-bit field with a value of 1.  "
7118 "An example entry may look like this: I<event=0x2,inv,ldlat=3>."
7119 msgstr ""
7120
7121 #. type: TP
7122 #: build/C/man2/perf_event_open.2:2537
7123 #, no-wrap
7124 msgid "I</sys/bus/event_source/devices/*/uevent>"
7125 msgstr "I</sys/bus/event_source/devices/*/uevent>"
7126
7127 #. type: Plain text
7128 #: build/C/man2/perf_event_open.2:2541
7129 msgid ""
7130 "This file is the standard kernel device interface for injecting hotplug "
7131 "events."
7132 msgstr ""
7133
7134 #. type: TP
7135 #: build/C/man2/perf_event_open.2:2541
7136 #, no-wrap
7137 msgid "I</sys/bus/event_source/devices/*/cpumask> (since Linux 3.7)"
7138 msgstr "I</sys/bus/event_source/devices/*/cpumask> (Linux 3.7 以降)"
7139
7140 #. type: Plain text
7141 #: build/C/man2/perf_event_open.2:2550
7142 msgid ""
7143 "The I<cpumask> file contains a comma-separated list of integers that "
7144 "indicate a representative CPU number for each socket (package)  on the "
7145 "motherboard.  This is needed when setting up uncore or northbridge events, "
7146 "as those PMUs present socket-wide events."
7147 msgstr ""
7148
7149 #. type: Plain text
7150 #: build/C/man2/perf_event_open.2:2557
7151 msgid ""
7152 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
7153 "occurred (in which case, I<errno> is set appropriately)."
7154 msgstr ""
7155
7156 #. type: Plain text
7157 #: build/C/man2/perf_event_open.2:2562
7158 msgid ""
7159 "The errors returned by B<perf_event_open>()  can be inconsistent, and may "
7160 "vary across processor architectures and performance monitoring units."
7161 msgstr ""
7162
7163 #. type: TP
7164 #: build/C/man2/perf_event_open.2:2562
7165 #, no-wrap
7166 msgid "B<E2BIG>"
7167 msgstr "B<E2BIG>"
7168
7169 #. type: Plain text
7170 #: build/C/man2/perf_event_open.2:2579
7171 msgid ""
7172 "Returned if the I<perf_event_attr> I<size> value is too small (smaller than "
7173 "B<PERF_ATTR_SIZE_VER0>), too big (larger than the page size), or larger than "
7174 "the kernel supports and the extra bytes are not zero.  When B<E2BIG> is "
7175 "returned, the I<perf_event_attr> I<size> field is overwritten by the kernel "
7176 "to be the size of the structure it was expecting."
7177 msgstr ""
7178
7179 #. type: Plain text
7180 #: build/C/man2/perf_event_open.2:2593
7181 msgid ""
7182 "Returned when the requested event requires B<CAP_SYS_ADMIN> permissions (or "
7183 "a more permissive perf_event paranoid setting).  Some common cases where an "
7184 "unprivileged process may encounter this error: attaching to a process owned "
7185 "by a different user; monitoring all processes on a given CPU (i.e., "
7186 "specifying the I<pid> argument as -1); and not setting I<exclude_kernel> "
7187 "when the paranoid setting requires it."
7188 msgstr ""
7189
7190 #. type: TP
7191 #: build/C/man2/perf_event_open.2:2593 build/C/man2/sendfile.2:121
7192 #: build/C/man2/splice.2:157 build/C/man2/vmsplice.2:133
7193 #, no-wrap
7194 msgid "B<EBADF>"
7195 msgstr "B<EBADF>"
7196
7197 #. type: Plain text
7198 #: build/C/man2/perf_event_open.2:2603
7199 msgid ""
7200 "Returned if the I<group_fd> file descriptor is not valid, or, if "
7201 "B<PERF_FLAG_PID_CGROUP> is set, the cgroup file descriptor in I<pid> is not "
7202 "valid."
7203 msgstr ""
7204
7205 #. type: Plain text
7206 #: build/C/man2/perf_event_open.2:2608
7207 msgid "Returned if the I<attr> pointer points at an invalid memory address."
7208 msgstr ""
7209
7210 #. type: Plain text
7211 #: build/C/man2/perf_event_open.2:2634
7212 msgid ""
7213 "Returned if the specified event is invalid.  There are many possible reasons "
7214 "for this.  A not-exhaustive list: I<sample_freq> is higher than the maximum "
7215 "setting; the I<cpu> to monitor does not exist; I<read_format> is out of "
7216 "range; I<sample_type> is out of range; the I<flags> value is out of range; "
7217 "I<exclusive> or I<pinned> set and the event is not a group leader; the event "
7218 "I<config> values are out of range or set reserved bits; the generic event "
7219 "selected is not supported; or there is not enough room to add the selected "
7220 "event."
7221 msgstr ""
7222
7223 #. type: TP
7224 #: build/C/man2/perf_event_open.2:2634
7225 #, no-wrap
7226 msgid "B<EMFILE>"
7227 msgstr "B<EMFILE>"
7228
7229 #. type: Plain text
7230 #: build/C/man2/perf_event_open.2:2640
7231 msgid ""
7232 "Each opened event uses one file descriptor.  If a large number of events are "
7233 "opened the per-user file descriptor limit (often 1024) will be hit and no "
7234 "more events can be created."
7235 msgstr ""
7236
7237 #. type: Plain text
7238 #: build/C/man2/perf_event_open.2:2644
7239 msgid ""
7240 "Returned when the event involves a feature not supported by the current CPU."
7241 msgstr ""
7242
7243 #. type: TP
7244 #: build/C/man2/perf_event_open.2:2644 build/C/man2/quotactl.2:440
7245 #, no-wrap
7246 msgid "B<ENOENT>"
7247 msgstr "B<ENOENT>"
7248
7249 #. type: Plain text
7250 #: build/C/man2/perf_event_open.2:2651
7251 msgid ""
7252 "Returned if the I<type> setting is not valid.  This error is also returned "
7253 "for some unsupported generic events."
7254 msgstr ""
7255
7256 #. type: TP
7257 #: build/C/man2/perf_event_open.2:2651
7258 #, no-wrap
7259 msgid "B<ENOSPC>"
7260 msgstr "B<ENOSPC>"
7261
7262 #. type: Plain text
7263 #: build/C/man2/perf_event_open.2:2661
7264 msgid ""
7265 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
7266 "was returned.  In Linux 3.3, this was changed to B<EINVAL>.  B<ENOSPC> is "
7267 "still returned if you try to add more breakpoint events than supported by "
7268 "the hardware."
7269 msgstr ""
7270
7271 #. type: Plain text
7272 #: build/C/man2/perf_event_open.2:2668
7273 msgid ""
7274 "Returned if B<PERF_SAMPLE_STACK_USER> is set in I<sample_type> and it is not "
7275 "supported by hardware."
7276 msgstr ""
7277
7278 #. type: Plain text
7279 #: build/C/man2/perf_event_open.2:2675
7280 msgid ""
7281 "Returned if an event requiring a specific hardware feature is requested but "
7282 "there is no hardware support.  This includes requesting low-skid events if "
7283 "not supported, branch tracing if it is not available, sampling if no PMU "
7284 "interrupt is available, and branch stacks for software events."
7285 msgstr ""
7286
7287 #. type: Plain text
7288 #: build/C/man2/perf_event_open.2:2680
7289 msgid ""
7290 "Returned on many (but not all) architectures when an unsupported "
7291 "I<exclude_hv>, I<exclude_idle>, I<exclude_user>, or I<exclude_kernel> "
7292 "setting is specified."
7293 msgstr ""
7294
7295 #. type: Plain text
7296 #: build/C/man2/perf_event_open.2:2688
7297 msgid ""
7298 "It can also happen, as with B<EACCES>, when the requested event requires "
7299 "B<CAP_SYS_ADMIN> permissions (or a more permissive perf_event paranoid "
7300 "setting).  This includes setting a breakpoint on a kernel address, and "
7301 "(since Linux 3.13) setting a kernel function-trace tracepoint."
7302 msgstr ""
7303
7304 #. type: Plain text
7305 #: build/C/man2/perf_event_open.2:2691
7306 msgid "Returned if attempting to attach to a process that does not exist."
7307 msgstr ""
7308
7309 #. type: SH
7310 #: build/C/man2/perf_event_open.2:2691
7311 #, no-wrap
7312 msgid "VERSION"
7313 msgstr "バージョン"
7314
7315 #. type: Plain text
7316 #: build/C/man2/perf_event_open.2:2696
7317 msgid ""
7318 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
7319 "B<perf_counter_open>().  It was renamed in Linux 2.6.32."
7320 msgstr ""
7321
7322 #. type: Plain text
7323 #: build/C/man2/perf_event_open.2:2701
7324 msgid ""
7325 "This B<perf_event_open>()  system call Linux- specific and should not be "
7326 "used in programs intended to be portable."
7327 msgstr ""
7328 "B<perf_event_open>() システムコールは Linux 固有であり、 移植を意図したプログ"
7329 "ラムで使用すべきではない。"
7330
7331 #. type: Plain text
7332 #: build/C/man2/perf_event_open.2:2705
7333 msgid ""
7334 "Glibc does not provide a wrapper for this system call; call it using "
7335 "B<syscall>(2).  See the example below."
7336 msgstr ""
7337 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
7338 "B<syscall>(2)  を使って呼び出すこと。 以下の例を参照。"
7339
7340 #. type: Plain text
7341 #: build/C/man2/perf_event_open.2:2711
7342 msgid ""
7343 "The official way of knowing if B<perf_event_open>()  support is enabled is "
7344 "checking for the existence of the file I</proc/sys/kernel/"
7345 "perf_event_paranoid>."
7346 msgstr ""
7347
7348 #. type: SH
7349 #: build/C/man2/perf_event_open.2:2711 build/C/man2/pivot_root.2:134
7350 #: build/C/man2/ptrace.2:2006
7351 #, no-wrap
7352 msgid "BUGS"
7353 msgstr "バグ"
7354
7355 #. type: Plain text
7356 #: build/C/man2/perf_event_open.2:2718
7357 msgid ""
7358 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
7359 "signals in threads.  This was introduced in Linux 2.6.32."
7360 msgstr ""
7361
7362 #. type: Plain text
7363 #: build/C/man2/perf_event_open.2:2726
7364 msgid ""
7365 "Prior to Linux 2.6.33 (at least for x86), the kernel did not check if events "
7366 "could be scheduled together until read time.  The same happens on all known "
7367 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
7368 "events works you have to B<perf_event_open>(), start, then read before you "
7369 "know for sure you can get valid measurements."
7370 msgstr ""
7371
7372 #. type: Plain text
7373 #: build/C/man2/perf_event_open.2:2730
7374 msgid ""
7375 "Prior to Linux 2.6.34, event constraints were not enforced by the kernel.  "
7376 "In that case, some events would silently return \"0\" if the kernel "
7377 "scheduled them in an improper counter slot."
7378 msgstr ""
7379
7380 #. type: Plain text
7381 #: build/C/man2/perf_event_open.2:2733
7382 msgid ""
7383 "Prior to Linux 2.6.34, there was a bug when multiplexing where the wrong "
7384 "results could be returned."
7385 msgstr ""
7386
7387 #. type: Plain text
7388 #: build/C/man2/perf_event_open.2:2736
7389 msgid ""
7390 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
7391 "\"inherit\" is enabled and many threads are started."
7392 msgstr ""
7393
7394 #. type: Plain text
7395 #: build/C/man2/perf_event_open.2:2740
7396 msgid ""
7397 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
7398 "processes."
7399 msgstr ""
7400
7401 #. type: Plain text
7402 #: build/C/man2/perf_event_open.2:2745
7403 msgid ""
7404 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
7405 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
7406 "This behavior is unsupported and should not be relied on."
7407 msgstr ""
7408
7409 #. type: Plain text
7410 #: build/C/man2/perf_event_open.2:2751
7411 msgid ""
7412 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
7413 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
7414 "the union has a nonzero value in it."
7415 msgstr ""
7416
7417 #. type: Plain text
7418 #: build/C/man2/perf_event_open.2:2757
7419 msgid ""
7420 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
7421 "was broken and would repeatedly operate on the event specified rather than "
7422 "iterating across all sibling events in a group."
7423 msgstr ""
7424
7425 #. type: Plain text
7426 #: build/C/man2/perf_event_open.2:2768
7427 msgid ""
7428 "From Linux 3.4 to Linux 3.11, the mmap I<cap_usr_rdpmc> and I<cap_usr_time> "
7429 "bits mapped to the same location.  Code should migrate to the new "
7430 "I<cap_user_rdpmc> and I<cap_user_time> fields instead."
7431 msgstr ""
7432
7433 #. type: Plain text
7434 #: build/C/man2/perf_event_open.2:2773
7435 msgid ""
7436 "Always double-check your results! Various generalized events have had wrong "
7437 "values.  For example, retired branches measured the wrong thing on AMD "
7438 "machines until Linux 2.6.35."
7439 msgstr ""
7440
7441 #. type: SH
7442 #: build/C/man2/perf_event_open.2:2773 build/C/man2/process_vm_readv.2:311
7443 #: build/C/man2/splice.2:237 build/C/man2/tee.2:136
7444 #, no-wrap
7445 msgid "EXAMPLE"
7446 msgstr "例"
7447
7448 #. type: Plain text
7449 #: build/C/man2/perf_event_open.2:2777
7450 msgid ""
7451 "The following is a short example that measures the total instruction count "
7452 "of a call to B<printf>(3)."
7453 msgstr ""
7454
7455 #. type: Plain text
7456 #: build/C/man2/perf_event_open.2:2786
7457 #, no-wrap
7458 msgid ""
7459 "#include E<lt>stdlib.hE<gt>\n"
7460 "#include E<lt>stdio.hE<gt>\n"
7461 "#include E<lt>unistd.hE<gt>\n"
7462 "#include E<lt>string.hE<gt>\n"
7463 "#include E<lt>sys/ioctl.hE<gt>\n"
7464 "#include E<lt>linux/perf_event.hE<gt>\n"
7465 "#include E<lt>asm/unistd.hE<gt>\n"
7466 msgstr ""
7467 "#include E<lt>stdlib.hE<gt>\n"
7468 "#include E<lt>stdio.hE<gt>\n"
7469 "#include E<lt>unistd.hE<gt>\n"
7470 "#include E<lt>string.hE<gt>\n"
7471 "#include E<lt>sys/ioctl.hE<gt>\n"
7472 "#include E<lt>linux/perf_event.hE<gt>\n"
7473 "#include E<lt>asm/unistd.hE<gt>\n"
7474
7475 #. type: Plain text
7476 #: build/C/man2/perf_event_open.2:2792
7477 #, no-wrap
7478 msgid ""
7479 "static long\n"
7480 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7481 "                int cpu, int group_fd, unsigned long flags)\n"
7482 "{\n"
7483 "    int ret;\n"
7484 msgstr ""
7485 "static long\n"
7486 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7487 "                int cpu, int group_fd, unsigned long flags)\n"
7488 "{\n"
7489 "    int ret;\n"
7490
7491 #. type: Plain text
7492 #: build/C/man2/perf_event_open.2:2797
7493 #, no-wrap
7494 msgid ""
7495 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7496 "                   group_fd, flags);\n"
7497 "    return ret;\n"
7498 "}\n"
7499 msgstr ""
7500 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7501 "                   group_fd, flags);\n"
7502 "    return ret;\n"
7503 "}\n"
7504
7505 #. type: Plain text
7506 #: build/C/man2/perf_event_open.2:2804
7507 #, no-wrap
7508 msgid ""
7509 "int\n"
7510 "main(int argc, char **argv)\n"
7511 "{\n"
7512 "    struct perf_event_attr pe;\n"
7513 "    long long count;\n"
7514 "    int fd;\n"
7515 msgstr ""
7516 "int\n"
7517 "main(int argc, char **argv)\n"
7518 "{\n"
7519 "    struct perf_event_attr pe;\n"
7520 "    long long count;\n"
7521 "    int fd;\n"
7522
7523 #. type: Plain text
7524 #: build/C/man2/perf_event_open.2:2812
7525 #, no-wrap
7526 msgid ""
7527 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7528 "    pe.type = PERF_TYPE_HARDWARE;\n"
7529 "    pe.size = sizeof(struct perf_event_attr);\n"
7530 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7531 "    pe.disabled = 1;\n"
7532 "    pe.exclude_kernel = 1;\n"
7533 "    pe.exclude_hv = 1;\n"
7534 msgstr ""
7535 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7536 "    pe.type = PERF_TYPE_HARDWARE;\n"
7537 "    pe.size = sizeof(struct perf_event_attr);\n"
7538 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7539 "    pe.disabled = 1;\n"
7540 "    pe.exclude_kernel = 1;\n"
7541 "    pe.exclude_hv = 1;\n"
7542
7543 #. type: Plain text
7544 #: build/C/man2/perf_event_open.2:2818
7545 #, no-wrap
7546 msgid ""
7547 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7548 "    if (fd == -1) {\n"
7549 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7550 "       exit(EXIT_FAILURE);\n"
7551 "    }\n"
7552 msgstr ""
7553 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7554 "    if (fd == -1) {\n"
7555 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7556 "       exit(EXIT_FAILURE);\n"
7557 "    }\n"
7558
7559 #. type: Plain text
7560 #: build/C/man2/perf_event_open.2:2821
7561 #, no-wrap
7562 msgid ""
7563 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7564 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7565 msgstr ""
7566 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7567 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7568
7569 #. type: Plain text
7570 #: build/C/man2/perf_event_open.2:2823
7571 #, no-wrap
7572 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
7573 msgstr "    printf(\"Measuring instruction count for this printf\\en\");\n"
7574
7575 #. type: Plain text
7576 #: build/C/man2/perf_event_open.2:2826
7577 #, no-wrap
7578 msgid ""
7579 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7580 "    read(fd, &count, sizeof(long long));\n"
7581 msgstr ""
7582 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7583 "    read(fd, &count, sizeof(long long));\n"
7584
7585 #. type: Plain text
7586 #: build/C/man2/perf_event_open.2:2828
7587 #, no-wrap
7588 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
7589 msgstr "    printf(\"Used %lld instructions\\en\", count);\n"
7590
7591 #. type: Plain text
7592 #: build/C/man2/perf_event_open.2:2831
7593 #, no-wrap
7594 msgid ""
7595 "    close(fd);\n"
7596 "}\n"
7597 msgstr ""
7598 "    close(fd);\n"
7599 "}\n"
7600
7601 #. type: Plain text
7602 #: build/C/man2/perf_event_open.2:2838
7603 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7604 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7605
7606 #. type: TH
7607 #: build/C/man2/perfmonctl.2:27
7608 #, no-wrap
7609 msgid "PERFMONCTL"
7610 msgstr "PERFMONCTL"
7611
7612 #. type: TH
7613 #: build/C/man2/perfmonctl.2:27
7614 #, no-wrap
7615 msgid "2013-02-13"
7616 msgstr "2013-02-13"
7617
7618 #. type: Plain text
7619 #: build/C/man2/perfmonctl.2:30
7620 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
7621 msgstr ""
7622
7623 #. type: Plain text
7624 #: build/C/man2/perfmonctl.2:34
7625 #, no-wrap
7626 msgid ""
7627 "B<#include E<lt>syscall.hE<gt>>\n"
7628 "B<#include E<lt>perfmon.hE<gt>>\n"
7629 msgstr ""
7630 "B<#include E<lt>syscall.hE<gt>>\n"
7631 "B<#include E<lt>perfmon.hE<gt>>\n"
7632
7633 #. type: Plain text
7634 #: build/C/man2/perfmonctl.2:36
7635 #, no-wrap
7636 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7637 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7638
7639 #. type: Plain text
7640 #: build/C/man2/perfmonctl.2:47
7641 msgid ""
7642 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
7643 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
7644 "monitoring data) registers and PMC (performance monitoring control) "
7645 "registers, which gather hardware statistics."
7646 msgstr ""
7647
7648 #. type: Plain text
7649 #: build/C/man2/perfmonctl.2:57
7650 msgid ""
7651 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
7652 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
7653 "I<fd> argument specifies the perfmon context to operate on."
7654 msgstr ""
7655
7656 #. type: Plain text
7657 #: build/C/man2/perfmonctl.2:61
7658 msgid "Supported values for I<cmd> are:"
7659 msgstr ""
7660
7661 #. type: TP
7662 #: build/C/man2/perfmonctl.2:61
7663 #, no-wrap
7664 msgid "B<PFM_CREATE_CONTEXT>"
7665 msgstr "B<PFM_CREATE_CONTEXT>"
7666
7667 #. type: Plain text
7668 #: build/C/man2/perfmonctl.2:65
7669 #, no-wrap
7670 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
7671 msgstr ""
7672
7673 #. type: Plain text
7674 #: build/C/man2/perfmonctl.2:67
7675 msgid "Set up a context."
7676 msgstr ""
7677
7678 #. type: Plain text
7679 #: build/C/man2/perfmonctl.2:74
7680 msgid ""
7681 "The I<fd> parameter is ignored.  A new perfmon context is created as "
7682 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
7683 "E<gt>ctx_fd>."
7684 msgstr ""
7685
7686 #. type: Plain text
7687 #: build/C/man2/perfmonctl.2:86
7688 msgid ""
7689 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
7690 "can be used to read event notifications (type I<pfm_msg_t>)  using "
7691 "B<read>(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), "
7692 "and B<epoll>(7)."
7693 msgstr ""
7694
7695 #. type: Plain text
7696 #: build/C/man2/perfmonctl.2:90
7697 msgid ""
7698 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
7699 msgstr ""
7700
7701 #. type: TP
7702 #: build/C/man2/perfmonctl.2:90
7703 #, no-wrap
7704 msgid "B<PFM_WRITE_PMCS>"
7705 msgstr "B<PFM_WRITE_PMCS>"
7706
7707 #. type: Plain text
7708 #: build/C/man2/perfmonctl.2:95
7709 #, no-wrap
7710 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
7711 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
7712
7713 #. type: Plain text
7714 #: build/C/man2/perfmonctl.2:97
7715 msgid "Set PMC registers."
7716 msgstr ""
7717
7718 #. type: TP
7719 #: build/C/man2/perfmonctl.2:97
7720 #, no-wrap
7721 msgid "B<PFM_WRITE_PMDS>"
7722 msgstr "B<PFM_WRITE_PMDS>"
7723
7724 #. type: Plain text
7725 #: build/C/man2/perfmonctl.2:101
7726 #, no-wrap
7727 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7728 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7729
7730 #.  pfm_write_pmds()
7731 #. type: Plain text
7732 #: build/C/man2/perfmonctl.2:104
7733 msgid "Set PMD registers."
7734 msgstr ""
7735
7736 #. type: TP
7737 #: build/C/man2/perfmonctl.2:104
7738 #, no-wrap
7739 msgid "B<PFM_READ_PMDS>"
7740 msgstr "B<PFM_READ_PMDS>"
7741
7742 #. type: Plain text
7743 #: build/C/man2/perfmonctl.2:109
7744 #, no-wrap
7745 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7746 msgstr "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
7747
7748 #. type: Plain text
7749 #: build/C/man2/perfmonctl.2:111
7750 msgid "Read PMD registers."
7751 msgstr ""
7752
7753 #. type: TP
7754 #: build/C/man2/perfmonctl.2:111
7755 #, no-wrap
7756 msgid "B<PFM_START>"
7757 msgstr "B<PFM_START>"
7758
7759 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
7760 #. type: Plain text
7761 #: build/C/man2/perfmonctl.2:117
7762 #, no-wrap
7763 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
7764 msgstr "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
7765
7766 #. type: Plain text
7767 #: build/C/man2/perfmonctl.2:119
7768 msgid "Start monitoring."
7769 msgstr ""
7770
7771 #. type: TP
7772 #: build/C/man2/perfmonctl.2:119
7773 #, no-wrap
7774 msgid "B<PFM_STOP>"
7775 msgstr "B<PFM_STOP>"
7776
7777 #. type: Plain text
7778 #: build/C/man2/perfmonctl.2:124
7779 #, no-wrap
7780 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
7781 msgstr "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
7782
7783 #. type: Plain text
7784 #: build/C/man2/perfmonctl.2:126
7785 msgid "Stop monitoring."
7786 msgstr ""
7787
7788 #. type: TP
7789 #: build/C/man2/perfmonctl.2:126
7790 #, no-wrap
7791 msgid "B<PFM_LOAD_CONTEXT>"
7792 msgstr "B<PFM_LOAD_CONTEXT>"
7793
7794 #. type: Plain text
7795 #: build/C/man2/perfmonctl.2:131
7796 #, no-wrap
7797 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
7798 msgstr "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
7799
7800 #. type: Plain text
7801 #: build/C/man2/perfmonctl.2:133
7802 msgid "Attach the context to a thread."
7803 msgstr ""
7804
7805 #. type: TP
7806 #: build/C/man2/perfmonctl.2:133
7807 #, no-wrap
7808 msgid "B<PFM_UNLOAD_CONTEXT>"
7809 msgstr "B<PFM_UNLOAD_CONTEXT>"
7810
7811 #. type: Plain text
7812 #: build/C/man2/perfmonctl.2:138
7813 #, no-wrap
7814 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
7815 msgstr "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
7816
7817 #. type: Plain text
7818 #: build/C/man2/perfmonctl.2:140
7819 msgid "Detach the context from a thread."
7820 msgstr ""
7821
7822 #. type: TP
7823 #: build/C/man2/perfmonctl.2:140
7824 #, no-wrap
7825 msgid "B<PFM_RESTART>"
7826 msgstr "B<PFM_RESTART>"
7827
7828 #. type: Plain text
7829 #: build/C/man2/perfmonctl.2:145
7830 #, no-wrap
7831 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
7832 msgstr "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
7833
7834 #. type: Plain text
7835 #: build/C/man2/perfmonctl.2:147
7836 msgid "Restart monitoring after receiving an overflow notification."
7837 msgstr ""
7838
7839 #. type: TP
7840 #: build/C/man2/perfmonctl.2:147
7841 #, no-wrap
7842 msgid "B<PFM_GET_FEATURES>"
7843 msgstr "B<PFM_GET_FEATURES>"
7844
7845 #. type: Plain text
7846 #: build/C/man2/perfmonctl.2:152
7847 #, no-wrap
7848 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
7849 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
7850
7851 #. type: TP
7852 #: build/C/man2/perfmonctl.2:153
7853 #, no-wrap
7854 msgid "B<PFM_DEBUG>"
7855 msgstr "B<PFM_DEBUG>"
7856
7857 #. type: Plain text
7858 #: build/C/man2/perfmonctl.2:158
7859 #, no-wrap
7860 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
7861 msgstr "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
7862
7863 #. type: Plain text
7864 #: build/C/man2/perfmonctl.2:162
7865 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
7866 msgstr ""
7867
7868 #. type: TP
7869 #: build/C/man2/perfmonctl.2:162
7870 #, no-wrap
7871 msgid "B<PFM_GET_PMC_RESET_VAL>"
7872 msgstr "B<PFM_GET_PMC_RESET_VAL>"
7873
7874 #. type: Plain text
7875 #: build/C/man2/perfmonctl.2:167
7876 #, no-wrap
7877 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
7878 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
7879
7880 #
7881 #
7882 #
7883 #.  .TP
7884 #.  .B PFM_CREATE_EVTSETS
7885 #.  create or modify event sets
7886 #.  .nf
7887 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
7888 #.  .fi
7889 #.  .TP
7890 #.  .B PFM_DELETE_EVTSETS
7891 #.  delete event sets
7892 #.  .nf
7893 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
7894 #.  .fi
7895 #.  .TP
7896 #.  .B PFM_GETINFO_EVTSETS
7897 #.  get information about event sets
7898 #.  .nf
7899 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
7900 #.  .fi
7901 #. type: Plain text
7902 #: build/C/man2/perfmonctl.2:190
7903 msgid "Reset PMC registers to default values."
7904 msgstr ""
7905
7906 #. type: Plain text
7907 #: build/C/man2/perfmonctl.2:196
7908 msgid ""
7909 "B<perfmonctl>()  returns zero when the operation is successful.  On error, "
7910 "-1 is returned and I<errno> is set to indicate the cause of the error."
7911 msgstr ""
7912
7913 #. type: Plain text
7914 #: build/C/man2/perfmonctl.2:199
7915 msgid "B<perfmonctl>()  is available since Linux 2.4."
7916 msgstr ""
7917
7918 #. type: Plain text
7919 #: build/C/man2/perfmonctl.2:202
7920 msgid ""
7921 "B<perfmonctl>()  is Linux-specific and is available only on the IA-64 "
7922 "architecture."
7923 msgstr ""
7924
7925 #. type: Plain text
7926 #: build/C/man2/perfmonctl.2:207
7927 msgid "B<gprof>(1)"
7928 msgstr "B<gprof>(1)"
7929
7930 #. type: Plain text
7931 #: build/C/man2/perfmonctl.2:209
7932 msgid "The perfmon2 interface specification"
7933 msgstr ""
7934
7935 #. type: TH
7936 #: build/C/man2/personality.2:32
7937 #, no-wrap
7938 msgid "PERSONALITY"
7939 msgstr "PERSONALITY"
7940
7941 #. type: TH
7942 #: build/C/man2/personality.2:32
7943 #, no-wrap
7944 msgid "2014-04-15"
7945 msgstr "2014-04-15"
7946
7947 #. type: Plain text
7948 #: build/C/man2/personality.2:35
7949 msgid "personality - set the process execution domain"
7950 msgstr "personality - プロセスを実行するドメインを設定する"
7951
7952 #. type: Plain text
7953 #: build/C/man2/personality.2:37
7954 msgid "B<#include E<lt>sys/personality.hE<gt>>"
7955 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
7956
7957 #. type: Plain text
7958 #: build/C/man2/personality.2:39
7959 msgid "B<int personality(unsigned long >I<persona>B<);>"
7960 msgstr "B<int personality(unsigned long >I<persona>B<);>"
7961
7962 #. type: Plain text
7963 #: build/C/man2/personality.2:47
7964 msgid ""
7965 "Linux supports different execution domains, or personalities, for each "
7966 "process.  Among other things, execution domains tell Linux how to map signal "
7967 "numbers into signal actions.  The execution domain system allows Linux to "
7968 "provide limited support for binaries compiled under other UNIX-like "
7969 "operating systems."
7970 msgstr ""
7971 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
7972 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
7973 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
7974 "Linux は、 他の UNIX 風のオペレーティングシステムでコンパイルされたバイナリに"
7975 "対する限定的なサポートを提供している。"
7976
7977 #. type: Plain text
7978 #: build/C/man2/personality.2:59
7979 msgid ""
7980 "If I<persona> is not 0xffffffff, then B<personality>()  sets the caller's "
7981 "execution domain to the value specified by I<persona>.  Specifying "
7982 "I<persona> as 0xffffffff provides a way of retrieving the current persona "
7983 "without changing it."
7984 msgstr ""
7985 "I<persona> が 0xffffffff 以外の場合、 B<personality>() は呼び出し元の実行ドメ"
7986 "インを I<persona> で指定された値に設定する。 I<persona> に 0xffffffff を指定"
7987 "すると、変更を行わず、現在の persona 値を取得できる。"
7988
7989 #. type: Plain text
7990 #: build/C/man2/personality.2:62
7991 msgid ""
7992 "A list of the available execution domains can be found in I<E<lt>sys/"
7993 "personality.hE<gt>>."
7994 msgstr ""
7995 "利用可能な実行ドメインのリストは I<E<lt>sys/personality.hE<gt>> にある。"
7996
7997 #. type: Plain text
7998 #: build/C/man2/personality.2:69
7999 msgid ""
8000 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
8001 "and I<errno> is set appropriately."
8002 msgstr ""
8003 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
8004 "I<errno> が適切に設定される。"
8005
8006 #. type: Plain text
8007 #: build/C/man2/personality.2:73
8008 msgid "The kernel was unable to change the personality."
8009 msgstr "カーネルがパーソナリティを変更できなかった。"
8010
8011 #. type: Plain text
8012 #: build/C/man2/personality.2:77
8013 msgid ""
8014 "B<personality>()  is Linux-specific and should not be used in programs "
8015 "intended to be portable."
8016 msgstr ""
8017 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
8018 "はない。"
8019
8020 #. type: TH
8021 #: build/C/man2/pivot_root.2:10
8022 #, no-wrap
8023 msgid "PIVOT_ROOT"
8024 msgstr "PIVOT_ROOT"
8025
8026 #. type: Plain text
8027 #: build/C/man2/pivot_root.2:13
8028 msgid "pivot_root - change the root filesystem"
8029 msgstr "pivot_root - root ファイルシステムを変更する"
8030
8031 #. type: Plain text
8032 #: build/C/man2/pivot_root.2:15
8033 msgid ""
8034 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8035 msgstr ""
8036 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8037
8038 #.  The
8039 #.  .B CAP_SYS_ADMIN
8040 #.  capability is required.
8041 #. type: Plain text
8042 #: build/C/man2/pivot_root.2:27
8043 msgid ""
8044 "B<pivot_root>()  moves the root filesystem of the calling process to the "
8045 "directory I<put_old> and makes I<new_root> the new root filesystem of the "
8046 "calling process."
8047 msgstr ""
8048 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
8049 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
8050 "ルシステムにする。"
8051
8052 #. type: Plain text
8053 #: build/C/man2/pivot_root.2:34
8054 msgid ""
8055 "The typical use of B<pivot_root>()  is during system startup, when the "
8056 "system mounts a temporary root filesystem (e.g., an B<initrd>), then mounts "
8057 "the real root filesystem, and eventually turns the latter into the current "
8058 "root of all relevant processes or threads."
8059 msgstr ""
8060 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
8061 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
8062 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
8063 "レント root に変更するような場合である。"
8064
8065 #. type: Plain text
8066 #: build/C/man2/pivot_root.2:46
8067 msgid ""
8068 "B<pivot_root>()  may or may not change the current root and the current "
8069 "working directory of any processes or threads which use the old root "
8070 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
8071 "root or current working directory at the old root operate correctly in "
8072 "either case.  An easy way to ensure this is to change their root and current "
8073 "working directory to I<new_root> before invoking B<pivot_root>()."
8074 msgstr ""
8075 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
8076 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
8077 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
8078 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
8079 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
8080 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
8081 "更しておくことである。"
8082
8083 #. type: Plain text
8084 #: build/C/man2/pivot_root.2:64
8085 msgid ""
8086 "The paragraph above is intentionally vague because the implementation of "
8087 "B<pivot_root>()  may change in the future.  At the time of writing, "
8088 "B<pivot_root>()  changes root and current working directory of each process "
8089 "or thread to I<new_root> if they point to the old root directory.  This is "
8090 "necessary in order to prevent kernel threads from keeping the old root "
8091 "directory busy with their root and current working directory, even if they "
8092 "never access the filesystem in any way.  In the future, there may be a "
8093 "mechanism for kernel threads to explicitly relinquish any access to the "
8094 "filesystem, such that this fairly intrusive mechanism can be removed from "
8095 "B<pivot_root>()."
8096 msgstr ""
8097 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
8098 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
8099 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
8100 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
8101 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
8102 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
8103 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
8104 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
8105 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
8106 "除されるかもしれない。"
8107
8108 #. type: Plain text
8109 #: build/C/man2/pivot_root.2:72
8110 msgid ""
8111 "Note that this also applies to the calling process: B<pivot_root>()  may or "
8112 "may not affect its current working directory.  It is therefore recommended "
8113 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
8114 msgstr ""
8115 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
8116 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
8117 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
8118
8119 #. type: Plain text
8120 #: build/C/man2/pivot_root.2:74
8121 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
8122 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
8123
8124 #. type: IP
8125 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
8126 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
8127 #, no-wrap
8128 msgid "-"
8129 msgstr "-"
8130
8131 #. type: Plain text
8132 #: build/C/man2/pivot_root.2:76
8133 msgid "They must be directories."
8134 msgstr "ディレクトリでなければならない。"
8135
8136 #. type: Plain text
8137 #: build/C/man2/pivot_root.2:79
8138 msgid ""
8139 "I<new_root> and I<put_old> must not be on the same filesystem as the current "
8140 "root."
8141 msgstr ""
8142 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
8143 "ない。"
8144
8145 #. type: Plain text
8146 #: build/C/man2/pivot_root.2:83
8147 msgid ""
8148 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
8149 "of I</..> to the string pointed to by I<put_old> must yield the same "
8150 "directory as I<new_root>."
8151 msgstr ""
8152 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
8153 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
8154 "リが得られなければならない。"
8155
8156 #. type: Plain text
8157 #: build/C/man2/pivot_root.2:85
8158 msgid "No other filesystem may be mounted on I<put_old>."
8159 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
8160
8161 #. type: Plain text
8162 #: build/C/man2/pivot_root.2:89
8163 msgid "See also B<pivot_root>(8)  for additional usage examples."
8164 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
8165
8166 #. type: Plain text
8167 #: build/C/man2/pivot_root.2:96
8168 msgid ""
8169 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
8170 "B<pivot_root>(), see also below), not the old root directory, but the mount "
8171 "point of that filesystem is mounted on I<put_old>."
8172 msgstr ""
8173 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
8174 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
8175 "テムのマウントポイントが I<put_old> にマウントされる。"
8176
8177 #. type: Plain text
8178 #: build/C/man2/pivot_root.2:101
8179 msgid ""
8180 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
8181 "mounts> will show the mount point of the filesystem containing I<new_root> "
8182 "as root (I</>)."
8183 msgstr ""
8184 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
8185 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
8186 "る。"
8187
8188 #. type: Plain text
8189 #: build/C/man2/pivot_root.2:110
8190 msgid ""
8191 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
8192 "B<stat>(2).  Additionally, it may return:"
8193 msgstr ""
8194 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
8195 "性がある。さらに以下を返すことがある:"
8196
8197 #. type: Plain text
8198 #: build/C/man2/pivot_root.2:114
8199 msgid ""
8200 "I<new_root> or I<put_old> are on the current root filesystem, or a "
8201 "filesystem is already mounted on I<put_old>."
8202 msgstr ""
8203 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
8204 "に I<put_old> になんらかのファイルシステムがマウントされている。"
8205
8206 #. type: Plain text
8207 #: build/C/man2/pivot_root.2:117
8208 msgid "I<put_old> is not underneath I<new_root>."
8209 msgstr "I<put_old> が I<new_root> の下層にない。"
8210
8211 #. type: TP
8212 #: build/C/man2/pivot_root.2:117
8213 #, no-wrap
8214 msgid "B<ENOTDIR>"
8215 msgstr "B<ENOTDIR>"
8216
8217 #. type: Plain text
8218 #: build/C/man2/pivot_root.2:120
8219 msgid "I<new_root> or I<put_old> is not a directory."
8220 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
8221
8222 #. type: Plain text
8223 #: build/C/man2/pivot_root.2:125
8224 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
8225 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
8226
8227 #. type: Plain text
8228 #: build/C/man2/pivot_root.2:128
8229 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
8230 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
8231
8232 #. type: Plain text
8233 #: build/C/man2/pivot_root.2:131
8234 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
8235 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
8236
8237 #. type: Plain text
8238 #: build/C/man2/pivot_root.2:138
8239 msgid ""
8240 "B<pivot_root>()  should not have to change root and current working "
8241 "directory of all other processes in the system."
8242 msgstr ""
8243 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
8244 "ディレクトリとを変更しなくてもよいはずである。"
8245
8246 #. type: Plain text
8247 #: build/C/man2/pivot_root.2:143
8248 msgid ""
8249 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
8250 "insanity."
8251 msgstr ""
8252 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
8253 "からない状態になってしまうだろう"
8254
8255 #. type: Plain text
8256 #: build/C/man2/pivot_root.2:149
8257 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8258 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8259
8260 #. type: TH
8261 #: build/C/man2/process_vm_readv.2:29
8262 #, no-wrap
8263 msgid "PROCESS_VM_READV"
8264 msgstr "PROCESS_VM_READV"
8265
8266 #. type: Plain text
8267 #: build/C/man2/process_vm_readv.2:32
8268 msgid ""
8269 "process_vm_readv, process_vm_writev - transfer data between process address "
8270 "spaces"
8271 msgstr ""
8272 "process_vm_readv, process_vm_writev - プロセスのアドレス空間間でデータを転送"
8273 "する"
8274
8275 #. type: Plain text
8276 #: build/C/man2/process_vm_readv.2:35
8277 #, no-wrap
8278 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
8279 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
8280
8281 #. type: Plain text
8282 #: build/C/man2/process_vm_readv.2:42
8283 #, no-wrap
8284 msgid ""
8285 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8286 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8287 "B<                         unsigned long >I<liovcnt>B<,>\n"
8288 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8289 "B<                         unsigned long >I<riovcnt>B<,>\n"
8290 "B<                         unsigned long >I<flags>B<);>\n"
8291 msgstr ""
8292 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8293 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8294 "B<                         unsigned long >I<liovcnt>B<,>\n"
8295 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8296 "B<                         unsigned long >I<riovcnt>B<,>\n"
8297 "B<                         unsigned long >I<flags>B<);>\n"
8298
8299 #. type: Plain text
8300 #: build/C/man2/process_vm_readv.2:49
8301 #, no-wrap
8302 msgid ""
8303 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8304 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8305 "B<                          unsigned long >I<liovcnt>B<,>\n"
8306 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8307 "B<                          unsigned long >I<riovcnt>B<,>\n"
8308 "B<                          unsigned long >I<flags>B<);>\n"
8309 msgstr ""
8310 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8311 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8312 "B<                          unsigned long >I<liovcnt>B<,>\n"
8313 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8314 "B<                          unsigned long >I<riovcnt>B<,>\n"
8315 "B<                          unsigned long >I<flags>B<);>\n"
8316
8317 #. type: Plain text
8318 #: build/C/man2/process_vm_readv.2:54
8319 msgid ""
8320 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
8321 msgstr ""
8322
8323 #. type: Plain text
8324 #: build/C/man2/process_vm_readv.2:58
8325 msgid "B<process_vm_readv>(), B<process_vm_writev>():"
8326 msgstr "B<process_vm_readv>(), B<process_vm_writev>():"
8327
8328 #. type: Plain text
8329 #: build/C/man2/process_vm_readv.2:62
8330 msgid "B<_GNU_SOURCE>"
8331 msgstr "B<_GNU_SOURCE>"
8332
8333 #. type: Plain text
8334 #: build/C/man2/process_vm_readv.2:73
8335 msgid ""
8336 "These system calls transfer data between the address space of the calling "
8337 "process (\"the local process\") and the process identified by I<pid> (\"the "
8338 "remote process\").  The data moves directly between the address spaces of "
8339 "the two processes, without passing through kernel space."
8340 msgstr ""
8341
8342 #. type: Plain text
8343 #: build/C/man2/process_vm_readv.2:98
8344 msgid ""
8345 "The B<process_vm_readv>()  system call transfers data from the remote "
8346 "process to the local process.  The data to be transferred is identified by "
8347 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
8348 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
8349 "the number of elements in I<remote_iov>.  The data is transferred to the "
8350 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
8351 "pointer to an array describing address ranges in the calling process, and "
8352 "I<liovcnt> specifies the number of elements in I<local_iov>."
8353 msgstr ""
8354
8355 #. type: Plain text
8356 #: build/C/man2/process_vm_readv.2:112
8357 msgid ""
8358 "The B<process_vm_writev>()  system call is the converse of "
8359 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
8360 "remote process.  Other than the direction of the transfer, the arguments "
8361 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
8362 "meaning as for B<process_vm_readv>()."
8363 msgstr ""
8364
8365 #. type: Plain text
8366 #: build/C/man2/process_vm_readv.2:122
8367 msgid ""
8368 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
8369 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
8370 msgstr ""
8371 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
8372 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
8373 "されている:"
8374
8375 #. type: Plain text
8376 #: build/C/man2/process_vm_readv.2:129
8377 #, no-wrap
8378 msgid ""
8379 "struct iovec {\n"
8380 "    void  *iov_base;    /* Starting address */\n"
8381 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8382 "};\n"
8383 msgstr ""
8384 "struct iovec {\n"
8385 "    void  *iov_base;    /* Starting address */\n"
8386 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8387 "};\n"
8388
8389 #. type: Plain text
8390 #: build/C/man2/process_vm_readv.2:145
8391 msgid ""
8392 "Buffers are processed in array order.  This means that "
8393 "B<process_vm_readv>()  completely fills I<local_iov[0]> before proceeding to "
8394 "I<local_iov[1]>, and so on.  Likewise, I<remote_iov[0]> is completely read "
8395 "before proceeding to I<remote_iov[1]>, and so on."
8396 msgstr ""
8397 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
8398 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
8399 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
8400 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
8401 "以降も同様である。"
8402
8403 #. type: Plain text
8404 #: build/C/man2/process_vm_readv.2:156
8405 msgid ""
8406 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
8407 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
8408 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
8409 msgstr ""
8410
8411 #. type: Plain text
8412 #: build/C/man2/process_vm_readv.2:164
8413 msgid ""
8414 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
8415 "have to be the same.  Thus, it is possible to split a single local buffer "
8416 "into multiple remote buffers, or vice versa."
8417 msgstr ""
8418
8419 #. type: Plain text
8420 #: build/C/man2/process_vm_readv.2:168
8421 msgid "The I<flags> argument is currently unused and must be set to 0."
8422 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
8423
8424 #.  In time, glibc might provide a wrapper that works around this limit,
8425 #.  as is done for readv()/writev()
8426 #. type: Plain text
8427 #: build/C/man2/process_vm_readv.2:181
8428 msgid ""
8429 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
8430 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
8431 "via the call I<sysconf(_SC_IOV_MAX)>)."
8432 msgstr ""
8433
8434 #. type: Plain text
8435 #: build/C/man2/process_vm_readv.2:191
8436 msgid ""
8437 "The count arguments and I<local_iov> are checked before doing any "
8438 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
8439 "addresses refer to regions that are inaccessible to the local process, none "
8440 "of the vectors will be processed and an error will be returned immediately."
8441 msgstr ""
8442
8443 #. type: Plain text
8444 #: build/C/man2/process_vm_readv.2:211
8445 msgid ""
8446 "Note, however, that these system calls do not check the memory regions in "
8447 "the remote process until just before doing the read/write.  Consequently, a "
8448 "partial read/write (see RETURN VALUE)  may result if one of the "
8449 "I<remote_iov> elements points to an invalid memory region in the remote "
8450 "process.  No further reads/writes will be attempted beyond that point.  Keep "
8451 "this in mind when attempting to read data of unknown length (such as C "
8452 "strings that are null-terminated) from a remote process, by avoiding "
8453 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
8454 "(Instead, split the remote read into two I<remote_iov> elements and have "
8455 "them merge back into a single write I<local_iov> entry.  The first read "
8456 "entry goes up to the page boundary, while the second starts on the next page "
8457 "boundary.)"
8458 msgstr ""
8459
8460 #. type: Plain text
8461 #: build/C/man2/process_vm_readv.2:225
8462 msgid ""
8463 "In order to read from or write to another process, either the caller must "
8464 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
8465 "ID, and saved set-user-ID of the remote process must match the real user ID "
8466 "of the caller I<and> the real group ID, effective group ID, and saved set-"
8467 "group-ID of the remote process must match the real group ID of the caller.  "
8468 "(The permission required is exactly the same as that required to perform a "
8469 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
8470 msgstr ""
8471
8472 #. type: Plain text
8473 #: build/C/man2/process_vm_readv.2:241
8474 msgid ""
8475 "On success, B<process_vm_readv>()  returns the number of bytes read and "
8476 "B<process_vm_writev>()  returns the number of bytes written.  This return "
8477 "value may be less than the total number of requested bytes, if a partial "
8478 "read/write occurred.  (Partial transfers apply at the granularity of "
8479 "I<iovec> elements.  These system calls won't perform a partial transfer that "
8480 "splits a single I<iovec> element.)  The caller should check the return value "
8481 "to determine whether a partial read/write occurred."
8482 msgstr ""
8483
8484 #. type: Plain text
8485 #: build/C/man2/process_vm_readv.2:245
8486 msgid "On error, -1 is returned and I<errno> is set appropriately."
8487 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
8488
8489 #. type: Plain text
8490 #: build/C/man2/process_vm_readv.2:257
8491 msgid ""
8492 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
8493 "overflows a I<ssize_t> value."
8494 msgstr ""
8495
8496 #. type: Plain text
8497 #: build/C/man2/process_vm_readv.2:261
8498 msgid "I<flags> is not 0."
8499 msgstr "I<flags> が 0 でない。"
8500
8501 #. type: Plain text
8502 #: build/C/man2/process_vm_readv.2:267
8503 msgid "I<liovcnt> or I<riovcnt> is too large."
8504 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
8505
8506 #. type: Plain text
8507 #: build/C/man2/process_vm_readv.2:272
8508 msgid ""
8509 "The memory described by I<local_iov> is outside the caller's accessible "
8510 "address space."
8511 msgstr ""
8512 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
8513 "アドレス空間の外にある。"
8514
8515 #. type: Plain text
8516 #: build/C/man2/process_vm_readv.2:278
8517 msgid ""
8518 "The memory described by I<remote_iov> is outside the accessible address "
8519 "space of the process I<pid>."
8520 msgstr ""
8521
8522 #. type: Plain text
8523 #: build/C/man2/process_vm_readv.2:283
8524 msgid ""
8525 "Could not allocate memory for internal copies of the I<iovec> structures."
8526 msgstr ""
8527
8528 #. type: Plain text
8529 #: build/C/man2/process_vm_readv.2:287
8530 msgid ""
8531 "The caller does not have permission to access the address space of the "
8532 "process I<pid>."
8533 msgstr ""
8534 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
8535 "持っていない。"
8536
8537 #. type: Plain text
8538 #: build/C/man2/process_vm_readv.2:292
8539 msgid "No process with ID I<pid> exists."
8540 msgstr "ID が I<pid> のプロセスが存在しない。"
8541
8542 #. type: Plain text
8543 #: build/C/man2/process_vm_readv.2:295
8544 msgid ""
8545 "These system calls were added in Linux 3.2.  Support is provided in glibc "
8546 "since version 2.15."
8547 msgstr ""
8548 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
8549 "サポートは glibc バージョン 2.15 以降で提供されている。"
8550
8551 #. type: Plain text
8552 #: build/C/man2/process_vm_readv.2:297
8553 msgid "These system calls are nonstandard Linux extensions."
8554 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
8555
8556 #. type: Plain text
8557 #: build/C/man2/process_vm_readv.2:303
8558 msgid ""
8559 "The data transfers performed by B<process_vm_readv>()  and "
8560 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
8561 msgstr ""
8562
8563 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
8564 #.  See also some benchmarks at http://lwn.net/Articles/405284/
8565 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
8566 #. type: Plain text
8567 #: build/C/man2/process_vm_readv.2:311
8568 msgid ""
8569 "These system calls were designed to permit fast message passing by allowing "
8570 "messages to be exchanged with a single copy operation (rather than the "
8571 "double copy that would be required when using, for example, shared memory or "
8572 "pipes)."
8573 msgstr ""
8574
8575 #. type: Plain text
8576 #: build/C/man2/process_vm_readv.2:319
8577 msgid ""
8578 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
8579 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
8580 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
8581 msgstr ""
8582
8583 #. type: Plain text
8584 #: build/C/man2/process_vm_readv.2:322
8585 #, no-wrap
8586 msgid "#include E<lt>sys/uio.hE<gt>\n"
8587 msgstr "#include E<lt>sys/uio.hE<gt>\n"
8588
8589 #. type: Plain text
8590 #: build/C/man2/process_vm_readv.2:332
8591 #, no-wrap
8592 msgid ""
8593 "int\n"
8594 "main(void)\n"
8595 "{\n"
8596 "    struct iovec local[2];\n"
8597 "    struct iovec remote[1];\n"
8598 "    char buf1[10];\n"
8599 "    char buf2[10];\n"
8600 "    ssize_t nread;\n"
8601 "    pid_t pid = 10;             /* PID of remote process */\n"
8602 msgstr ""
8603 "int\n"
8604 "main(void)\n"
8605 "{\n"
8606 "    struct iovec local[2];\n"
8607 "    struct iovec remote[1];\n"
8608 "    char buf1[10];\n"
8609 "    char buf2[10];\n"
8610 "    ssize_t nread;\n"
8611 "    pid_t pid = 10;             /* PID of remote process */\n"
8612
8613 #. type: Plain text
8614 #: build/C/man2/process_vm_readv.2:339
8615 #, no-wrap
8616 msgid ""
8617 "    local[0].iov_base = buf1;\n"
8618 "    local[0].iov_len = 10;\n"
8619 "    local[1].iov_base = buf2;\n"
8620 "    local[1].iov_len = 10;\n"
8621 "    remote[0].iov_base = (void *) 0x10000;\n"
8622 "    remote[0].iov_len = 20;\n"
8623 msgstr ""
8624 "    local[0].iov_base = buf1;\n"
8625 "    local[0].iov_len = 10;\n"
8626 "    local[1].iov_base = buf2;\n"
8627 "    local[1].iov_len = 10;\n"
8628 "    remote[0].iov_base = (void *) 0x10000;\n"
8629 "    remote[0].iov_len = 20;\n"
8630
8631 #. type: Plain text
8632 #: build/C/man2/process_vm_readv.2:346
8633 #, no-wrap
8634 msgid ""
8635 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
8636 "    if (nread != 20)\n"
8637 "        return 1;\n"
8638 "    else\n"
8639 "        return 0;\n"
8640 "}\n"
8641 msgstr ""
8642 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
8643 "    if (nread != 20)\n"
8644 "        return 1;\n"
8645 "    else\n"
8646 "        return 0;\n"
8647 "}\n"
8648
8649 #. type: Plain text
8650 #: build/C/man2/process_vm_readv.2:350
8651 msgid "B<readv>(2), B<writev>(2)"
8652 msgstr "B<readv>(2), B<writev>(2)"
8653
8654 #. type: TH
8655 #: build/C/man2/ptrace.2:46
8656 #, no-wrap
8657 msgid "PTRACE"
8658 msgstr "PTRACE"
8659
8660 #. type: Plain text
8661 #: build/C/man2/ptrace.2:49
8662 msgid "ptrace - process trace"
8663 msgstr "ptrace - プロセスのトレース"
8664
8665 #. type: Plain text
8666 #: build/C/man2/ptrace.2:52
8667 #, no-wrap
8668 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
8669 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
8670
8671 #. type: Plain text
8672 #: build/C/man2/ptrace.2:55
8673 #, no-wrap
8674 msgid ""
8675 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
8676 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
8677 msgstr ""
8678 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
8679 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
8680
8681 #. type: Plain text
8682 #: build/C/man2/ptrace.2:64
8683 #, fuzzy
8684 #| msgid ""
8685 #| "The B<ptrace>()  system call provides a means by which a parent process "
8686 #| "may observe and control the execution of another process, and examine and "
8687 #| "change its core image and registers.  It is primarily used to implement "
8688 #| "breakpoint debugging and system call tracing."
8689 msgid ""
8690 "The B<ptrace>()  system call provides a means by which one process (the "
8691 "\"tracer\")  may observe and control the execution of another process (the "
8692 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
8693 "is primarily used to implement breakpoint debugging and system call tracing."
8694 msgstr ""
8695 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
8696 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
8697 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
8698 "コールのトレースを 実装するのに用いられる。"
8699
8700 #. type: Plain text
8701 #: build/C/man2/ptrace.2:75
8702 msgid ""
8703 "A tracee first needs to be attached to the tracer.  Attachment and "
8704 "subsequent commands are per thread: in a multithreaded process, every thread "
8705 "can be individually attached to a (potentially different) tracer, or left "
8706 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
8707 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
8708 "commands are always sent to a specific tracee using a call of the form"
8709 msgstr ""
8710
8711 #. type: Plain text
8712 #: build/C/man2/ptrace.2:77
8713 #, no-wrap
8714 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
8715 msgstr "    ptrace(PTRACE_foo, pid, ...)\n"
8716
8717 #. type: Plain text
8718 #: build/C/man2/ptrace.2:81
8719 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
8720 msgstr "ここで I<pid> は対応する Linux スレッドのスレッド ID である。"
8721
8722 #. type: Plain text
8723 #: build/C/man2/ptrace.2:87
8724 msgid ""
8725 "(Note that in this page, a \"multithreaded process\" means a thread group "
8726 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
8727 msgstr ""
8728
8729 #. type: Plain text
8730 #: build/C/man2/ptrace.2:98
8731 #, fuzzy
8732 #| msgid ""
8733 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
8734 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an "
8735 #| "B<exec>(3).  Alternatively, the parent may commence trace of an existing "
8736 #| "process using B<PTRACE_ATTACH>."
8737 msgid ""
8738 "A process can initiate a trace by calling B<fork>(2)  and having the "
8739 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an "
8740 "B<execve>(2).  Alternatively, one process may commence tracing another "
8741 "process using B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
8742 msgstr ""
8743 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
8744 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
8745 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
8746 "を使用し、トレースを開始する。"
8747
8748 #. type: Plain text
8749 #: build/C/man2/ptrace.2:115
8750 #, fuzzy
8751 #| msgid ""
8752 #| "While being traced, the child will stop each time a signal is delivered, "
8753 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
8754 #| "has its usual effect.)  The parent will be notified at its next "
8755 #| "B<wait>(2)  and may inspect and modify the child process while it is "
8756 #| "stopped.  The parent then causes the child to continue, optionally "
8757 #| "ignoring the delivered signal (or even delivering a different signal "
8758 #| "instead)."
8759 msgid ""
8760 "While being traced, the tracee will stop each time a signal is delivered, "
8761 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
8762 "its usual effect.)  The tracer will be notified at its next call to "
8763 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
8764 "return a I<status> value containing information that indicates the cause of "
8765 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
8766 "various ptrace requests to inspect and modify the tracee.  The tracer then "
8767 "causes the tracee to continue, optionally ignoring the delivered signal (or "
8768 "even delivering a different signal instead)."
8769 msgstr ""
8770 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
8771 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
8772 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
8773 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
8774 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
8775 "シグナルを 配送することもできる) 。"
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:125
8779 msgid ""
8780 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
8781 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
8782 "signal, giving the parent a chance to gain control before the new program "
8783 "begins execution."
8784 msgstr ""
8785
8786 #. type: Plain text
8787 #: build/C/man2/ptrace.2:129
8788 #, fuzzy
8789 #| msgid ""
8790 #| "When the parent is finished tracing, it can terminate the child with "
8791 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
8792 #| "mode via B<PTRACE_DETACH>."
8793 msgid ""
8794 "When the tracer is finished tracing, it can cause the tracee to continue "
8795 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
8796 msgstr ""
8797 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
8798 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
8799 "ドにして、 実行を継続させることもできる。"
8800
8801 #. type: Plain text
8802 #: build/C/man2/ptrace.2:133
8803 msgid "The value of I<request> determines the action to be performed:"
8804 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
8805
8806 #. type: TP
8807 #: build/C/man2/ptrace.2:133
8808 #, no-wrap
8809 msgid "B<PTRACE_TRACEME>"
8810 msgstr "B<PTRACE_TRACEME>"
8811
8812 #. type: Plain text
8813 #: build/C/man2/ptrace.2:143
8814 msgid ""
8815 "Indicate that this process is to be traced by its parent.  A process "
8816 "probably shouldn't make this request if its parent isn't expecting to trace "
8817 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
8818 msgstr ""
8819 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
8820 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
8821 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
8822
8823 #. type: Plain text
8824 #: build/C/man2/ptrace.2:158
8825 #, fuzzy
8826 #| msgid ""
8827 #| "The above request is used only by the child process; the rest are used "
8828 #| "only by the parent.  In the following requests, I<pid> specifies the "
8829 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
8830 #| "the child process must be stopped."
8831 msgid ""
8832 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
8833 "requests are used only by the tracer.  In the following requests, I<pid> "
8834 "specifies the thread ID of the tracee to be acted on.  For requests other "
8835 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT>, and "
8836 "B<PTRACE_KILL>, the tracee must be stopped."
8837 msgstr ""
8838 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
8839 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
8840 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
8841 "らない。"
8842
8843 #. type: TP
8844 #: build/C/man2/ptrace.2:158
8845 #, no-wrap
8846 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
8847 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
8848
8849 #. type: Plain text
8850 #: build/C/man2/ptrace.2:169
8851 #, fuzzy
8852 #| msgid ""
8853 #| "Reads a word at the location I<addr> in the child's memory, returning the "
8854 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
8855 #| "separate text and data address spaces, so the two requests are currently "
8856 #| "equivalent.  (The argument I<data> is ignored.)"
8857 msgid ""
8858 "Read a word at the address I<addr> in the tracee's memory, returning the "
8859 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
8860 "text and data address spaces, so these two requests are currently "
8861 "equivalent.  (I<data> is ignored; but see NOTES.)"
8862 msgstr ""
8863 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
8864 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
8865 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
8866 "ものである。 (引き数 I<data> は無視される。)"
8867
8868 #. type: TP
8869 #: build/C/man2/ptrace.2:169
8870 #, no-wrap
8871 msgid "B<PTRACE_PEEKUSER>"
8872 msgstr "B<PTRACE_PEEKUSER>"
8873
8874 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
8875 #.  and that is the name that seems common on other systems.
8876 #. type: Plain text
8877 #: build/C/man2/ptrace.2:187
8878 #, fuzzy
8879 #| msgid ""
8880 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
8881 #| "registers and other information about the process (see I<E<lt>sys/user."
8882 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
8883 #| "Typically the offset must be word-aligned, though this might vary by "
8884 #| "architecture.  See NOTES.  (I<data> is ignored.)"
8885 msgid ""
8886 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
8887 "registers and other information about the process (see I<E<lt>sys/user."
8888 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
8889 "Typically, the offset must be word-aligned, though this might vary by "
8890 "architecture.  See NOTES.  (I<data> is ignored; but see NOTES.)"
8891 msgstr ""
8892 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
8893 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
8894 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
8895 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
8896 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
8897 "される。 )"
8898
8899 #. type: TP
8900 #: build/C/man2/ptrace.2:187
8901 #, no-wrap
8902 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
8903 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
8904
8905 #. type: Plain text
8906 #: build/C/man2/ptrace.2:199
8907 #, fuzzy
8908 #| msgid ""
8909 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
8910 #| "above, the two requests are currently equivalent."
8911 msgid ""
8912 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
8913 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
8914 "equivalent."
8915 msgstr ""
8916 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
8917 "に、現在のところ二つの 要求は同じものである。"
8918
8919 #. type: TP
8920 #: build/C/man2/ptrace.2:199
8921 #, no-wrap
8922 msgid "B<PTRACE_POKEUSER>"
8923 msgstr "B<PTRACE_POKEUSER>"
8924
8925 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
8926 #.  and that is the name that seems common on other systems.
8927 #.  FIXME In the preceding sentence, which modifications are disallowed,
8928 #.  and when they are disallowed, how does user space discover that fact?
8929 #. type: Plain text
8930 #: build/C/man2/ptrace.2:215
8931 #, fuzzy
8932 #| msgid ""
8933 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
8934 #| "above, the offset must typically be word-aligned.  In order to maintain "
8935 #| "the integrity of the kernel, some modifications to the USER area are "
8936 #| "disallowed."
8937 msgid ""
8938 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
8939 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
8940 "maintain the integrity of the kernel, some modifications to the USER area "
8941 "are disallowed."
8942 msgstr ""
8943 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
8944 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
8945 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
8946 "されている。"
8947
8948 #. type: TP
8949 #: build/C/man2/ptrace.2:215
8950 #, no-wrap
8951 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
8952 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
8953
8954 #. type: Plain text
8955 #: build/C/man2/ptrace.2:238
8956 #, fuzzy
8957 #| msgid ""
8958 #| "Copies the child's general purpose or floating-point registers, "
8959 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
8960 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
8961 msgid ""
8962 "Copy the tracee's general-purpose or floating-point registers, respectively, "
8963 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
8964 "information on the format of this data.  (I<addr> is ignored.)  Note that "
8965 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
8966 "I<data> is ignored and the registers are copied to the address I<addr>.  "
8967 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
8968 "architectures."
8969 msgstr ""
8970 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
8971 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
8972 "すること。(I<addr> は無視される。)"
8973
8974 #. type: TP
8975 #: build/C/man2/ptrace.2:238
8976 #, no-wrap
8977 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
8978 msgstr " B<PTRACE_GETREGSET> (since Linux 2.6.34)"
8979
8980 #. type: Plain text
8981 #: build/C/man2/ptrace.2:259
8982 msgid ""
8983 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
8984 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
8985 "numerical value 1)  usually results in reading of general-purpose "
8986 "registers.  If the CPU has, for example, floating-point and/or vector "
8987 "registers, they can be retrieved by setting I<addr> to the corresponding "
8988 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
8989 "the destination buffer's location and length.  On return, the kernel "
8990 "modifies B<iov.len> to indicate the actual number of bytes returned."
8991 msgstr ""
8992
8993 #. type: TP
8994 #: build/C/man2/ptrace.2:259
8995 #, no-wrap
8996 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
8997 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
8998
8999 #.  FIXME . In the preceding sentence, which modifications are disallowed,
9000 #.  and when they are disallowed, how does user space discover that fact?
9001 #. type: Plain text
9002 #: build/C/man2/ptrace.2:284
9003 #, fuzzy
9004 #| msgid ""
9005 #| "Copies the child's general purpose or floating-point registers, "
9006 #| "respectively, from location I<data> in the parent.  As for "
9007 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
9008 #| "disallowed.  (I<addr> is ignored.)"
9009 msgid ""
9010 "Modify the tracee's general-purpose or floating-point registers, "
9011 "respectively, from the address I<data> in the tracer.  As for "
9012 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
9013 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
9014 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
9015 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
9016 "B<PTRACE_SETFPREGS> are not present on all architectures."
9017 msgstr ""
9018 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
9019 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
9020 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
9021
9022 #. type: TP
9023 #: build/C/man2/ptrace.2:284
9024 #, no-wrap
9025 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9026 msgstr " B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9027
9028 #. type: Plain text
9029 #: build/C/man2/ptrace.2:293
9030 msgid ""
9031 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
9032 "analogous to B<PTRACE_GETREGSET>."
9033 msgstr ""
9034
9035 #. type: TP
9036 #: build/C/man2/ptrace.2:293
9037 #, no-wrap
9038 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
9039 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
9040
9041 #. type: Plain text
9042 #: build/C/man2/ptrace.2:305
9043 #, fuzzy
9044 #| msgid ""
9045 #| "Retrieve information about the signal that caused the stop.  Copies a "
9046 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
9047 #| "I<data> in the parent.  (I<addr> is ignored.)"
9048 msgid ""
9049 "Retrieve information about the signal that caused the stop.  Copy a "
9050 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
9051 "I<data> in the tracer.  (I<addr> is ignored.)"
9052 msgstr ""
9053 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
9054 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
9055 "る。 (I<addr> は無視される。)"
9056
9057 #. type: TP
9058 #: build/C/man2/ptrace.2:305
9059 #, no-wrap
9060 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
9061 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
9062
9063 #. type: Plain text
9064 #: build/C/man2/ptrace.2:321
9065 #, fuzzy
9066 #| msgid ""
9067 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
9068 #| "I<data> in the parent to the child.  This will only affect signals that "
9069 #| "would normally be delivered to the child and were caught by the tracer.  "
9070 #| "It may be difficult to tell these normal signals from synthetic signals "
9071 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
9072 msgid ""
9073 "Set signal information: copy a I<siginfo_t> structure from the address "
9074 "I<data> in the tracer to the tracee.  This will affect only signals that "
9075 "would normally be delivered to the tracee and were caught by the tracer.  It "
9076 "may be difficult to tell these normal signals from synthetic signals "
9077 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
9078 msgstr ""
9079 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
9080 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
9081 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
9082 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
9083 "かもしれない。 (I<addr> は無視される。)"
9084
9085 #. type: TP
9086 #: build/C/man2/ptrace.2:321
9087 #, no-wrap
9088 msgid "B<PTRACE_PEEKSIGINFO> (since Linux 3.10)"
9089 msgstr "B<PTRACE_PEEKSIGINFO> (Linux 3.10 以降)"
9090
9091 #.  commit 84c751bd4aebbaae995fe32279d3dba48327bad4
9092 #. type: Plain text
9093 #: build/C/man2/ptrace.2:347
9094 msgid ""
9095 "Retrieve I<siginfo_t> structures without removing signals from a queue.  "
9096 "I<addr> points to a I<ptrace_peeksiginfo_args> structure that specifies the "
9097 "ordinal position from which copying of signals should start, and the number "
9098 "of signals to copy.  I<siginfo_t> structures are copied into the buffer "
9099 "pointed to by I<data>.  The return value contains the number of copied "
9100 "signals (zero indicates that there is no signal corresponding to the "
9101 "specified ordinal position).  Within the returned I<siginfo> structures, the "
9102 "I<si_code> field includes information (B<__SI_CHLD>, B<__SI_FAULT>, etc.) "
9103 "that are not otherwise exposed to user space."
9104 msgstr ""
9105
9106 #. type: Plain text
9107 #: build/C/man2/ptrace.2:356
9108 #, no-wrap
9109 msgid ""
9110 "struct ptrace_peeksiginfo_args {\n"
9111 "    u64 off;    /* Ordinal position in queue at which\n"
9112 "                   to start copying signals */\n"
9113 "    u32 flags;  /* PTRACE_PEEKSIGINFO_SHARED or 0 */\n"
9114 "    s32 nr;     /* Number of signals to copy */\n"
9115 "};\n"
9116 msgstr ""
9117
9118 #. type: Plain text
9119 #: build/C/man2/ptrace.2:363
9120 msgid ""
9121 "Currently, there is only one flag, B<PTRACE_PEEKSIGINFO_SHARED>, for dumping "
9122 "signals from the process-wide signal queue.  If this flag is not set, "
9123 "signals are read from the per-thread queue of the specified thread."
9124 msgstr ""
9125
9126 #. type: TP
9127 #: build/C/man2/ptrace.2:365
9128 #, no-wrap
9129 msgid "B<PTRACE_GETSIGMASK> (since Linux 3.11)"
9130 msgstr "B<PTRACE_GETSIGMASK> (Linux 3.11 以降)"
9131
9132 #.  commit 29000caecbe87b6b66f144f72111f0d02fbbf0c1
9133 #. type: Plain text
9134 #: build/C/man2/ptrace.2:380
9135 msgid ""
9136 "Place a copy of the mask of blocked signals (see B<sigprocmask>(2))  in the "
9137 "buffer pointed to by I<data>, which should be a pointer to a buffer of type "
9138 "I<sigset_t>.  The I<addr> argument contains the size of the buffer pointed "
9139 "to by I<data> (i.e., I<sizeof(sigset_t)>)."
9140 msgstr ""
9141
9142 #. type: TP
9143 #: build/C/man2/ptrace.2:380
9144 #, no-wrap
9145 msgid "B<PTRACE_SETSIGMASK> (since Linux 3.11)"
9146 msgstr "B<PTRACE_SETSIGMASK> (Linux 3.11 以降)"
9147
9148 #. type: Plain text
9149 #: build/C/man2/ptrace.2:394
9150 msgid ""
9151 "Change the mask of blocked signals (see B<sigprocmask>(2))  to the value "
9152 "specified in the buffer pointed to by I<data>, which should be a pointer to "
9153 "a buffer of type I<sigset_t>.  The I<addr> argument contains the size of the "
9154 "buffer pointed to by I<data> (i.e., I<sizeof(sigset_t)>)."
9155 msgstr ""
9156
9157 #. type: TP
9158 #: build/C/man2/ptrace.2:394
9159 #, no-wrap
9160 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
9161 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
9162
9163 #. type: Plain text
9164 #: build/C/man2/ptrace.2:403
9165 msgid ""
9166 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
9167 "interpreted as a bit mask of options, which are specified by the following "
9168 "flags:"
9169 msgstr ""
9170 "I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視される)。 "
9171 "I<data> はオプションのビットマスクとして解釈され、 オプションには以下のフラグ"
9172 "を指定できる:"
9173
9174 #. type: TP
9175 #: build/C/man2/ptrace.2:404
9176 #, no-wrap
9177 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9178 msgstr " B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9179
9180 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
9181 #. type: Plain text
9182 #: build/C/man2/ptrace.2:412
9183 msgid ""
9184 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
9185 "if the tracer exits.  This option is useful for ptrace jailers that want to "
9186 "ensure that tracees can never escape the tracer's control."
9187 msgstr ""
9188
9189 #. type: TP
9190 #: build/C/man2/ptrace.2:412
9191 #, no-wrap
9192 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
9193 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
9194
9195 #. type: Plain text
9196 #: build/C/man2/ptrace.2:429
9197 #, fuzzy
9198 #| msgid ""
9199 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
9200 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9201 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
9202 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9203 msgid ""
9204 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
9205 "newly cloned process, which will start with a B<SIGSTOP>, or "
9206 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9207 "tracer will return a I<status> value such that"
9208 msgstr ""
9209 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
9210 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
9211 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9212 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9213
9214 #. type: Plain text
9215 #: build/C/man2/ptrace.2:432
9216 #, no-wrap
9217 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9218 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9219
9220 #. type: Plain text
9221 #: build/C/man2/ptrace.2:436 build/C/man2/ptrace.2:522
9222 #: build/C/man2/ptrace.2:555
9223 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9224 msgstr "新規のプロセスの PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9225
9226 #. type: Plain text
9227 #: build/C/man2/ptrace.2:457
9228 #, fuzzy
9229 #| msgid ""
9230 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
9231 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9232 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
9233 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
9234 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
9235 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
9236 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
9237 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
9238 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
9239 msgid ""
9240 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
9241 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
9242 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
9243 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
9244 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
9245 msgstr ""
9246 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
9247 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
9248 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
9249 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
9250 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
9251 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
9252 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
9253 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
9254 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
9255
9256 #. type: TP
9257 #: build/C/man2/ptrace.2:457
9258 #, no-wrap
9259 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
9260 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
9261
9262 #. type: Plain text
9263 #: build/C/man2/ptrace.2:466
9264 msgid ""
9265 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
9266 "will return a I<status> value such that"
9267 msgstr ""
9268
9269 #. type: Plain text
9270 #: build/C/man2/ptrace.2:469
9271 #, no-wrap
9272 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9273 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9274
9275 #. type: Plain text
9276 #: build/C/man2/ptrace.2:475
9277 msgid ""
9278 "If the execing thread is not a thread group leader, the thread ID is reset "
9279 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
9280 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
9281 msgstr ""
9282
9283 #. type: TP
9284 #: build/C/man2/ptrace.2:475
9285 #, no-wrap
9286 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
9287 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
9288
9289 #. type: Plain text
9290 #: build/C/man2/ptrace.2:483
9291 msgid ""
9292 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
9293 "I<status> value such that"
9294 msgstr ""
9295
9296 #. type: Plain text
9297 #: build/C/man2/ptrace.2:486
9298 #, no-wrap
9299 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9300 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9301
9302 #. type: Plain text
9303 #: build/C/man2/ptrace.2:490
9304 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
9305 msgstr ""
9306
9307 #. type: Plain text
9308 #: build/C/man2/ptrace.2:498
9309 #, fuzzy
9310 #| msgid ""
9311 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
9312 #| "8>.  The child's exit status can be retrieved with "
9313 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
9314 #| "when registers are still available, allowing the tracer to see where the "
9315 #| "exit occurred, whereas the normal exit notification is done after the "
9316 #| "process is finished exiting.  Even though context is available, the "
9317 #| "tracer cannot prevent the exit from happening at this point."
9318 msgid ""
9319 "The tracee is stopped early during process exit, when registers are still "
9320 "available, allowing the tracer to see where the exit occurred, whereas the "
9321 "normal exit notification is done after the process is finished exiting.  "
9322 "Even though context is available, the tracer cannot prevent the exit from "
9323 "happening at this point."
9324 msgstr ""
9325 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
9326 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
9327 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
9328 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
9329 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
9330 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
9331 "できない。"
9332
9333 #. type: TP
9334 #: build/C/man2/ptrace.2:498
9335 #, no-wrap
9336 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
9337 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
9338
9339 #. type: Plain text
9340 #: build/C/man2/ptrace.2:515
9341 #, fuzzy
9342 #| msgid ""
9343 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
9344 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9345 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
9346 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9347 msgid ""
9348 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
9349 "newly forked process, which will start with a B<SIGSTOP>, or "
9350 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9351 "tracer will return a I<status> value such that"
9352 msgstr ""
9353 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
9354 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
9355 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9356 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9357
9358 #. type: Plain text
9359 #: build/C/man2/ptrace.2:518
9360 #, no-wrap
9361 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9362 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9363
9364 #. type: TP
9365 #: build/C/man2/ptrace.2:522
9366 #, no-wrap
9367 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
9368 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
9369
9370 #. type: Plain text
9371 #: build/C/man2/ptrace.2:531
9372 #, fuzzy
9373 #| msgid ""
9374 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
9375 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
9376 #| "the difference between normal traps and those caused by a syscall.  "
9377 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
9378 msgid ""
9379 "When delivering system call traps, set bit 7 in the signal number (i.e., "
9380 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
9381 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
9382 "may not work on all architectures.)"
9383 msgstr ""
9384 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
9385 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
9386 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
9387 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
9388
9389 #. type: TP
9390 #: build/C/man2/ptrace.2:531
9391 #, no-wrap
9392 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
9393 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
9394
9395 #. type: Plain text
9396 #: build/C/man2/ptrace.2:548
9397 #, fuzzy
9398 #| msgid ""
9399 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
9400 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9401 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
9402 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9403 msgid ""
9404 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
9405 "newly vforked process, which will start with a B<SIGSTOP>, or "
9406 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9407 "tracer will return a I<status> value such that"
9408 msgstr ""
9409 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
9410 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
9411 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9412 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9413
9414 #. type: Plain text
9415 #: build/C/man2/ptrace.2:551
9416 #, no-wrap
9417 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9418 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9419
9420 #. type: TP
9421 #: build/C/man2/ptrace.2:555
9422 #, no-wrap
9423 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
9424 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
9425
9426 #. type: Plain text
9427 #: build/C/man2/ptrace.2:564
9428 msgid ""
9429 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
9430 "by the tracer will return a I<status> value such that"
9431 msgstr ""
9432
9433 #. type: Plain text
9434 #: build/C/man2/ptrace.2:567
9435 #, no-wrap
9436 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
9437 msgstr ""
9438
9439 #. type: Plain text
9440 #: build/C/man2/ptrace.2:571
9441 msgid ""
9442 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
9443 "B<PTRACE_GETEVENTMSG>."
9444 msgstr ""
9445
9446 #. type: TP
9447 #: build/C/man2/ptrace.2:571
9448 #, no-wrap
9449 msgid "B<PTRACE_O_TRACESECCOMP> (since Linux 3.5)"
9450 msgstr "B<PTRACE_O_TRACESECCOMP> (Linux 3.5 以降)"
9451
9452 #. type: Plain text
9453 #: build/C/man2/ptrace.2:582
9454 #, fuzzy
9455 #| msgid ""
9456 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
9457 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
9458 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
9459 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9460 msgid ""
9461 "Stop the tracee when a B<seccomp>(2)  B<SECCOMP_RET_TRACE> rule is "
9462 "triggered.  A B<waitpid>(2)  by the tracer will return a I<status> value "
9463 "such that"
9464 msgstr ""
9465 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
9466 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
9467 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
9468 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9469
9470 #. type: Plain text
9471 #: build/C/man2/ptrace.2:585
9472 #, no-wrap
9473 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n"
9474 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n"
9475
9476 #. type: Plain text
9477 #: build/C/man2/ptrace.2:595
9478 msgid ""
9479 "While this triggers a B<PTRACE_EVENT> stop, it is similar to a syscall-enter-"
9480 "stop, in that the tracee has not yet entered the syscall that seccomp "
9481 "triggered on.  The seccomp event message data (from the B<SECCOMP_RET_DATA> "
9482 "portion of the seccomp filter rule) can be retrieved with "
9483 "B<PTRACE_GETEVENTMSG>."
9484 msgstr ""
9485
9486 #. type: TP
9487 #: build/C/man2/ptrace.2:596
9488 #, no-wrap
9489 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
9490 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
9491
9492 #. type: Plain text
9493 #: build/C/man2/ptrace.2:623
9494 #, fuzzy
9495 #| msgid ""
9496 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
9497 #| "just happened, placing it in the location I<data> in the parent.  For "
9498 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
9499 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
9500 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
9501 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
9502 #| "is ignored.)"
9503 msgid ""
9504 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
9505 "just happened, placing it at the address I<data> in the tracer.  For "
9506 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
9507 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
9508 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  For "
9509 "B<PTRACE_EVENT_SECCOMP>, this is the B<seccomp>(2)  filter's "
9510 "B<SECCOMP_RET_DATA> associated with the triggered rule.  (I<addr> is "
9511 "ignored.)"
9512 msgstr ""
9513 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
9514 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
9515 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
9516 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
9517 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
9518 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
9519
9520 #. type: TP
9521 #: build/C/man2/ptrace.2:623
9522 #, no-wrap
9523 msgid "B<PTRACE_CONT>"
9524 msgstr "B<PTRACE_CONT>"
9525
9526 #. type: Plain text
9527 #: build/C/man2/ptrace.2:635
9528 #, fuzzy
9529 #| msgid ""
9530 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
9531 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
9532 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
9533 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
9534 #| "is ignored.)"
9535 msgid ""
9536 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
9537 "interpreted as the number of a signal to be delivered to the tracee; "
9538 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
9539 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
9540 "is ignored.)"
9541 msgstr ""
9542 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
9543 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
9544 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
9545 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
9546 "は無視される。)"
9547
9548 #. type: TP
9549 #: build/C/man2/ptrace.2:635
9550 #, no-wrap
9551 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9552 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9553
9554 #. type: Plain text
9555 #: build/C/man2/ptrace.2:659
9556 #, fuzzy
9557 #| msgid ""
9558 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
9559 #| "child to be stopped at the next entry to or exit from a system call, or "
9560 #| "after execution of a single instruction, respectively.  (The child will "
9561 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
9562 #| "perspective, the child will appear to have been stopped by receipt of a "
9563 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
9564 #| "inspect the arguments to the system call at the first stop, then do "
9565 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
9566 #| "at the second stop.  The I<data> argument is treated as for "
9567 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
9568 msgid ""
9569 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
9570 "to be stopped at the next entry to or exit from a system call, or after "
9571 "execution of a single instruction, respectively.  (The tracee will also, as "
9572 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
9573 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
9574 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
9575 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
9576 "inspect the return value of the system call at the second stop.  The I<data> "
9577 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
9578 msgstr ""
9579 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
9580 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
9581 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
9582 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
9583 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
9584 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
9585 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
9586 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
9587 "同じ様に解釈される。 (I<addr> は無視される。)"
9588
9589 #. type: TP
9590 #: build/C/man2/ptrace.2:659
9591 #, no-wrap
9592 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
9593 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
9594
9595 #.  As at 3.7
9596 #. type: Plain text
9597 #: build/C/man2/ptrace.2:680
9598 #, fuzzy
9599 #| msgid ""
9600 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
9601 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
9602 #| "but also singlestep if not a syscall.  This call is used by programs like "
9603 #| "User Mode Linux that want to emulate all the child's system calls.  The "
9604 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
9605 #| "not supported on all architectures.)"
9606 msgid ""
9607 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
9608 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
9609 "but also singlestep if not a system call.  This call is used by programs "
9610 "like User Mode Linux that want to emulate all the tracee's system calls.  "
9611 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
9612 "is ignored.  These requests are currently supported only on x86."
9613 msgstr ""
9614 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
9615 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
9616 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
9617 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
9618 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
9619 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
9620 "ポートされているわけではない。)"
9621
9622 #. type: TP
9623 #: build/C/man2/ptrace.2:680
9624 #, no-wrap
9625 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
9626 msgstr " B<PTRACE_LISTEN> (since Linux 3.4)"
9627
9628 #. type: Plain text
9629 #: build/C/man2/ptrace.2:691
9630 msgid ""
9631 "Restart the stopped tracee, but prevent it from executing.  The resulting "
9632 "state of the tracee is similar to a process which has been stopped by a "
9633 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
9634 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
9635 "by B<PTRACE_SEIZE>."
9636 msgstr ""
9637
9638 #. type: TP
9639 #: build/C/man2/ptrace.2:691
9640 #, no-wrap
9641 msgid "B<PTRACE_KILL>"
9642 msgstr "B<PTRACE_KILL>"
9643
9644 #. type: Plain text
9645 #: build/C/man2/ptrace.2:700
9646 #, fuzzy
9647 #| msgid ""
9648 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
9649 #| "ignored.)"
9650 msgid ""
9651 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
9652 "ignored.)"
9653 msgstr ""
9654 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
9655
9656 #.  [Note from Denys Vlasenko:
9657 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
9658 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
9659 #. type: Plain text
9660 #: build/C/man2/ptrace.2:719
9661 msgid ""
9662 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
9663 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
9664 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
9665 "may not work (i.e., may complete successfully but won't kill the tracee).  "
9666 "By contrast, sending a B<SIGKILL> directly has no such limitation."
9667 msgstr ""
9668
9669 #. type: TP
9670 #: build/C/man2/ptrace.2:719
9671 #, no-wrap
9672 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
9673 msgstr " B<PTRACE_INTERRUPT> (since Linux 3.4)"
9674
9675 #. type: Plain text
9676 #: build/C/man2/ptrace.2:747
9677 msgid ""
9678 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
9679 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
9680 "exit-stop is reported.  (The interrupted system call is restarted when the "
9681 "tracee is restarted.)  If the tracee was already stopped by a signal and "
9682 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
9683 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
9684 "is generated at the same time (for example, if a signal is sent to the "
9685 "tracee), this ptrace-stop happens.  If none of the above applies (for "
9686 "example, if the tracee is running in user space), it stops with "
9687 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
9688 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
9689 msgstr ""
9690
9691 #. type: TP
9692 #: build/C/man2/ptrace.2:747
9693 #, no-wrap
9694 msgid "B<PTRACE_ATTACH>"
9695 msgstr "B<PTRACE_ATTACH>"
9696
9697 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
9698 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
9699 #.          Basically, it's not true for any Linux in practical use.
9700 #.  ; the behavior of the tracee is as if it had done a
9701 #.  .BR PTRACE_TRACEME .
9702 #.  The calling process actually becomes the parent of the tracee
9703 #.  process for most purposes (e.g., it will receive
9704 #.  notification of tracee events and appears in
9705 #.  .BR ps (1)
9706 #.  output as the tracee's parent), but a
9707 #.  .BR getppid (2)
9708 #.  by the tracee will still return the PID of the original parent.
9709 #. type: Plain text
9710 #: build/C/man2/ptrace.2:775
9711 msgid ""
9712 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9713 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
9714 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
9715 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
9716 "additional information.  (I<addr> and I<data> are ignored.)"
9717 msgstr ""
9718
9719 #. type: TP
9720 #: build/C/man2/ptrace.2:775
9721 #, no-wrap
9722 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
9723 msgstr " B<PTRACE_SEIZE> (since Linux 3.4)"
9724
9725 #. type: Plain text
9726 #: build/C/man2/ptrace.2:795
9727 msgid ""
9728 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9729 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
9730 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
9731 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
9732 "mask of ptrace options to activate immediately."
9733 msgstr ""
9734
9735 #. type: TP
9736 #: build/C/man2/ptrace.2:795
9737 #, no-wrap
9738 msgid "B<PTRACE_DETACH>"
9739 msgstr "B<PTRACE_DETACH>"
9740
9741 #. type: Plain text
9742 #: build/C/man2/ptrace.2:804
9743 #, fuzzy
9744 #| msgid ""
9745 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
9746 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
9747 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
9748 #| "a traced child can be detached in this way regardless of which method was "
9749 #| "used to initiate tracing.  (I<addr> is ignored.)"
9750 msgid ""
9751 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
9752 "Under Linux, a tracee can be detached in this way regardless of which method "
9753 "was used to initiate tracing.  (I<addr> is ignored.)"
9754 msgstr ""
9755 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
9756 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
9757 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
9758 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
9759 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
9760
9761 #. type: SS
9762 #: build/C/man2/ptrace.2:804
9763 #, no-wrap
9764 msgid "Death under ptrace"
9765 msgstr ""
9766
9767 #. type: Plain text
9768 #: build/C/man2/ptrace.2:813
9769 msgid ""
9770 "When a (possibly multithreaded) process receives a killing signal (one whose "
9771 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
9772 "process), all threads exit.  Tracees report their death to their tracer(s).  "
9773 "Notification of this event is delivered via B<waitpid>(2)."
9774 msgstr ""
9775
9776 #. type: Plain text
9777 #: build/C/man2/ptrace.2:822
9778 msgid ""
9779 "Note that the killing signal will first cause signal-delivery-stop (on one "
9780 "tracee only), and only after it is injected by the tracer (or after it was "
9781 "dispatched to a thread which isn't traced), will death from the signal "
9782 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
9783 "delivery-stop\" is explained below.)"
9784 msgstr ""
9785
9786 #. type: Plain text
9787 #: build/C/man2/ptrace.2:834
9788 msgid ""
9789 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
9790 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
9791 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
9792 "B<SIGKILL> always kills the process (all its threads), even if some threads "
9793 "of the process are ptraced."
9794 msgstr ""
9795
9796 #. type: Plain text
9797 #: build/C/man2/ptrace.2:839
9798 msgid ""
9799 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
9800 "Other threads are not affected."
9801 msgstr ""
9802
9803 #. type: Plain text
9804 #: build/C/man2/ptrace.2:843
9805 msgid ""
9806 "When any thread executes B<exit_group>(2), every tracee in its thread group "
9807 "reports its death to its tracer."
9808 msgstr ""
9809
9810 #. type: Plain text
9811 #: build/C/man2/ptrace.2:857
9812 msgid ""
9813 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
9814 "before actual death.  This applies to exits via B<exit>(2), "
9815 "B<exit_group>(2), and signal deaths (except B<SIGKILL>), and when threads "
9816 "are torn down on B<execve>(2)  in a multithreaded process."
9817 msgstr ""
9818
9819 #. type: Plain text
9820 #: build/C/man2/ptrace.2:882
9821 msgid ""
9822 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
9823 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
9824 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
9825 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
9826 "exists but is not ptrace-stopped (for commands which require a stopped "
9827 "tracee), or if it is not traced by the process which issued the ptrace "
9828 "call.  The tracer needs to keep track of the stopped/running state of the "
9829 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
9830 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
9831 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
9832 "tracee's death status if a ptrace operation returned B<ESRCH>.  "
9833 "I<waitpid(WNOHANG)> may return 0 instead.  In other words, the tracee may be "
9834 "\"not yet fully dead\", but already refusing ptrace requests."
9835 msgstr ""
9836
9837 #. type: Plain text
9838 #: build/C/man2/ptrace.2:896
9839 msgid ""
9840 "The tracer can't assume that the tracee I<always> ends its life by reporting "
9841 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
9842 "does not occur.  For example, if a thread other than thread group leader "
9843 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
9844 "any subsequent ptrace stops will be reported under the thread group leader's "
9845 "PID."
9846 msgstr ""
9847
9848 #. type: SS
9849 #: build/C/man2/ptrace.2:896
9850 #, no-wrap
9851 msgid "Stopped states"
9852 msgstr ""
9853
9854 #. type: Plain text
9855 #: build/C/man2/ptrace.2:918
9856 msgid ""
9857 "A tracee can be in two states: running or stopped.  For the purposes of "
9858 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
9859 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
9860 "tracee is blocked for a long time.  The state of the tracee after "
9861 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
9862 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
9863 "notifications), but it also may be considered \"stopped\" because it is not "
9864 "executing instructions (is not scheduled), and if it was in group-stop "
9865 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
9866 "received."
9867 msgstr ""
9868
9869 #. type: Plain text
9870 #: build/C/man2/ptrace.2:922
9871 msgid ""
9872 "There are many kinds of states when the tracee is stopped, and in ptrace "
9873 "discussions they are often conflated.  Therefore, it is important to use "
9874 "precise terms."
9875 msgstr ""
9876
9877 #. type: Plain text
9878 #: build/C/man2/ptrace.2:933
9879 msgid ""
9880 "In this manual page, any stopped state in which the tracee is ready to "
9881 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
9882 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
9883 "I<syscall-stop>, and so on.  These stopped states are described in detail "
9884 "below."
9885 msgstr ""
9886
9887 #. type: Plain text
9888 #: build/C/man2/ptrace.2:938
9889 msgid ""
9890 "When the running tracee enters ptrace-stop, it notifies its tracer using "
9891 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
9892 "manual page assumes that the tracer waits with:"
9893 msgstr ""
9894
9895 #. type: Plain text
9896 #: build/C/man2/ptrace.2:940
9897 #, no-wrap
9898 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
9899 msgstr ""
9900
9901 #.  Denys Vlasenko:
9902 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
9903 #.      I am not 100% sure there aren't ugly corner cases.) Are the
9904 #.      rules different if user wants to use waitid? Will waitid require
9905 #.      WEXITED?
9906 #. type: Plain text
9907 #: build/C/man2/ptrace.2:952
9908 msgid ""
9909 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
9910 "and I<WIFSTOPPED(status)> true."
9911 msgstr ""
9912
9913 #. type: Plain text
9914 #: build/C/man2/ptrace.2:960
9915 msgid ""
9916 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
9917 "but implies their functionality."
9918 msgstr ""
9919
9920 #. type: Plain text
9921 #: build/C/man2/ptrace.2:967
9922 msgid ""
9923 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
9924 "recommended: the \"continued\" state is per-process and consuming it can "
9925 "confuse the real parent of the tracee."
9926 msgstr ""
9927
9928 #. type: Plain text
9929 #: build/C/man2/ptrace.2:975
9930 msgid ""
9931 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
9932 "results available yet\")  even if the tracer knows there should be a "
9933 "notification.  Example:"
9934 msgstr ""
9935
9936 #. type: Plain text
9937 #: build/C/man2/ptrace.2:984
9938 #, no-wrap
9939 msgid ""
9940 "    errno = 0;\n"
9941 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
9942 "    if (errno == ESRCH) {\n"
9943 "        /* tracee is dead */\n"
9944 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
9945 "        /* r can still be 0 here! */\n"
9946 "    }\n"
9947 msgstr ""
9948
9949 #. type: Plain text
9950 #: build/C/man2/ptrace.2:1007
9951 msgid ""
9952 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
9953 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
9954 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
9955 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
9956 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the "
9957 "I<WSTOPSIG(status)> macro can't be used to perform this examination, because "
9958 "it returns the value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
9959 msgstr ""
9960
9961 #. type: SS
9962 #: build/C/man2/ptrace.2:1007
9963 #, no-wrap
9964 msgid "Signal-delivery-stop"
9965 msgstr ""
9966
9967 #. type: Plain text
9968 #: build/C/man2/ptrace.2:1027
9969 msgid ""
9970 "When a (possibly multithreaded) process receives any signal except "
9971 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
9972 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
9973 "can be explicitly selected by the caller.)  If the selected thread is "
9974 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
9975 "yet delivered to the process, and can be suppressed by the tracer.  If the "
9976 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
9977 "the next ptrace restart request.  This second step of signal delivery is "
9978 "called I<signal injection> in this manual page.  Note that if the signal is "
9979 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
9980 "with the usual exception that B<SIGSTOP> can't be blocked."
9981 msgstr ""
9982
9983 #. type: Plain text
9984 #: build/C/man2/ptrace.2:1041
9985 msgid ""
9986 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
9987 "with I<WIFSTOPPED(status)> true, with the signal returned by "
9988 "I<WSTOPSIG(status)>.  If the signal is B<SIGTRAP>, this may be a different "
9989 "kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below "
9990 "for details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be "
9991 "a group-stop; see below."
9992 msgstr ""
9993
9994 #. type: SS
9995 #: build/C/man2/ptrace.2:1041
9996 #, no-wrap
9997 msgid "Signal injection and suppression"
9998 msgstr ""
9999
10000 #. type: Plain text
10001 #: build/C/man2/ptrace.2:1044
10002 msgid ""
10003 "After signal-delivery-stop is observed by the tracer, the tracer should "
10004 "restart the tracee with the call"
10005 msgstr ""
10006
10007 #. type: Plain text
10008 #: build/C/man2/ptrace.2:1046
10009 #, no-wrap
10010 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
10011 msgstr ""
10012
10013 #. type: Plain text
10014 #: build/C/man2/ptrace.2:1059
10015 msgid ""
10016 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
10017 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
10018 "delivered.  This operation is called I<signal injection> in this manual "
10019 "page, to distinguish it from signal-delivery-stop."
10020 msgstr ""
10021
10022 #. type: Plain text
10023 #: build/C/man2/ptrace.2:1065
10024 msgid ""
10025 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
10026 "tracer can cause a different signal to be injected."
10027 msgstr ""
10028
10029 #. type: Plain text
10030 #: build/C/man2/ptrace.2:1081
10031 msgid ""
10032 "Note that a suppressed signal still causes system calls to return "
10033 "prematurely.  In this case, system calls will be restarted: the tracer will "
10034 "observe the tracee to reexecute the interrupted system call (or "
10035 "B<restart_syscall>(2)  system call for a few system calls which use a "
10036 "different mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  "
10037 "Even system calls (such as B<poll>(2))  which are not restartable after "
10038 "signal are restarted after signal is suppressed; however, kernel bugs exist "
10039 "which cause some system calls to fail with B<EINTR> even though no "
10040 "observable signal is injected to the tracee."
10041 msgstr ""
10042
10043 #. type: Plain text
10044 #: build/C/man2/ptrace.2:1092
10045 msgid ""
10046 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
10047 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
10048 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
10049 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
10050 "instead."
10051 msgstr ""
10052
10053 #. type: Plain text
10054 #: build/C/man2/ptrace.2:1099
10055 msgid ""
10056 "The fact that signal injection requests may be ignored when restarting the "
10057 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
10058 "confusion among ptrace users.  One typical scenario is that the tracer "
10059 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
10060 "tracee with"
10061 msgstr ""
10062
10063 #. type: Plain text
10064 #: build/C/man2/ptrace.2:1101
10065 #, no-wrap
10066 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
10067 msgstr ""
10068
10069 #. type: Plain text
10070 #: build/C/man2/ptrace.2:1107
10071 msgid ""
10072 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
10073 "the tracee continues to run."
10074 msgstr ""
10075
10076 #. type: Plain text
10077 #: build/C/man2/ptrace.2:1127
10078 msgid ""
10079 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
10080 "group-stopped process.  This side effect happens before signal-delivery-"
10081 "stop.  The tracer can't suppress this side effect (it can only suppress "
10082 "signal injection, which only causes the B<SIGCONT> handler to not be "
10083 "executed in the tracee, if such a handler is installed).  In fact, waking up "
10084 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
10085 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
10086 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
10087 "by the tracee after it was sent."
10088 msgstr ""
10089
10090 #. type: Plain text
10091 #: build/C/man2/ptrace.2:1131
10092 msgid ""
10093 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
10094 "side effect happens after signal injection, and therefore can be suppressed "
10095 "by the tracer."
10096 msgstr ""
10097
10098 #
10099 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
10100 #.  there is:
10101 #.              /* The debugger continued.  Ignore SIGSTOP.  */
10102 #.              if (signr == SIGSTOP)
10103 #.                      continue;
10104 #. type: Plain text
10105 #: build/C/man2/ptrace.2:1141
10106 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
10107 msgstr ""
10108
10109 #. type: Plain text
10110 #: build/C/man2/ptrace.2:1158
10111 msgid ""
10112 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
10113 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
10114 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
10115 "I<si_signo> field and the I<sig> parameter in the restarting command must "
10116 "match, otherwise the result is undefined."
10117 msgstr ""
10118
10119 #. type: SS
10120 #: build/C/man2/ptrace.2:1158
10121 #, no-wrap
10122 msgid "Group-stop"
10123 msgstr ""
10124
10125 #. type: Plain text
10126 #: build/C/man2/ptrace.2:1170
10127 msgid ""
10128 "When a (possibly multithreaded) process receives a stopping signal, all "
10129 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
10130 "that the stopping signal will first cause signal-delivery-stop (on one "
10131 "tracee only), and only after it is injected by the tracer (or after it was "
10132 "dispatched to a thread which isn't traced), will group-stop be initiated on "
10133 "I<all> tracees within the multithreaded process.  As usual, every tracee "
10134 "reports its group-stop separately to the corresponding tracer."
10135 msgstr ""
10136
10137 #. type: Plain text
10138 #: build/C/man2/ptrace.2:1179
10139 msgid ""
10140 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
10141 "I<WIFSTOPPED(status)> true, with the stopping signal available via "
10142 "I<WSTOPSIG(status)>.  The same result is returned by some other classes of "
10143 "ptrace-stops, therefore the recommended practice is to perform the call"
10144 msgstr ""
10145
10146 #. type: Plain text
10147 #: build/C/man2/ptrace.2:1181
10148 #, no-wrap
10149 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
10150 msgstr ""
10151
10152 #. type: Plain text
10153 #: build/C/man2/ptrace.2:1202
10154 msgid ""
10155 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
10156 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
10157 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
10158 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
10159 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
10160 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
10161 "the tracee.)"
10162 msgstr ""
10163
10164 #. type: Plain text
10165 #: build/C/man2/ptrace.2:1212
10166 msgid ""
10167 "If tracee was attached using B<PTRACE_SEIZE>, group-stop is indicated by "
10168 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
10169 "allows detection of group-stops without requiring an extra "
10170 "B<PTRACE_GETSIGINFO> call."
10171 msgstr ""
10172
10173 #. type: Plain text
10174 #: build/C/man2/ptrace.2:1221
10175 msgid ""
10176 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
10177 "it restarts or kills it, the tracee will not run, and will not send "
10178 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
10179 "enters into another B<waitpid>(2)  call."
10180 msgstr ""
10181
10182 #. type: Plain text
10183 #: build/C/man2/ptrace.2:1235
10184 msgid ""
10185 "The kernel behavior described in the previous paragraph causes a problem "
10186 "with transparent handling of stopping signals.  If the tracer restarts the "
10187 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
10188 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
10189 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
10190 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
10191 "signals to have no effect on the tracee."
10192 msgstr ""
10193
10194 #. type: Plain text
10195 #: build/C/man2/ptrace.2:1246
10196 msgid ""
10197 "Since Linux 3.4, there is a method to overcome this problem: instead of "
10198 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
10199 "in a way where it does not execute, but waits for a new event which it can "
10200 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
10201 msgstr ""
10202
10203 #. type: SS
10204 #: build/C/man2/ptrace.2:1246
10205 #, no-wrap
10206 msgid "PTRACE_EVENT stops"
10207 msgstr ""
10208
10209 #. type: Plain text
10210 #: build/C/man2/ptrace.2:1252
10211 msgid ""
10212 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
10213 "stops called B<PTRACE_EVENT> stops."
10214 msgstr ""
10215
10216 #. type: Plain text
10217 #: build/C/man2/ptrace.2:1266
10218 msgid ""
10219 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
10220 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
10221 "additional bit is set in the higher byte of the status word: the value "
10222 "I<statusE<gt>E<gt>8> will be"
10223 msgstr ""
10224
10225 #. type: Plain text
10226 #: build/C/man2/ptrace.2:1268
10227 #, no-wrap
10228 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
10229 msgstr ""
10230
10231 #. type: Plain text
10232 #: build/C/man2/ptrace.2:1270
10233 msgid "The following events exist:"
10234 msgstr ""
10235
10236 #. type: TP
10237 #: build/C/man2/ptrace.2:1270
10238 #, no-wrap
10239 msgid "B<PTRACE_EVENT_VFORK>"
10240 msgstr "B<PTRACE_EVENT_VFORK>"
10241
10242 #. type: Plain text
10243 #: build/C/man2/ptrace.2:1283
10244 msgid ""
10245 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10246 "flag.  When the tracee is continued after this stop, it will wait for child "
10247 "to exit/exec before continuing its execution (in other words, the usual "
10248 "behavior on B<vfork>(2))."
10249 msgstr ""
10250
10251 #. type: TP
10252 #: build/C/man2/ptrace.2:1283
10253 #, no-wrap
10254 msgid "B<PTRACE_EVENT_FORK>"
10255 msgstr "B<PTRACE_EVENT_FORK>"
10256
10257 #. type: Plain text
10258 #: build/C/man2/ptrace.2:1291
10259 msgid ""
10260 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
10261 "to B<SIGCHLD>."
10262 msgstr ""
10263
10264 #. type: TP
10265 #: build/C/man2/ptrace.2:1291
10266 #, no-wrap
10267 msgid "B<PTRACE_EVENT_CLONE>"
10268 msgstr "B<PTRACE_EVENT_CLONE>"
10269
10270 #. type: Plain text
10271 #: build/C/man2/ptrace.2:1295
10272 msgid "Stop before return from B<clone>(2)."
10273 msgstr ""
10274
10275 #. type: TP
10276 #: build/C/man2/ptrace.2:1295
10277 #, no-wrap
10278 msgid "B<PTRACE_EVENT_VFORK_DONE>"
10279 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
10280
10281 #. type: Plain text
10282 #: build/C/man2/ptrace.2:1305
10283 msgid ""
10284 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10285 "flag, but after the child unblocked this tracee by exiting or execing."
10286 msgstr ""
10287
10288 #. type: Plain text
10289 #: build/C/man2/ptrace.2:1311
10290 msgid ""
10291 "For all four stops described above, the stop occurs in the parent (i.e., the "
10292 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
10293 "to retrieve the new thread's ID."
10294 msgstr ""
10295
10296 #. type: TP
10297 #: build/C/man2/ptrace.2:1311
10298 #, no-wrap
10299 msgid "B<PTRACE_EVENT_EXEC>"
10300 msgstr "B<PTRACE_EVENT_EXEC>"
10301
10302 #. type: Plain text
10303 #: build/C/man2/ptrace.2:1318
10304 msgid ""
10305 "Stop before return from B<execve>(2).  Since Linux 3.0, "
10306 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
10307 msgstr ""
10308
10309 #. type: TP
10310 #: build/C/man2/ptrace.2:1318
10311 #, no-wrap
10312 msgid "B<PTRACE_EVENT_EXIT>"
10313 msgstr "B<PTRACE_EVENT_EXIT>"
10314
10315 #. type: Plain text
10316 #: build/C/man2/ptrace.2:1334
10317 msgid ""
10318 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
10319 "exit caused by B<execve>(2)  in a multithreaded process.  "
10320 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
10321 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
10322 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
10323 msgstr ""
10324
10325 #. type: TP
10326 #: build/C/man2/ptrace.2:1334
10327 #, no-wrap
10328 msgid "B<PTRACE_EVENT_STOP>"
10329 msgstr "B<PTRACE_EVENT_STOP>"
10330
10331 #. type: Plain text
10332 #: build/C/man2/ptrace.2:1346
10333 msgid ""
10334 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
10335 "ptrace-stop when a new child is attached (only if attached using "
10336 "B<PTRACE_SEIZE>), or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
10337 msgstr ""
10338
10339 #. type: TP
10340 #: build/C/man2/ptrace.2:1346
10341 #, no-wrap
10342 msgid "B<PTRACE_EVENT_SECCOMP>"
10343 msgstr "B<PTRACE_EVENT_SECCOMP>"
10344
10345 #. type: Plain text
10346 #: build/C/man2/ptrace.2:1357
10347 msgid ""
10348 "Stop triggered by a B<seccomp>(2)  rule on tracee syscall entry when "
10349 "B<PTRACE_O_TRACESECCOMP> has been set by the tracer.  The seccomp event "
10350 "message data (from the B<SECCOMP_RET_DATA> portion of the seccomp filter "
10351 "rule) can be retrieved with B<PTRACE_GETEVENTMSG>."
10352 msgstr ""
10353
10354 #. type: Plain text
10355 #: build/C/man2/ptrace.2:1369
10356 msgid ""
10357 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
10358 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
10359 msgstr ""
10360
10361 #. type: SS
10362 #: build/C/man2/ptrace.2:1369
10363 #, no-wrap
10364 msgid "Syscall-stops"
10365 msgstr ""
10366
10367 #. type: Plain text
10368 #: build/C/man2/ptrace.2:1382
10369 msgid ""
10370 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
10371 "enter-stop just prior to entering any system call.  If the tracer restarts "
10372 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
10373 "the system call is finished, or if it is interrupted by a signal.  (That is, "
10374 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
10375 "exit-stop; it happens I<after> syscall-exit-stop.)"
10376 msgstr ""
10377
10378 #. type: Plain text
10379 #: build/C/man2/ptrace.2:1396
10380 msgid ""
10381 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
10382 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
10383 "B<SIGKILL>, or die silently (if it is a thread group leader, the "
10384 "B<execve>(2)  happened in another thread, and that thread is not traced by "
10385 "the same tracer; this situation is discussed later)."
10386 msgstr ""
10387
10388 #. type: Plain text
10389 #: build/C/man2/ptrace.2:1411
10390 msgid ""
10391 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
10392 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and "
10393 "I<WSTOPSIG(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> "
10394 "option was set by the tracer, then I<WSTOPSIG(status)> will give the value "
10395 "I<(SIGTRAP\\ |\\ 0x80)>."
10396 msgstr ""
10397
10398 #. type: Plain text
10399 #: build/C/man2/ptrace.2:1417
10400 msgid ""
10401 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
10402 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
10403 msgstr ""
10404
10405 #. type: TP
10406 #: build/C/man2/ptrace.2:1417
10407 #, no-wrap
10408 msgid "I<si_code> E<lt>= 0"
10409 msgstr ""
10410
10411 #. type: Plain text
10412 #: build/C/man2/ptrace.2:1429
10413 msgid ""
10414 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
10415 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
10416 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
10417 "asynchronous I/O request."
10418 msgstr ""
10419
10420 #. type: TP
10421 #: build/C/man2/ptrace.2:1429
10422 #, no-wrap
10423 msgid "I<si_code> == SI_KERNEL (0x80)"
10424 msgstr ""
10425
10426 #. type: Plain text
10427 #: build/C/man2/ptrace.2:1433
10428 msgid "B<SIGTRAP> was sent by the kernel."
10429 msgstr ""
10430
10431 #. type: TP
10432 #: build/C/man2/ptrace.2:1433
10433 #, no-wrap
10434 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
10435 msgstr ""
10436
10437 #. type: Plain text
10438 #: build/C/man2/ptrace.2:1436
10439 msgid "This is a syscall-stop."
10440 msgstr ""
10441
10442 #. type: Plain text
10443 #: build/C/man2/ptrace.2:1441
10444 msgid ""
10445 "However, syscall-stops happen very often (twice per system call), and "
10446 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
10447 "expensive."
10448 msgstr ""
10449
10450 #. type: Plain text
10451 #: build/C/man2/ptrace.2:1464
10452 msgid ""
10453 "Some architectures allow the cases to be distinguished by examining "
10454 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
10455 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
10456 "syscall-exit-stop, and at this point I<rax> almost never contains -"
10457 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
10458 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
10459 "and can be detected this way.  But such detection is fragile and is best "
10460 "avoided."
10461 msgstr ""
10462
10463 #. type: Plain text
10464 #: build/C/man2/ptrace.2:1470
10465 msgid ""
10466 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
10467 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
10468 "reliable and does not incur a performance penalty."
10469 msgstr ""
10470
10471 #. type: Plain text
10472 #: build/C/man2/ptrace.2:1481
10473 msgid ""
10474 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
10475 "other by the tracer.  The tracer needs to keep track of the sequence of "
10476 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
10477 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
10478 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
10479 "kinds of ptrace-stop can occur in between."
10480 msgstr ""
10481
10482 #. type: Plain text
10483 #: build/C/man2/ptrace.2:1486
10484 msgid ""
10485 "If after syscall-enter-stop, the tracer uses a restarting command other than "
10486 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
10487 msgstr ""
10488
10489 #. type: Plain text
10490 #: build/C/man2/ptrace.2:1498
10491 msgid ""
10492 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
10493 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
10494 msgstr ""
10495
10496 #. type: SS
10497 #: build/C/man2/ptrace.2:1498
10498 #, no-wrap
10499 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
10500 msgstr ""
10501
10502 #
10503 #.  FIXME .
10504 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
10505 #.  PTRACE_SYSEMU_SINGLESTEP
10506 #. type: Plain text
10507 #: build/C/man2/ptrace.2:1504
10508 msgid "[Details of these kinds of stops are yet to be documented.]"
10509 msgstr ""
10510
10511 #. type: SS
10512 #: build/C/man2/ptrace.2:1504
10513 #, no-wrap
10514 msgid "Informational and restarting ptrace commands"
10515 msgstr ""
10516
10517 #. type: Plain text
10518 #: build/C/man2/ptrace.2:1514
10519 msgid ""
10520 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
10521 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
10522 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
10523 msgstr ""
10524
10525 #. type: Plain text
10526 #: build/C/man2/ptrace.2:1519
10527 msgid ""
10528 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
10529 "tracee using informational commands.  These commands leave the tracee in "
10530 "ptrace-stopped state:"
10531 msgstr ""
10532
10533 #. type: Plain text
10534 #: build/C/man2/ptrace.2:1531
10535 #, no-wrap
10536 msgid ""
10537 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
10538 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
10539 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
10540 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
10541 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
10542 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
10543 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
10544 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
10545 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
10546 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10547 msgstr ""
10548
10549 #. type: Plain text
10550 #: build/C/man2/ptrace.2:1543
10551 msgid ""
10552 "Note that some errors are not reported.  For example, setting signal "
10553 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
10554 "call may succeed (return 0 and not set I<errno>); querying "
10555 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
10556 "ptrace-stop is not documented as returning a meaningful event message."
10557 msgstr ""
10558
10559 #. type: Plain text
10560 #: build/C/man2/ptrace.2:1545
10561 msgid "The call"
10562 msgstr ""
10563
10564 #. type: Plain text
10565 #: build/C/man2/ptrace.2:1547
10566 #, no-wrap
10567 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10568 msgstr ""
10569
10570 #. type: Plain text
10571 #: build/C/man2/ptrace.2:1556
10572 msgid ""
10573 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
10574 "inherited by new tracees created and \"auto-attached\" via active "
10575 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
10576 "options."
10577 msgstr ""
10578
10579 #. type: Plain text
10580 #: build/C/man2/ptrace.2:1559
10581 msgid ""
10582 "Another group of commands makes the ptrace-stopped tracee run.  They have "
10583 "the form:"
10584 msgstr ""
10585
10586 #. type: Plain text
10587 #: build/C/man2/ptrace.2:1561
10588 #, no-wrap
10589 msgid "    ptrace(cmd, pid, 0, sig);\n"
10590 msgstr ""
10591
10592 #. type: Plain text
10593 #: build/C/man2/ptrace.2:1582
10594 msgid ""
10595 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
10596 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
10597 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
10598 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
10599 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
10600 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
10601 msgstr ""
10602
10603 #. type: SS
10604 #: build/C/man2/ptrace.2:1582
10605 #, no-wrap
10606 msgid "Attaching and detaching"
10607 msgstr ""
10608
10609 #. type: Plain text
10610 #: build/C/man2/ptrace.2:1584
10611 msgid "A thread can be attached to the tracer using the call"
10612 msgstr ""
10613
10614 #. type: Plain text
10615 #: build/C/man2/ptrace.2:1586
10616 #, no-wrap
10617 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
10618 msgstr ""
10619
10620 #. type: Plain text
10621 #: build/C/man2/ptrace.2:1588 build/C/man2/ptrace.2:2090
10622 msgid "or"
10623 msgstr ""
10624
10625 #. type: Plain text
10626 #: build/C/man2/ptrace.2:1590
10627 #, no-wrap
10628 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
10629 msgstr ""
10630
10631 #
10632 #.  FIXME . Describe how to attach to a thread which is already group-stopped.
10633 #. type: Plain text
10634 #: build/C/man2/ptrace.2:1614
10635 msgid ""
10636 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
10637 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
10638 "signals are concurrently sent to this thread during attach, the tracer may "
10639 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
10640 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
10641 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
10642 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
10643 "B<SIGSTOP> may be lost."
10644 msgstr ""
10645
10646 #. type: Plain text
10647 #: build/C/man2/ptrace.2:1621
10648 msgid ""
10649 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
10650 "may cause a stray B<EINTR> return from the currently executing system call "
10651 "in the tracee, as described in the \"Signal injection and suppression\" "
10652 "section."
10653 msgstr ""
10654
10655 #. type: Plain text
10656 #: build/C/man2/ptrace.2:1633
10657 msgid ""
10658 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
10659 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
10660 "after attach (or at any other time) without sending it any signals, use "
10661 "B<PTRACE_INTERRUPT> command."
10662 msgstr ""
10663
10664 #. type: Plain text
10665 #: build/C/man2/ptrace.2:1635
10666 msgid "The request"
10667 msgstr ""
10668
10669 #. type: Plain text
10670 #: build/C/man2/ptrace.2:1637
10671 #, no-wrap
10672 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
10673 msgstr ""
10674
10675 #. type: Plain text
10676 #: build/C/man2/ptrace.2:1643
10677 msgid ""
10678 "turns the calling thread into a tracee.  The thread continues to run "
10679 "(doesn't enter ptrace-stop).  A common practice is to follow the "
10680 "B<PTRACE_TRACEME> with"
10681 msgstr ""
10682
10683 #. type: Plain text
10684 #: build/C/man2/ptrace.2:1645
10685 #, no-wrap
10686 msgid "    raise(SIGSTOP);\n"
10687 msgstr ""
10688
10689 #. type: Plain text
10690 #: build/C/man2/ptrace.2:1648
10691 msgid ""
10692 "and allow the parent (which is our tracer now) to observe our signal-"
10693 "delivery-stop."
10694 msgstr ""
10695
10696 #. type: Plain text
10697 #: build/C/man2/ptrace.2:1672
10698 msgid ""
10699 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
10700 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
10701 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
10702 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
10703 "other kinds of B<clone>(2), are automatically attached to the same tracer "
10704 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
10705 "them to enter signal-delivery-stop after they exit the system call which "
10706 "created them."
10707 msgstr ""
10708
10709 #. type: Plain text
10710 #: build/C/man2/ptrace.2:1674
10711 msgid "Detaching of the tracee is performed by:"
10712 msgstr ""
10713
10714 #. type: Plain text
10715 #: build/C/man2/ptrace.2:1676
10716 #, no-wrap
10717 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
10718 msgstr ""
10719
10720 #. type: Plain text
10721 #: build/C/man2/ptrace.2:1684
10722 msgid ""
10723 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
10724 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
10725 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
10726 msgstr ""
10727
10728 #.  FIXME . Describe how to detach from a group-stopped tracee so that it
10729 #.         doesn't run, but continues to wait for SIGCONT.
10730 #. type: Plain text
10731 #: build/C/man2/ptrace.2:1708
10732 msgid ""
10733 "If the tracee is running when the tracer wants to detach it, the usual "
10734 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
10735 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
10736 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
10737 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
10738 "is that the tracee may enter other ptrace-stops and needs to be restarted "
10739 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
10740 "to be sure that the tracee is not already ptrace-stopped, because no signal "
10741 "delivery happens while it is\\(emnot even B<SIGSTOP>."
10742 msgstr ""
10743
10744 #. type: Plain text
10745 #: build/C/man2/ptrace.2:1716
10746 msgid ""
10747 "If the tracer dies, all tracees are automatically detached and restarted, "
10748 "unless they were in group-stop.  Handling of restart from group-stop is "
10749 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
10750 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
10751 "stop, the pending signal is injected."
10752 msgstr ""
10753
10754 #. type: SS
10755 #: build/C/man2/ptrace.2:1716
10756 #, no-wrap
10757 msgid "execve(2) under ptrace"
10758 msgstr ""
10759
10760 #
10761 #.  clone(2) CLONE_THREAD says:
10762 #.      If  any  of the threads in a thread group performs an execve(2),
10763 #.      then all threads other than the thread group leader are terminated,
10764 #.      and the new program is executed in the thread group leader.
10765 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
10766 #. type: Plain text
10767 #: build/C/man2/ptrace.2:1735
10768 msgid ""
10769 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
10770 "destroys all other threads in the process, and resets the thread ID of the "
10771 "execing thread to the thread group ID (process ID).  (Or, to put things "
10772 "another way, when a multithreaded process does an B<execve>(2), at "
10773 "completion of the call, it appears as though the B<execve>(2)  occurred in "
10774 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
10775 "This resetting of the thread ID looks very confusing to tracers:"
10776 msgstr ""
10777
10778 #. type: Plain text
10779 #: build/C/man2/ptrace.2:1745
10780 msgid ""
10781 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
10782 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
10783 "the thread group leader report death as if they exited via B<_exit>(2)  with "
10784 "exit code 0."
10785 msgstr ""
10786
10787 #. type: Plain text
10788 #: build/C/man2/ptrace.2:1753
10789 msgid ""
10790 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
10791 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
10792 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
10793 "ID is reset to be the same as its process ID, which is the same as the "
10794 "thread group leader's thread ID."
10795 msgstr ""
10796
10797 #. type: Plain text
10798 #: build/C/man2/ptrace.2:1759
10799 msgid ""
10800 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
10801 "option was turned on."
10802 msgstr ""
10803
10804 #. type: Plain text
10805 #: build/C/man2/ptrace.2:1780
10806 msgid ""
10807 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
10808 "this time, it appears to the tracer that the dead thread leader \"reappears "
10809 "from nowhere\".  (Note: the thread group leader does not report death via "
10810 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
10811 "eliminates the possibility that the tracer will see it dying and then "
10812 "reappearing.)  If the thread group leader was still alive, for the tracer "
10813 "this may look as if thread group leader returns from a different system call "
10814 "than it entered, or even \"returned from a system call even though it was "
10815 "not in any system call\".  If the thread group leader was not traced (or was "
10816 "traced by a different tracer), then during B<execve>(2)  it will appear as "
10817 "if it has become a tracee of the tracer of the execing tracee."
10818 msgstr ""
10819
10820 #. type: Plain text
10821 #: build/C/man2/ptrace.2:1783
10822 msgid ""
10823 "All of the above effects are the artifacts of the thread ID change in the "
10824 "tracee."
10825 msgstr ""
10826
10827 #. type: Plain text
10828 #: build/C/man2/ptrace.2:1803
10829 msgid ""
10830 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
10831 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
10832 "before B<execve>(2)  returns.  In this stop, the tracer can use "
10833 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
10834 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
10835 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
10836 msgstr ""
10837
10838 #. type: Plain text
10839 #: build/C/man2/ptrace.2:1809
10840 msgid ""
10841 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
10842 "guaranteed that except this tracee and the thread group leader, no other "
10843 "threads from the process are alive."
10844 msgstr ""
10845
10846 #. type: Plain text
10847 #: build/C/man2/ptrace.2:1817
10848 msgid ""
10849 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
10850 "clean up all its internal data structures describing the threads of this "
10851 "process, and retain only one data structure\\(emone which describes the "
10852 "single still running tracee, with"
10853 msgstr ""
10854
10855 #. type: Plain text
10856 #: build/C/man2/ptrace.2:1819
10857 #, no-wrap
10858 msgid "    thread ID == thread group ID == process ID.\n"
10859 msgstr ""
10860
10861 #. type: Plain text
10862 #: build/C/man2/ptrace.2:1823
10863 msgid "Example: two threads call B<execve>(2)  at the same time:"
10864 msgstr ""
10865
10866 #. type: Plain text
10867 #: build/C/man2/ptrace.2:1834
10868 #, no-wrap
10869 msgid ""
10870 "*** we get syscall-enter-stop in thread 1: **\n"
10871 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
10872 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
10873 "*** we get syscall-enter-stop in thread 2: **\n"
10874 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
10875 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
10876 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
10877 "*** we get syscall-exit-stop for PID0: **\n"
10878 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
10879 msgstr ""
10880
10881 #. type: Plain text
10882 #: build/C/man2/ptrace.2:1857
10883 msgid ""
10884 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
10885 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after "
10886 "B<execve>(2)  returns.  This is an ordinary signal (similar to one which can "
10887 "be generated by I<kill -TRAP>), not a special kind of ptrace-stop.  "
10888 "Employing B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
10889 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
10890 "delivered (much) later."
10891 msgstr ""
10892
10893 #. type: Plain text
10894 #: build/C/man2/ptrace.2:1876
10895 msgid ""
10896 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
10897 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
10898 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
10899 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
10900 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
10901 "B<SIGTRAP> is the recommended approach."
10902 msgstr ""
10903
10904 #. type: SS
10905 #: build/C/man2/ptrace.2:1876
10906 #, no-wrap
10907 msgid "Real parent"
10908 msgstr ""
10909
10910 #. type: Plain text
10911 #: build/C/man2/ptrace.2:1883
10912 msgid ""
10913 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
10914 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
10915 "receiving several kinds of B<waitpid>(2)  notifications when the child "
10916 "process is traced by some other process."
10917 msgstr ""
10918
10919 #. type: Plain text
10920 #: build/C/man2/ptrace.2:1886
10921 msgid ""
10922 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
10923 "exist; see BUGS below."
10924 msgstr ""
10925
10926 #. type: Plain text
10927 #: build/C/man2/ptrace.2:1888
10928 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
10929 msgstr ""
10930
10931 #. type: Plain text
10932 #: build/C/man2/ptrace.2:1896
10933 msgid ""
10934 "exit/death by signal is reported first to the tracer, then, when the tracer "
10935 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
10936 "only when the whole multithreaded process exits).  If the tracer and the "
10937 "real parent are the same process, the report is sent only once."
10938 msgstr ""
10939
10940 #. type: Plain text
10941 #: build/C/man2/ptrace.2:1901
10942 msgid ""
10943 "On success, the B<PTRACE_PEEK*> requests return the requested data (but see "
10944 "NOTES), while other requests return zero."
10945 msgstr ""
10946
10947 #. type: Plain text
10948 #: build/C/man2/ptrace.2:1911
10949 #, fuzzy
10950 #| msgid ""
10951 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
10952 #| "other requests return zero.  On error, all requests return -1, and "
10953 #| "I<errno> is set appropriately.  Since the value returned by a successful "
10954 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
10955 #| "such requests to determine whether or not an error occurred."
10956 msgid ""
10957 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
10958 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
10959 "caller must clear I<errno> before the call, and then check it afterward to "
10960 "determine whether or not an error occurred."
10961 msgstr ""
10962 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
10963 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
10964 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
10965 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
10966 "なければならない。"
10967
10968 #. type: Plain text
10969 #: build/C/man2/ptrace.2:1915
10970 msgid ""
10971 "(i386 only) There was an error with allocating or freeing a debug register."
10972 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
10973
10974 #. type: Plain text
10975 #: build/C/man2/ptrace.2:1926
10976 #, fuzzy
10977 #| msgid ""
10978 #| "There was an attempt to read from or write to an invalid area in the "
10979 #| "parent's or child's memory, probably because the area wasn't mapped or "
10980 #| "accessible.  Unfortunately, under Linux, different variations of this "
10981 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
10982 msgid ""
10983 "There was an attempt to read from or write to an invalid area in the "
10984 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
10985 "accessible.  Unfortunately, under Linux, different variations of this fault "
10986 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
10987 msgstr ""
10988 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
10989 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
10990 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
10991 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
10992
10993 #. type: Plain text
10994 #: build/C/man2/ptrace.2:1929
10995 msgid "An attempt was made to set an invalid option."
10996 msgstr "不正なオプションを設定しようとした。"
10997
10998 #. type: Plain text
10999 #: build/C/man2/ptrace.2:1936
11000 #, fuzzy
11001 #| msgid ""
11002 #| "I<request> is invalid, or an attempt was made to read from or write to an "
11003 #| "invalid area in the parent's or child's memory, or there was a word-"
11004 #| "alignment violation, or an invalid signal was specified during a restart "
11005 #| "request."
11006 msgid ""
11007 "I<request> is invalid, or an attempt was made to read from or write to an "
11008 "invalid area in the tracer's or the tracee's memory, or there was a word-"
11009 "alignment violation, or an invalid signal was specified during a restart "
11010 "request."
11011 msgstr ""
11012 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
11013 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
11014 "開の要求で不正なシグナルを指定した。"
11015
11016 #. type: Plain text
11017 #: build/C/man2/ptrace.2:1949
11018 #, fuzzy
11019 #| msgid ""
11020 #| "The specified process cannot be traced.  This could be because the parent "
11021 #| "has insufficient privileges (the required capability is "
11022 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
11023 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
11024 #| "programs, for obvious reasons.  Alternatively, the process may already be "
11025 #| "being traced, or be B<init>(8)  (PID 1)."
11026 msgid ""
11027 "The specified process cannot be traced.  This could be because the tracer "
11028 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
11029 "unprivileged processes cannot trace processes that they cannot send signals "
11030 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
11031 "Alternatively, the process may already be being traced, or (on kernels "
11032 "before 2.6.26) be B<init>(1)  (PID 1)."
11033 msgstr ""
11034 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
11035 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
11036 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
11037 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
11038 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
11039 "る、 または B<init>(8)  プロセス (PID が 1) である。"
11040
11041 #. type: Plain text
11042 #: build/C/man2/ptrace.2:1954
11043 #, fuzzy
11044 #| msgid ""
11045 #| "The specified process does not exist, or is not currently being traced by "
11046 #| "the caller, or is not stopped (for requests that require that)."
11047 msgid ""
11048 "The specified process does not exist, or is not currently being traced by "
11049 "the caller, or is not stopped (for requests that require a stopped tracee)."
11050 msgstr ""
11051 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
11052 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
11053 "ない (停止していることが必要な要求の場合)。"
11054
11055 #. type: Plain text
11056 #: build/C/man2/ptrace.2:1956
11057 msgid "SVr4, 4.3BSD."
11058 msgstr "SVr4, 4.3BSD."
11059
11060 #. type: Plain text
11061 #: build/C/man2/ptrace.2:1971
11062 #, fuzzy
11063 #| msgid ""
11064 #| "Although arguments to B<ptrace>()  are interpreted according to the "
11065 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
11066 #| "function with only the I<request> argument fixed.  This means that "
11067 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
11068 #| "undocumented B<gcc>(1)  behavior."
11069 msgid ""
11070 "Although arguments to B<ptrace>()  are interpreted according to the "
11071 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
11072 "function with only the I<request> argument fixed.  It is recommended to "
11073 "always supply four arguments, even if the requested operation does not use "
11074 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
11075 msgstr ""
11076 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
11077 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
11078 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
11079 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
11080 "になる。"
11081
11082 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
11083 #. type: Plain text
11084 #: build/C/man2/ptrace.2:1976
11085 msgid ""
11086 "In Linux kernels before 2.6.26, B<init>(1), the process with PID 1, may not "
11087 "be traced."
11088 msgstr ""
11089 "バージョン 2.6.26 より前の Linux カーネルでは、 B<init>(1) すなわち PID が 1 "
11090 "のプロセスはトレースすることができない。"
11091
11092 #.  See http://lkml.org/lkml/2008/5/8/375
11093 #. type: Plain text
11094 #: build/C/man2/ptrace.2:1983
11095 msgid ""
11096 "The layout of the contents of memory and the USER area are quite operating-"
11097 "system- and architecture-specific.  The offset supplied, and the data "
11098 "returned, might not entirely match with the definition of I<struct user>."
11099 msgstr ""
11100 "メモリや USER 領域の内容や配置はオペレーティングシステムごと、アーキテクチャ"
11101 "ごとに 非常に依存する。 オフセットが指定された場合、返されるデータは "
11102 "I<struct user> の定義と完全に一致しないこともありえる。"
11103
11104 #. type: Plain text
11105 #: build/C/man2/ptrace.2:1986
11106 msgid ""
11107 "The size of a \"word\" is determined by the operating-system variant (e.g., "
11108 "for 32-bit Linux it is 32 bits)."
11109 msgstr ""
11110 "「ワード (word) 」の大きさはオペレーティングシステムによって決まる。 (例え"
11111 "ば、32 ビットの Linux では 32 ビットである、など。)"
11112
11113 #. type: Plain text
11114 #: build/C/man2/ptrace.2:1994
11115 msgid ""
11116 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
11117 "Its behavior differs significantly on other flavors of UNIX.  In any case, "
11118 "use of B<ptrace>()  is highly specific to the operating system and "
11119 "architecture."
11120 msgstr ""
11121 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
11122 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
11123 "を使うとオペレーションシステムやアーキテクチャに非常に依存したものになる。"
11124
11125 #. type: SS
11126 #: build/C/man2/ptrace.2:1994
11127 #, no-wrap
11128 msgid "C library/kernel ABI differences"
11129 msgstr "C ライブラリとカーネル ABI の違い"
11130
11131 #. type: Plain text
11132 #: build/C/man2/ptrace.2:2006
11133 msgid ""
11134 "At the system call level, the B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>, and "
11135 "B<PTRACE_PEEKUSER> requests have a different API: they store the result at "
11136 "the address specified by the I<data> parameter, and the return value is the "
11137 "error flag.  The glibc wrapper function provides the API given in "
11138 "DESCRIPTION above, with the result being returned via the function return "
11139 "value."
11140 msgstr ""
11141
11142 #. type: Plain text
11143 #: build/C/man2/ptrace.2:2017
11144 msgid ""
11145 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
11146 "different value than the one for 2.4.  This leads to applications compiled "
11147 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
11148 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
11149 "that is defined."
11150 msgstr ""
11151 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
11152 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
11153 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
11154 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
11155 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
11156
11157 #. type: Plain text
11158 #: build/C/man2/ptrace.2:2020
11159 msgid ""
11160 "Group-stop notifications are sent to the tracer, but not to real parent.  "
11161 "Last confirmed on 2.6.38.6."
11162 msgstr ""
11163
11164 #.  Note from Denys Vlasenko:
11165 #.      Here "exits" means any kind of death - _exit, exit_group,
11166 #.      signal death. Signal death and exit_group cases are trivial,
11167 #.      though: since signal death and exit_group kill all other threads
11168 #.      too, "until all other threads exit" thing happens rather soon
11169 #.      in these cases. Therefore, only _exit presents observably
11170 #.      puzzling behavior to ptrace users: thread leader _exit's,
11171 #.      but WIFEXITED isn't reported! We are trying to explain here
11172 #.      why it is so.
11173 #.   FIXME . need to test/verify this scenario
11174 #. type: Plain text
11175 #: build/C/man2/ptrace.2:2051
11176 msgid ""
11177 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
11178 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
11179 "subsequent B<WIFEXITED> notification will not be delivered until all other "
11180 "threads exit.  As explained above, if one of other threads calls "
11181 "B<execve>(2), the death of the thread group leader will I<never> be "
11182 "reported.  If the execed thread is not traced by this tracer, the tracer "
11183 "will never know that B<execve>(2)  happened.  One possible workaround is to "
11184 "B<PTRACE_DETACH> the thread group leader instead of restarting it in this "
11185 "case.  Last confirmed on 2.6.38.6."
11186 msgstr ""
11187
11188 #. type: Plain text
11189 #: build/C/man2/ptrace.2:2061
11190 msgid ""
11191 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
11192 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
11193 "to always immediately kill tasks even under ptrace.  Last confirmed on "
11194 "2.6.38.6."
11195 msgstr ""
11196
11197 #. type: Plain text
11198 #: build/C/man2/ptrace.2:2079
11199 msgid ""
11200 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
11201 "delivery was suppressed by the tracer.  (This is very typical operation: it "
11202 "is usually done by debuggers on every attach, in order to not introduce a "
11203 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
11204 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
11205 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
11206 "that when you attach to a quiescent process with the command"
11207 msgstr ""
11208
11209 #. type: Plain text
11210 #: build/C/man2/ptrace.2:2081
11211 #, no-wrap
11212 msgid "    strace -p E<lt>process-IDE<gt>\n"
11213 msgstr ""
11214
11215 #. type: Plain text
11216 #: build/C/man2/ptrace.2:2084
11217 msgid "then, instead of the usual and expected one-line output such as"
11218 msgstr ""
11219
11220 #. type: Plain text
11221 #: build/C/man2/ptrace.2:2087
11222 #, no-wrap
11223 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
11224 msgstr ""
11225
11226 #. type: Plain text
11227 #: build/C/man2/ptrace.2:2093
11228 #, no-wrap
11229 msgid "    select(6, [5], NULL, [5], NULL_\n"
11230 msgstr ""
11231
11232 #. type: Plain text
11233 #: build/C/man2/ptrace.2:2097
11234 msgid ""
11235 "('_' denotes the cursor position), you observe more than one line.  For "
11236 "example:"
11237 msgstr ""
11238
11239 #. type: Plain text
11240 #: build/C/man2/ptrace.2:2101
11241 #, no-wrap
11242 msgid ""
11243 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
11244 "    epoll_wait(4,_\n"
11245 msgstr ""
11246
11247 #. type: Plain text
11248 #: build/C/man2/ptrace.2:2122
11249 msgid ""
11250 "What is not visible here is that the process was blocked in "
11251 "B<epoll_wait>(2)  before B<strace>(1)  has attached to it.  Attaching caused "
11252 "B<epoll_wait>(2)  to return to user space with the error B<EINTR>.  In this "
11253 "particular case, the program reacted to B<EINTR> by checking the current "
11254 "time, and then executing B<epoll_wait>(2)  again.  (Programs which do not "
11255 "expect such \"stray\" B<EINTR> errors may behave in an unintended way upon "
11256 "an B<strace>(1)  attach.)"
11257 msgstr ""
11258
11259 #. type: Plain text
11260 #: build/C/man2/ptrace.2:2137
11261 msgid ""
11262 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
11263 "B<gettid>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), "
11264 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
11265 msgstr ""
11266 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
11267 "B<gettid>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), "
11268 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
11269
11270 #. type: TH
11271 #: build/C/man2/quotactl.2:27
11272 #, no-wrap
11273 msgid "QUOTACTL"
11274 msgstr "QUOTACTL"
11275
11276 #. type: TH
11277 #: build/C/man2/quotactl.2:27
11278 #, no-wrap
11279 msgid "2010-06-16"
11280 msgstr "2010-06-16"
11281
11282 #. type: Plain text
11283 #: build/C/man2/quotactl.2:30
11284 msgid "quotactl - manipulate disk quotas"
11285 msgstr "quotactl - ディスク quota を操作する"
11286
11287 #. type: Plain text
11288 #: build/C/man2/quotactl.2:34
11289 #, no-wrap
11290 msgid ""
11291 "B<#include E<lt>sys/quota.hE<gt>>\n"
11292 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11293 msgstr ""
11294 "B<#include E<lt>sys/quota.hE<gt>>\n"
11295 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11296
11297 #. type: Plain text
11298 #: build/C/man2/quotactl.2:37
11299 #, no-wrap
11300 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11301 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11302
11303 #. type: Plain text
11304 #: build/C/man2/quotactl.2:49
11305 #, fuzzy
11306 #| msgid ""
11307 #| "The quota system defines for each user and/or group a soft limit and a "
11308 #| "hard limit bounding the amount of disk space that can be used on a given "
11309 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
11310 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
11311 #| "soft limit for more than one week (by default)  at a time: after this "
11312 #| "week the soft limit counts as hard limit."
11313 msgid ""
11314 "The quota system can be used to set per-user and per-group limits on the "
11315 "amount of disk space used on a filesystem.  For each user and/or group, a "
11316 "soft limit and a hard limit can be set for each filesystem.  The hard limit "
11317 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
11318 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
11319 "week (by default) at a time; after this time, the soft limit counts as a "
11320 "hard limit."
11321 msgstr ""
11322 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
11323 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
11324 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
11325 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
11326 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
11327 "過した後はハード・リミットを超過したと みなされる。"
11328
11329 #. type: Plain text
11330 #: build/C/man2/quotactl.2:74
11331 #, fuzzy
11332 #| msgid ""
11333 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
11334 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
11335 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
11336 #| "respectively), and I<subcmd> is described below."
11337 msgid ""
11338 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
11339 "indicates a command to be applied to the user or group ID specified in "
11340 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
11341 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
11342 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
11343 msgstr ""
11344 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
11345 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
11346 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
11347 "を指定する。 I<subcmd> は以下で説明する。"
11348
11349 #. type: Plain text
11350 #: build/C/man2/quotactl.2:79
11351 msgid ""
11352 "The I<special> argument is a pointer to a null-terminated string containing "
11353 "the pathname of the (mounted) block special device for the filesystem being "
11354 "manipulated."
11355 msgstr ""
11356
11357 #. type: Plain text
11358 #: build/C/man2/quotactl.2:87
11359 msgid ""
11360 "The I<addr> argument is the address of an optional, command-specific, data "
11361 "structure that is copied in or out of the system.  The interpretation of "
11362 "I<addr> is given with each command below."
11363 msgstr ""
11364
11365 #. type: Plain text
11366 #: build/C/man2/quotactl.2:91
11367 msgid "The I<subcmd> value is one of the following:"
11368 msgstr "I<subcmd> の値は以下のいずれかである"
11369
11370 #. type: TP
11371 #: build/C/man2/quotactl.2:91
11372 #, no-wrap
11373 msgid "B<Q_QUOTAON>"
11374 msgstr "B<Q_QUOTAON>"
11375
11376 #. type: Plain text
11377 #: build/C/man2/quotactl.2:98
11378 msgid ""
11379 "Turn on quotas for a filesystem.  The I<id> argument is the identification "
11380 "number of the quota format to be used.  Currently, there are three supported "
11381 "quota formats:"
11382 msgstr ""
11383
11384 #. type: TP
11385 #: build/C/man2/quotactl.2:99
11386 #, no-wrap
11387 msgid "B<QFMT_VFS_OLD>"
11388 msgstr ""
11389
11390 #. type: Plain text
11391 #: build/C/man2/quotactl.2:102
11392 msgid "The original quota format."
11393 msgstr ""
11394
11395 #. type: TP
11396 #: build/C/man2/quotactl.2:102
11397 #, no-wrap
11398 msgid "B<QFMT_VFS_V0>"
11399 msgstr ""
11400
11401 #. type: Plain text
11402 #: build/C/man2/quotactl.2:106
11403 msgid ""
11404 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
11405 "quota limits up to 2^42 bytes and 2^32 inodes."
11406 msgstr ""
11407
11408 #. type: TP
11409 #: build/C/man2/quotactl.2:106
11410 #, no-wrap
11411 msgid "B<QFMT_VFS_V1>"
11412 msgstr ""
11413
11414 #. type: Plain text
11415 #: build/C/man2/quotactl.2:110
11416 msgid ""
11417 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
11418 "bytes and 2^64 inodes."
11419 msgstr ""
11420
11421 #. type: Plain text
11422 #: build/C/man2/quotactl.2:121
11423 msgid ""
11424 "The I<addr> argument points to the pathname of a file containing the quotas "
11425 "for the filesystem.  The quota file must exist; it is normally created with "
11426 "the B<quotacheck>(8)  program.  This operation requires privilege "
11427 "(B<CAP_SYS_ADMIN>)."
11428 msgstr ""
11429
11430 #. type: TP
11431 #: build/C/man2/quotactl.2:121
11432 #, no-wrap
11433 msgid "B<Q_QUOTAOFF>"
11434 msgstr "B<Q_QUOTAOFF>"
11435
11436 #. type: Plain text
11437 #: build/C/man2/quotactl.2:131
11438 msgid ""
11439 "Turn off quotas for a filesystem.  The I<addr> and I<id> arguments are "
11440 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
11441 msgstr ""
11442
11443 #. type: TP
11444 #: build/C/man2/quotactl.2:131
11445 #, no-wrap
11446 msgid "B<Q_GETQUOTA>"
11447 msgstr "B<Q_GETQUOTA>"
11448
11449 #. type: Plain text
11450 #: build/C/man2/quotactl.2:142
11451 #, fuzzy
11452 #| msgid ""
11453 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
11454 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
11455 msgid ""
11456 "Get disk quota limits and current usage for user or group I<id>.  The "
11457 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
11458 "quota.hE<gt>> as follows:"
11459 msgstr ""
11460 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
11461 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
11462
11463 #. type: Plain text
11464 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
11465 #, no-wrap
11466 msgid ""
11467 "/* uint64_t is an unsigned 64-bit integer;\n"
11468 "   uint32_t is an unsigned 32-bit integer */\n"
11469 msgstr ""
11470
11471 #. type: Plain text
11472 #: build/C/man2/quotactl.2:167
11473 #, no-wrap
11474 msgid ""
11475 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
11476 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
11477 "                                  quota blocks alloc */\n"
11478 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
11479 "                                  disk quota blocks */\n"
11480 "    uint64_t dqb_curspace;     /* current quota block\n"
11481 "                                  count */\n"
11482 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
11483 "                                  allocated inodes */\n"
11484 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
11485 "    uint64_t dqb_curinodes;    /* current number of\n"
11486 "                                  allocated inodes */\n"
11487 "    uint64_t dqb_btime;        /* time limit for excessive\n"
11488 "                                  disk use */\n"
11489 "    uint64_t dqb_itime;        /* time limit for excessive\n"
11490 "                                  files */\n"
11491 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
11492 "                                  constants */\n"
11493 "};\n"
11494 msgstr ""
11495
11496 #. type: Plain text
11497 #: build/C/man2/quotactl.2:170
11498 #, no-wrap
11499 msgid ""
11500 "/* Flags in dqb_valid that indicate which fields in\n"
11501 "   dqblk structure are valid. */\n"
11502 msgstr ""
11503
11504 #. type: Plain text
11505 #: build/C/man2/quotactl.2:181
11506 #, no-wrap
11507 msgid ""
11508 "#define QIF_BLIMITS   1\n"
11509 "#define QIF_SPACE     2\n"
11510 "#define QIF_ILIMITS   4\n"
11511 "#define QIF_INODES    8\n"
11512 "#define QIF_BTIME     16\n"
11513 "#define QIF_ITIME     32\n"
11514 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
11515 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
11516 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
11517 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
11518 msgstr ""
11519
11520 #. type: Plain text
11521 #: build/C/man2/quotactl.2:198
11522 msgid ""
11523 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
11524 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
11525 "entries of the I<dqblk> structure and marks them as valid in the "
11526 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
11527 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
11528 msgstr ""
11529
11530 #. type: TP
11531 #: build/C/man2/quotactl.2:198
11532 #, no-wrap
11533 msgid "B<Q_SETQUOTA>"
11534 msgstr "B<Q_SETQUOTA>"
11535
11536 #. type: Plain text
11537 #: build/C/man2/quotactl.2:218
11538 msgid ""
11539 "Set quota information for user or group I<id>, using the information "
11540 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
11541 "field of the I<dqblk> structure indicates which entries in the structure "
11542 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
11543 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
11544 "requires privilege (B<CAP_SYS_ADMIN>)."
11545 msgstr ""
11546
11547 #. type: TP
11548 #: build/C/man2/quotactl.2:218
11549 #, no-wrap
11550 msgid "B<Q_GETINFO>"
11551 msgstr "B<Q_GETINFO>"
11552
11553 #. type: Plain text
11554 #: build/C/man2/quotactl.2:229
11555 #, fuzzy
11556 #| msgid ""
11557 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
11558 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
11559 msgid ""
11560 "Get information (like grace times) about quotafile.  The I<addr> argument "
11561 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
11562 "I<E<lt>sys/quota.hE<gt>> as follows:"
11563 msgstr ""
11564 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
11565 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
11566
11567 #. type: Plain text
11568 #: build/C/man2/quotactl.2:238
11569 #, no-wrap
11570 msgid ""
11571 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11572 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11573 "                               becomes hard limit */\n"
11574 msgstr ""
11575 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11576 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11577 "                               becomes hard limit */\n"
11578
11579 #. type: Plain text
11580 #: build/C/man2/quotactl.2:245
11581 #, no-wrap
11582 msgid ""
11583 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11584 "                               becomes hard limit */\n"
11585 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11586 "                               (DQF_*) */\n"
11587 "    uint32_t dqi_valid;\n"
11588 "};\n"
11589 msgstr ""
11590 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11591 "                               becomes hard limit */\n"
11592 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11593 "                               (DQF_*) */\n"
11594 "    uint32_t dqi_valid;\n"
11595 "};\n"
11596
11597 #. type: Plain text
11598 #: build/C/man2/quotactl.2:247
11599 #, no-wrap
11600 msgid "/* Bits for dqi_flags */\n"
11601 msgstr "/* Bits for dqi_flags */\n"
11602
11603 #. type: Plain text
11604 #: build/C/man2/quotactl.2:249
11605 #, no-wrap
11606 msgid "/* Quota format QFMT_VFS_OLD */\n"
11607 msgstr "/* Quota format QFMT_VFS_OLD */\n"
11608
11609 #. type: Plain text
11610 #: build/C/man2/quotactl.2:251
11611 #, no-wrap
11612 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11613 msgstr "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11614
11615 #. type: Plain text
11616 #: build/C/man2/quotactl.2:253
11617 #, no-wrap
11618 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
11619 msgstr "/* Other quota formats have no dqi_flags bits defined */\n"
11620
11621 #. type: Plain text
11622 #: build/C/man2/quotactl.2:256
11623 #, no-wrap
11624 msgid ""
11625 "/* Flags in dqi_valid that indicate which fields in\n"
11626 "   dqinfo structure are valid. */\n"
11627 msgstr ""
11628 "/* Flags in dqi_valid that indicate which fields in\n"
11629 "   dqinfo structure are valid. */\n"
11630
11631 #. type: Plain text
11632 #: build/C/man2/quotactl.2:261
11633 #, no-wrap
11634 msgid ""
11635 "# define IIF_BGRACE\t1\n"
11636 "# define IIF_IGRACE\t2\n"
11637 "# define IIF_FLAGS\t4\n"
11638 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11639 msgstr ""
11640 "# define IIF_BGRACE\t1\n"
11641 "# define IIF_IGRACE\t2\n"
11642 "# define IIF_FLAGS\t4\n"
11643 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11644
11645 #. type: Plain text
11646 #: build/C/man2/quotactl.2:277
11647 msgid ""
11648 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
11649 "the structure that are valid.  Currently, the kernel fills in all entries of "
11650 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
11651 "field.  The I<id> argument is ignored."
11652 msgstr ""
11653
11654 #. type: TP
11655 #: build/C/man2/quotactl.2:277
11656 #, no-wrap
11657 msgid "B<Q_SETINFO>"
11658 msgstr "B<Q_SETINFO>"
11659
11660 #. type: Plain text
11661 #: build/C/man2/quotactl.2:301
11662 msgid ""
11663 "Set information about quotafile.  The I<addr> argument should be a pointer "
11664 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
11665 "indicates the entries in the structure that have been set by the caller.  "
11666 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
11667 "the previous quota interfaces.  The I<id> argument is ignored.  This "
11668 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11669 msgstr ""
11670
11671 #. type: TP
11672 #: build/C/man2/quotactl.2:301
11673 #, no-wrap
11674 msgid "B<Q_GETFMT>"
11675 msgstr "B<Q_GETFMT>"
11676
11677 #. type: Plain text
11678 #: build/C/man2/quotactl.2:308
11679 msgid ""
11680 "Get quota format used on the specified filesystem.  The I<addr> argument "
11681 "should be a pointer to a 4-byte buffer where the format number will be "
11682 "stored."
11683 msgstr ""
11684
11685 #. type: TP
11686 #: build/C/man2/quotactl.2:308
11687 #, no-wrap
11688 msgid "B<Q_SYNC>"
11689 msgstr "B<Q_SYNC>"
11690
11691 #. type: Plain text
11692 #: build/C/man2/quotactl.2:319
11693 msgid ""
11694 "Update the on-disk copy of quota usages for a filesystem.  If I<special> is "
11695 "NULL, then all filesystems with active quotas are sync'ed.  The I<addr> and "
11696 "I<id> arguments are ignored."
11697 msgstr ""
11698
11699 #. type: TP
11700 #: build/C/man2/quotactl.2:319
11701 #, no-wrap
11702 msgid "B<Q_GETSTATS>"
11703 msgstr "B<Q_GETSTATS>"
11704
11705 #.  Q_GETSTATS was removed in kernel 2.4.22.
11706 #. type: Plain text
11707 #: build/C/man2/quotactl.2:339
11708 msgid ""
11709 "Get statistics and other generic information about the quota subsystem.  The "
11710 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
11711 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>>.  "
11712 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
11713 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
11714 "the information instead."
11715 msgstr ""
11716
11717 #. type: Plain text
11718 #: build/C/man2/quotactl.2:342
11719 msgid ""
11720 "For XFS filesystems making use of the XFS Quota Manager (XQM), the above "
11721 "commands are bypassed and the following commands are used:"
11722 msgstr ""
11723
11724 #. type: TP
11725 #: build/C/man2/quotactl.2:342
11726 #, no-wrap
11727 msgid "B<Q_XQUOTAON>"
11728 msgstr "B<Q_XQUOTAON>"
11729
11730 #. type: Plain text
11731 #: build/C/man2/quotactl.2:363
11732 msgid ""
11733 "Turn on quotas for an XFS filesystem.  XFS provides the ability to turn on/"
11734 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
11735 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
11736 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
11737 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
11738 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
11739 "(B<CAP_SYS_ADMIN>)."
11740 msgstr ""
11741
11742 #. type: TP
11743 #: build/C/man2/quotactl.2:363
11744 #, no-wrap
11745 msgid "B<Q_XQUOTAOFF>"
11746 msgstr "B<Q_XQUOTAOFF>"
11747
11748 #. type: Plain text
11749 #: build/C/man2/quotactl.2:374
11750 msgid ""
11751 "Turn off quotas for an XFS filesystem.  As with B<Q_QUOTAON>, XFS "
11752 "filesystems expect a pointer to an I<unsigned int> that specifies whether "
11753 "quota accounting and/or limit enforcement need to be turned off.  This "
11754 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11755 msgstr ""
11756
11757 #. type: TP
11758 #: build/C/man2/quotactl.2:374
11759 #, no-wrap
11760 msgid "B<Q_XGETQUOTA>"
11761 msgstr "B<Q_XGETQUOTA>"
11762
11763 #. type: Plain text
11764 #: build/C/man2/quotactl.2:388
11765 msgid ""
11766 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
11767 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
11768 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
11769 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
11770 "user."
11771 msgstr ""
11772
11773 #. type: TP
11774 #: build/C/man2/quotactl.2:388
11775 #, no-wrap
11776 msgid "B<Q_XSETQLIM>"
11777 msgstr "B<Q_XSETQLIM>"
11778
11779 #. type: Plain text
11780 #: build/C/man2/quotactl.2:400
11781 msgid ""
11782 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
11783 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
11784 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11785 msgstr ""
11786
11787 #. type: TP
11788 #: build/C/man2/quotactl.2:400
11789 #, no-wrap
11790 msgid "B<Q_XGETQSTAT>"
11791 msgstr "B<Q_XGETQSTAT>"
11792
11793 #. type: Plain text
11794 #: build/C/man2/quotactl.2:408
11795 msgid ""
11796 "Returns an I<fs_quota_stat> structure containing XFS filesystem-specific "
11797 "quota information.  This is useful for finding out how much space is used to "
11798 "store quota information, and also to get quotaon/off status of a given local "
11799 "XFS filesystem."
11800 msgstr ""
11801
11802 #. type: TP
11803 #: build/C/man2/quotactl.2:408
11804 #, no-wrap
11805 msgid "B<Q_XQUOTARM>"
11806 msgstr "B<Q_XQUOTARM>"
11807
11808 #. type: Plain text
11809 #: build/C/man2/quotactl.2:412
11810 msgid ""
11811 "Free the disk space taken by disk quotas.  Quotas must have already been "
11812 "turned off."
11813 msgstr ""
11814
11815 #. type: Plain text
11816 #: build/C/man2/quotactl.2:419
11817 msgid ""
11818 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
11819 "quota information to disk (in addition to the other filesystem metadata that "
11820 "it writes out)."
11821 msgstr ""
11822
11823 #. type: Plain text
11824 #: build/C/man2/quotactl.2:427
11825 msgid ""
11826 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
11827 "is set to indicate the error."
11828 msgstr ""
11829 "成功すると、 B<quotactl>()  は 0 を返す。\n"
11830 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
11831
11832 #. type: Plain text
11833 #: build/C/man2/quotactl.2:434
11834 msgid "I<addr> or I<special> is invalid."
11835 msgstr ""
11836
11837 #. type: Plain text
11838 #: build/C/man2/quotactl.2:440
11839 msgid "I<cmd> or I<type> is invalid."
11840 msgstr ""
11841
11842 #. type: Plain text
11843 #: build/C/man2/quotactl.2:447
11844 msgid "The file specified by I<special> or I<addr> does not exist."
11845 msgstr ""
11846
11847 #. type: Plain text
11848 #: build/C/man2/quotactl.2:452
11849 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
11850 msgstr ""
11851
11852 #. type: TP
11853 #: build/C/man2/quotactl.2:452
11854 #, no-wrap
11855 msgid "B<ENOTBLK>"
11856 msgstr "B<ENOTBLK>"
11857
11858 #. type: Plain text
11859 #: build/C/man2/quotactl.2:456
11860 msgid "I<special> is not a block device."
11861 msgstr "I<special> がブロックデバイスではない。"
11862
11863 #. type: Plain text
11864 #: build/C/man2/quotactl.2:461
11865 msgid ""
11866 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
11867 "specified operation."
11868 msgstr ""
11869
11870 #. type: Plain text
11871 #: build/C/man2/quotactl.2:465
11872 msgid ""
11873 "No disk quota is found for the indicated user.  Quotas have not been turned "
11874 "on for this filesystem."
11875 msgstr ""
11876
11877 #. type: Plain text
11878 #: build/C/man2/quotactl.2:474
11879 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
11880 msgstr ""
11881
11882 #. type: Plain text
11883 #: build/C/man2/quotactl.2:477
11884 msgid "Specified limits are out of range allowed by quota format."
11885 msgstr ""
11886
11887 #. type: Plain text
11888 #: build/C/man2/quotactl.2:486
11889 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
11890 msgstr ""
11891
11892 #. type: Plain text
11893 #: build/C/man2/quotactl.2:495
11894 msgid ""
11895 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
11896 "the quota file pointed to by I<addr> exists, but is not on the filesystem "
11897 "pointed to by I<special>."
11898 msgstr ""
11899
11900 #. type: Plain text
11901 #: build/C/man2/quotactl.2:501
11902 msgid ""
11903 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
11904 msgstr ""
11905
11906 #. type: Plain text
11907 #: build/C/man2/quotactl.2:504
11908 msgid "The quota file is corrupted."
11909 msgstr "quota ファイルが壊れている。"
11910
11911 #. type: Plain text
11912 #: build/C/man2/quotactl.2:507
11913 msgid "Specified quota format was not found."
11914 msgstr ""
11915
11916 #. type: Plain text
11917 #: build/C/man2/quotactl.2:512
11918 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
11919 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
11920
11921 #. type: TH
11922 #: build/C/man2/sendfile.2:19
11923 #, no-wrap
11924 msgid "SENDFILE"
11925 msgstr "SENDFILE"
11926
11927 #. type: TH
11928 #: build/C/man2/sendfile.2:19
11929 #, no-wrap
11930 msgid "2011-09-14"
11931 msgstr "2011-09-14"
11932
11933 #. type: Plain text
11934 #: build/C/man2/sendfile.2:22
11935 msgid "sendfile - transfer data between file descriptors"
11936 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
11937
11938 #. type: Plain text
11939 #: build/C/man2/sendfile.2:24
11940 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
11941 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
11942
11943 #.  The below is too ugly. Comments about glibc versions belong
11944 #.  in the notes, not in the header.
11945 #.  .B #include <features.h>
11946 #.  .br
11947 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
11948 #.  .br
11949 #.  .B #include <sys/sendfile.h>
11950 #.  .br
11951 #.  #else
11952 #.  .br
11953 #.  .B #include <sys/types.h>
11954 #.  .br
11955 #.  .B /* No system prototype before glibc 2.1. */
11956 #.  .br
11957 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
11958 #.  .br
11959 #.  .B #endif
11960 #. type: Plain text
11961 #: build/C/man2/sendfile.2:47
11962 msgid ""
11963 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
11964 "size_t>I< count>B<);>"
11965 msgstr ""
11966 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
11967 "size_t>I< count>B<);>"
11968
11969 #. type: Plain text
11970 #: build/C/man2/sendfile.2:57
11971 msgid ""
11972 "B<sendfile>()  copies data between one file descriptor and another.  Because "
11973 "this copying is done within the kernel, B<sendfile>()  is more efficient "
11974 "than the combination of B<read>(2)  and B<write>(2), which would require "
11975 "transferring data to and from user space."
11976 msgstr ""
11977 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
11978 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
11979 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
11980 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
11981 "るからである。"
11982
11983 #. type: Plain text
11984 #: build/C/man2/sendfile.2:62
11985 msgid ""
11986 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
11987 "be a descriptor opened for writing."
11988 msgstr ""
11989 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
11990 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
11991
11992 #. type: Plain text
11993 #: build/C/man2/sendfile.2:83
11994 msgid ""
11995 "If I<offset> is not NULL, then it points to a variable holding the file "
11996 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
11997 "When B<sendfile>()  returns, this variable will be set to the offset of the "
11998 "byte following the last byte that was read.  If I<offset> is not NULL, then "
11999 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
12000 "otherwise the current file offset is adjusted to reflect the number of bytes "
12001 "read from I<in_fd>."
12002 msgstr ""
12003 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
12004 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
12005 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
12006 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
12007 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
12008 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
12009 "整する。"
12010
12011 #. type: Plain text
12012 #: build/C/man2/sendfile.2:90
12013 msgid ""
12014 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
12015 "current file offset, and the file offset will be updated by the call."
12016 msgstr ""
12017 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
12018 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
12019
12020 #. type: Plain text
12021 #: build/C/man2/sendfile.2:93
12022 msgid "I<count> is the number of bytes to copy between the file descriptors."
12023 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
12024
12025 #. type: Plain text
12026 #: build/C/man2/sendfile.2:100
12027 msgid ""
12028 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
12029 "like operations (i.e., it cannot be a socket)."
12030 msgstr ""
12031 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
12032 "な\n"
12033 "い (ソケットを指定することはできない)。"
12034
12035 #. type: Plain text
12036 #: build/C/man2/sendfile.2:108
12037 msgid ""
12038 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
12039 "Linux 2.6.33 it can be any file.  If it is a regular file, then "
12040 "B<sendfile>()  changes the file offset appropriately."
12041 msgstr ""
12042 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
12043 "な\n"
12044 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
12045 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
12046
12047 #. type: Plain text
12048 #: build/C/man2/sendfile.2:115
12049 msgid ""
12050 "If the transfer was successful, the number of bytes written to I<out_fd> is "
12051 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
12052 msgstr ""
12053 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
12054 "合、-1 を返し、 I<errno> に適切な値を設定する。"
12055
12056 #. type: Plain text
12057 #: build/C/man2/sendfile.2:121
12058 msgid ""
12059 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
12060 "block."
12061 msgstr ""
12062 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
12063 "た。"
12064
12065 #. type: Plain text
12066 #: build/C/man2/sendfile.2:125
12067 msgid ""
12068 "The input file was not opened for reading or the output file was not opened "
12069 "for writing."
12070 msgstr ""
12071 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
12072 "のためにオープンされていない。"
12073
12074 #. type: Plain text
12075 #: build/C/man2/sendfile.2:128
12076 msgid "Bad address."
12077 msgstr "アドレスがおかしい。"
12078
12079 #. type: Plain text
12080 #: build/C/man2/sendfile.2:134
12081 msgid ""
12082 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
12083 "available for I<in_fd>."
12084 msgstr ""
12085 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
12086 "が I<in_fd> では利用できない。"
12087
12088 #. type: Plain text
12089 #: build/C/man2/sendfile.2:138
12090 msgid "Unspecified error while reading from I<in_fd>."
12091 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
12092
12093 #. type: Plain text
12094 #: build/C/man2/sendfile.2:142
12095 msgid "Insufficient memory to read from I<in_fd>."
12096 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
12097
12098 #. type: Plain text
12099 #: build/C/man2/sendfile.2:148
12100 msgid ""
12101 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
12102 "sendfile.hE<gt>> is present since glibc 2.1."
12103 msgstr ""
12104 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
12105 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
12106
12107 #. type: Plain text
12108 #: build/C/man2/sendfile.2:150
12109 msgid "Not specified in POSIX.1-2001, or other standards."
12110 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
12111
12112 #. type: Plain text
12113 #: build/C/man2/sendfile.2:155
12114 msgid ""
12115 "Other UNIX systems implement B<sendfile>()  with different semantics and "
12116 "prototypes.  It should not be used in portable programs."
12117 msgstr ""
12118 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
12119 "ている。移植性を考慮したプログラムでは使用すべきではない。"
12120
12121 #. type: Plain text
12122 #: build/C/man2/sendfile.2:165
12123 msgid ""
12124 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
12125 "need to send some header data in front of the file contents, you will find "
12126 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
12127 "minimize the number of packets and to tune performance."
12128 msgstr ""
12129 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
12130 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
12131 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
12132 "いいだろう。"
12133
12134 #. type: Plain text
12135 #: build/C/man2/sendfile.2:171
12136 msgid ""
12137 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
12138 "B<sendfile>()  changed the current offset of that file."
12139 msgstr ""
12140 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
12141 "き、\n"
12142 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
12143
12144 #. type: Plain text
12145 #: build/C/man2/sendfile.2:183
12146 msgid ""
12147 "The original Linux B<sendfile>()  system call was not designed to handle "
12148 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
12149 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
12150 "function transparently deals with the kernel differences."
12151 msgstr ""
12152 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
12153 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
12154 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
12155 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
12156
12157 #. type: Plain text
12158 #: build/C/man2/sendfile.2:192
12159 msgid ""
12160 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
12161 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
12162 msgstr ""
12163 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
12164 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
12165
12166 #. type: Plain text
12167 #: build/C/man2/sendfile.2:197
12168 msgid ""
12169 "The Linux-specific B<splice>(2)  call supports transferring data between "
12170 "arbitrary files (e.g., a pair of sockets)."
12171 msgstr ""
12172 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
12173 "ソケット同士) でのデータ転送をサポートしている。"
12174
12175 #. type: Plain text
12176 #: build/C/man2/sendfile.2:202
12177 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12178 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12179
12180 #. type: TH
12181 #: build/C/man2/set_tid_address.2:25
12182 #, no-wrap
12183 msgid "SET_TID_ADDRESS"
12184 msgstr "SET_TID_ADDRESS"
12185
12186 #. type: TH
12187 #: build/C/man2/set_tid_address.2:25
12188 #, no-wrap
12189 msgid "2014-07-08"
12190 msgstr "2014-07-08"
12191
12192 #. type: Plain text
12193 #: build/C/man2/set_tid_address.2:28
12194 msgid "set_tid_address - set pointer to thread ID"
12195 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
12196
12197 #. type: Plain text
12198 #: build/C/man2/set_tid_address.2:31
12199 #, no-wrap
12200 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
12201 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
12202
12203 #. type: Plain text
12204 #: build/C/man2/set_tid_address.2:33
12205 #, no-wrap
12206 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12207 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12208
12209 #. type: Plain text
12210 #: build/C/man2/set_tid_address.2:40
12211 msgid ""
12212 "For each thread, the kernel maintains two attributes (addresses) called "
12213 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
12214 "value NULL by default."
12215 msgstr ""
12216 "各スレッドについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
12217 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
12218
12219 #. type: TP
12220 #: build/C/man2/set_tid_address.2:40
12221 #, no-wrap
12222 msgid "I<set_child_tid>"
12223 msgstr "I<set_child_tid>"
12224
12225 #. type: Plain text
12226 #: build/C/man2/set_tid_address.2:51
12227 msgid ""
12228 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
12229 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
12230 "that system call."
12231 msgstr ""
12232 "スレッドが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
12233 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
12234 "で渡された値に設定される。"
12235
12236 #. type: Plain text
12237 #: build/C/man2/set_tid_address.2:56
12238 msgid ""
12239 "When I<set_child_tid> is set, the very first thing the new thread does is to "
12240 "write its thread ID at this address."
12241 msgstr ""
12242 "I<set_child_tid> が設定された場合、一番最初に新しいスレッドが行うことは、 こ"
12243 "のアドレスに自身のスレッド ID を書き込むことである。"
12244
12245 #. type: TP
12246 #: build/C/man2/set_tid_address.2:56
12247 #, no-wrap
12248 msgid "I<clear_child_tid>"
12249 msgstr "I<clear_child_tid>"
12250
12251 #. type: Plain text
12252 #: build/C/man2/set_tid_address.2:67
12253 msgid ""
12254 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
12255 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
12256 "of that system call."
12257 msgstr ""
12258 "スレッドが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
12259 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
12260 "き数で渡された値に設定される。"
12261
12262 #. type: Plain text
12263 #: build/C/man2/set_tid_address.2:74
12264 msgid ""
12265 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
12266 "the calling thread to I<tidptr>."
12267 msgstr ""
12268 "システムコール B<set_tid_address>()  は呼び出し元スレッドの "
12269 "I<clear_child_tid> の値を I<tidptr> に設定する。"
12270
12271 #. type: Plain text
12272 #: build/C/man2/set_tid_address.2:82
12273 msgid ""
12274 "When a thread whose I<clear_child_tid> is not NULL terminates, then, if the "
12275 "thread is sharing memory with other threads, then 0 is written at the "
12276 "address specified in I<clear_child_tid> and the kernel performs the "
12277 "following operation:"
12278 msgstr ""
12279 "I<clear_child_tid> が NULL でないスレッドが終了すると、そのスレッドが他のス"
12280 "レッドとメモリを共有していれば、 I<clear_child_tid> で指定されたアドレスに 0 "
12281 "が書き込まれ、カーネルは以下の処理を実行する。"
12282
12283 #. type: Plain text
12284 #: build/C/man2/set_tid_address.2:84
12285 #, no-wrap
12286 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12287 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12288
12289 #. type: Plain text
12290 #: build/C/man2/set_tid_address.2:88
12291 msgid ""
12292 "The effect of this operation is to wake a single thread that is performing a "
12293 "futex wait on the memory location.  Errors from the futex wake operation are "
12294 "ignored."
12295 msgstr ""
12296 "この処理の結果、このメモリアドレスに対する futex wait を実行しているスレッド"
12297 "を一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
12298
12299 #. type: Plain text
12300 #: build/C/man2/set_tid_address.2:91
12301 msgid "B<set_tid_address>()  always returns the caller's thread ID."
12302 msgstr "B<set_tid_address>()  は常に呼び出し元のスレッド ID を返す。"
12303
12304 #. type: Plain text
12305 #: build/C/man2/set_tid_address.2:94
12306 msgid "B<set_tid_address>()  always succeeds."
12307 msgstr "B<set_tid_address>()  は常に成功する。"
12308
12309 #. type: Plain text
12310 #: build/C/man2/set_tid_address.2:97
12311 msgid ""
12312 "This call is present since Linux 2.5.48.  Details as given here are valid "
12313 "since Linux 2.5.49."
12314 msgstr ""
12315 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
12316 "2.5.49 以降で有効である。"
12317
12318 #. type: Plain text
12319 #: build/C/man2/set_tid_address.2:103
12320 msgid "B<clone>(2), B<futex>(2), B<gettid>(2)"
12321 msgstr "B<clone>(2), B<futex>(2), B<gettid>(2)"
12322
12323 #. type: TH
12324 #: build/C/man2/splice.2:26
12325 #, no-wrap
12326 msgid "SPLICE"
12327 msgstr "SPLICE"
12328
12329 #. type: TH
12330 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26
12331 #, no-wrap
12332 msgid "2014-12-31"
12333 msgstr "2014-12-31"
12334
12335 #. type: Plain text
12336 #: build/C/man2/splice.2:29
12337 msgid "splice - splice data to/from a pipe"
12338 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
12339
12340 #. type: Plain text
12341 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
12342 #, no-wrap
12343 msgid ""
12344 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
12345 "B<#include E<lt>fcntl.hE<gt>>\n"
12346 msgstr ""
12347 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
12348 "B<#include E<lt>fcntl.hE<gt>>\n"
12349
12350 #.  Return type was long before glibc 2.7
12351 #. type: Plain text
12352 #: build/C/man2/splice.2:38
12353 #, no-wrap
12354 msgid ""
12355 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12356 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12357 msgstr ""
12358 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12359 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12360
12361 #. type: Plain text
12362 #: build/C/man2/splice.2:50
12363 msgid ""
12364 "B<splice>()  moves data between two file descriptors without copying between "
12365 "kernel address space and user address space.  It transfers up to I<len> "
12366 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
12367 "I<fd_out>, where one of the descriptors must refer to a pipe."
12368 msgstr ""
12369 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
12370 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
12371 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
12372 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
12373 "ならない。"
12374
12375 #. type: Plain text
12376 #: build/C/man2/splice.2:55
12377 msgid "The following semantics apply for I<fd_in> and I<off_in>:"
12378 msgstr "I<fd_in> と I<off_in> には以下のルールが適用される。"
12379
12380 #. type: Plain text
12381 #: build/C/man2/splice.2:61
12382 msgid "If I<fd_in> refers to a pipe, then I<off_in> must be NULL."
12383 msgstr ""
12384 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。"
12385
12386 #. type: Plain text
12387 #: build/C/man2/splice.2:70
12388 msgid ""
12389 "If I<fd_in> does not refer to a pipe and I<off_in> is NULL, then bytes are "
12390 "read from I<fd_in> starting from the current file offset, and the current "
12391 "file offset is adjusted appropriately."
12392 msgstr ""
12393 "I<fd_in> がパイプを参照しておらず、かつ I<off_in> が NULL の場合、 バイトは "
12394 "I<fd_in> の現在のファイルオフセットから読み出され、 現在のファイルオフセット"
12395 "は適切に調整される。"
12396
12397 #. type: Plain text
12398 #: build/C/man2/splice.2:83
12399 msgid ""
12400 "If I<fd_in> does not refer to a pipe and I<off_in> is not NULL, then "
12401 "I<off_in> must point to a buffer which specifies the starting offset from "
12402 "which bytes will be read from I<fd_in>; in this case, the current file "
12403 "offset of I<fd_in> is not changed."
12404 msgstr ""
12405 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でない場合、 I<off_in> "
12406 "は I<fd_in> からのデータ読み出しを開始する先頭オフセットを格納したバッファ へ"
12407 "のポインタでなければならない。この場合、 I<fd_in> の現在のファイルオフセット"
12408 "は変更されない。"
12409
12410 #. type: Plain text
12411 #: build/C/man2/splice.2:88
12412 msgid "Analogous statements apply for I<fd_out> and I<off_out>."
12413 msgstr "I<fd_out> と I<off_out> に関しても同様である。"
12414
12415 #. type: Plain text
12416 #: build/C/man2/splice.2:93 build/C/man2/vmsplice.2:78
12417 msgid ""
12418 "The I<flags> argument is a bit mask that is composed by ORing together zero "
12419 "or more of the following values:"
12420 msgstr ""
12421 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
12422
12423 #. type: TP
12424 #: build/C/man2/splice.2:93 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
12425 #, no-wrap
12426 msgid "B<SPLICE_F_MOVE>"
12427 msgstr "B<SPLICE_F_MOVE>"
12428
12429 #. type: Plain text
12430 #: build/C/man2/splice.2:106
12431 msgid ""
12432 "Attempt to move pages instead of copying.  This is only a hint to the "
12433 "kernel: pages may still be copied if the kernel cannot move the pages from "
12434 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
12435 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
12436 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
12437 "correct implementation may be restored."
12438 msgstr ""
12439 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
12440 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
12441 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
12442 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
12443 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
12444 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
12445
12446 #. type: TP
12447 #: build/C/man2/splice.2:106 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
12448 #, no-wrap
12449 msgid "B<SPLICE_F_NONBLOCK>"
12450 msgstr "B<SPLICE_F_NONBLOCK>"
12451
12452 #. type: Plain text
12453 #: build/C/man2/splice.2:115
12454 msgid ""
12455 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
12456 "B<splice>()  may nevertheless block because the file descriptors that are "
12457 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
12458 msgstr ""
12459 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
12460 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも "
12461 "B<splice>()  は停止することもある。なぜなら、データのやり取りを行う ファイル"
12462 "ディスクリプタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能"
12463 "性があるからである。"
12464
12465 #. type: TP
12466 #: build/C/man2/splice.2:115 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12467 #, no-wrap
12468 msgid "B<SPLICE_F_MORE>"
12469 msgstr "B<SPLICE_F_MORE>"
12470
12471 #. type: Plain text
12472 #: build/C/man2/splice.2:129
12473 msgid ""
12474 "More data will be coming in a subsequent splice.  This is a helpful hint "
12475 "when the I<fd_out> refers to a socket (see also the description of "
12476 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
12477 msgstr ""
12478 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
12479 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
12480 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
12481
12482 #. type: TP
12483 #: build/C/man2/splice.2:129 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
12484 #, no-wrap
12485 msgid "B<SPLICE_F_GIFT>"
12486 msgstr "B<SPLICE_F_GIFT>"
12487
12488 #. type: Plain text
12489 #: build/C/man2/splice.2:135
12490 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
12491 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
12492
12493 #. type: Plain text
12494 #: build/C/man2/splice.2:144
12495 msgid ""
12496 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
12497 "to or from the pipe.  A return value of 0 means that there was no data to "
12498 "transfer, and it would not make sense to block, because there are no writers "
12499 "connected to the write end of the pipe referred to by I<fd_in>."
12500 msgstr ""
12501 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
12502 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
12503 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
12504 "れている者がいないからである。"
12505
12506 #. type: Plain text
12507 #: build/C/man2/splice.2:150
12508 msgid ""
12509 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
12510 msgstr ""
12511 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
12512 "る。"
12513
12514 #. type: Plain text
12515 #: build/C/man2/splice.2:157 build/C/man2/tee.2:107
12516 #: build/C/man2/vmsplice.2:133
12517 msgid ""
12518 "B<SPLICE_F_NONBLOCK> was specified in I<flags>, and the operation would "
12519 "block."
12520 msgstr ""
12521 "B<SPLICE_F_NONBLOCK> が I<flags> に指定されていて、かつ操作が停止するような状"
12522 "態であった。"
12523
12524 #. type: Plain text
12525 #: build/C/man2/splice.2:161
12526 msgid ""
12527 "One or both file descriptors are not valid, or do not have proper read-write "
12528 "mode."
12529 msgstr ""
12530 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
12531 "write モードではない。"
12532
12533 #.  The append-mode error is given since 2.6.27; in earlier kernels,
12534 #.  splice() in append mode was broken
12535 #. type: Plain text
12536 #: build/C/man2/splice.2:169
12537 msgid ""
12538 "Target filesystem doesn't support splicing; target file is opened in append "
12539 "mode; neither of the descriptors refers to a pipe; or offset given for "
12540 "nonseekable device."
12541 msgstr ""
12542 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
12543 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
12544 "ない、 または seek できないデバイスに対してオフセットが指定された。"
12545
12546 #. type: Plain text
12547 #: build/C/man2/splice.2:172 build/C/man2/tee.2:120
12548 #: build/C/man2/vmsplice.2:148
12549 msgid "Out of memory."
12550 msgstr "メモリ不足。"
12551
12552 #. type: TP
12553 #: build/C/man2/splice.2:172
12554 #, no-wrap
12555 msgid "B<ESPIPE>"
12556 msgstr "B<ESPIPE>"
12557
12558 #. type: Plain text
12559 #: build/C/man2/splice.2:179
12560 msgid ""
12561 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
12562 "descriptor refers to a pipe."
12563 msgstr ""
12564 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
12565 "クリプタが パイプを参照している。"
12566
12567 #. type: Plain text
12568 #: build/C/man2/splice.2:184
12569 msgid ""
12570 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
12571 "was added to glibc in version 2.5."
12572 msgstr ""
12573 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12574 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12575
12576 #. type: Plain text
12577 #: build/C/man2/splice.2:196
12578 msgid ""
12579 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
12580 "user-space programs with full control over an arbitrary kernel buffer, "
12581 "implemented within the kernel using the same type of buffer that is used for "
12582 "a pipe.  In overview, these system calls perform the following tasks:"
12583 msgstr ""
12584 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
12585 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
12586 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
12587 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
12588
12589 #. type: TP
12590 #: build/C/man2/splice.2:196
12591 #, no-wrap
12592 msgid "B<splice>()"
12593 msgstr "B<splice>()"
12594
12595 #. type: Plain text
12596 #: build/C/man2/splice.2:200
12597 msgid ""
12598 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
12599 "or from one buffer to another."
12600 msgstr ""
12601 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
12602 "から別のバッファへの、データ移動を行う。"
12603
12604 #. type: TP
12605 #: build/C/man2/splice.2:200
12606 #, no-wrap
12607 msgid "B<tee>(2)"
12608 msgstr "B<tee>(2)"
12609
12610 #. type: Plain text
12611 #: build/C/man2/splice.2:203
12612 msgid "\"copies\" the data from one buffer to another."
12613 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
12614
12615 #. type: TP
12616 #: build/C/man2/splice.2:203
12617 #, no-wrap
12618 msgid "B<vmsplice>(2)"
12619 msgstr "B<vmsplice>(2)"
12620
12621 #. type: Plain text
12622 #: build/C/man2/splice.2:206
12623 msgid "\"copies\" data from user space into the buffer."
12624 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
12625
12626 #.  Linus: Now, imagine using the above in a media server, for example.
12627 #.  Let's say that a year or two has passed, so that the video drivers
12628 #.  have been updated to be able to do the splice thing, and what can
12629 #.  you do? You can:
12630 #.  - splice from the (mpeg or whatever - let's just assume that the video
12631 #.    input is either digital or does the encoding on its own - like they
12632 #.    pretty much all do) video input into a pipe (remember: no copies - the
12633 #.    video input will just DMA directly into memory, and splice will just
12634 #.    set up the pages in the pipe buffer)
12635 #.  - tee that pipe to split it up
12636 #.  - splice one end to a file (ie "save the compressed stream to disk")
12637 #.  - splice the other end to a real-time video decoder window for your
12638 #.    real-time viewing pleasure.
12639 #.  Linus: Now, the advantage of splice()/tee() is that you can
12640 #.  do zero-copy movement of data, and unlike sendfile() you can
12641 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
12642 #.  than just sending the data to somebody else: you can duplicate
12643 #.  the data and choose to forward it to two or more different
12644 #.  users - for things like logging etc.).
12645 #. type: Plain text
12646 #: build/C/man2/splice.2:237
12647 msgid ""
12648 "Though we talk of copying, actual copies are generally avoided.  The kernel "
12649 "does this by implementing a pipe buffer as a set of reference-counted "
12650 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
12651 "in a buffer by creating new pointers (for the output buffer) referring to "
12652 "the pages, and increasing the reference counts for the pages: only pointers "
12653 "are copied, not the pages of the buffer."
12654 msgstr ""
12655 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
12656 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
12657 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
12658 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
12659 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
12660 "タだけがコピーされ、 バッファのページはコピーされない。"
12661
12662 #. type: Plain text
12663 #: build/C/man2/splice.2:240
12664 msgid "See B<tee>(2)."
12665 msgstr "B<tee>(2)  参照。"
12666
12667 #. type: Plain text
12668 #: build/C/man2/splice.2:244
12669 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12670 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12671
12672 #. type: TH
12673 #: build/C/man2/tee.2:26
12674 #, no-wrap
12675 msgid "TEE"
12676 msgstr "TEE"
12677
12678 #. type: Plain text
12679 #: build/C/man2/tee.2:29
12680 msgid "tee - duplicating pipe content"
12681 msgstr "tee - パイプの中身を複製する"
12682
12683 #. type: Plain text
12684 #: build/C/man2/tee.2:36
12685 #, no-wrap
12686 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"
12687 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"
12688
12689 #.  Example programs http://brick.kernel.dk/snaps
12690 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
12691 #.  (again, incrementing their reference count, not copying the data) from
12692 #.  one pipe to two other pipes.
12693 #. type: Plain text
12694 #: build/C/man2/tee.2:56
12695 msgid ""
12696 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
12697 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
12698 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
12699 "therefore, that data can be copied by a subsequent B<splice>(2)."
12700 msgstr ""
12701 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
12702 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
12703 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
12704 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
12705
12706 #. type: Plain text
12707 #: build/C/man2/tee.2:62
12708 msgid ""
12709 "I<flags> is a series of modifier flags, which share the name space with "
12710 "B<splice>(2)  and B<vmsplice>(2):"
12711 msgstr ""
12712 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
12713 "名前である。"
12714
12715 #. type: Plain text
12716 #: build/C/man2/tee.2:68
12717 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
12718 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
12719
12720 #.  Not used for vmsplice
12721 #.  May be in the future -- therefore EAGAIN
12722 #. type: Plain text
12723 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12724 msgid "Do not block on I/O; see B<splice>(2)  for further details."
12725 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
12726
12727 #. type: Plain text
12728 #: build/C/man2/tee.2:79
12729 msgid ""
12730 "Currently has no effect for B<tee>(), but may be implemented in the future; "
12731 "see B<splice>(2)."
12732 msgstr ""
12733 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
12734 "る。 B<splice>(2)  参照。"
12735
12736 #. type: Plain text
12737 #: build/C/man2/tee.2:85
12738 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
12739 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
12740
12741 #. type: Plain text
12742 #: build/C/man2/tee.2:94
12743 msgid ""
12744 "Upon successful completion, B<tee>()  returns the number of bytes that were "
12745 "duplicated between the input and output.  A return value of 0 means that "
12746 "there was no data to transfer, and it would not make sense to block, because "
12747 "there are no writers connected to the write end of the pipe referred to by "
12748 "I<fd_in>."
12749 msgstr ""
12750 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
12751 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
12752 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
12753 "ている者がいないからである。"
12754
12755 #. type: Plain text
12756 #: build/C/man2/tee.2:100
12757 msgid ""
12758 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
12759 msgstr ""
12760 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
12761
12762 #. type: Plain text
12763 #: build/C/man2/tee.2:117
12764 msgid ""
12765 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
12766 "refer to the same pipe."
12767 msgstr ""
12768 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
12769 "と I<fd_out> が同じパイプを参照している。"
12770
12771 #. type: Plain text
12772 #: build/C/man2/tee.2:125
12773 msgid ""
12774 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
12775 "was added to glibc in version 2.5."
12776 msgstr ""
12777 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12778 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12779
12780 #. type: Plain text
12781 #: build/C/man2/tee.2:136
12782 msgid ""
12783 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
12784 "no real data copying takes place though: under the covers, B<tee>()  assigns "
12785 "data in the output by merely grabbing a reference to the input."
12786 msgstr ""
12787 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
12788 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
12789 "照だけを作成することで出力側にデータを 追加する。"
12790
12791 #. type: Plain text
12792 #: build/C/man2/tee.2:143
12793 msgid ""
12794 "The example below implements a basic B<tee>(1)  program using the B<tee>()  "
12795 "system call.  Here is an example of its use:"
12796 msgstr ""
12797 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
12798 "ムを実装したものである。 以下は利用例である。"
12799
12800 #. type: Plain text
12801 #: build/C/man2/tee.2:150
12802 #, no-wrap
12803 msgid ""
12804 "$ B<date |./a.out out.log | cat>\n"
12805 "Tue Oct 28 10:06:00 CET 2014\n"
12806 "$ B<cat out.log>\n"
12807 "Tue Oct 28 10:06:00 CET 2014\n"
12808 msgstr ""
12809 "$ B<date |./a.out out.log | cat>\n"
12810 "Tue Oct 28 10:06:00 CET 2014\n"
12811 "$ B<cat out.log>\n"
12812 "Tue Oct 28 10:06:00 CET 2014\n"
12813
12814 #. type: SS
12815 #: build/C/man2/tee.2:152
12816 #, no-wrap
12817 msgid "Program source"
12818 msgstr "プログラムのソース"
12819
12820 #. type: Plain text
12821 #: build/C/man2/tee.2:162
12822 #, no-wrap
12823 msgid ""
12824 "#define _GNU_SOURCE\n"
12825 "#include E<lt>fcntl.hE<gt>\n"
12826 "#include E<lt>stdio.hE<gt>\n"
12827 "#include E<lt>stdlib.hE<gt>\n"
12828 "#include E<lt>unistd.hE<gt>\n"
12829 "#include E<lt>errno.hE<gt>\n"
12830 "#include E<lt>limits.hE<gt>\n"
12831 msgstr ""
12832 "#define _GNU_SOURCE\n"
12833 "#include E<lt>fcntl.hE<gt>\n"
12834 "#include E<lt>stdio.hE<gt>\n"
12835 "#include E<lt>stdlib.hE<gt>\n"
12836 "#include E<lt>unistd.hE<gt>\n"
12837 "#include E<lt>errno.hE<gt>\n"
12838 "#include E<lt>limits.hE<gt>\n"
12839
12840 #. type: Plain text
12841 #: build/C/man2/tee.2:168
12842 #, no-wrap
12843 msgid ""
12844 "int\n"
12845 "main(int argc, char *argv[])\n"
12846 "{\n"
12847 "    int fd;\n"
12848 "    int len, slen;\n"
12849 msgstr ""
12850 "int\n"
12851 "main(int argc, char *argv[])\n"
12852 "{\n"
12853 "    int fd;\n"
12854 "    int len, slen;\n"
12855
12856 #. type: Plain text
12857 #: build/C/man2/tee.2:173
12858 #, no-wrap
12859 msgid ""
12860 "    if (argc != 2) {\n"
12861 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
12862 "        exit(EXIT_FAILURE);\n"
12863 "    }\n"
12864 msgstr ""
12865 "    if (argc != 2) {\n"
12866 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
12867 "        exit(EXIT_FAILURE);\n"
12868 "    }\n"
12869
12870 #. type: Plain text
12871 #: build/C/man2/tee.2:179
12872 #, no-wrap
12873 msgid ""
12874 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
12875 "    if (fd == -1) {\n"
12876 "        perror(\"open\");\n"
12877 "        exit(EXIT_FAILURE);\n"
12878 "    }\n"
12879 msgstr ""
12880 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
12881 "    if (fd == -1) {\n"
12882 "        perror(\"open\");\n"
12883 "        exit(EXIT_FAILURE);\n"
12884 "    }\n"
12885
12886 #. type: Plain text
12887 #: build/C/man2/tee.2:186
12888 #, no-wrap
12889 msgid ""
12890 "    do {\n"
12891 "        /*\n"
12892 "         * tee stdin to stdout.\n"
12893 "         */\n"
12894 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
12895 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
12896 msgstr ""
12897 "    do {\n"
12898 "        /*\n"
12899 "         * tee stdin to stdout.\n"
12900 "         */\n"
12901 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
12902 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
12903
12904 #. type: Plain text
12905 #: build/C/man2/tee.2:195
12906 #, no-wrap
12907 msgid ""
12908 "        if (len E<lt> 0) {\n"
12909 "            if (errno == EAGAIN)\n"
12910 "                continue;\n"
12911 "            perror(\"tee\");\n"
12912 "            exit(EXIT_FAILURE);\n"
12913 "        } else\n"
12914 "            if (len == 0)\n"
12915 "                break;\n"
12916 msgstr ""
12917 "        if (len E<lt> 0) {\n"
12918 "            if (errno == EAGAIN)\n"
12919 "                continue;\n"
12920 "            perror(\"tee\");\n"
12921 "            exit(EXIT_FAILURE);\n"
12922 "        } else\n"
12923 "            if (len == 0)\n"
12924 "                break;\n"
12925
12926 #. type: Plain text
12927 #: build/C/man2/tee.2:209
12928 #, no-wrap
12929 msgid ""
12930 "        /*\n"
12931 "         * Consume stdin by splicing it to a file.\n"
12932 "         */\n"
12933 "        while (len E<gt> 0) {\n"
12934 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
12935 "                          len, SPLICE_F_MOVE);\n"
12936 "            if (slen E<lt> 0) {\n"
12937 "                perror(\"splice\");\n"
12938 "                break;\n"
12939 "            }\n"
12940 "            len -= slen;\n"
12941 "        }\n"
12942 "    } while (1);\n"
12943 msgstr ""
12944 "        /*\n"
12945 "         * Consume stdin by splicing it to a file.\n"
12946 "         */\n"
12947 "        while (len E<gt> 0) {\n"
12948 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
12949 "                          len, SPLICE_F_MOVE);\n"
12950 "            if (slen E<lt> 0) {\n"
12951 "                perror(\"splice\");\n"
12952 "                break;\n"
12953 "            }\n"
12954 "            len -= slen;\n"
12955 "        }\n"
12956 "    } while (1);\n"
12957
12958 #. type: Plain text
12959 #: build/C/man2/tee.2:213
12960 #, no-wrap
12961 msgid ""
12962 "    close(fd);\n"
12963 "    exit(EXIT_SUCCESS);\n"
12964 "}\n"
12965 msgstr ""
12966 "    close(fd);\n"
12967 "    exit(EXIT_SUCCESS);\n"
12968 "}\n"
12969
12970 #. type: Plain text
12971 #: build/C/man2/tee.2:217
12972 msgid "B<splice>(2), B<vmsplice>(2)"
12973 msgstr "B<splice>(2), B<vmsplice>(2)"
12974
12975 #. type: TH
12976 #: build/C/man2/vm86.2:26
12977 #, no-wrap
12978 msgid "VM86"
12979 msgstr "VM86"
12980
12981 #. type: TH
12982 #: build/C/man2/vm86.2:26
12983 #, no-wrap
12984 msgid "2009-02-20"
12985 msgstr "2009-02-20"
12986
12987 #. type: Plain text
12988 #: build/C/man2/vm86.2:29
12989 msgid "vm86old, vm86 - enter virtual 8086 mode"
12990 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
12991
12992 #. type: Plain text
12993 #: build/C/man2/vm86.2:31
12994 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
12995 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
12996
12997 #. type: Plain text
12998 #: build/C/man2/vm86.2:33
12999 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
13000 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
13001
13002 #. type: Plain text
13003 #: build/C/man2/vm86.2:35
13004 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
13005 msgstr ""
13006 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
13007
13008 #. type: Plain text
13009 #: build/C/man2/vm86.2:48
13010 msgid ""
13011 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
13012 "and 2.0.28, it was renamed to B<vm86old>(), and a new B<vm86>()  was "
13013 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
13014 "and 1.1.9."
13015 msgstr ""
13016 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
13017 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
13018 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
13019
13020 #. type: Plain text
13021 #: build/C/man2/vm86.2:52
13022 msgid ""
13023 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
13024 "literature), and are used by B<dosemu>."
13025 msgstr ""
13026 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
13027 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
13028
13029 #. type: Plain text
13030 #: build/C/man2/vm86.2:54
13031 msgid "VM86 mode is an emulation of real mode within a protected mode task."
13032 msgstr ""
13033 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
13034 "ある。"
13035
13036 #. type: Plain text
13037 #: build/C/man2/vm86.2:64
13038 msgid ""
13039 "This return value is specific to i386 and indicates a problem with getting "
13040 "user-space data."
13041 msgstr ""
13042 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
13043 "あったことを示す。"
13044
13045 #. type: Plain text
13046 #: build/C/man2/vm86.2:68
13047 msgid ""
13048 "This return value indicates the call is not implemented on the present "
13049 "architecture."
13050 msgstr ""
13051 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
13052
13053 #. type: Plain text
13054 #: build/C/man2/vm86.2:73
13055 msgid ""
13056 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
13057 "should exist only within vm86 mode itself.)"
13058 msgstr ""
13059 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
13060 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
13061 "い。)"
13062
13063 #. type: Plain text
13064 #: build/C/man2/vm86.2:76
13065 msgid ""
13066 "This call is specific to Linux on 32-bit Intel processors, and should not be "
13067 "used in programs intended to be portable."
13068 msgstr ""
13069 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
13070 "したプログラムでは使用すべきでない。"
13071
13072 #. type: TH
13073 #: build/C/man2/vmsplice.2:26
13074 #, no-wrap
13075 msgid "VMSPLICE"
13076 msgstr "VMSPLICE"
13077
13078 #. type: TH
13079 #: build/C/man2/vmsplice.2:26
13080 #, no-wrap
13081 msgid "2014-10-02"
13082 msgstr "2014-10-02"
13083
13084 #. type: Plain text
13085 #: build/C/man2/vmsplice.2:29
13086 msgid "vmsplice - splice user pages into a pipe"
13087 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
13088
13089 #. type: Plain text
13090 #: build/C/man2/vmsplice.2:34
13091 #, no-wrap
13092 msgid ""
13093 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
13094 "B<#include E<lt>fcntl.hE<gt>>\n"
13095 "B<#include E<lt>sys/uio.hE<gt>>\n"
13096 msgstr ""
13097 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
13098 "B<#include E<lt>fcntl.hE<gt>>\n"
13099 "B<#include E<lt>sys/uio.hE<gt>>\n"
13100
13101 #. type: Plain text
13102 #: build/C/man2/vmsplice.2:37
13103 #, no-wrap
13104 msgid ""
13105 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13106 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13107 msgstr ""
13108 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13109 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13110
13111 #.  Linus: vmsplice() system call to basically do a "write to
13112 #.  the buffer", but using the reference counting and VM traversal
13113 #.  to actually fill the buffer. This means that the user needs to
13114 #.  be careful not to reuse the user-space buffer it spliced into
13115 #.  the kernel-space one (contrast this to "write()", which copies
13116 #.  the actual data, and you can thus reuse the buffer immediately
13117 #.  after a successful write), but that is often easy to do.
13118 #. type: Plain text
13119 #: build/C/man2/vmsplice.2:57
13120 msgid ""
13121 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
13122 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
13123 "pipe."
13124 msgstr ""
13125 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
13126 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
13127 "ばならない。"
13128
13129 #. type: Plain text
13130 #: build/C/man2/vmsplice.2:64
13131 msgid ""
13132 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
13133 "I<E<lt>sys/uio.hE<gt>>:"
13134 msgstr ""
13135 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
13136 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
13137
13138 #. type: Plain text
13139 #: build/C/man2/vmsplice.2:71
13140 #, no-wrap
13141 msgid ""
13142 "struct iovec {\n"
13143 "    void  *iov_base;            /* Starting address */\n"
13144 "    size_t iov_len;             /* Number of bytes */\n"
13145 "};\n"
13146 msgstr ""
13147 "struct iovec {\n"
13148 "    void  *iov_base;            /* 開始アドレス */\n"
13149 "    size_t iov_len;             /* バイト数 */\n"
13150 "};\n"
13151
13152 #. type: Plain text
13153 #: build/C/man2/vmsplice.2:84
13154 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
13155 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
13156
13157 #. type: Plain text
13158 #: build/C/man2/vmsplice.2:97
13159 msgid ""
13160 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
13161 "future; see B<splice>(2)."
13162 msgstr ""
13163 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
13164 "がある。 B<splice>(2)  参照。"
13165
13166 #.  FIXME . Explain the following line in a little more detail:
13167 #.  FIXME
13168 #.      It looks like the page-alignment requirement went away with
13169 #.      commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d
13170 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
13171 #. type: Plain text
13172 #: build/C/man2/vmsplice.2:117
13173 msgid ""
13174 "The user pages are a gift to the kernel.  The application may not modify "
13175 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
13176 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
13177 "successfully move the pages; if this flag is not specified, then a "
13178 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
13179 "also be properly page aligned, both in memory and length."
13180 msgstr ""
13181 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
13182 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
13183 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
13184 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
13185 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
13186 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
13187 "なければならず、 長さもページ境界の倍数でなければならない。"
13188
13189 #. type: Plain text
13190 #: build/C/man2/vmsplice.2:126
13191 msgid ""
13192 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
13193 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
13194 "is set to indicate the error."
13195 msgstr ""
13196 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
13197 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
13198
13199 #. type: Plain text
13200 #: build/C/man2/vmsplice.2:137
13201 msgid "I<fd> either not valid, or doesn't refer to a pipe."
13202 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
13203
13204 #. type: Plain text
13205 #: build/C/man2/vmsplice.2:145
13206 msgid ""
13207 "I<nr_segs> is greater than B<IOV_MAX>; or memory not aligned if "
13208 "B<SPLICE_F_GIFT> set."
13209 msgstr ""
13210 "I<nr_segs> が B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が設定されたが"
13211 "メモリがページ境界にあっていない。"
13212
13213 #. type: Plain text
13214 #: build/C/man2/vmsplice.2:153
13215 msgid ""
13216 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
13217 "support was added to glibc in version 2.5."
13218 msgstr ""
13219 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
13220 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
13221
13222 #. type: Plain text
13223 #: build/C/man2/vmsplice.2:164
13224 msgid ""
13225 "B<vmsplice>()  follows the other vectorized read/write type functions when "
13226 "it comes to limitations on number of segments being passed in.  This limit "
13227 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
13228 "writing, that limit is 1024."
13229 msgstr ""
13230 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
13231 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
13232 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
13233 "は 1024 である。"
13234
13235 #. type: Plain text
13236 #: build/C/man2/vmsplice.2:167
13237 msgid "B<splice>(2), B<tee>(2)"
13238 msgstr "B<splice>(2), B<tee>(2)"
13239
13240 #~ msgid "2014-05-10"
13241 #~ msgstr "2014-05-10"
13242
13243 #~ msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
13244 #~ msgstr "B<PERF_RECORD_MISC_MMAP_DATA>"
13245
13246 #~ msgid ""
13247 #~ "These system calls were added in Linux 2.6.17.  No library support is "
13248 #~ "provided; use B<syscall>(2)."
13249 #~ msgstr ""
13250 #~ "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
13251 #~ "サポートは提供されていない。 B<syscall>(2) を使うこと。"
13252
13253 #~ msgid "B<PERF_FLAG_FD_OUTPUT>"
13254 #~ msgstr "B<PERF_FLAG_FD_OUTPUT>"
13255
13256 #~ msgid "2014-04-17"
13257 #~ msgstr "2014-04-17"
13258
13259 #~ msgid "2014-05-05"
13260 #~ msgstr "2014-05-05"
13261
13262 #~ msgid "2014-02-20"
13263 #~ msgstr "2014-02-20"
13264
13265 #~ msgid "2012-07-19"
13266 #~ msgstr "2012-07-19"
13267
13268 #~ msgid "2012-05-04"
13269 #~ msgstr "2012-05-04"
13270
13271 #~ msgid "2013-12-12"
13272 #~ msgstr "2013-12-12"
13273
13274 #~ msgid "2012-04-25"
13275 #~ msgstr "2012-04-25"
13276
13277 #~ msgid ""
13278 #~ "This function will return the current B<personality>()  when I<persona> "
13279 #~ "equals 0xffffffff.  Otherwise, it will make the execution domain "
13280 #~ "referenced by I<persona> the new execution domain of the calling process."
13281 #~ msgstr ""
13282 #~ "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パー"
13283 #~ "ソナリティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメ"
13284 #~ "インを、 呼び出し元のプロセスの新しい実行ドメインとする。"
13285
13286 #~ msgid ""
13287 #~ "Depending on which operation was executed, the returned value for a "
13288 #~ "successful call can have differing meanings."
13289 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
13290
13291 #~ msgid ""
13292 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
13293 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
13294 #~ "was not equal to the expected value, the operation fails with the error "
13295 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
13296 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
13297 #~ msgstr ""
13298 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
13299 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
13300 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
13301 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
13302 #~ "敗する。"
13303
13304 #~ msgid "An operation was not defined or error in page alignment."
13305 #~ msgstr ""
13306 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
13307
13308 #~ msgid ""
13309 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
13310 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
13311 #~ msgstr ""
13312 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
13313 #~ "\\ 8> で子プロセスの動作を停止させる。"
13314
13315 #~ msgid ""
13316 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
13317 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
13318 #~ msgstr ""
13319 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
13320 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
13321
13322 #~ msgid ""
13323 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
13324 #~ "of the calling process; the behavior of the child is as if it had done a "
13325 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
13326 #~ "the child process for most purposes (e.g., it will receive notification "
13327 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
13328 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
13329 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
13330 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
13331 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
13332 #~ msgstr ""
13333 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
13334 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
13335 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
13336 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
13337 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
13338 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
13339 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
13340 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには "
13341 #~ "B<wait>(2)  を使用すること。(I<addr> と I<data> は無視される。)"
13342
13343 #~ msgid ""
13344 #~ "Tracing causes a few subtle differences in the semantics of traced "
13345 #~ "processes.  For example, if a process is attached to with "
13346 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
13347 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
13348 #~ "effectively simulate this notification."
13349 #~ msgstr ""
13350 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
13351 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
13352 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
13353 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
13354
13355 #~ msgid ""
13356 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
13357 #~ "is not in the normal signal delivery path.  This means the parent cannot "
13358 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
13359 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
13360 #~ "child process after receiving one of these messages."
13361 #~ msgstr ""
13362 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
13363 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
13364 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 "
13365 #~ "B<ptrace>(PTRACE_KILL)  を行ったりできないということである。 こららのメッ"
13366 #~ "セージの受信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> "
13367 #~ "を指定して B<kill>(2)  を行う方法を代わりに使用できる。"
13368
13369 #~ msgid ""
13370 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
13371 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
13372 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
13373 #~ "and uniform way."
13374 #~ msgstr ""
13375 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
13376 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
13377 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
13378 #~ "るものとなっている。"
13379
13380 #~ msgid ""
13381 #~ "The second argument I<special> is the block special device these quota "
13382 #~ "apply to.  It must be mounted."
13383 #~ msgstr ""
13384 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
13385 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
13386
13387 #~ msgid ""
13388 #~ "The third argument I<id> is the user or group ID these quota apply to "
13389 #~ "(when relevant)."
13390 #~ msgstr ""
13391 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
13392 #~ "グループの ID を指定する。"
13393
13394 #~ msgid ""
13395 #~ "The fourth argument I<addr> is the address of a data structure, depending "
13396 #~ "on the command."
13397 #~ msgstr ""
13398 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
13399 #~ "指定する。"
13400
13401 #~ msgid ""
13402 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
13403 #~ "containing the quota for the file system."
13404 #~ msgstr ""
13405 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
13406 #~ "記録されているファイルの パス名を指定する。"
13407
13408 #~ msgid "Disable quota."
13409 #~ msgstr "quota を無効にする。"
13410
13411 #~ msgid "Set limits and current usage; I<addr> is as before."
13412 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
13413
13414 #~ msgid "Set limits; I<addr> is as before."
13415 #~ msgstr "制限値を設定する; I<addr> は同上。"
13416
13417 #~ msgid "Set usage."
13418 #~ msgstr "使用量を設定する。"
13419
13420 #~ msgid "Sync disk copy of a file system's quota."
13421 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
13422
13423 #~ msgid "Get collected stats."
13424 #~ msgstr "収集された統計を取得する。"
13425
13426 #~ msgid ""
13427 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
13428 #~ "I<errno> is set appropriately."
13429 #~ msgstr ""
13430 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
13431 #~ "I<errno> が適切な値に設定される。"
13432
13433 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
13434 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
13435
13436 #~ msgid "Bad I<addr> value."
13437 #~ msgstr "I<addr> の値に誤りがある。"
13438
13439 #~ msgid ""
13440 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
13441 #~ msgstr ""
13442 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
13443 #~ "付からなかった。"
13444
13445 #~ msgid "Too many open files: cannot open quota file."
13446 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
13447
13448 #~ msgid "I<special> cannot be found in the mount table."
13449 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
13450
13451 #~ msgid "The kernel was compiled without quota support."
13452 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
13453
13454 #~ msgid ""
13455 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
13456 #~ "asked for another I<id> than that of the process itself, or anything "
13457 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
13458 #~ msgstr ""
13459 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
13460 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
13461 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
13462
13463 #~ msgid ""
13464 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
13465 #~ "for a file system that didn't have quota enabled."
13466 #~ msgstr ""
13467 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
13468 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"