OSDN Git Service

LDP: Update POT and ja.po to LDP v3.79
[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-02-04 23:30+0900\n"
10 "PO-Revision-Date: 2015-01-27 02:55+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:27 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:27
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:28 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:30 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:47 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:242 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:2607
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:247 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:2613 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:2659
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:279
269 #: build/C/man2/kexec_load.2:283 build/C/man2/kexec_load.2:292
270 #: build/C/man2/kexec_load.2:298 build/C/man2/kexec_load.2:301
271 #: build/C/man2/kexec_load.2:306 build/C/man2/lookup_dcookie.2:54
272 #: build/C/man2/modify_ldt.2:113 build/C/man2/pciconfig_read.2:78
273 #: build/C/man2/perf_event_open.2:2664 build/C/man2/personality.2:70
274 #: build/C/man2/pivot_root.2:114 build/C/man2/process_vm_readv.2:246
275 #: build/C/man2/process_vm_readv.2:257 build/C/man2/process_vm_readv.2:261
276 #: build/C/man2/ptrace.2:1926 build/C/man2/quotactl.2:434
277 #: build/C/man2/quotactl.2:501 build/C/man2/sendfile.2:128
278 #: build/C/man2/splice.2:161 build/C/man2/tee.2:107
279 #: build/C/man2/vmsplice.2:137
280 #, no-wrap
281 msgid "B<EINVAL>"
282 msgstr "B<EINVAL>"
283
284 #. type: Plain text
285 #: build/C/man2/arch_prctl.2:97
286 msgid "I<code> is not a valid subcommand."
287 msgstr "I<code> が有効なサブコマンドでない。"
288
289 #. type: TP
290 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:99
291 #: build/C/man2/kexec_load.2:323 build/C/man2/lookup_dcookie.2:65
292 #: build/C/man2/pciconfig_read.2:105 build/C/man2/perf_event_open.2:2732
293 #: build/C/man2/pivot_root.2:120 build/C/man2/process_vm_readv.2:283
294 #: build/C/man2/ptrace.2:1936 build/C/man2/quotactl.2:456
295 #: build/C/man2/vm86.2:68
296 #, no-wrap
297 msgid "B<EPERM>"
298 msgstr "B<EPERM>"
299
300 #.  .SH AUTHOR
301 #.  Man page written by Andi Kleen.
302 #. type: Plain text
303 #: build/C/man2/arch_prctl.2:103
304 msgid "I<addr> is outside the process address space."
305 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
306
307 #. type: SH
308 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:303
309 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:335
310 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
311 #: build/C/man2/nfsservctl.2:58 build/C/man2/outb.2:87
312 #: build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:2756
313 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:73
314 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:295
315 #: build/C/man2/ptrace.2:1954 build/C/man2/sendfile.2:148
316 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:184
317 #: build/C/man2/tee.2:125 build/C/man2/vm86.2:73 build/C/man2/vmsplice.2:153
318 #, no-wrap
319 msgid "CONFORMING TO"
320 msgstr "準拠"
321
322 #. type: Plain text
323 #: build/C/man2/arch_prctl.2:107
324 msgid ""
325 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
326 "programs intended to be portable."
327 msgstr ""
328 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
329 "うべきでない。"
330
331 #. type: SH
332 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:305
333 #: build/C/man2/get_robust_list.2:118 build/C/man2/getunwind.2:99
334 #: build/C/man2/kexec_load.2:337 build/C/man2/lookup_dcookie.2:81
335 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:2761
336 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
337 #: build/C/man2/process_vm_readv.2:297 build/C/man2/ptrace.2:1956
338 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:186
339 #: build/C/man2/tee.2:127 build/C/man2/vmsplice.2:155
340 #, no-wrap
341 msgid "NOTES"
342 msgstr "注意"
343
344 #. type: Plain text
345 #: build/C/man2/arch_prctl.2:110
346 msgid ""
347 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
348 "currently."
349 msgstr ""
350 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
351 "ポートされている。"
352
353 #. type: Plain text
354 #: build/C/man2/arch_prctl.2:112
355 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
356 msgstr ""
357 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
358 "される。"
359
360 #. type: Plain text
361 #: build/C/man2/arch_prctl.2:115
362 msgid "B<ARCH_SET_GS> is disabled in some kernels."
363 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
364
365 #. type: Plain text
366 #: build/C/man2/arch_prctl.2:130
367 msgid ""
368 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
369 "faster alternative to set a 32-bit base using a segment selector by setting "
370 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
371 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
372 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
373 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
374 msgstr ""
375 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
376 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
377 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
378 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
379 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモ"
380 "リーは、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
381
382 #. type: Plain text
383 #: build/C/man2/arch_prctl.2:135
384 msgid ""
385 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
386 "have to declare it yourself for now.  This may be fixed in future glibc "
387 "versions."
388 msgstr ""
389 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
390 "今のところユーザーは自分自身で宣言する必要がある。 これは将来の glibc のバー"
391 "ジョンで修正されるかもしれない。"
392
393 #. type: Plain text
394 #: build/C/man2/arch_prctl.2:138
395 msgid "I<FS> may be already used by the threading library."
396 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
397
398 #. type: SH
399 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:319
400 #: build/C/man2/get_robust_list.2:127 build/C/man2/getunwind.2:111
401 #: build/C/man2/kexec_load.2:341 build/C/man2/modify_ldt.2:136
402 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:114
403 #: build/C/man2/perf_event_open.2:2903 build/C/man2/perfmonctl.2:205
404 #: build/C/man2/personality.2:77 build/C/man2/pivot_root.2:143
405 #: build/C/man2/process_vm_readv.2:347 build/C/man2/ptrace.2:2122
406 #: build/C/man2/quotactl.2:507 build/C/man2/sendfile.2:197
407 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:240
408 #: build/C/man2/tee.2:214 build/C/man2/vmsplice.2:164
409 #, no-wrap
410 msgid "SEE ALSO"
411 msgstr "関連項目"
412
413 #. type: Plain text
414 #: build/C/man2/arch_prctl.2:143
415 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
416 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
417
418 #. type: Plain text
419 #: build/C/man2/arch_prctl.2:145
420 msgid "AMD X86-64 Programmer's manual"
421 msgstr "AMD X86-64 Programmer's manual"
422
423 #. type: SH
424 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:333
425 #: build/C/man2/get_robust_list.2:136 build/C/man2/getunwind.2:113
426 #: build/C/man2/kexec_load.2:350 build/C/man2/lookup_dcookie.2:88
427 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:60
428 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:116
429 #: build/C/man2/perf_event_open.2:2909 build/C/man2/perfmonctl.2:209
430 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:149
431 #: build/C/man2/process_vm_readv.2:350 build/C/man2/ptrace.2:2137
432 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
433 #: build/C/man2/set_tid_address.2:103 build/C/man2/splice.2:244
434 #: build/C/man2/tee.2:217 build/C/man2/vm86.2:76 build/C/man2/vmsplice.2:167
435 #, no-wrap
436 msgid "COLOPHON"
437 msgstr "この文書について"
438
439 #. type: Plain text
440 #: build/C/man2/arch_prctl.2:153 build/C/man2/futex.2:341
441 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:121
442 #: build/C/man2/kexec_load.2:358 build/C/man2/lookup_dcookie.2:96
443 #: build/C/man2/modify_ldt.2:146 build/C/man2/nfsservctl.2:68
444 #: build/C/man2/outb.2:107 build/C/man2/pciconfig_read.2:124
445 #: build/C/man2/perf_event_open.2:2917 build/C/man2/perfmonctl.2:217
446 #: build/C/man2/personality.2:87 build/C/man2/pivot_root.2:157
447 #: build/C/man2/process_vm_readv.2:358 build/C/man2/ptrace.2:2145
448 #: build/C/man2/quotactl.2:520 build/C/man2/sendfile.2:211
449 #: build/C/man2/set_tid_address.2:111 build/C/man2/splice.2:252
450 #: build/C/man2/tee.2:225 build/C/man2/vm86.2:84 build/C/man2/vmsplice.2:175
451 #, fuzzy
452 #| msgid ""
453 #| "This page is part of release 3.78 of the Linux I<man-pages> project.  A "
454 #| "description of the project, information about reporting bugs, and the "
455 #| "latest version of this page, can be found at \\%http://www.kernel.org/doc/"
456 #| "man-pages/."
457 msgid ""
458 "This page is part of release 3.79 of the Linux I<man-pages> project.  A "
459 "description of the project, information about reporting bugs, and the latest "
460 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
461 "pages/."
462 msgstr ""
463 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.78 の一部\n"
464 "である。プロジェクトの説明とバグ報告に関する情報は\n"
465 "http://www.kernel.org/doc/man-pages/ に書かれている。"
466
467 #. type: TH
468 #: build/C/man2/futex.2:53
469 #, no-wrap
470 msgid "FUTEX"
471 msgstr "FUTEX"
472
473 #. type: TH
474 #: build/C/man2/futex.2:53
475 #, no-wrap
476 msgid "2014-05-21"
477 msgstr "2014-05-21"
478
479 #. type: Plain text
480 #: build/C/man2/futex.2:56
481 msgid "futex - fast user-space locking"
482 msgstr "futex - 高速ユーザー空間ロック"
483
484 #. type: Plain text
485 #: build/C/man2/futex.2:61
486 #, no-wrap
487 msgid ""
488 "B<#include E<lt>linux/futex.hE<gt>>\n"
489 "B<#include E<lt>sys/time.hE<gt>>\n"
490 msgstr ""
491 "B<#include E<lt>linux/futex.hE<gt>>\n"
492 "B<#include E<lt>sys/time.hE<gt>>\n"
493
494 #. type: Plain text
495 #: build/C/man2/futex.2:64
496 #, no-wrap
497 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
498 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
499
500 #.  int *? void *? u32 *?
501 #. type: Plain text
502 #: build/C/man2/futex.2:67
503 #, no-wrap
504 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
505 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
506
507 #. type: Plain text
508 #: build/C/man2/futex.2:70 build/C/man2/getunwind.2:40
509 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
510 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
511 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
512 msgstr ""
513 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
514 "を参照。"
515
516 #. type: Plain text
517 #: build/C/man2/futex.2:86
518 msgid ""
519 "The B<futex>()  system call provides a method for a program to wait for a "
520 "value at a given address to change, and a method to wake up anyone waiting "
521 "on a particular address (while the addresses for the same memory in separate "
522 "processes may not be equal, the kernel maps them internally so the same "
523 "memory mapped in different locations will correspond for B<futex>()  "
524 "calls).  This system call is typically used to implement the contended case "
525 "of a lock in shared memory, as described in B<futex>(7)."
526 msgstr ""
527 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
528 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
529 "を提供する (プロセスが異なれば同じメモリーに対するアドレスも同じではないかも"
530 "しれないが、 カーネルは異なる位置にマップされた同じメモリーを B<futex>()  で"
531 "使えるよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書"
532 "かれているように、 共有メモリー中のロックが競合する場合の処理を実装するのに用"
533 "いられる。"
534
535 #. type: Plain text
536 #: build/C/man2/futex.2:93
537 msgid ""
538 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
539 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
540 "mean putting the calling process to sleep or, conversely, waking a waiting "
541 "process."
542 msgstr ""
543 "B<futex>(7)  の操作がユーザー空間で競合なく完了しなかった場合、 カーネルに仲"
544 "裁させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセ"
545 "スを sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを"
546 "意味する。"
547
548 #. type: Plain text
549 #: build/C/man2/futex.2:100
550 msgid ""
551 "Callers of this function are expected to adhere to the semantics as set out "
552 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
553 "instructions, this in turn probably means that most users will in fact be "
554 "library authors and not general application developers."
555 msgstr ""
556 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
557 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
558 "書くことが含まれる。 このことは言い換えると futex のユーザーのほとんどは実際"
559 "はライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
560 "る。"
561
562 #. type: Plain text
563 #: build/C/man2/futex.2:108
564 msgid ""
565 "The I<uaddr> argument needs to point to an aligned integer which stores the "
566 "counter.  The operation to execute is passed via the I<op> argument, along "
567 "with a value I<val>."
568 msgstr ""
569 "I<uaddr> 引き数は、カウンターを格納する、 アラインメントの揃った int 型変数を"
570 "指している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> ととも"
571 "に渡される。"
572
573 #. type: Plain text
574 #: build/C/man2/futex.2:110
575 msgid "Five operations are currently defined:"
576 msgstr "現在のところ 5 つの操作が定義されている:"
577
578 #. type: TP
579 #: build/C/man2/futex.2:110 build/C/man2/futex.2:223
580 #, no-wrap
581 msgid "B<FUTEX_WAIT>"
582 msgstr "B<FUTEX_WAIT>"
583
584 #. type: Plain text
585 #: build/C/man2/futex.2:133
586 msgid ""
587 "This operation atomically verifies that the futex address I<uaddr> still "
588 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
589 "address.  If the I<timeout> argument is non-NULL, its contents specify the "
590 "duration of the wait.  (This interval will be rounded up to the system clock "
591 "granularity, and kernel scheduling delays mean that the blocking interval "
592 "may overrun by a small amount.)  If I<timeout> is NULL, the call blocks "
593 "indefinitely.  The arguments I<uaddr2> and I<val3> are ignored."
594 msgstr ""
595 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
596 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
597 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
598 "の内容は待ち時間の最大値を表す (この停止時間はシステムクロックの粒度に切り上"
599 "げられ、 カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 "
600 "NULL の場合、 呼び出しは無限に停止する。 引き数 I<uaddr2> と I<val3> は無視さ"
601 "れる。"
602
603 #. type: Plain text
604 #: build/C/man2/futex.2:141
605 msgid ""
606 "For B<futex>(7), this call is executed if decrementing the count gave a "
607 "negative value (indicating contention), and will sleep until another process "
608 "releases the futex and executes the B<FUTEX_WAKE> operation."
609 msgstr ""
610 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
611 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
612 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
613
614 #. type: TP
615 #: build/C/man2/futex.2:141 build/C/man2/futex.2:229
616 #, no-wrap
617 msgid "B<FUTEX_WAKE>"
618 msgstr "B<FUTEX_WAKE>"
619
620 #. type: Plain text
621 #: build/C/man2/futex.2:152
622 msgid ""
623 "This operation wakes at most I<val> processes waiting on this futex address "
624 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
625 "I<val3> are ignored."
626 msgstr ""
627 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
628 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
629 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
630
631 #. type: Plain text
632 #: build/C/man2/futex.2:158
633 msgid ""
634 "For B<futex>(7), this is executed if incrementing the count showed that "
635 "there were waiters, once the futex value has been set to 1 (indicating that "
636 "it is available)."
637 msgstr ""
638 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
639 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
640 "場合に実行される。"
641
642 #. type: TP
643 #: build/C/man2/futex.2:158
644 #, no-wrap
645 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
646 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
647
648 #.  , suitable for .BR poll (2).
649 #. type: Plain text
650 #: build/C/man2/futex.2:174
651 msgid ""
652 "To support asynchronous wakeups, this operation associates a file descriptor "
653 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
654 "receive the signal number that was passed in I<val>.  The calling process "
655 "must close the returned file descriptor after use.  The arguments "
656 "I<timeout>, I<uaddr2> and I<val3> are ignored."
657 msgstr ""
658 "非同期の wake に対応するため、この操作はファイルディスクリプターを futex に "
659 "関連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で"
660 "渡されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
661 "ファイルディスクリプターを クローズしなければならない。 引き数 I<timeout>, "
662 "I<uaddr2>, I<val3> は無視される。"
663
664 #. type: Plain text
665 #: build/C/man2/futex.2:179
666 msgid ""
667 "To prevent race conditions, the caller should test if the futex has been "
668 "upped after B<FUTEX_FD> returns."
669 msgstr ""
670 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
671 "up されたかどうかを確認しなければならない。"
672
673 #. type: Plain text
674 #: build/C/man2/futex.2:183
675 msgid ""
676 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
677 "2.6.26 onward."
678 msgstr ""
679 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
680 "ている。"
681
682 #. type: TP
683 #: build/C/man2/futex.2:183
684 #, no-wrap
685 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
686 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
687
688 #. type: Plain text
689 #: build/C/man2/futex.2:198
690 msgid ""
691 "This operation was introduced in order to avoid a \"thundering herd\" effect "
692 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
693 "another futex.  This call wakes up I<val> processes, and requeues all other "
694 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
695 "I<val3> are ignored."
696 msgstr ""
697 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
698 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
699 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
700 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
701 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
702
703 #. type: TP
704 #: build/C/man2/futex.2:198
705 #, no-wrap
706 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
707 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
708
709 #. type: Plain text
710 #: build/C/man2/futex.2:216
711 msgid ""
712 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
713 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
714 "but first checks whether the location I<uaddr> still contains the value "
715 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
716 "argument I<timeout> is ignored."
717 msgstr ""
718 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
719 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
720 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
721 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
722
723 #. type: Plain text
724 #: build/C/man2/futex.2:223
725 msgid ""
726 "In the event of an error, all operations return -1, and set I<errno> to "
727 "indicate the error.  The return value on success depends on the operation, "
728 "as described in the following list:"
729 msgstr ""
730 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
731 "される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りで"
732 "ある。"
733
734 #. type: Plain text
735 #: build/C/man2/futex.2:229
736 msgid ""
737 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
738 "the various possible error returns."
739 msgstr ""
740 "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性"
741 "があるエラーについては「エラー」の節を参照。"
742
743 #. type: Plain text
744 #: build/C/man2/futex.2:232 build/C/man2/futex.2:238 build/C/man2/futex.2:241
745 msgid "Returns the number of processes woken up."
746 msgstr "wake したプロセスの数を返す。"
747
748 #. type: TP
749 #: build/C/man2/futex.2:232
750 #, no-wrap
751 msgid "B<FUTEX_FD>"
752 msgstr "B<FUTEX_FD>"
753
754 #. type: Plain text
755 #: build/C/man2/futex.2:235
756 msgid "Returns the new file descriptor associated with the futex."
757 msgstr "futex に関連づけられた新たなファイルディスクリプターを返す。"
758
759 #. type: TP
760 #: build/C/man2/futex.2:235
761 #, no-wrap
762 msgid "B<FUTEX_REQUEUE>"
763 msgstr "B<FUTEX_REQUEUE>"
764
765 #. type: TP
766 #: build/C/man2/futex.2:238
767 #, no-wrap
768 msgid "B<FUTEX_CMP_REQUEUE>"
769 msgstr "B<FUTEX_CMP_REQUEUE>"
770
771 #. type: TP
772 #: build/C/man2/futex.2:242 build/C/man2/perf_event_open.2:2635
773 #: build/C/man2/quotactl.2:486
774 #, no-wrap
775 msgid "B<EACCES>"
776 msgstr "B<EACCES>"
777
778 #. type: Plain text
779 #: build/C/man2/futex.2:245
780 msgid "No read access to futex memory."
781 msgstr "futex メモリーに読み込みアクセス権がなかった。"
782
783 #. type: TP
784 #: build/C/man2/futex.2:245 build/C/man2/sendfile.2:116
785 #: build/C/man2/splice.2:151 build/C/man2/tee.2:101
786 #: build/C/man2/vmsplice.2:127
787 #, no-wrap
788 msgid "B<EAGAIN>"
789 msgstr "B<EAGAIN>"
790
791 #. type: Plain text
792 #: build/C/man2/futex.2:256
793 msgid ""
794 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
795 "equal to the expected value I<val3>.  (This probably indicates a race; use "
796 "the safe B<FUTEX_WAKE> now.)"
797 msgstr ""
798 "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出"
799 "された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> "
800 "を使うこと。)"
801
802 #. type: Plain text
803 #: build/C/man2/futex.2:261
804 msgid "Error retrieving I<timeout> information from user space."
805 msgstr "ユーザー空間から I<timeout> の情報を取得する際にエラーが発生した。"
806
807 #. type: TP
808 #: build/C/man2/futex.2:261
809 #, no-wrap
810 msgid "B<EINTR>"
811 msgstr "B<EINTR>"
812
813 #. type: Plain text
814 #: build/C/man2/futex.2:268
815 msgid ""
816 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
817 "a spurious wakeup."
818 msgstr ""
819 "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中"
820 "断された。"
821
822 #. type: Plain text
823 #: build/C/man2/futex.2:271
824 msgid "Invalid argument."
825 msgstr "無効な引き数。"
826
827 #. type: TP
828 #: build/C/man2/futex.2:271
829 #, no-wrap
830 msgid "B<ENFILE>"
831 msgstr "B<ENFILE>"
832
833 #. type: Plain text
834 #: build/C/man2/futex.2:274
835 msgid "The system limit on the total number of open files has been reached."
836 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
837
838 #. type: TP
839 #: build/C/man2/futex.2:274 build/C/man2/modify_ldt.2:126
840 #: build/C/man2/pciconfig_read.2:93 build/C/man2/perf_event_open.2:2718
841 #: build/C/man2/quotactl.2:447 build/C/man2/vm86.2:64
842 #, no-wrap
843 msgid "B<ENOSYS>"
844 msgstr "B<ENOSYS>"
845
846 #. type: Plain text
847 #: build/C/man2/futex.2:278
848 msgid "Invalid operation specified in I<op>."
849 msgstr "I<op> に無効な操作が指定された。"
850
851 #. type: TP
852 #: build/C/man2/futex.2:278
853 #, no-wrap
854 msgid "B<ETIMEDOUT>"
855 msgstr "B<ETIMEDOUT>"
856
857 #. type: Plain text
858 #: build/C/man2/futex.2:283
859 msgid "Timeout during the B<FUTEX_WAIT> operation."
860 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
861
862 #. type: TP
863 #: build/C/man2/futex.2:283
864 #, no-wrap
865 msgid "B<EWOULDBLOCK>"
866 msgstr "B<EWOULDBLOCK>"
867
868 #. type: Plain text
869 #: build/C/man2/futex.2:293
870 msgid ""
871 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
872 "to the expected value I<val> at the time of the call."
873 msgstr ""
874 "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 "
875 "I<val> と異なっていた。"
876
877 #. type: SH
878 #: build/C/man2/futex.2:293 build/C/man2/get_robust_list.2:116
879 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:328
880 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
881 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:292
882 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
883 #: build/C/man2/splice.2:179 build/C/man2/tee.2:120
884 #: build/C/man2/vmsplice.2:148
885 #, no-wrap
886 msgid "VERSIONS"
887 msgstr "バージョン"
888
889 #. type: Plain text
890 #: build/C/man2/futex.2:303
891 msgid ""
892 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
893 "from what was described above.  A 4-argument system call with the semantics "
894 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70, one "
895 "argument was added.  In Linux 2.6.7, a sixth argument was added\\(emmessy, "
896 "especially on the s390 architecture."
897 msgstr ""
898 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
899 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
900 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
901 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテク"
902 "チャー上の特別のものである。"
903
904 #. type: Plain text
905 #: build/C/man2/futex.2:305 build/C/man2/set_tid_address.2:99
906 #: build/C/man2/splice.2:186 build/C/man2/tee.2:127
907 #: build/C/man2/vmsplice.2:155
908 msgid "This system call is Linux-specific."
909 msgstr "このシステムコールは Linux 固有である。"
910
911 #.  .SH "AUTHORS"
912 #.  .PP
913 #.  Futexes were designed and worked on by
914 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
915 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
916 #.  and Rusty Russell (IBM Linux Technology Center).
917 #.  This page written by bert hubert.
918 #. type: Plain text
919 #: build/C/man2/futex.2:319
920 msgid ""
921 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
922 "for end-users.  (There is no wrapper function for this system call in "
923 "glibc.)  Implementors are expected to be assembly literate and to have read "
924 "the sources of the futex user-space library referenced below."
925 msgstr ""
926 "繰り返すが、裸の futex はエンドユーザーが容易に使うことのできる概念として 意"
927 "図されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
928 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザー空間ラ"
929 "イブラリの ソースを読み終えていることが要求される。"
930
931 #. type: Plain text
932 #: build/C/man2/futex.2:322
933 msgid "B<restart_syscall>(2), B<futex>(7)"
934 msgstr "B<restart_syscall>(2), B<futex>(7)"
935
936 #. type: Plain text
937 #: build/C/man2/futex.2:325
938 msgid ""
939 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
940 "of the Ottawa Linux Symposium 2002), online at"
941 msgstr ""
942 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
943 "of the Ottawa Linux Symposium 2002), online at"
944
945 #. type: Plain text
946 #: build/C/man2/futex.2:328
947 msgid ""
948 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
949 "E<.UE>"
950 msgstr ""
951 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
952 "E<.UE>"
953
954 #. type: Plain text
955 #: build/C/man2/futex.2:330
956 msgid "Futex example library, futex-*.tar.bz2 at"
957 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
958
959 #. type: Plain text
960 #: build/C/man2/futex.2:333
961 msgid ""
962 "E<.UR ftp://ftp.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<."
963 "UE>"
964 msgstr ""
965 "E<.UR ftp://ftp.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<."
966 "UE>"
967
968 #. type: TH
969 #: build/C/man2/get_robust_list.2:29
970 #, no-wrap
971 msgid "GET_ROBUST_LIST"
972 msgstr "GET_ROBUST_LIST"
973
974 #. type: TH
975 #: build/C/man2/get_robust_list.2:29 build/C/man2/ptrace.2:46
976 #, no-wrap
977 msgid "2015-01-22"
978 msgstr "2015-01-22"
979
980 #. type: TH
981 #: build/C/man2/get_robust_list.2:29
982 #, no-wrap
983 msgid "Linux System Calls"
984 msgstr "Linux System Calls"
985
986 #. type: Plain text
987 #: build/C/man2/get_robust_list.2:32
988 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
989 msgstr ""
990
991 #. type: Plain text
992 #: build/C/man2/get_robust_list.2:37
993 #, no-wrap
994 msgid ""
995 "B<#include E<lt>linux/futex.hE<gt>>\n"
996 "B<#include E<lt>sys/types.hE<gt>>\n"
997 "B<#include E<lt>syscall.hE<gt>>\n"
998 msgstr ""
999 "B<#include E<lt>linux/futex.hE<gt>>\n"
1000 "B<#include E<lt>sys/types.hE<gt>>\n"
1001 "B<#include E<lt>syscall.hE<gt>>\n"
1002
1003 #. type: Plain text
1004 #: build/C/man2/get_robust_list.2:41
1005 #, no-wrap
1006 msgid ""
1007 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
1008 "B<                     size_t *>I<len_ptr>B<);>\n"
1009 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
1010 msgstr ""
1011
1012 #. type: Plain text
1013 #: build/C/man2/get_robust_list.2:45 build/C/man2/kexec_load.2:47
1014 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
1015 msgstr ""
1016 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
1017 "の節を参照。"
1018
1019 #. type: Plain text
1020 #: build/C/man2/get_robust_list.2:50
1021 msgid ""
1022 "The robust futex implementation needs to maintain per-thread lists of robust "
1023 "futexes which are unlocked when the thread exits.  These lists are managed "
1024 "in user space; the kernel is notified about only the location of the head of "
1025 "the list."
1026 msgstr ""
1027
1028 #. type: Plain text
1029 #: build/C/man2/get_robust_list.2:66
1030 msgid ""
1031 "The B<get_robust_list>()  system call returns the head of the robust futex "
1032 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1033 "the head of the list for the calling thread is returned.  The list head is "
1034 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1035 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1036 msgstr ""
1037
1038 #. type: Plain text
1039 #: build/C/man2/get_robust_list.2:78
1040 msgid ""
1041 "The B<set_robust_list>()  system call requests the kernel to record the head "
1042 "of the list of robust futexes owned by the calling thread.  The I<head> "
1043 "argument is the list head to record.  The I<len> argument should be "
1044 "I<sizeof(*head)>."
1045 msgstr ""
1046
1047 #. type: Plain text
1048 #: build/C/man2/get_robust_list.2:85
1049 msgid ""
1050 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1051 "when the operation is successful, an error code otherwise."
1052 msgstr ""
1053
1054 #. type: Plain text
1055 #: build/C/man2/get_robust_list.2:89
1056 msgid ""
1057 "The B<set_robust_list>()  system call can fail with the following error:"
1058 msgstr ""
1059
1060 #. type: Plain text
1061 #: build/C/man2/get_robust_list.2:95
1062 msgid ""
1063 "I<len> does not match the size of structure B<struct robust_list_head> "
1064 "expected by kernel."
1065 msgstr ""
1066
1067 #. type: Plain text
1068 #: build/C/man2/get_robust_list.2:99
1069 msgid ""
1070 "The B<get_robust_list>()  system call can fail with the following errors:"
1071 msgstr ""
1072
1073 #. type: Plain text
1074 #: build/C/man2/get_robust_list.2:107
1075 msgid ""
1076 "The calling process does not have permission to see the robust futex list of "
1077 "the thread with the thread ID I<pid>, and does not have the "
1078 "B<CAP_SYS_PTRACE> capability."
1079 msgstr ""
1080
1081 #. type: TP
1082 #: build/C/man2/get_robust_list.2:107 build/C/man2/perf_event_open.2:2746
1083 #: build/C/man2/process_vm_readv.2:287 build/C/man2/ptrace.2:1949
1084 #: build/C/man2/quotactl.2:461 build/C/man2/quotactl.2:504
1085 #, no-wrap
1086 msgid "B<ESRCH>"
1087 msgstr "B<ESRCH>"
1088
1089 #. type: Plain text
1090 #: build/C/man2/get_robust_list.2:112
1091 msgid "No thread with the thread ID I<pid> could be found."
1092 msgstr ""
1093
1094 #. type: Plain text
1095 #: build/C/man2/get_robust_list.2:116
1096 msgid ""
1097 "The head of the robust futex list can't be stored at the location I<head>."
1098 msgstr ""
1099
1100 #. type: Plain text
1101 #: build/C/man2/get_robust_list.2:118
1102 msgid "These system calls were added in Linux 2.6.17."
1103 msgstr "これらのシステムコールは Linux 2.6.17 で追加された。"
1104
1105 #. type: Plain text
1106 #: build/C/man2/get_robust_list.2:123
1107 msgid ""
1108 "These system calls are not needed by normal applications.  No support for "
1109 "them is provided in glibc.  In the unlikely event that you want to call them "
1110 "directly, use B<syscall>(2)."
1111 msgstr ""
1112 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1113 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1114 "呼び出したい場合は B<syscall>(2) を使うこと。"
1115
1116 #. type: Plain text
1117 #: build/C/man2/get_robust_list.2:127
1118 msgid ""
1119 "A thread can have only one robust futex list; therefore applications that "
1120 "wish to use this functionality should use the robust mutexes provided by "
1121 "glibc."
1122 msgstr ""
1123
1124 #.  .BR pthread_mutexattr_setrobust_np (3)
1125 #. type: Plain text
1126 #: build/C/man2/get_robust_list.2:130
1127 msgid "B<futex>(2)"
1128 msgstr "B<futex>(2)"
1129
1130 #.  http://lwn.net/Articles/172149/
1131 #. type: Plain text
1132 #: build/C/man2/get_robust_list.2:136
1133 msgid ""
1134 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1135 "txt> in the Linux kernel source tree"
1136 msgstr ""
1137
1138 #. type: TH
1139 #: build/C/man2/getunwind.2:27
1140 #, no-wrap
1141 msgid "GETUNWIND"
1142 msgstr ""
1143
1144 #. type: TH
1145 #: build/C/man2/getunwind.2:27
1146 #, no-wrap
1147 msgid "2014-09-21"
1148 msgstr "2014-09-21"
1149
1150 #. type: Plain text
1151 #: build/C/man2/getunwind.2:30
1152 msgid "getunwind - copy the unwind data to caller's buffer"
1153 msgstr ""
1154
1155 #. type: Plain text
1156 #: build/C/man2/getunwind.2:34
1157 #, no-wrap
1158 msgid ""
1159 "B<#include E<lt>syscall.hE<gt>>\n"
1160 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1161 msgstr ""
1162 "B<#include E<lt>syscall.hE<gt>>\n"
1163 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1164
1165 #. type: Plain text
1166 #: build/C/man2/getunwind.2:36
1167 #, no-wrap
1168 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1169 msgstr ""
1170
1171 #. type: Plain text
1172 #: build/C/man2/getunwind.2:42
1173 msgid "I<Note: this function is obsolete.>"
1174 msgstr ""
1175
1176 #. type: Plain text
1177 #: build/C/man2/getunwind.2:52
1178 msgid ""
1179 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1180 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1181 "of the unwind data; this data describes the gate page (kernel code that is "
1182 "mapped into user space)."
1183 msgstr ""
1184
1185 #. type: Plain text
1186 #: build/C/man2/getunwind.2:64
1187 msgid ""
1188 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1189 "copied only if I<buf_size> is greater than or equal to the size of the "
1190 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1191 "call succeeds, returning the size that would be needed to store the unwind "
1192 "data."
1193 msgstr ""
1194
1195 #. type: Plain text
1196 #: build/C/man2/getunwind.2:68
1197 msgid ""
1198 "The first part of the unwind data contains an unwind table.  The rest "
1199 "contains the associated unwind information, in no particular order.  The "
1200 "unwind table contains entries of the following form:"
1201 msgstr ""
1202
1203 #. type: Plain text
1204 #: build/C/man2/getunwind.2:73
1205 #, no-wrap
1206 msgid ""
1207 "    u64 start;      (64-bit address of start of function)\n"
1208 "    u64 end;        (64-bit address of end of function)\n"
1209 "    u64 info;       (BUF-relative offset to unwind info)\n"
1210 msgstr ""
1211
1212 #. type: Plain text
1213 #: build/C/man2/getunwind.2:81
1214 msgid ""
1215 "An entry whose I<start> value is zero indicates the end of the table.  For "
1216 "more information about the format, see the I<IA-64 Software Conventions and "
1217 "Runtime Architecture> manual."
1218 msgstr ""
1219
1220 #. type: Plain text
1221 #: build/C/man2/getunwind.2:88
1222 msgid ""
1223 "On success, B<getunwind>()  returns the size of the unwind data.  On error, "
1224 "-1 is returned and I<errno> is set to indicate the error."
1225 msgstr ""
1226 "成功すると、 B<getunwind> は unwind されたデータのサイズを返す。 エラーの場"
1227 "合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1228
1229 #. type: Plain text
1230 #: build/C/man2/getunwind.2:94
1231 msgid ""
1232 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1233 "stored in the space specified by I<buf>."
1234 msgstr ""
1235
1236 #. type: Plain text
1237 #: build/C/man2/getunwind.2:96
1238 msgid "This system call is available since Linux 2.4."
1239 msgstr ""
1240
1241 #. type: Plain text
1242 #: build/C/man2/getunwind.2:99
1243 msgid ""
1244 "This system call is Linux-specific, and is available only on the IA-64 "
1245 "architecture."
1246 msgstr ""
1247
1248 #. type: Plain text
1249 #: build/C/man2/getunwind.2:107
1250 msgid ""
1251 "This system call has been deprecated.  The modern way to obtain the kernel's "
1252 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1253 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1254 msgstr ""
1255
1256 #. type: Plain text
1257 #: build/C/man2/getunwind.2:111
1258 msgid ""
1259 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1260 "that you want to call it, use B<syscall>(2)."
1261 msgstr ""
1262 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1263 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1264
1265 #. type: Plain text
1266 #: build/C/man2/getunwind.2:113
1267 msgid "B<getauxval>(3)"
1268 msgstr "B<getauxval>(3)"
1269
1270 #. type: TH
1271 #: build/C/man2/kexec_load.2:27
1272 #, no-wrap
1273 msgid "KEXEC_LOAD"
1274 msgstr "KEXEC_LOAD"
1275
1276 #. type: TH
1277 #: build/C/man2/kexec_load.2:27 build/C/man2/personality.2:32
1278 #, fuzzy, no-wrap
1279 #| msgid "2015-01-10"
1280 msgid "2015-02-01"
1281 msgstr "2015-01-10"
1282
1283 #. type: Plain text
1284 #: build/C/man2/kexec_load.2:30
1285 #, fuzzy
1286 #| msgid "kexec_load - load a new kernel for later execution"
1287 msgid "kexec_load, kexec_file_load - load a new kernel for later execution"
1288 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1289
1290 #. type: Plain text
1291 #: build/C/man2/kexec_load.2:33
1292 #, fuzzy, no-wrap
1293 #| msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1294 msgid "B<#include E<lt>linux/kexec.hE<gt>>\n"
1295 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1296
1297 #. type: Plain text
1298 #: build/C/man2/kexec_load.2:37
1299 #, fuzzy, no-wrap
1300 #| msgid "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,>"
1301 msgid ""
1302 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,>\n"
1303 "B<                struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>\n"
1304 msgstr "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,>"
1305
1306 #. type: Plain text
1307 #: build/C/man2/kexec_load.2:39
1308 #, fuzzy, no-wrap
1309 #| msgid "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,>"
1310 msgid "B<long kexec_file_load(int >I<kernel_fd>B<, int >I<initrd_fd>B<,>\n"
1311 msgstr "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,>"
1312
1313 #. type: Plain text
1314 #: build/C/man2/kexec_load.2:43
1315 #, fuzzy, no-wrap
1316 #| msgid ""
1317 #| "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
1318 #| "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
1319 #| "B<                    unsigned long >I<flags>B<);>\n"
1320 msgid ""
1321 "B<                    unsigned long >I<cmdline_len>B<, const char *>I<cmdline>B<,>\n"
1322 "B<                    unsigned long >I<flags>B<);>\n"
1323 msgstr ""
1324 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
1325 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
1326 "B<                    unsigned long >I<flags>B<);>\n"
1327
1328 #. type: Plain text
1329 #: build/C/man2/kexec_load.2:52
1330 msgid ""
1331 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1332 "later by B<reboot>(2)."
1333 msgstr ""
1334 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1335 "その後の B<reboot>(2) で実行できるようにする。"
1336
1337 #. type: Plain text
1338 #: build/C/man2/kexec_load.2:58
1339 msgid ""
1340 "The I<flags> argument is a bit mask that controls the operation of the "
1341 "call.  The following values can be specified in I<flags>:"
1342 msgstr ""
1343 "I<flags> 引き数は、システムコールの呼び出しの動作を制御するマスクビットであ"
1344 "る。 I<flags> には以下の値を指定できる。"
1345
1346 #. type: TP
1347 #: build/C/man2/kexec_load.2:58
1348 #, no-wrap
1349 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1350 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1351
1352 #. type: Plain text
1353 #: build/C/man2/kexec_load.2:74
1354 msgid ""
1355 "Execute the new kernel automatically on a system crash.  This \"crash kernel"
1356 "\" is loaded into an area of reserved memory that is determined at boot time "
1357 "using the I<craskkernel> kernel command-line parameter.  The location of "
1358 "this reserved memory is exported to user space via the I</proc/iomem> file, "
1359 "in an entry labeled \"Crash kernel\".  A user-space application can parse "
1360 "this file and prepare a list of segments (see below) that specify this "
1361 "reserved memory as destination.  If this flag is specified, the kernel "
1362 "checks that the target segments specified in I<segments> fall within the "
1363 "reserved region."
1364 msgstr ""
1365
1366 #. type: TP
1367 #: build/C/man2/kexec_load.2:74
1368 #, no-wrap
1369 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1370 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1371
1372 #. type: Plain text
1373 #: build/C/man2/kexec_load.2:84
1374 msgid ""
1375 "Preserve the system hardware and software states before executing the new "
1376 "kernel.  This could be used for system suspend.  This flag is available only "
1377 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1378 "only if I<nr_segments> is greater than 0."
1379 msgstr ""
1380 "新しいカーネルを実行する前に、\n"
1381 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1382 "システムの中断時 (suspend) などで使用できる。\n"
1383 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1384 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1385
1386 #. type: Plain text
1387 #: build/C/man2/kexec_load.2:105
1388 msgid ""
1389 "The high-order bits (corresponding to the mask 0xffff0000) of I<flags> "
1390 "contain the architecture of the to-be-executed kernel.  Specify (OR) the "
1391 "constant B<KEXEC_ARCH_DEFAULT> to use the current architecture, or one of "
1392 "the following architecture constants B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1393 "B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, "
1394 "B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, "
1395 "B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and B<KEXEC_ARCH_MIPS_LE>.  The "
1396 "architecture must be executable on the CPU of the system."
1397 msgstr ""
1398 "I<flags> の上位ビット (マスク 0xffff0000 に対応) には、\n"
1399 "実行されるカーネルのアーキテクチャーが入る。\n"
1400 "現在のアーキテクチャーを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1401 "アーキテクチャー定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_68K>, "
1402 "B<KEXEC_ARCH_X86_64>,\n"
1403 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1404 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1405 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1406 "いずれか一つを (OR で) 指定する。指定するアーキテクチャーは、\n"
1407 "システムの CPU で実行可能なものでなければならない。"
1408
1409 #. type: Plain text
1410 #: build/C/man2/kexec_load.2:120
1411 msgid ""
1412 "The I<entry> argument is the physical entry address in the kernel image.  "
1413 "The I<nr_segments> argument is the number of segments pointed to by the "
1414 "I<segments> pointer; the kernel imposes an (arbitrary) limit of 16 on the "
1415 "number of segments.  The I<segments> argument is an array of "
1416 "I<kexec_segment> structures which define the kernel layout:"
1417 msgstr ""
1418 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。 "
1419 "I<nr_segments> 引き数は、 I<segments> ポインターが指すセグメントの数である。 "
1420 "なお、セグメント数には、カーネルにより 16 という (強制的な) 上限が課される。 "
1421 "I<segments> 引き数は I<kexec_segment> 構造体の配列で、 この構造体によりカーネ"
1422 "ルの配置が定義される。"
1423
1424 #. type: Plain text
1425 #: build/C/man2/kexec_load.2:129
1426 #, no-wrap
1427 msgid ""
1428 "struct kexec_segment {\n"
1429 "    void   *buf;        /* Buffer in user space */\n"
1430 "    size_t  bufsz;      /* Buffer length in user space */\n"
1431 "    void   *mem;        /* Physical address of kernel */\n"
1432 "    size_t  memsz;      /* Physical address length */\n"
1433 "};\n"
1434 msgstr ""
1435 "struct kexec_segment {\n"
1436 "    void   *buf;        /* Buffer in user space */\n"
1437 "    size_t  bufsz;      /* Buffer length in user space */\n"
1438 "    void   *mem;        /* Physical address of kernel */\n"
1439 "    size_t  memsz;      /* Physical address length */\n"
1440 "};\n"
1441
1442 #. type: Plain text
1443 #: build/C/man2/kexec_load.2:146
1444 msgid ""
1445 "The kernel image defined by I<segments> is copied from the calling process "
1446 "into the kernel either in regular memory or in reserved memory (if "
1447 "B<KEXEC_ON_CRASH> is set).  The kernel first performs various sanity checks "
1448 "on the information passed in I<segments>.  If these checks pass, the kernel "
1449 "copies the segment data to kernel memory.  Each segment specified in "
1450 "I<segments> is copied as follows:"
1451 msgstr ""
1452
1453 #. type: IP
1454 #: build/C/man2/kexec_load.2:146 build/C/man2/kexec_load.2:157
1455 #: build/C/man2/kexec_load.2:164 build/C/man2/perf_event_open.2:1238
1456 #: build/C/man2/perf_event_open.2:1256 build/C/man2/ptrace.2:1735
1457 #: build/C/man2/ptrace.2:1745 build/C/man2/ptrace.2:1753
1458 #: build/C/man2/ptrace.2:1759 build/C/man2/ptrace.2:1888
1459 #: build/C/man2/splice.2:55 build/C/man2/splice.2:61 build/C/man2/splice.2:70
1460 #, no-wrap
1461 msgid "*"
1462 msgstr "*"
1463
1464 #. type: Plain text
1465 #: build/C/man2/kexec_load.2:157
1466 msgid ""
1467 "I<buf> and I<bufsz> identify a memory region in the caller's virtual address "
1468 "space that is the source of the copy.  The value in I<bufsz> may not exceed "
1469 "the value in the I<memsz> field."
1470 msgstr ""
1471
1472 #. type: Plain text
1473 #: build/C/man2/kexec_load.2:164
1474 msgid ""
1475 "I<mem> and I<memsz> specify a physical address range that is the target of "
1476 "the copy.  The values specified in both fields must be multiples of the "
1477 "system page size."
1478 msgstr ""
1479
1480 #. type: Plain text
1481 #: build/C/man2/kexec_load.2:172
1482 msgid ""
1483 "I<bufsz> bytes are copied from the source buffer to the target kernel "
1484 "buffer.  If I<bufsz> is less than I<memsz>, then the excess bytes in the "
1485 "kernel buffer are zeroed out."
1486 msgstr ""
1487
1488 #. type: Plain text
1489 #: build/C/man2/kexec_load.2:181
1490 msgid ""
1491 "In case of a normal kexec (i.e., the B<KEXEC_ON_CRASH> flag is not set), the "
1492 "segment data is loaded in any available memory and is moved to the final "
1493 "destination at kexec reboot time (e.g., when the B<kexec>(8)  command is "
1494 "executed with the I<-e> option)."
1495 msgstr ""
1496
1497 #. type: Plain text
1498 #: build/C/man2/kexec_load.2:187
1499 msgid ""
1500 "In case of kexec on panic (i.e., the B<KEXEC_ON_CRASH> flag is set), the "
1501 "segment data is loaded to reserved memory at the time of the call, and, "
1502 "after a crash, the kexec mechanism simply passes control to that kernel."
1503 msgstr ""
1504
1505 #. type: Plain text
1506 #: build/C/man2/kexec_load.2:192
1507 #, fuzzy
1508 #| msgid ""
1509 #| "This system call is available only if the kernel was configured with "
1510 #| "B<CONFIG_KEXEC>."
1511 msgid ""
1512 "The B<kexec_load>()  system call is available only if the kernel was "
1513 "configured with B<CONFIG_KEXEC>."
1514 msgstr ""
1515 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1516 "いる場合にのみ利用できる。"
1517
1518 #. type: SS
1519 #: build/C/man2/kexec_load.2:192
1520 #, no-wrap
1521 msgid "kexec_file_load()"
1522 msgstr ""
1523
1524 #. type: Plain text
1525 #: build/C/man2/kexec_load.2:211
1526 msgid ""
1527 "The B<kexec_file_load>()  system call is similar to B<kexec_load>(), but it "
1528 "takes a different set of arguments.  It reads the kernel to be loaded from "
1529 "the file referred to by the descriptor I<kernel_fd>, and the initrd (initial "
1530 "RAM disk)  to be loaded from file referred to by the descriptor "
1531 "I<initrd_fd>.  The I<cmdline> argument is a pointer to a buffer containing "
1532 "the command line for the new kernel.  The I<cmdline_len> argument specifies "
1533 "size of the buffer.  The last byte in the buffer must be a null byte (\\(aq"
1534 "\\e0\\(aq)."
1535 msgstr ""
1536
1537 #. type: Plain text
1538 #: build/C/man2/kexec_load.2:217
1539 #, fuzzy
1540 #| msgid ""
1541 #| "The I<flags> argument is a bit mask that controls the operation of the "
1542 #| "call.  The following values can be specified in I<flags>:"
1543 msgid ""
1544 "The I<flags> argument is a bit mask which modifies the behavior of the "
1545 "call.  The following values can be specified in I<flags>:"
1546 msgstr ""
1547 "I<flags> 引き数は、システムコールの呼び出しの動作を制御するマスクビットであ"
1548 "る。 I<flags> には以下の値を指定できる。"
1549
1550 #. type: TP
1551 #: build/C/man2/kexec_load.2:217
1552 #, fuzzy, no-wrap
1553 #| msgid "KEXEC_LOAD"
1554 msgid "B<KEXEC_FILE_UNLOAD>"
1555 msgstr "KEXEC_LOAD"
1556
1557 #. type: Plain text
1558 #: build/C/man2/kexec_load.2:220
1559 msgid "Unload the currently loaded kernel."
1560 msgstr ""
1561
1562 #. type: TP
1563 #: build/C/man2/kexec_load.2:220
1564 #, no-wrap
1565 msgid "B<KEXEC_FILE_ON_CRASH>"
1566 msgstr ""
1567
1568 #. type: Plain text
1569 #: build/C/man2/kexec_load.2:226
1570 msgid ""
1571 "Load the new kernel in the memory region reserved for the crash kernel (as "
1572 "for B<KEXEC_ON_CRASH).> This kernel is booted if the currently running "
1573 "kernel crashes."
1574 msgstr ""
1575
1576 #. type: TP
1577 #: build/C/man2/kexec_load.2:226
1578 #, no-wrap
1579 msgid "B<KEXEC_FILE_NO_INITRAMFS>"
1580 msgstr ""
1581
1582 #. type: Plain text
1583 #: build/C/man2/kexec_load.2:233
1584 msgid ""
1585 "Loading initrd/initramfs is optional.  Specify this flag if no initramfs is "
1586 "being loaded.  If this flag is set, the value passed in I<initrd_fd> is "
1587 "ignored."
1588 msgstr ""
1589
1590 #.  See also http://lwn.net/Articles/603116/
1591 #. type: Plain text
1592 #: build/C/man2/kexec_load.2:242
1593 msgid ""
1594 "The B<kexec_file_load>()  system call was added to provide support for "
1595 "systems where \"kexec\" loading should be restricted to only kernels that "
1596 "are signed.  This system call is available only if the kernel was configured "
1597 "with B<CONFIG_KEXEC_FILE>."
1598 msgstr ""
1599
1600 #. type: Plain text
1601 #: build/C/man2/kexec_load.2:247
1602 #, fuzzy
1603 #| msgid ""
1604 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1605 #| "I<errno> is set to indicate the error."
1606 msgid ""
1607 "On success, these system calls returns 0.  On error, -1 is returned and "
1608 "I<errno> is set to indicate the error."
1609 msgstr ""
1610 "成功すると、 B<kexec_load> は 0 を返す。\n"
1611 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1612
1613 #. type: TP
1614 #: build/C/man2/kexec_load.2:248 build/C/man2/kexec_load.2:260
1615 #, no-wrap
1616 msgid "B<EADDRNOTAVAIL>"
1617 msgstr ""
1618
1619 #.  See kernel/kexec.::sanity_check_segment_list in the 3.19 kernel source
1620 #. type: Plain text
1621 #: build/C/man2/kexec_load.2:260
1622 msgid ""
1623 "The B<KEXEC_ON_CRASH> flags was specified, but the region specified by the "
1624 "I<mem> and I<memsz> fields of one of the I<segments> entries lies outside "
1625 "the range of memory reserved for the crash kernel."
1626 msgstr ""
1627
1628 #. type: Plain text
1629 #: build/C/man2/kexec_load.2:269
1630 msgid ""
1631 "The value in a I<mem> or I<memsz> field in one of the I<segments> entries is "
1632 "not a multiple of the system page size."
1633 msgstr ""
1634
1635 #. type: TP
1636 #: build/C/man2/kexec_load.2:269 build/C/man2/perf_event_open.2:2649
1637 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:157
1638 #: build/C/man2/vmsplice.2:133
1639 #, no-wrap
1640 msgid "B<EBADF>"
1641 msgstr "B<EBADF>"
1642
1643 #. type: Plain text
1644 #: build/C/man2/kexec_load.2:275
1645 #, fuzzy
1646 #| msgid "I<new_root> or I<put_old> is not a directory."
1647 msgid "I<kernel_fd> or I<initrd_fd> is not a valid file descriptor."
1648 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
1649
1650 #. type: TP
1651 #: build/C/man2/kexec_load.2:275 build/C/man2/pivot_root.2:110
1652 #: build/C/man2/ptrace.2:1912 build/C/man2/quotactl.2:495
1653 #, no-wrap
1654 msgid "B<EBUSY>"
1655 msgstr "B<EBUSY>"
1656
1657 #. type: Plain text
1658 #: build/C/man2/kexec_load.2:279
1659 msgid ""
1660 "Another crash kernel is already being loaded or a crash kernel is already in "
1661 "use."
1662 msgstr ""
1663 "別のクラッシュカーネルがすでにロードされているか、\n"
1664 "クラッシュカーネルがすでに使用されている。"
1665
1666 #. type: Plain text
1667 #: build/C/man2/kexec_load.2:283
1668 #, fuzzy
1669 #| msgid "I<flags> is not 0."
1670 msgid "I<flags> is invalid."
1671 msgstr "I<flags> が 0 でない。"
1672
1673 #. type: Plain text
1674 #: build/C/man2/kexec_load.2:292
1675 msgid ""
1676 "The value of a I<bufsz> field in one of the I<segments> entries exceeds the "
1677 "value in the corresponding I<memsz> field."
1678 msgstr ""
1679
1680 #. type: Plain text
1681 #: build/C/man2/kexec_load.2:298
1682 msgid "I<nr_segments> exceeds B<KEXEC_SEGMENT_MAX> (16)."
1683 msgstr ""
1684
1685 #. type: Plain text
1686 #: build/C/man2/kexec_load.2:301
1687 msgid "Two or more of the kernel target buffers overlap."
1688 msgstr ""
1689
1690 #. type: Plain text
1691 #: build/C/man2/kexec_load.2:306
1692 msgid "The value in I<cmdline[cmdline_len-1]> is not \\(aq\\e0\\(aq."
1693 msgstr ""
1694
1695 #. type: Plain text
1696 #: build/C/man2/kexec_load.2:313
1697 msgid ""
1698 "The file referred to by I<kernel_fd> or I<initrd_fd> is empty (length zero)."
1699 msgstr ""
1700
1701 #. type: TP
1702 #: build/C/man2/kexec_load.2:313 build/C/man2/lookup_dcookie.2:61
1703 #: build/C/man2/process_vm_readv.2:278 build/C/man2/sendfile.2:138
1704 #: build/C/man2/splice.2:169 build/C/man2/tee.2:117
1705 #: build/C/man2/vmsplice.2:145
1706 #, no-wrap
1707 msgid "B<ENOMEM>"
1708 msgstr "B<ENOMEM>"
1709
1710 #. type: Plain text
1711 #: build/C/man2/kexec_load.2:316
1712 #, fuzzy
1713 #| msgid "Out of memory."
1714 msgid "Could not allocate memory."
1715 msgstr "メモリー不足。"
1716
1717 #. type: TP
1718 #: build/C/man2/kexec_load.2:316
1719 #, fuzzy, no-wrap
1720 #| msgid "B<ENOENT>"
1721 msgid "B<ENOEXEC>"
1722 msgstr "B<ENOENT>"
1723
1724 #. type: Plain text
1725 #: build/C/man2/kexec_load.2:323
1726 msgid ""
1727 "I<kernel_fd> does not refer to an open file, or the kernel can't load this "
1728 "file.  Currently, the file must be a bzImage and contain an x86 kernel that "
1729 "is loadable above 4GiB in memory (see the kernel source file I<Documentation/"
1730 "x86/boot.txt>)."
1731 msgstr ""
1732
1733 #. type: Plain text
1734 #: build/C/man2/kexec_load.2:328
1735 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1736 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1737
1738 #. type: Plain text
1739 #: build/C/man2/kexec_load.2:335
1740 #, fuzzy
1741 #| msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1742 msgid ""
1743 "The B<kexec_load>()  system call first appeared in Linux 2.6.13.  The "
1744 "B<kexec_file_load>()  system call first appeared in Linux 3.17."
1745 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1746
1747 #. type: Plain text
1748 #: build/C/man2/kexec_load.2:337
1749 #, fuzzy
1750 #| msgid "This system call is Linux-specific."
1751 msgid "These system calls are Linux-specific."
1752 msgstr "このシステムコールは Linux 固有である。"
1753
1754 #. type: Plain text
1755 #: build/C/man2/kexec_load.2:341
1756 #, fuzzy
1757 #| msgid ""
1758 #| "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1759 #| "B<syscall>(2)."
1760 msgid ""
1761 "Currently, there is no glibc support for these system calls.  Call them "
1762 "using B<syscall>(2)."
1763 msgstr ""
1764 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1765 "B<syscall>(2) を使って呼び出すこと。"
1766
1767 #. type: Plain text
1768 #: build/C/man2/kexec_load.2:345
1769 #, fuzzy
1770 #| msgid "B<reboot>(2), B<syscall>(2)"
1771 msgid "B<reboot>(2), B<syscall>(2), B<kexec>(8)"
1772 msgstr "B<reboot>(2), B<syscall>(2)"
1773
1774 #. type: Plain text
1775 #: build/C/man2/kexec_load.2:350
1776 msgid ""
1777 "The kernel source files I<Documentation/kdump/kdump.txt> and I<Documentation/"
1778 "kernel-parameters.txt>."
1779 msgstr ""
1780
1781 #. type: TH
1782 #: build/C/man2/lookup_dcookie.2:27
1783 #, no-wrap
1784 msgid "LOOKUP_DCOOKIE"
1785 msgstr "LOOKUP_DCOOKIE"
1786
1787 #. type: TH
1788 #: build/C/man2/lookup_dcookie.2:27
1789 #, no-wrap
1790 msgid "2004-06-17"
1791 msgstr "2004-06-17"
1792
1793 #. type: Plain text
1794 #: build/C/man2/lookup_dcookie.2:30
1795 msgid "lookup_dcookie - return a directory entry's path"
1796 msgstr "lookup_dcookie - ディレクトリエントリーのパス名を返す"
1797
1798 #. type: Plain text
1799 #: build/C/man2/lookup_dcookie.2:32
1800 msgid ""
1801 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1802 ">"
1803 msgstr ""
1804 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1805 ">"
1806
1807 #. type: Plain text
1808 #: build/C/man2/lookup_dcookie.2:38
1809 msgid ""
1810 "Look up the full path of the directory entry specified by the value "
1811 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1812 "particular directory entry.  The buffer given is filled in with the full "
1813 "path of the directory entry."
1814 msgstr ""
1815 "I<cookie> 値で指定されたディレクトリエントリーのフルパス名を検索する。 "
1816 "cookie は、個々のディレクトリエントリーを区別する内部識別子 (opaque "
1817 "identifier) である。引き数で指定されたバッファーに、ディレクトリエントリーの "
1818 "フルパス名が格納される。"
1819
1820 #. type: Plain text
1821 #: build/C/man2/lookup_dcookie.2:43
1822 msgid ""
1823 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1824 "a cookie reference to the directory entry."
1825 msgstr ""
1826 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリエント"
1827 "リーへの cookie 参照を 保持していなければならない。"
1828
1829 #. type: Plain text
1830 #: build/C/man2/lookup_dcookie.2:50
1831 msgid ""
1832 "On success, B<lookup_dcookie>()  returns the length of the path string "
1833 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1834 "appropriately."
1835 msgstr ""
1836 "成功した場合、 B<lookup_dcookie>()  はバッファーにコピーしたパス文字列の長さ"
1837 "を返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1838
1839 #. type: Plain text
1840 #: build/C/man2/lookup_dcookie.2:54
1841 msgid "The buffer was not valid."
1842 msgstr "バッファーが有効でなかった。"
1843
1844 #. type: Plain text
1845 #: build/C/man2/lookup_dcookie.2:58
1846 msgid ""
1847 "The kernel has no registered cookie/directory entry mappings at the time of "
1848 "lookup, or the cookie does not refer to a valid directory entry."
1849 msgstr ""
1850 "検索が行われた時、cookie とディレクトリエントリーのマッピングがカーネルに 登"
1851 "録されていなかったか、または cookie が有効なディレクトリエントリーを 参照して"
1852 "いない。"
1853
1854 #. type: TP
1855 #: build/C/man2/lookup_dcookie.2:58
1856 #, no-wrap
1857 msgid "B<ENAMETOOLONG>"
1858 msgstr "B<ENAMETOOLONG>"
1859
1860 #. type: Plain text
1861 #: build/C/man2/lookup_dcookie.2:61
1862 msgid "The name could not fit in the buffer."
1863 msgstr "名前がバッファーに入り切らなかった。"
1864
1865 #. type: Plain text
1866 #: build/C/man2/lookup_dcookie.2:65
1867 msgid ""
1868 "The kernel could not allocate memory for the temporary buffer holding the "
1869 "path."
1870 msgstr ""
1871 "カーネルが、パス名を保持する一時バッファー用のメモリーを割り当てることが でき"
1872 "なかった。"
1873
1874 #. type: Plain text
1875 #: build/C/man2/lookup_dcookie.2:70
1876 msgid ""
1877 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1878 "up cookie values."
1879 msgstr ""
1880 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1881 "持っていない。"
1882
1883 #. type: TP
1884 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1885 #, no-wrap
1886 msgid "B<ERANGE>"
1887 msgstr "B<ERANGE>"
1888
1889 #. type: Plain text
1890 #: build/C/man2/lookup_dcookie.2:73
1891 msgid ""
1892 "The buffer was not large enough to hold the path of the directory entry."
1893 msgstr ""
1894 "バッファーが、ディレクトリエントリーのパス名を収容するのに 十分な大きさではな"
1895 "かった。"
1896
1897 #. type: Plain text
1898 #: build/C/man2/lookup_dcookie.2:78
1899 msgid ""
1900 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1901 "2.5.70."
1902 msgstr ""
1903 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1904 "追加された。"
1905
1906 #. type: Plain text
1907 #: build/C/man2/lookup_dcookie.2:81
1908 msgid "B<lookup_dcookie>()  is Linux-specific."
1909 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1910
1911 #. type: Plain text
1912 #: build/C/man2/lookup_dcookie.2:85
1913 msgid ""
1914 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1915 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1916 "for directory entries."
1917 msgstr ""
1918 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1919 "oprofile profiler で 使われているだけである。"
1920
1921 #. type: Plain text
1922 #: build/C/man2/lookup_dcookie.2:88
1923 msgid ""
1924 "The path returned may be suffixed by the string \" (deleted)\" if the "
1925 "directory entry has been removed."
1926 msgstr ""
1927 "指定されたディレクトリエントリーが削除されていた場合、返されるパス名の最後に "
1928 "\" (deleted)\" という文字列が付加されることがある。"
1929
1930 #. type: TH
1931 #: build/C/man2/modify_ldt.2:24
1932 #, no-wrap
1933 msgid "MODIFY_LDT"
1934 msgstr "MODIFY_LDT"
1935
1936 #. type: TH
1937 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
1938 #, no-wrap
1939 msgid "2012-07-13"
1940 msgstr "2012-07-13"
1941
1942 #. type: Plain text
1943 #: build/C/man2/modify_ldt.2:27
1944 msgid "modify_ldt - get or set ldt"
1945 msgstr "modify_ldt - ldt を設定または取得する"
1946
1947 #. type: Plain text
1948 #: build/C/man2/modify_ldt.2:30
1949 #, no-wrap
1950 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1951 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1952
1953 #. type: Plain text
1954 #: build/C/man2/modify_ldt.2:32
1955 #, no-wrap
1956 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1957 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1958
1959 #. type: Plain text
1960 #: build/C/man2/modify_ldt.2:41
1961 msgid ""
1962 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1963 "process.  The ldt is a per-process memory management table used by the i386 "
1964 "processor.  For more information on this table, see an Intel 386 processor "
1965 "handbook."
1966 msgstr ""
1967 "B<modify_ldt>()  はプロセスのローカルディスクリプターテーブル (local "
1968 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1969 "ロセスごとのメモリー管理テーブルである。 このテーブルに関してのより詳しい情報"
1970 "は Intel 386 processor handbook を 参照すること。"
1971
1972 #. type: Plain text
1973 #: build/C/man2/modify_ldt.2:51
1974 msgid ""
1975 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1976 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1977 "actual size of the ldt."
1978 msgstr ""
1979 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリー"
1980 "に読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい"
1981 "方である。"
1982
1983 #.  FIXME Should this page say something about func == 2 and func == 0x11?
1984 #.  In Linux 2.4, func == 2 returned "the default ldt"
1985 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1986 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1987 #. type: Plain text
1988 #: build/C/man2/modify_ldt.2:69
1989 msgid ""
1990 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1991 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1992 "structure."
1993 msgstr ""
1994 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリーの一つを変更する。 "
1995 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1996 "くなければならない。"
1997
1998 #. type: Plain text
1999 #: build/C/man2/modify_ldt.2:73
2000 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
2001 msgstr ""
2002 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
2003
2004 #. type: Plain text
2005 #: build/C/man2/modify_ldt.2:87
2006 #, no-wrap
2007 msgid ""
2008 "struct user_desc {\n"
2009 "    unsigned int  entry_number;\n"
2010 "    unsigned long base_addr;\n"
2011 "    unsigned int  limit;\n"
2012 "    unsigned int  seg_32bit:1;\n"
2013 "    unsigned int  contents:2;\n"
2014 "    unsigned int  read_exec_only:1;\n"
2015 "    unsigned int  limit_in_pages:1;\n"
2016 "    unsigned int  seg_not_present:1;\n"
2017 "    unsigned int  useable:1;\n"
2018 "};\n"
2019 msgstr ""
2020 "struct user_desc {\n"
2021 "    unsigned int  entry_number;\n"
2022 "    unsigned long base_addr;\n"
2023 "    unsigned int  limit;\n"
2024 "    unsigned int  seg_32bit:1;\n"
2025 "    unsigned int  contents:2;\n"
2026 "    unsigned int  read_exec_only:1;\n"
2027 "    unsigned int  limit_in_pages:1;\n"
2028 "    unsigned int  seg_not_present:1;\n"
2029 "    unsigned int  useable:1;\n"
2030 "};\n"
2031
2032 #.  .PP
2033 #.  The ldt is specific for the calling process. Any attempts to change
2034 #.  the ldt to include the address space of another process or the kernel
2035 #.  will result in a segmentation violation when trying to access the memory
2036 #.  outside of the process address space. The memory protection is enforced
2037 #.  at the paging layer.
2038 #. type: Plain text
2039 #: build/C/man2/modify_ldt.2:98
2040 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
2041 msgstr ""
2042 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
2043
2044 #. type: Plain text
2045 #: build/C/man2/modify_ldt.2:108
2046 msgid ""
2047 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
2048 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
2049 "and sets I<errno> to indicate the error."
2050 msgstr ""
2051 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
2052 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
2053 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
2054
2055 #. type: Plain text
2056 #: build/C/man2/modify_ldt.2:113
2057 msgid "I<ptr> points outside the address space."
2058 msgstr "I<ptr> がアドレス空間の外を指している。"
2059
2060 #. type: Plain text
2061 #: build/C/man2/modify_ldt.2:126
2062 msgid ""
2063 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
2064 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
2065 "invalid values."
2066 msgstr ""
2067 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
2068 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
2069 "エントリーが無効な値である。"
2070
2071 #. type: Plain text
2072 #: build/C/man2/modify_ldt.2:130
2073 msgid "I<func> is neither 0 nor 1."
2074 msgstr "I<func> が 0 でも 1 でもない。"
2075
2076 #. type: Plain text
2077 #: build/C/man2/modify_ldt.2:133
2078 msgid ""
2079 "This call is Linux-specific and should not be used in programs intended to "
2080 "be portable."
2081 msgstr ""
2082 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
2083 "い。"
2084
2085 #. type: Plain text
2086 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
2087 #: build/C/man2/pivot_root.2:134
2088 msgid ""
2089 "Glibc does not provide a wrapper for this system call; call it using "
2090 "B<syscall>(2)."
2091 msgstr ""
2092 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
2093 "B<syscall>(2)  を使って呼び出すこと。"
2094
2095 #. type: Plain text
2096 #: build/C/man2/modify_ldt.2:138
2097 msgid "B<vm86>(2)"
2098 msgstr "B<vm86>(2)"
2099
2100 #. type: TH
2101 #: build/C/man2/nfsservctl.2:8
2102 #, no-wrap
2103 msgid "NFSSERVCTL"
2104 msgstr "NFSSERVCTL"
2105
2106 #. type: TH
2107 #: build/C/man2/nfsservctl.2:8
2108 #, no-wrap
2109 msgid "2013-09-17"
2110 msgstr "2013-09-17"
2111
2112 #. type: Plain text
2113 #: build/C/man2/nfsservctl.2:11
2114 msgid "nfsservctl - syscall interface to kernel nfs daemon"
2115 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
2116
2117 #. type: Plain text
2118 #: build/C/man2/nfsservctl.2:14
2119 #, no-wrap
2120 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
2121 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
2122
2123 #. type: Plain text
2124 #: build/C/man2/nfsservctl.2:17
2125 #, no-wrap
2126 msgid ""
2127 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
2128 "B<                union nfsctl_res *>I<resp>B<);>\n"
2129 msgstr ""
2130 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
2131 "B<                union nfsctl_res *>I<resp>B<);>\n"
2132
2133 #. type: Plain text
2134 #: build/C/man2/nfsservctl.2:21
2135 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
2136 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
2137
2138 #. type: Plain text
2139 #: build/C/man2/nfsservctl.2:35
2140 #, no-wrap
2141 msgid ""
2142 "/*\n"
2143 " * These are the commands understood by nfsctl().\n"
2144 " */\n"
2145 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
2146 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
2147 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
2148 "#define NFSCTL_EXPORT       3    /* Export a filesystem. */\n"
2149 "#define NFSCTL_UNEXPORT     4    /* Unexport a filesystem. */\n"
2150 "#define NFSCTL_UGIDUPDATE   5    /* Update a client's UID/GID map\n"
2151 "                                    (only in Linux 2.4.x and earlier). */\n"
2152 "#define NFSCTL_GETFH        6    /* Get a file handle (used by mountd)\n"
2153 "                                    (only in Linux 2.4.x and earlier). */\n"
2154 msgstr ""
2155 "/*\n"
2156 " * nfsctl() によって理解されるコマンド\n"
2157 " */\n"
2158 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
2159 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
2160 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
2161 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
2162 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
2163 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新\n"
2164 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
2165 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得\n"
2166 "                                    (Linux 2.4.x とそれ以前のみ) */\n"
2167
2168 #. type: Plain text
2169 #: build/C/man2/nfsservctl.2:47
2170 #, no-wrap
2171 msgid ""
2172 "struct nfsctl_arg {\n"
2173 "    int                       ca_version;     /* safeguard */\n"
2174 "    union {\n"
2175 "        struct nfsctl_svc     u_svc;\n"
2176 "        struct nfsctl_client  u_client;\n"
2177 "        struct nfsctl_export  u_export;\n"
2178 "        struct nfsctl_uidmap  u_umap;\n"
2179 "        struct nfsctl_fhparm  u_getfh;\n"
2180 "        unsigned int          u_debug;\n"
2181 "    } u;\n"
2182 "}\n"
2183 msgstr ""
2184 "struct nfsctl_arg {\n"
2185 "    int                       ca_version;     /* safeguard */\n"
2186 "    union {\n"
2187 "        struct nfsctl_svc     u_svc;\n"
2188 "        struct nfsctl_client  u_client;\n"
2189 "        struct nfsctl_export  u_export;\n"
2190 "        struct nfsctl_uidmap  u_umap;\n"
2191 "        struct nfsctl_fhparm  u_getfh;\n"
2192 "        unsigned int          u_debug;\n"
2193 "    } u;\n"
2194 "}\n"
2195
2196 #. type: Plain text
2197 #: build/C/man2/nfsservctl.2:52
2198 #, no-wrap
2199 msgid ""
2200 "union nfsctl_res {\n"
2201 "        struct knfs_fh          cr_getfh;\n"
2202 "        unsigned int            cr_debug;\n"
2203 "};\n"
2204 msgstr ""
2205 "union nfsctl_res {\n"
2206 "        struct knfs_fh          cr_getfh;\n"
2207 "        unsigned int            cr_debug;\n"
2208 "};\n"
2209
2210 #. type: Plain text
2211 #: build/C/man2/nfsservctl.2:58 build/C/man2/pivot_root.2:105
2212 #: build/C/man2/vm86.2:59
2213 msgid ""
2214 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
2215 "appropriately."
2216 msgstr ""
2217 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
2218 "定される。"
2219
2220 #. type: Plain text
2221 #: build/C/man2/nfsservctl.2:60
2222 msgid "This call is Linux-specific."
2223 msgstr "このコールは Linux 特有である。"
2224
2225 #. type: TH
2226 #: build/C/man2/outb.2:26
2227 #, no-wrap
2228 msgid "OUTB"
2229 msgstr "OUTB"
2230
2231 #. type: TH
2232 #: build/C/man2/outb.2:26
2233 #, no-wrap
2234 msgid "2012-12-31"
2235 msgstr "2012-12-31"
2236
2237 #. type: Plain text
2238 #: build/C/man2/outb.2:31
2239 msgid ""
2240 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
2241 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
2242 msgstr ""
2243 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
2244 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
2245
2246 #. type: Plain text
2247 #: build/C/man2/outb.2:34
2248 #, no-wrap
2249 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
2250 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
2251
2252 #. type: Plain text
2253 #: build/C/man2/outb.2:41
2254 #, no-wrap
2255 msgid ""
2256 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
2257 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
2258 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
2259 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
2260 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
2261 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2262 msgstr ""
2263 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
2264 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
2265 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
2266 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
2267 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
2268 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2269
2270 #. type: Plain text
2271 #: build/C/man2/outb.2:48
2272 #, no-wrap
2273 msgid ""
2274 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2275 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2276 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2277 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2278 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2279 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2280 msgstr ""
2281 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2282 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2283 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2284 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2285 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2286 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2287
2288 #. type: Plain text
2289 #: build/C/man2/outb.2:61
2290 #, no-wrap
2291 msgid ""
2292 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2293 "B<           unsigned long int >I<count>B<);>\n"
2294 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2295 "B<           unsigned long int >I<count>B<);>\n"
2296 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2297 "B<           unsigned long int >I<count>B<);>\n"
2298 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2299 "B<           unsigned long int >I<count>B<);>\n"
2300 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2301 "B<           unsigned long int >I<count>B<);>\n"
2302 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2303 "B<           unsigned long int >I<count>B<);>\n"
2304 msgstr ""
2305 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2306 "B<           unsigned long int >I<count>B<);>\n"
2307 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2308 "B<           unsigned long int >I<count>B<);>\n"
2309 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2310 "B<           unsigned long int >I<count>B<);>\n"
2311 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2312 "B<           unsigned long int >I<count>B<);>\n"
2313 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2314 "B<           unsigned long int >I<count>B<);>\n"
2315 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2316 "B<           unsigned long int >I<count>B<);>\n"
2317
2318 #. type: Plain text
2319 #: build/C/man2/outb.2:67
2320 msgid ""
2321 "This family of functions is used to do low-level port input and output.  The "
2322 "out* functions do port output, the in* functions do port input; the b-suffix "
2323 "functions are byte-width and the w-suffix functions word-width; the _p-"
2324 "suffix functions pause until the I/O completes."
2325 msgstr ""
2326 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2327 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2328 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2329 "待つ。"
2330
2331 #.  , given the following information
2332 #.  in addition to that given in
2333 #.  .BR outb (9).
2334 #. type: Plain text
2335 #: build/C/man2/outb.2:73
2336 msgid ""
2337 "They are primarily designed for internal kernel use, but can be used from "
2338 "user space."
2339 msgstr ""
2340 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2341 "ザー空間からでも使用できる。"
2342
2343 #. type: Plain text
2344 #: build/C/man2/outb.2:78
2345 msgid ""
2346 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2347 "as inline macros, and will not be substituted in without optimization "
2348 "enabled, causing unresolved references at link time."
2349 msgstr ""
2350 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2351 "ンラインマクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2352 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2353
2354 #. type: Plain text
2355 #: build/C/man2/outb.2:87
2356 msgid ""
2357 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2358 "allow the user space application to access the I/O ports in question.  "
2359 "Failure to do this will cause the application to receive a segmentation "
2360 "fault."
2361 msgstr ""
2362 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2363 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2364 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2365 "になる。"
2366
2367 #. type: Plain text
2368 #: build/C/man2/outb.2:96
2369 msgid ""
2370 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2371 "passed first and the I<port> argument is passed second, which is the "
2372 "opposite order from most DOS implementations."
2373 msgstr ""
2374 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2375 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2376 "である。"
2377
2378 #. type: Plain text
2379 #: build/C/man2/outb.2:99
2380 msgid "B<ioperm>(2), B<iopl>(2)"
2381 msgstr "B<ioperm>(2), B<iopl>(2)"
2382
2383 #. type: TH
2384 #: build/C/man2/pciconfig_read.2:8
2385 #, no-wrap
2386 msgid "PCICONFIG_READ"
2387 msgstr "PCICONFIG_READ"
2388
2389 #. type: TH
2390 #: build/C/man2/pciconfig_read.2:8
2391 #, no-wrap
2392 msgid "2003-07-14"
2393 msgstr "2003-07-14"
2394
2395 #. type: Plain text
2396 #: build/C/man2/pciconfig_read.2:11
2397 msgid ""
2398 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2399 "handling"
2400 msgstr ""
2401 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2402
2403 #. type: Plain text
2404 #: build/C/man2/pciconfig_read.2:14
2405 #, no-wrap
2406 msgid "B<#include E<lt>pci.hE<gt>>\n"
2407 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2408
2409 #. type: Plain text
2410 #: build/C/man2/pciconfig_read.2:21
2411 #, no-wrap
2412 msgid ""
2413 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2414 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2415 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2416 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2417 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2418 "B<          unsigned long >I<devfn>B<);>\n"
2419 msgstr ""
2420 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2421 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2422 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2423 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2424 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2425 "B<          unsigned long >I<devfn>B<);>\n"
2426
2427 #. type: Plain text
2428 #: build/C/man2/pciconfig_read.2:27
2429 msgid ""
2430 "Most of the interaction with PCI devices is already handled by the kernel "
2431 "PCI layer, and thus these calls should not normally need to be accessed from "
2432 "user space."
2433 msgstr ""
2434 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2435 "ているので、 通常はこららの関数をユーザー空間からアクセスする必要はない。"
2436
2437 #. type: TP
2438 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2439 #, no-wrap
2440 msgid "B<pciconfig_read>()"
2441 msgstr "B<pciconfig_read>()"
2442
2443 #. type: Plain text
2444 #: build/C/man2/pciconfig_read.2:36
2445 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2446 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2447
2448 #. type: TP
2449 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2450 #, no-wrap
2451 msgid "B<pciconfig_write>()"
2452 msgstr "B<pciconfig_write>()"
2453
2454 #. type: Plain text
2455 #: build/C/man2/pciconfig_read.2:45
2456 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2457 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2458
2459 #. type: TP
2460 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2461 #, no-wrap
2462 msgid "B<pciconfig_iobase>()"
2463 msgstr "B<pciconfig_iobase>()"
2464
2465 #. type: Plain text
2466 #: build/C/man2/pciconfig_read.2:50
2467 msgid ""
2468 "You pass it a bus/devfn pair and get a physical address for either the "
2469 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2470 "PIO cycles, or the ISA holes if any."
2471 msgstr ""
2472 "bus/devfn ペアをこの関数に渡し、 メモリーオフセット (prep のようなものでは、"
2473 "この値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2474 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2475
2476 #. type: Plain text
2477 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2478 msgid ""
2479 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2480 "appropriately."
2481 msgstr ""
2482 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2483 "定される。"
2484
2485 #. type: Plain text
2486 #: build/C/man2/pciconfig_read.2:77
2487 msgid ""
2488 "Returns information on locations of various I/O regions in physical memory "
2489 "according to the I<which> value.  Values for I<which> are: "
2490 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2491 "B<IOBASE_ISA_MEM>."
2492 msgstr ""
2493 "I<which> の値に基づいて、物理メモリー内の様々な I/O 領域の位置情報が返され"
2494 "る。 I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, "
2495 "B<IOBASE_IO>, B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2496
2497 #. type: Plain text
2498 #: build/C/man2/pciconfig_read.2:84
2499 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2500 msgstr ""
2501 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2502 "い。"
2503
2504 #. type: TP
2505 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1929
2506 #: build/C/man2/sendfile.2:134
2507 #, no-wrap
2508 msgid "B<EIO>"
2509 msgstr "B<EIO>"
2510
2511 #. type: Plain text
2512 #: build/C/man2/pciconfig_read.2:87
2513 msgid "I/O error."
2514 msgstr "I/O エラー。"
2515
2516 #. type: TP
2517 #: build/C/man2/pciconfig_read.2:87 build/C/man2/perf_event_open.2:2696
2518 #, no-wrap
2519 msgid "B<ENODEV>"
2520 msgstr "B<ENODEV>"
2521
2522 #. type: Plain text
2523 #: build/C/man2/pciconfig_read.2:93
2524 msgid ""
2525 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2526 "could not find a slot."
2527 msgstr ""
2528 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2529 "出しの場合、スロット (slot) が見つからない。"
2530
2531 #. type: Plain text
2532 #: build/C/man2/pciconfig_read.2:98
2533 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2534 msgstr ""
2535 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2536 "いない)。"
2537
2538 #. type: TP
2539 #: build/C/man2/pciconfig_read.2:98 build/C/man2/perf_event_open.2:2725
2540 #, no-wrap
2541 msgid "B<EOPNOTSUPP>"
2542 msgstr "B<EOPNOTSUPP>"
2543
2544 #. type: Plain text
2545 #: build/C/man2/pciconfig_read.2:105
2546 msgid ""
2547 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2548 "if the value for I<which> is invalid."
2549 msgstr ""
2550 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2551 "の値が無効であるときに返される。"
2552
2553 #. type: Plain text
2554 #: build/C/man2/pciconfig_read.2:112
2555 msgid ""
2556 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2557 "B<pciconfig_iobase>()."
2558 msgstr ""
2559 "ユーザーが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2560 "B<pciconfig_iobase>()  には適用されない。"
2561
2562 #. type: Plain text
2563 #: build/C/man2/pciconfig_read.2:114
2564 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2565 msgstr ""
2566 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2567 "である。"
2568
2569 #. type: Plain text
2570 #: build/C/man2/pciconfig_read.2:116
2571 msgid "B<capabilities>(7)"
2572 msgstr "B<capabilities>(7)"
2573
2574 #. type: TH
2575 #: build/C/man2/perf_event_open.2:27
2576 #, no-wrap
2577 msgid "PERF_EVENT_OPEN"
2578 msgstr "PERF_EVENT_OPEN"
2579
2580 #. type: TH
2581 #: build/C/man2/perf_event_open.2:27
2582 #, no-wrap
2583 msgid "2015-01-10"
2584 msgstr "2015-01-10"
2585
2586 #. type: Plain text
2587 #: build/C/man2/perf_event_open.2:30
2588 msgid "perf_event_open - set up performance monitoring"
2589 msgstr ""
2590
2591 #. type: Plain text
2592 #: build/C/man2/perf_event_open.2:34
2593 #, no-wrap
2594 msgid ""
2595 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2596 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2597 msgstr ""
2598 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2599 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2600
2601 #. type: Plain text
2602 #: build/C/man2/perf_event_open.2:38
2603 #, no-wrap
2604 msgid ""
2605 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2606 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2607 "B<                    unsigned long >I<flags>B<);>\n"
2608 msgstr ""
2609 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2610 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2611 "B<                    unsigned long >I<flags>B<);>\n"
2612
2613 #. type: Plain text
2614 #: build/C/man2/perf_event_open.2:47
2615 msgid ""
2616 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2617 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2618 "B<fcntl>(2), etc.)."
2619 msgstr ""
2620
2621 #. type: Plain text
2622 #: build/C/man2/perf_event_open.2:55
2623 msgid ""
2624 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2625 "measuring performance information.  Each file descriptor corresponds to one "
2626 "event that is measured; these can be grouped together to measure multiple "
2627 "events simultaneously."
2628 msgstr ""
2629
2630 #. type: Plain text
2631 #: build/C/man2/perf_event_open.2:62
2632 msgid ""
2633 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2634 "B<prctl>(2).  When an event is disabled it does not count or generate "
2635 "overflows but does continue to exist and maintain its count value."
2636 msgstr ""
2637
2638 #. type: Plain text
2639 #: build/C/man2/perf_event_open.2:76
2640 msgid ""
2641 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2642 "one that is used for counting the aggregate number of events that occur.  In "
2643 "general, counting event results are gathered with a B<read>(2)  call.  A "
2644 "I<sampling> event periodically writes measurements to a buffer that can then "
2645 "be accessed via B<mmap>(2)."
2646 msgstr ""
2647
2648 #. type: SS
2649 #: build/C/man2/perf_event_open.2:76
2650 #, no-wrap
2651 msgid "Arguments"
2652 msgstr "引き数"
2653
2654 #. type: Plain text
2655 #: build/C/man2/perf_event_open.2:83
2656 msgid ""
2657 "The I<pid> and I<cpu> arguments allow specifying which process and CPU to "
2658 "monitor:"
2659 msgstr ""
2660
2661 #. type: TP
2662 #: build/C/man2/perf_event_open.2:83
2663 #, no-wrap
2664 msgid "B<pid == 0> and B<cpu == -1>"
2665 msgstr "B<pid == 0> and B<cpu == -1>"
2666
2667 #. type: Plain text
2668 #: build/C/man2/perf_event_open.2:86
2669 msgid "This measures the calling process/thread on any CPU."
2670 msgstr ""
2671
2672 #. type: TP
2673 #: build/C/man2/perf_event_open.2:86
2674 #, no-wrap
2675 msgid "B<pid == 0> and B<cpu E<gt>= 0>"
2676 msgstr "B<pid == 0> and B<cpu E<gt>= 0>"
2677
2678 #. type: Plain text
2679 #: build/C/man2/perf_event_open.2:90
2680 msgid ""
2681 "This measures the calling process/thread only when running on the specified "
2682 "CPU."
2683 msgstr ""
2684
2685 #. type: TP
2686 #: build/C/man2/perf_event_open.2:90
2687 #, no-wrap
2688 msgid "B<pid E<gt> 0> and B<cpu == -1>"
2689 msgstr "B<pid E<gt> 0> and B<cpu == -1>"
2690
2691 #. type: Plain text
2692 #: build/C/man2/perf_event_open.2:93
2693 msgid "This measures the specified process/thread on any CPU."
2694 msgstr ""
2695
2696 #. type: TP
2697 #: build/C/man2/perf_event_open.2:93
2698 #, no-wrap
2699 msgid "B<pid E<gt> 0> and B<cpu E<gt>= 0>"
2700 msgstr "B<pid E<gt> 0> and B<cpu E<gt>= 0>"
2701
2702 #. type: Plain text
2703 #: build/C/man2/perf_event_open.2:97
2704 msgid ""
2705 "This measures the specified process/thread only when running on the "
2706 "specified CPU."
2707 msgstr ""
2708
2709 #. type: TP
2710 #: build/C/man2/perf_event_open.2:97
2711 #, no-wrap
2712 msgid "B<pid == -1> and B<cpu E<gt>= 0>"
2713 msgstr "B<pid == -1> and B<cpu E<gt>= 0>"
2714
2715 #. type: Plain text
2716 #: build/C/man2/perf_event_open.2:105
2717 msgid ""
2718 "This measures all processes/threads on the specified CPU.  This requires "
2719 "B<CAP_SYS_ADMIN> capability or a I</proc/sys/kernel/perf_event_paranoid> "
2720 "value of less than 1."
2721 msgstr ""
2722
2723 #. type: TP
2724 #: build/C/man2/perf_event_open.2:105
2725 #, no-wrap
2726 msgid "B<pid == -1> and B<cpu == -1>"
2727 msgstr "B<pid == -1> and B<cpu == -1>"
2728
2729 #. type: Plain text
2730 #: build/C/man2/perf_event_open.2:108
2731 msgid "This setting is invalid and will return an error."
2732 msgstr ""
2733
2734 #. type: Plain text
2735 #: build/C/man2/perf_event_open.2:130
2736 msgid ""
2737 "The I<group_fd> argument allows event groups to be created.  An event group "
2738 "has one event which is the group leader.  The leader is created first, with "
2739 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2740 "B<perf_event_open>()  calls with I<group_fd> being set to the file "
2741 "descriptor of the group leader.  (A single event on its own is created with "
2742 "I<group_fd> = -1 and is considered to be a group with only 1 member.)  An "
2743 "event group is scheduled onto the CPU as a unit: it will be put onto the CPU "
2744 "only if all of the events in the group can be put onto the CPU.  This means "
2745 "that the values of the member events can be meaningfully compared\\(emadded, "
2746 "divided (to get ratios), and so on\\(emwith each other, since they have "
2747 "counted events for the same set of executed instructions."
2748 msgstr ""
2749
2750 #. type: Plain text
2751 #: build/C/man2/perf_event_open.2:134
2752 msgid ""
2753 "The I<flags> argument is formed by ORing together zero or more of the "
2754 "following values:"
2755 msgstr ""
2756 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2757
2758 #. type: TP
2759 #: build/C/man2/perf_event_open.2:134
2760 #, no-wrap
2761 msgid "B<PERF_FLAG_FD_CLOEXEC> (since Linux 3.14)"
2762 msgstr "B<PERF_FLAG_FD_CLOEXEC> (Linux 3.14 以降)"
2763
2764 #.  commit a21b0b354d4ac39be691f51c53562e2c24443d9e
2765 #. type: Plain text
2766 #: build/C/man2/perf_event_open.2:151
2767 msgid ""
2768 "This flag enables the close-on-exec flag for the created event file "
2769 "descriptor, so that the file descriptor is automatically closed on "
2770 "B<execve>(2).  Setting the close-on-exec flags at creation time, rather than "
2771 "later with B<fcntl>(2), avoids potential race conditions where the calling "
2772 "thread invokes B<perf_event_open>()  and B<fcntl>(2)  at the same time as "
2773 "another thread calls B<fork>(2)  then B<execve>(2)."
2774 msgstr ""
2775
2776 #. type: TP
2777 #: build/C/man2/perf_event_open.2:151
2778 #, no-wrap
2779 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2780 msgstr "B<PERF_FLAG_FD_NO_GROUP>"
2781
2782 #. type: Plain text
2783 #: build/C/man2/perf_event_open.2:159
2784 msgid ""
2785 "This flag tells the event to ignore the I<group_fd> parameter except for the "
2786 "purpose of setting up output redirection using the B<PERF_FLAG_FD_OUTPUT> "
2787 "flag."
2788 msgstr ""
2789
2790 #. type: TP
2791 #: build/C/man2/perf_event_open.2:159
2792 #, no-wrap
2793 msgid "B<PERF_FLAG_FD_OUTPUT> (broken since Linux 2.6.35)"
2794 msgstr "B<PERF_FLAG_FD_OUTPUT> (Linux 2.6.35 以降では正しく動作しない)"
2795
2796 #.  commit ac9721f3f54b27a16c7e1afb2481e7ee95a70318
2797 #. type: Plain text
2798 #: build/C/man2/perf_event_open.2:165
2799 msgid ""
2800 "This flag re-routes the event's sampled output to instead be included in the "
2801 "mmap buffer of the event specified by I<group_fd>."
2802 msgstr ""
2803
2804 #. type: TP
2805 #: build/C/man2/perf_event_open.2:165
2806 #, no-wrap
2807 msgid "B<PERF_FLAG_PID_CGROUP> (since Linux 2.6.39)"
2808 msgstr "B<PERF_FLAG_PID_CGROUP> (Linux 2.6.39 以降)"
2809
2810 #.  commit e5d1367f17ba6a6fed5fd8b74e4d5720923e0c25
2811 #. type: Plain text
2812 #: build/C/man2/perf_event_open.2:189
2813 msgid ""
2814 "This flag activates per-container system-wide monitoring.  A container is an "
2815 "abstraction that isolates a set of resources for finer-grained control "
2816 "(CPUs, memory, etc.).  In this mode, the event is measured only if the "
2817 "thread running on the monitored CPU belongs to the designated container "
2818 "(cgroup).  The cgroup is identified by passing a file descriptor opened on "
2819 "its directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2820 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2821 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2822 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2823 "events and may therefore require extra permissions."
2824 msgstr ""
2825
2826 #. type: Plain text
2827 #: build/C/man2/perf_event_open.2:194
2828 msgid ""
2829 "The I<perf_event_attr> structure provides detailed configuration information "
2830 "for the event being created."
2831 msgstr ""
2832
2833 #. type: Plain text
2834 #: build/C/man2/perf_event_open.2:201
2835 #, no-wrap
2836 msgid ""
2837 "struct perf_event_attr {\n"
2838 "    __u32 type;         /* Type of event */\n"
2839 "    __u32 size;         /* Size of attribute structure */\n"
2840 "    __u64 config;       /* Type-specific configuration */\n"
2841 msgstr ""
2842 "struct perf_event_attr {\n"
2843 "    __u32 type;         /* Type of event */\n"
2844 "    __u32 size;         /* Size of attribute structure */\n"
2845 "    __u64 config;       /* Type-specific configuration */\n"
2846
2847 #. type: Plain text
2848 #: build/C/man2/perf_event_open.2:206
2849 #, no-wrap
2850 msgid ""
2851 "    union {\n"
2852 "        __u64 sample_period;    /* Period of sampling */\n"
2853 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2854 "    };\n"
2855 msgstr ""
2856 "    union {\n"
2857 "        __u64 sample_period;    /* Period of sampling */\n"
2858 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2859 "    };\n"
2860
2861 #. type: Plain text
2862 #: build/C/man2/perf_event_open.2:209
2863 #, no-wrap
2864 msgid ""
2865 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2866 "    __u64 read_format;  /* Specifies values returned in read */\n"
2867 msgstr ""
2868 "    __u64 sample_type;  /* Specifies values included in sample */\n"
2869 "    __u64 read_format;  /* Specifies values returned in read */\n"
2870
2871 #. type: Plain text
2872 #: build/C/man2/perf_event_open.2:237
2873 #, no-wrap
2874 msgid ""
2875 "    __u64 disabled       : 1,   /* off by default */\n"
2876 "          inherit        : 1,   /* children inherit it */\n"
2877 "          pinned         : 1,   /* must always be on PMU */\n"
2878 "          exclusive      : 1,   /* only group on PMU */\n"
2879 "          exclude_user   : 1,   /* don't count user */\n"
2880 "          exclude_kernel : 1,   /* don't count kernel */\n"
2881 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2882 "          exclude_idle   : 1,   /* don't count when idle */\n"
2883 "          mmap           : 1,   /* include mmap data */\n"
2884 "          comm           : 1,   /* include comm data */\n"
2885 "          freq           : 1,   /* use freq, not period */\n"
2886 "          inherit_stat   : 1,   /* per task counts */\n"
2887 "          enable_on_exec : 1,   /* next exec enables */\n"
2888 "          task           : 1,   /* trace fork/exit */\n"
2889 "          watermark      : 1,   /* wakeup_watermark */\n"
2890 "          precise_ip     : 2,   /* skid constraint */\n"
2891 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2892 "          sample_id_all  : 1,   /* sample_type all events */\n"
2893 "          exclude_host   : 1,   /* don't count in host */\n"
2894 "          exclude_guest  : 1,   /* don't count in guest */\n"
2895 "          exclude_callchain_kernel : 1,\n"
2896 "                                /* exclude kernel callchains */\n"
2897 "          exclude_callchain_user   : 1,\n"
2898 "                                /* exclude user callchains */\n"
2899 "          mmap2          :  1,  /* include mmap with inode data */\n"
2900 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2901 "          __reserved_1   : 39;\n"
2902 msgstr ""
2903 "    __u64 disabled       : 1,   /* off by default */\n"
2904 "          inherit        : 1,   /* children inherit it */\n"
2905 "          pinned         : 1,   /* must always be on PMU */\n"
2906 "          exclusive      : 1,   /* only group on PMU */\n"
2907 "          exclude_user   : 1,   /* don't count user */\n"
2908 "          exclude_kernel : 1,   /* don't count kernel */\n"
2909 "          exclude_hv     : 1,   /* don't count hypervisor */\n"
2910 "          exclude_idle   : 1,   /* don't count when idle */\n"
2911 "          mmap           : 1,   /* include mmap data */\n"
2912 "          comm           : 1,   /* include comm data */\n"
2913 "          freq           : 1,   /* use freq, not period */\n"
2914 "          inherit_stat   : 1,   /* per task counts */\n"
2915 "          enable_on_exec : 1,   /* next exec enables */\n"
2916 "          task           : 1,   /* trace fork/exit */\n"
2917 "          watermark      : 1,   /* wakeup_watermark */\n"
2918 "          precise_ip     : 2,   /* skid constraint */\n"
2919 "          mmap_data      : 1,   /* non-exec mmap data */\n"
2920 "          sample_id_all  : 1,   /* sample_type all events */\n"
2921 "          exclude_host   : 1,   /* don't count in host */\n"
2922 "          exclude_guest  : 1,   /* don't count in guest */\n"
2923 "          exclude_callchain_kernel : 1,\n"
2924 "                                /* exclude kernel callchains */\n"
2925 "          exclude_callchain_user   : 1,\n"
2926 "                                /* exclude user callchains */\n"
2927 "          mmap2          :  1,  /* include mmap with inode data */\n"
2928 "          comm_exec      :  1,  /* flag comm events that are due to exec */\n"
2929 "          __reserved_1   : 39;\n"
2930
2931 #. type: Plain text
2932 #: build/C/man2/perf_event_open.2:242
2933 #, no-wrap
2934 msgid ""
2935 "    union {\n"
2936 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2937 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2938 "    };\n"
2939 msgstr ""
2940 "    union {\n"
2941 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2942 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2943 "    };\n"
2944
2945 #. type: Plain text
2946 #: build/C/man2/perf_event_open.2:244
2947 #, no-wrap
2948 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2949 msgstr "    __u32     bp_type;          /* breakpoint type */\n"
2950
2951 #. type: Plain text
2952 #: build/C/man2/perf_event_open.2:249
2953 #, no-wrap
2954 msgid ""
2955 "    union {\n"
2956 "        __u64 bp_addr;          /* breakpoint address */\n"
2957 "        __u64 config1;          /* extension of config */\n"
2958 "    };\n"
2959 msgstr ""
2960 "    union {\n"
2961 "        __u64 bp_addr;          /* breakpoint address */\n"
2962 "        __u64 config1;          /* extension of config */\n"
2963 "    };\n"
2964
2965 #. type: Plain text
2966 #: build/C/man2/perf_event_open.2:259
2967 #, no-wrap
2968 msgid ""
2969 "    union {\n"
2970 "        __u64 bp_len;           /* breakpoint length */\n"
2971 "        __u64 config2;          /* extension of config1 */\n"
2972 "    };\n"
2973 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2974 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2975 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2976 "                                   samples */\n"
2977 "    __u32 __reserved_2;         /* Align to u64 */\n"
2978 msgstr ""
2979 "    union {\n"
2980 "        __u64 bp_len;           /* breakpoint length */\n"
2981 "        __u64 config2;          /* extension of config1 */\n"
2982 "    };\n"
2983 "    __u64 branch_sample_type;   /* enum perf_branch_sample_type */\n"
2984 "    __u64 sample_regs_user;     /* user regs to dump on samples */\n"
2985 "    __u32 sample_stack_user;    /* size of stack to dump on\n"
2986 "                                   samples */\n"
2987 "    __u32 __reserved_2;         /* Align to u64 */\n"
2988
2989 #. type: Plain text
2990 #: build/C/man2/perf_event_open.2:261
2991 #, no-wrap
2992 msgid "};\n"
2993 msgstr "};\n"
2994
2995 #. type: Plain text
2996 #: build/C/man2/perf_event_open.2:267
2997 msgid ""
2998 "The fields of the I<perf_event_attr> structure are described in more detail "
2999 "below:"
3000 msgstr ""
3001
3002 #. type: TP
3003 #: build/C/man2/perf_event_open.2:267 build/C/man2/perf_event_open.2:1669
3004 #, no-wrap
3005 msgid "I<type>"
3006 msgstr "I<type>"
3007
3008 #. type: Plain text
3009 #: build/C/man2/perf_event_open.2:271
3010 msgid ""
3011 "This field specifies the overall event type.  It has one of the following "
3012 "values:"
3013 msgstr ""
3014
3015 #. type: TP
3016 #: build/C/man2/perf_event_open.2:272
3017 #, no-wrap
3018 msgid "B<PERF_TYPE_HARDWARE>"
3019 msgstr "B<PERF_TYPE_HARDWARE>"
3020
3021 #. type: Plain text
3022 #: build/C/man2/perf_event_open.2:279
3023 msgid ""
3024 "This indicates one of the \"generalized\" hardware events provided by the "
3025 "kernel.  See the I<config> field definition for more details."
3026 msgstr ""
3027
3028 #. type: TP
3029 #: build/C/man2/perf_event_open.2:279
3030 #, no-wrap
3031 msgid "B<PERF_TYPE_SOFTWARE>"
3032 msgstr "B<PERF_TYPE_SOFTWARE>"
3033
3034 #. type: Plain text
3035 #: build/C/man2/perf_event_open.2:283
3036 msgid ""
3037 "This indicates one of the software-defined events provided by the kernel "
3038 "(even if no hardware support is available)."
3039 msgstr ""
3040
3041 #. type: TP
3042 #: build/C/man2/perf_event_open.2:283
3043 #, no-wrap
3044 msgid "B<PERF_TYPE_TRACEPOINT>"
3045 msgstr "B<PERF_TYPE_TRACEPOINT>"
3046
3047 #. type: Plain text
3048 #: build/C/man2/perf_event_open.2:287
3049 msgid ""
3050 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
3051 msgstr ""
3052
3053 #. type: TP
3054 #: build/C/man2/perf_event_open.2:287
3055 #, no-wrap
3056 msgid "B<PERF_TYPE_HW_CACHE>"
3057 msgstr "B<PERF_TYPE_HW_CACHE>"
3058
3059 #. type: Plain text
3060 #: build/C/man2/perf_event_open.2:293
3061 msgid ""
3062 "This indicates a hardware cache event.  This has a special encoding, "
3063 "described in the I<config> field definition."
3064 msgstr ""
3065
3066 #. type: TP
3067 #: build/C/man2/perf_event_open.2:293
3068 #, no-wrap
3069 msgid "B<PERF_TYPE_RAW>"
3070 msgstr "B<PERF_TYPE_RAW>"
3071
3072 #. type: Plain text
3073 #: build/C/man2/perf_event_open.2:297
3074 msgid ""
3075 "This indicates a \"raw\" implementation-specific event in the I<config> "
3076 "field."
3077 msgstr ""
3078
3079 #. type: TP
3080 #: build/C/man2/perf_event_open.2:297
3081 #, no-wrap
3082 msgid "B<PERF_TYPE_BREAKPOINT> (since Linux 2.6.33)"
3083 msgstr "B<PERF_TYPE_BREAKPOINT> (Linux 2.6.33 以降)"
3084
3085 #.  commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
3086 #. type: Plain text
3087 #: build/C/man2/perf_event_open.2:303
3088 msgid ""
3089 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
3090 "can be read/write accesses to an address as well as execution of an "
3091 "instruction address."
3092 msgstr ""
3093
3094 #. type: TP
3095 #: build/C/man2/perf_event_open.2:303
3096 #, no-wrap
3097 msgid "dynamic PMU"
3098 msgstr ""
3099
3100 #.  commit 2e80a82a49c4c7eca4e35734380f28298ba5db19
3101 #. type: Plain text
3102 #: build/C/man2/perf_event_open.2:323
3103 msgid ""
3104 "Since Linux 2.6.38, B<perf_event_open>()  can support multiple PMUs.  To "
3105 "enable this, a value exported by the kernel can be used in the I<type> field "
3106 "to indicate which PMU to use.  The value to use can be found in the sysfs "
3107 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
3108 "event_source/devices>.  In each subdirectory there is a I<type> file whose "
3109 "content is an integer that can be used in the I<type> field.  For instance, "
3110 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
3111 "CPU PMU, which is usually 4."
3112 msgstr ""
3113
3114 #. type: TP
3115 #: build/C/man2/perf_event_open.2:324 build/C/man2/perf_event_open.2:1601
3116 #, no-wrap
3117 msgid "I<size>"
3118 msgstr "I<size>"
3119
3120 #. type: Plain text
3121 #: build/C/man2/perf_event_open.2:333
3122 msgid ""
3123 "The size of the I<perf_event_attr> structure for forward/backward "
3124 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
3125 "the kernel to see the struct size at the time of compilation."
3126 msgstr ""
3127
3128 #.  commit cb5d76999029ae7a517cb07dfa732c1b5a934fc2
3129 #.  this was added much later when PERF_ATTR_SIZE_VER2 happened
3130 #.  but the actual attr_size had increased in 2.6.33
3131 #.  commit cb5d76999029ae7a517cb07dfa732c1b5a934fc2
3132 #.  commit 1659d129ed014b715b0b2120e6fd929bdd33ed03
3133 #. type: Plain text
3134 #: build/C/man2/perf_event_open.2:353
3135 msgid ""
3136 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
3137 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
3138 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
3139 "corresponding to the addition of branch sampling in Linux 3.4.  "
3140 "B<PERF_ATTR_SIZE_VER3> is 96 corresponding to the addition of "
3141 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
3142 msgstr ""
3143
3144 #. type: TP
3145 #: build/C/man2/perf_event_open.2:353
3146 #, no-wrap
3147 msgid "I<config>"
3148 msgstr "I<config>"
3149
3150 #. type: Plain text
3151 #: build/C/man2/perf_event_open.2:364
3152 msgid ""
3153 "This specifies which event you want, in conjunction with the I<type> field.  "
3154 "The I<config1> and I<config2> fields are also taken into account in cases "
3155 "where 64 bits is not enough to fully specify the event.  The encoding of "
3156 "these fields are event dependent."
3157 msgstr ""
3158
3159 #. type: Plain text
3160 #: build/C/man2/perf_event_open.2:375
3161 msgid ""
3162 "There are various ways to set the I<config> field that are dependent on the "
3163 "value of the previously described I<type> field.  What follows are various "
3164 "possible settings for I<config> separated out by I<type>."
3165 msgstr ""
3166
3167 #. type: Plain text
3168 #: build/C/man2/perf_event_open.2:385
3169 msgid ""
3170 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
3171 "hardware CPU events.  Not all of these are available on all platforms.  Set "
3172 "I<config> to one of the following:"
3173 msgstr ""
3174
3175 #. type: TP
3176 #: build/C/man2/perf_event_open.2:386
3177 #, no-wrap
3178 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
3179 msgstr "B<PERF_COUNT_HW_CPU_CYCLES>"
3180
3181 #. type: Plain text
3182 #: build/C/man2/perf_event_open.2:390
3183 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling."
3184 msgstr ""
3185
3186 #. type: TP
3187 #: build/C/man2/perf_event_open.2:390
3188 #, no-wrap
3189 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
3190 msgstr "B<PERF_COUNT_HW_INSTRUCTIONS>"
3191
3192 #. type: Plain text
3193 #: build/C/man2/perf_event_open.2:395
3194 msgid ""
3195 "Retired instructions.  Be careful, these can be affected by various issues, "
3196 "most notably hardware interrupt counts."
3197 msgstr ""
3198
3199 #. type: TP
3200 #: build/C/man2/perf_event_open.2:395
3201 #, no-wrap
3202 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
3203 msgstr "B<PERF_COUNT_HW_CACHE_REFERENCES>"
3204
3205 #. type: Plain text
3206 #: build/C/man2/perf_event_open.2:402
3207 msgid ""
3208 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
3209 "may vary depending on your CPU.  This may include prefetches and coherency "
3210 "messages; again this depends on the design of your CPU."
3211 msgstr ""
3212
3213 #. type: TP
3214 #: build/C/man2/perf_event_open.2:402
3215 #, no-wrap
3216 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
3217 msgstr "B<PERF_COUNT_HW_CACHE_MISSES>"
3218
3219 #. type: Plain text
3220 #: build/C/man2/perf_event_open.2:409
3221 msgid ""
3222 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
3223 "intended to be used in conjunction with the "
3224 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
3225 msgstr ""
3226
3227 #. type: TP
3228 #: build/C/man2/perf_event_open.2:409
3229 #, no-wrap
3230 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
3231 msgstr "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
3232
3233 #.  commit f287d332ce835f77a4f5077d2c0ef1e3f9ea42d2
3234 #. type: Plain text
3235 #: build/C/man2/perf_event_open.2:415
3236 msgid ""
3237 "Retired branch instructions.  Prior to Linux 2.6.35, this used the wrong "
3238 "event on AMD processors."
3239 msgstr ""
3240
3241 #. type: TP
3242 #: build/C/man2/perf_event_open.2:415
3243 #, no-wrap
3244 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
3245 msgstr "B<PERF_COUNT_HW_BRANCH_MISSES>"
3246
3247 #. type: Plain text
3248 #: build/C/man2/perf_event_open.2:418
3249 msgid "Mispredicted branch instructions."
3250 msgstr ""
3251
3252 #. type: TP
3253 #: build/C/man2/perf_event_open.2:418
3254 #, no-wrap
3255 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
3256 msgstr "B<PERF_COUNT_HW_BUS_CYCLES>"
3257
3258 #. type: Plain text
3259 #: build/C/man2/perf_event_open.2:421
3260 msgid "Bus cycles, which can be different from total cycles."
3261 msgstr ""
3262
3263 #. type: TP
3264 #: build/C/man2/perf_event_open.2:421
3265 #, no-wrap
3266 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (since Linux 3.0)"
3267 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Linux 3.0 以降)"
3268
3269 #.  commit 8f62242246351b5a4bc0c1f00c0c7003edea128a
3270 #. type: Plain text
3271 #: build/C/man2/perf_event_open.2:425
3272 msgid "Stalled cycles during issue."
3273 msgstr ""
3274
3275 #. type: TP
3276 #: build/C/man2/perf_event_open.2:425
3277 #, no-wrap
3278 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (since Linux 3.0)"
3279 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Linux 3.0 以降)"
3280
3281 #.  commit 8f62242246351b5a4bc0c1f00c0c7003edea128a
3282 #. type: Plain text
3283 #: build/C/man2/perf_event_open.2:429
3284 msgid "Stalled cycles during retirement."
3285 msgstr ""
3286
3287 #. type: TP
3288 #: build/C/man2/perf_event_open.2:429
3289 #, no-wrap
3290 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (since Linux 3.3)"
3291 msgstr "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Linux 3.3 以降)"
3292
3293 #.  commit c37e17497e01fc0f5d2d6feb5723b210b3ab8890
3294 #. type: Plain text
3295 #: build/C/man2/perf_event_open.2:433
3296 msgid "Total cycles; not affected by CPU frequency scaling."
3297 msgstr ""
3298
3299 #. type: Plain text
3300 #: build/C/man2/perf_event_open.2:443
3301 msgid ""
3302 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
3303 "provided by the kernel.  Set I<config> to one of the following:"
3304 msgstr ""
3305
3306 #. type: TP
3307 #: build/C/man2/perf_event_open.2:444
3308 #, no-wrap
3309 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
3310 msgstr "B<PERF_COUNT_SW_CPU_CLOCK>"
3311
3312 #. type: Plain text
3313 #: build/C/man2/perf_event_open.2:447
3314 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
3315 msgstr ""
3316
3317 #. type: TP
3318 #: build/C/man2/perf_event_open.2:447
3319 #, no-wrap
3320 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
3321 msgstr "B<PERF_COUNT_SW_TASK_CLOCK>"
3322
3323 #. type: Plain text
3324 #: build/C/man2/perf_event_open.2:450
3325 msgid "This reports a clock count specific to the task that is running."
3326 msgstr ""
3327
3328 #. type: TP
3329 #: build/C/man2/perf_event_open.2:450
3330 #, no-wrap
3331 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
3332 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS>"
3333
3334 #. type: Plain text
3335 #: build/C/man2/perf_event_open.2:453
3336 msgid "This reports the number of page faults."
3337 msgstr ""
3338
3339 #. type: TP
3340 #: build/C/man2/perf_event_open.2:453
3341 #, no-wrap
3342 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3343 msgstr "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
3344
3345 #.  commit e49a5bd38159dfb1928fd25b173bc9de4bbadb21
3346 #. type: Plain text
3347 #: build/C/man2/perf_event_open.2:459
3348 msgid ""
3349 "This counts context switches.  Until Linux 2.6.34, these were all reported "
3350 "as user-space events, after that they are reported as happening in the "
3351 "kernel."
3352 msgstr ""
3353
3354 #. type: TP
3355 #: build/C/man2/perf_event_open.2:459
3356 #, no-wrap
3357 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3358 msgstr "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
3359
3360 #. type: Plain text
3361 #: build/C/man2/perf_event_open.2:463
3362 msgid "This reports the number of times the process has migrated to a new CPU."
3363 msgstr ""
3364
3365 #. type: TP
3366 #: build/C/man2/perf_event_open.2:463
3367 #, no-wrap
3368 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3369 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
3370
3371 #. type: Plain text
3372 #: build/C/man2/perf_event_open.2:467
3373 msgid ""
3374 "This counts the number of minor page faults.  These did not require disk I/O "
3375 "to handle."
3376 msgstr ""
3377
3378 #. type: TP
3379 #: build/C/man2/perf_event_open.2:467
3380 #, no-wrap
3381 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3382 msgstr "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
3383
3384 #. type: Plain text
3385 #: build/C/man2/perf_event_open.2:471
3386 msgid ""
3387 "This counts the number of major page faults.  These required disk I/O to "
3388 "handle."
3389 msgstr ""
3390
3391 #. type: TP
3392 #: build/C/man2/perf_event_open.2:471
3393 #, no-wrap
3394 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (since Linux 2.6.33)"
3395 msgstr "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Linux 2.6.33 以降)"
3396
3397 #.  commit f7d7986060b2890fc26db6ab5203efbd33aa2497
3398 #. type: Plain text
3399 #: build/C/man2/perf_event_open.2:478
3400 msgid ""
3401 "This counts the number of alignment faults.  These happen when unaligned "
3402 "memory accesses happen; the kernel can handle these but it reduces "
3403 "performance.  This happens only on some architectures (never on x86)."
3404 msgstr ""
3405
3406 #. type: TP
3407 #: build/C/man2/perf_event_open.2:478
3408 #, no-wrap
3409 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (since Linux 2.6.33)"
3410 msgstr "B<PERF_COUNT_SW_EMULATION_FAULTS> (Linux 2.6.33 以降)"
3411
3412 #.  commit f7d7986060b2890fc26db6ab5203efbd33aa2497
3413 #. type: Plain text
3414 #: build/C/man2/perf_event_open.2:485
3415 msgid ""
3416 "This counts the number of emulation faults.  The kernel sometimes traps on "
3417 "unimplemented instructions and emulates them for user space.  This can "
3418 "negatively impact performance."
3419 msgstr ""
3420
3421 #. type: TP
3422 #: build/C/man2/perf_event_open.2:485
3423 #, no-wrap
3424 msgid "B<PERF_COUNT_SW_DUMMY> (since Linux 3.12)"
3425 msgstr "B<PERF_COUNT_SW_DUMMY> (Linux 3.12 以降)"
3426
3427 #.  commit fa0097ee690693006ab1aea6c01ad3c851b65c77
3428 #. type: Plain text
3429 #: build/C/man2/perf_event_open.2:493
3430 msgid ""
3431 "This is a placeholder event that counts nothing.  Informational sample "
3432 "record types such as mmap or comm must be associated with an active event.  "
3433 "This dummy event allows gathering such records without requiring a counting "
3434 "event."
3435 msgstr ""
3436
3437 #. type: Plain text
3438 #: build/C/man2/perf_event_open.2:506
3439 msgid ""
3440 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3441 "tracepoints.  The value to use in I<config> can be obtained from under "
3442 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3443 msgstr ""
3444
3445 #. type: Plain text
3446 #: build/C/man2/perf_event_open.2:517
3447 msgid ""
3448 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3449 "cache event.  To calculate the appropriate I<config> value use the following "
3450 "equation:"
3451 msgstr ""
3452
3453 #. type: Plain text
3454 #: build/C/man2/perf_event_open.2:522
3455 #, no-wrap
3456 msgid ""
3457 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3458 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3459 msgstr ""
3460 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3461 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3462
3463 #. type: Plain text
3464 #: build/C/man2/perf_event_open.2:527
3465 msgid "where I<perf_hw_cache_id> is one of:"
3466 msgstr ""
3467
3468 #. type: TP
3469 #: build/C/man2/perf_event_open.2:528
3470 #, no-wrap
3471 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3472 msgstr "B<PERF_COUNT_HW_CACHE_L1D>"
3473
3474 #. type: Plain text
3475 #: build/C/man2/perf_event_open.2:531
3476 msgid "for measuring Level 1 Data Cache"
3477 msgstr ""
3478
3479 #. type: TP
3480 #: build/C/man2/perf_event_open.2:531
3481 #, no-wrap
3482 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3483 msgstr "B<PERF_COUNT_HW_CACHE_L1I>"
3484
3485 #. type: Plain text
3486 #: build/C/man2/perf_event_open.2:534
3487 msgid "for measuring Level 1 Instruction Cache"
3488 msgstr ""
3489
3490 #. type: TP
3491 #: build/C/man2/perf_event_open.2:534
3492 #, no-wrap
3493 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3494 msgstr "B<PERF_COUNT_HW_CACHE_LL>"
3495
3496 #. type: Plain text
3497 #: build/C/man2/perf_event_open.2:537
3498 msgid "for measuring Last-Level Cache"
3499 msgstr ""
3500
3501 #. type: TP
3502 #: build/C/man2/perf_event_open.2:537
3503 #, no-wrap
3504 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3505 msgstr "B<PERF_COUNT_HW_CACHE_DTLB>"
3506
3507 #. type: Plain text
3508 #: build/C/man2/perf_event_open.2:540
3509 msgid "for measuring the Data TLB"
3510 msgstr ""
3511
3512 #. type: TP
3513 #: build/C/man2/perf_event_open.2:540
3514 #, no-wrap
3515 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3516 msgstr "B<PERF_COUNT_HW_CACHE_ITLB>"
3517
3518 #. type: Plain text
3519 #: build/C/man2/perf_event_open.2:543
3520 msgid "for measuring the Instruction TLB"
3521 msgstr ""
3522
3523 #. type: TP
3524 #: build/C/man2/perf_event_open.2:543
3525 #, no-wrap
3526 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3527 msgstr "B<PERF_COUNT_HW_CACHE_BPU>"
3528
3529 #. type: Plain text
3530 #: build/C/man2/perf_event_open.2:546
3531 msgid "for measuring the branch prediction unit"
3532 msgstr ""
3533
3534 #. type: TP
3535 #: build/C/man2/perf_event_open.2:546
3536 #, no-wrap
3537 msgid "B<PERF_COUNT_HW_CACHE_NODE> (since Linux 3.1)"
3538 msgstr "B<PERF_COUNT_HW_CACHE_NODE> (Linux 3.1 以降)"
3539
3540 #.  commit 89d6c0b5bdbb1927775584dcf532d98b3efe1477
3541 #. type: Plain text
3542 #: build/C/man2/perf_event_open.2:550
3543 msgid "for measuring local memory accesses"
3544 msgstr ""
3545
3546 #. type: Plain text
3547 #: build/C/man2/perf_event_open.2:555
3548 msgid "and I<perf_hw_cache_op_id> is one of"
3549 msgstr ""
3550
3551 #. type: TP
3552 #: build/C/man2/perf_event_open.2:556
3553 #, no-wrap
3554 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3555 msgstr "B<PERF_COUNT_HW_CACHE_OP_READ>"
3556
3557 #. type: Plain text
3558 #: build/C/man2/perf_event_open.2:559
3559 msgid "for read accesses"
3560 msgstr ""
3561
3562 #. type: TP
3563 #: build/C/man2/perf_event_open.2:559
3564 #, no-wrap
3565 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3566 msgstr "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3567
3568 #. type: Plain text
3569 #: build/C/man2/perf_event_open.2:562
3570 msgid "for write accesses"
3571 msgstr ""
3572
3573 #. type: TP
3574 #: build/C/man2/perf_event_open.2:562
3575 #, no-wrap
3576 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3577 msgstr "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3578
3579 #. type: Plain text
3580 #: build/C/man2/perf_event_open.2:565
3581 msgid "for prefetch accesses"
3582 msgstr ""
3583
3584 #. type: Plain text
3585 #: build/C/man2/perf_event_open.2:570
3586 msgid "and I<perf_hw_cache_op_result_id> is one of"
3587 msgstr ""
3588
3589 #. type: TP
3590 #: build/C/man2/perf_event_open.2:571
3591 #, no-wrap
3592 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3593 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3594
3595 #. type: Plain text
3596 #: build/C/man2/perf_event_open.2:574
3597 msgid "to measure accesses"
3598 msgstr ""
3599
3600 #. type: TP
3601 #: build/C/man2/perf_event_open.2:574
3602 #, no-wrap
3603 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3604 msgstr "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3605
3606 #. type: Plain text
3607 #: build/C/man2/perf_event_open.2:577
3608 msgid "to measure misses"
3609 msgstr ""
3610
3611 #. type: Plain text
3612 #: build/C/man2/perf_event_open.2:595
3613 msgid ""
3614 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3615 "needed.  Most CPUs support events that are not covered by the \"generalized"
3616 "\" events.  These are implementation defined; see your CPU manual (for "
3617 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3618 "Developer Guide).  The libpfm4 library can be used to translate from the "
3619 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3620 "expects in this field."
3621 msgstr ""
3622
3623 #. type: Plain text
3624 #: build/C/man2/perf_event_open.2:604
3625 msgid ""
3626 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3627 "Its parameters are set in other places."
3628 msgstr ""
3629
3630 #. type: TP
3631 #: build/C/man2/perf_event_open.2:605
3632 #, no-wrap
3633 msgid "I<sample_period>, I<sample_freq>"
3634 msgstr "I<sample_period>, I<sample_freq>"
3635
3636 #. type: Plain text
3637 #: build/C/man2/perf_event_open.2:617
3638 msgid ""
3639 "A \"sampling\" event is one that generates an overflow notification every N "
3640 "events, where N is given by I<sample_period>.  A sampling event has "
3641 "I<sample_period> E<gt> 0.  When an overflow occurs, requested data is "
3642 "recorded in the mmap buffer.  The I<sample_type> field controls what data is "
3643 "recorded on each overflow."
3644 msgstr ""
3645
3646 #. type: Plain text
3647 #: build/C/man2/perf_event_open.2:627
3648 msgid ""
3649 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3650 "In this case, you set the I<freq> flag.  The kernel will adjust the sampling "
3651 "period to try and achieve the desired rate.  The rate of adjustment is a "
3652 "timer tick."
3653 msgstr ""
3654
3655 #. type: TP
3656 #: build/C/man2/perf_event_open.2:627
3657 #, no-wrap
3658 msgid "I<sample_type>"
3659 msgstr "I<sample_type>"
3660
3661 #. type: Plain text
3662 #: build/C/man2/perf_event_open.2:639
3663 msgid ""
3664 "The various bits in this field specify which values to include in the "
3665 "sample.  They will be recorded in a ring-buffer, which is available to user "
3666 "space using B<mmap>(2).  The order in which the values are saved in the "
3667 "sample are documented in the MMAP Layout subsection below; it is not the "
3668 "I<enum perf_event_sample_format> order."
3669 msgstr ""
3670
3671 #. type: TP
3672 #: build/C/man2/perf_event_open.2:640
3673 #, no-wrap
3674 msgid "B<PERF_SAMPLE_IP>"
3675 msgstr "B<PERF_SAMPLE_IP>"
3676
3677 #. type: Plain text
3678 #: build/C/man2/perf_event_open.2:643
3679 msgid "Records instruction pointer."
3680 msgstr ""
3681
3682 #. type: TP
3683 #: build/C/man2/perf_event_open.2:643
3684 #, no-wrap
3685 msgid "B<PERF_SAMPLE_TID>"
3686 msgstr "B<PERF_SAMPLE_TID>"
3687
3688 #. type: Plain text
3689 #: build/C/man2/perf_event_open.2:646
3690 msgid "Records the process and thread IDs."
3691 msgstr ""
3692
3693 #. type: TP
3694 #: build/C/man2/perf_event_open.2:646
3695 #, no-wrap
3696 msgid "B<PERF_SAMPLE_TIME>"
3697 msgstr "B<PERF_SAMPLE_TIME>"
3698
3699 #. type: Plain text
3700 #: build/C/man2/perf_event_open.2:649
3701 msgid "Records a timestamp."
3702 msgstr ""
3703
3704 #. type: TP
3705 #: build/C/man2/perf_event_open.2:649
3706 #, no-wrap
3707 msgid "B<PERF_SAMPLE_ADDR>"
3708 msgstr "B<PERF_SAMPLE_ADDR>"
3709
3710 #. type: Plain text
3711 #: build/C/man2/perf_event_open.2:652
3712 msgid "Records an address, if applicable."
3713 msgstr ""
3714
3715 #. type: TP
3716 #: build/C/man2/perf_event_open.2:652
3717 #, no-wrap
3718 msgid "B<PERF_SAMPLE_READ>"
3719 msgstr "B<PERF_SAMPLE_READ>"
3720
3721 #. type: Plain text
3722 #: build/C/man2/perf_event_open.2:655
3723 msgid ""
3724 "Record counter values for all events in a group, not just the group leader."
3725 msgstr ""
3726
3727 #. type: TP
3728 #: build/C/man2/perf_event_open.2:655
3729 #, no-wrap
3730 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3731 msgstr "B<PERF_SAMPLE_CALLCHAIN>"
3732
3733 #. type: Plain text
3734 #: build/C/man2/perf_event_open.2:658
3735 msgid "Records the callchain (stack backtrace)."
3736 msgstr ""
3737
3738 #. type: TP
3739 #: build/C/man2/perf_event_open.2:658
3740 #, no-wrap
3741 msgid "B<PERF_SAMPLE_ID>"
3742 msgstr "B<PERF_SAMPLE_ID>"
3743
3744 #. type: Plain text
3745 #: build/C/man2/perf_event_open.2:661
3746 msgid "Records a unique ID for the opened event's group leader."
3747 msgstr ""
3748
3749 #. type: TP
3750 #: build/C/man2/perf_event_open.2:661
3751 #, no-wrap
3752 msgid "B<PERF_SAMPLE_CPU>"
3753 msgstr "B<PERF_SAMPLE_CPU>"
3754
3755 #. type: Plain text
3756 #: build/C/man2/perf_event_open.2:664
3757 msgid "Records CPU number."
3758 msgstr ""
3759
3760 #. type: TP
3761 #: build/C/man2/perf_event_open.2:664
3762 #, no-wrap
3763 msgid "B<PERF_SAMPLE_PERIOD>"
3764 msgstr "B<PERF_SAMPLE_PERIOD>"
3765
3766 #. type: Plain text
3767 #: build/C/man2/perf_event_open.2:667
3768 msgid "Records the current sampling period."
3769 msgstr ""
3770
3771 #. type: TP
3772 #: build/C/man2/perf_event_open.2:667
3773 #, no-wrap
3774 msgid "B<PERF_SAMPLE_STREAM_ID>"
3775 msgstr "B<PERF_SAMPLE_STREAM_ID>"
3776
3777 #. type: Plain text
3778 #: build/C/man2/perf_event_open.2:675
3779 msgid ""
3780 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3781 "actual ID is returned, not the group leader.  This ID is the same as the one "
3782 "returned by B<PERF_FORMAT_ID>."
3783 msgstr ""
3784
3785 #. type: TP
3786 #: build/C/man2/perf_event_open.2:675
3787 #, no-wrap
3788 msgid "B<PERF_SAMPLE_RAW>"
3789 msgstr "B<PERF_SAMPLE_RAW>"
3790
3791 #. type: Plain text
3792 #: build/C/man2/perf_event_open.2:679
3793 msgid ""
3794 "Records additional data, if applicable.  Usually returned by tracepoint "
3795 "events."
3796 msgstr ""
3797
3798 #. type: TP
3799 #: build/C/man2/perf_event_open.2:679
3800 #, no-wrap
3801 msgid "B<PERF_SAMPLE_BRANCH_STACK> (since Linux 3.4)"
3802 msgstr "B<PERF_SAMPLE_BRANCH_STACK> (Linux 3.4 以降)"
3803
3804 #.  commit bce38cd53e5ddba9cb6d708c4ef3d04a4016ec7e
3805 #. type: Plain text
3806 #: build/C/man2/perf_event_open.2:685
3807 msgid ""
3808 "This provides a record of recent branches, as provided by CPU branch "
3809 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3810 "supports this feature."
3811 msgstr ""
3812
3813 #. type: Plain text
3814 #: build/C/man2/perf_event_open.2:689
3815 msgid ""
3816 "See the I<branch_sample_type> field for how to filter which branches are "
3817 "reported."
3818 msgstr ""
3819
3820 #. type: TP
3821 #: build/C/man2/perf_event_open.2:689
3822 #, no-wrap
3823 msgid "B<PERF_SAMPLE_REGS_USER> (since Linux 3.7)"
3824 msgstr "B<PERF_SAMPLE_REGS_USER> (Linux 3.7 以降)"
3825
3826 #.  commit 4018994f3d8785275ef0e7391b75c3462c029e56
3827 #. type: Plain text
3828 #: build/C/man2/perf_event_open.2:694
3829 msgid ""
3830 "Records the current user-level CPU register state (the values in the process "
3831 "before the kernel was called)."
3832 msgstr ""
3833
3834 #. type: TP
3835 #: build/C/man2/perf_event_open.2:694
3836 #, no-wrap
3837 msgid "B<PERF_SAMPLE_STACK_USER> (since Linux 3.7)"
3838 msgstr "B<PERF_SAMPLE_STACK_USER> (Linux 3.7 以降)"
3839
3840 #.  commit c5ebcedb566ef17bda7b02686e0d658a7bb42ee7
3841 #. type: Plain text
3842 #: build/C/man2/perf_event_open.2:698
3843 msgid "Records the user level stack, allowing stack unwinding."
3844 msgstr ""
3845
3846 #. type: TP
3847 #: build/C/man2/perf_event_open.2:698
3848 #, no-wrap
3849 msgid "B<PERF_SAMPLE_WEIGHT> (since Linux 3.10)"
3850 msgstr "B<PERF_SAMPLE_WEIGHT> (Linux 3.10 以降)"
3851
3852 #.  commit c3feedf2aaf9ac8bad6f19f5d21e4ee0b4b87e9c
3853 #. type: Plain text
3854 #: build/C/man2/perf_event_open.2:705
3855 msgid ""
3856 "Records a hardware provided weight value that expresses how costly the "
3857 "sampled event was.  This allows the hardware to highlight expensive events "
3858 "in a profile."
3859 msgstr ""
3860
3861 #. type: TP
3862 #: build/C/man2/perf_event_open.2:705
3863 #, no-wrap
3864 msgid "B<PERF_SAMPLE_DATA_SRC> (since Linux 3.10)"
3865 msgstr "B<PERF_SAMPLE_DATA_SRC> (Linux 3.10 以降)"
3866
3867 #.  commit d6be9ad6c960f43800a6f118932bc8a5a4eadcd1
3868 #. type: Plain text
3869 #: build/C/man2/perf_event_open.2:712
3870 msgid ""
3871 "Records the data source: where in the memory hierarchy the data associated "
3872 "with the sampled instruction came from.  This is available only if the "
3873 "underlying hardware supports this feature."
3874 msgstr ""
3875
3876 #. type: TP
3877 #: build/C/man2/perf_event_open.2:712
3878 #, no-wrap
3879 msgid "B<PERF_SAMPLE_IDENTIFIER> (since Linux 3.12)"
3880 msgstr "B<PERF_SAMPLE_IDENTIFIER> (Linux 3.12 以降)"
3881
3882 #.  commit ff3d527cebc1fa3707c617bfe9e74f53fcfb0955
3883 #. type: Plain text
3884 #: build/C/man2/perf_event_open.2:720
3885 msgid ""
3886 "Places the B<SAMPLE_ID> value in a fixed position in the record, either at "
3887 "the beginning (for sample events) or at the end (if a non-sample event)."
3888 msgstr ""
3889
3890 #. type: Plain text
3891 #: build/C/man2/perf_event_open.2:732
3892 msgid ""
3893 "This was necessary because a sample stream may have records from various "
3894 "different event sources with different I<sample_type> settings.  Parsing the "
3895 "event stream properly was not possible because the format of the record was "
3896 "needed to find B<SAMPLE_ID>, but the format could not be found without "
3897 "knowing what event the sample belonged to (causing a circular dependency)."
3898 msgstr ""
3899
3900 #. type: Plain text
3901 #: build/C/man2/perf_event_open.2:742
3902 msgid ""
3903 "The B<PERF_SAMPLE_IDENTIFIER> setting makes the event stream always parsable "
3904 "by putting B<SAMPLE_ID> in a fixed location, even though it means having "
3905 "duplicate B<SAMPLE_ID> values in records."
3906 msgstr ""
3907
3908 #. type: TP
3909 #: build/C/man2/perf_event_open.2:742
3910 #, no-wrap
3911 msgid "B<PERF_SAMPLE_TRANSACTION> (since Linux 3.13)"
3912 msgstr "B<PERF_SAMPLE_TRANSACTION> (Linux 3.13 以降)"
3913
3914 #.  commit fdfbbd07e91f8fe387140776f3fd94605f0c89e5
3915 #. type: Plain text
3916 #: build/C/man2/perf_event_open.2:747
3917 msgid ""
3918 "Records reasons for transactional memory abort events (for example, from "
3919 "Intel TSX transactional memory support)."
3920 msgstr ""
3921
3922 #. type: Plain text
3923 #: build/C/man2/perf_event_open.2:755
3924 msgid ""
3925 "The I<precise_ip> setting must be greater than 0 and a transactional memory "
3926 "abort event must be measured or no values will be recorded.  Also note that "
3927 "some perf_event measurements, such as sampled cycle counting, may cause "
3928 "extraneous aborts (by causing an interrupt during a transaction)."
3929 msgstr ""
3930
3931 #. type: TP
3932 #: build/C/man2/perf_event_open.2:756
3933 #, no-wrap
3934 msgid "I<read_format>"
3935 msgstr "I<read_format>"
3936
3937 #. type: Plain text
3938 #: build/C/man2/perf_event_open.2:763
3939 msgid ""
3940 "This field specifies the format of the data returned by B<read>(2)  on a "
3941 "B<perf_event_open>()  file descriptor."
3942 msgstr ""
3943
3944 #. type: TP
3945 #: build/C/man2/perf_event_open.2:764
3946 #, no-wrap
3947 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3948 msgstr "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3949
3950 #. type: Plain text
3951 #: build/C/man2/perf_event_open.2:771
3952 msgid ""
3953 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3954 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3955 msgstr ""
3956
3957 #. type: TP
3958 #: build/C/man2/perf_event_open.2:771
3959 #, no-wrap
3960 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3961 msgstr "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3962
3963 #. type: Plain text
3964 #: build/C/man2/perf_event_open.2:778
3965 msgid ""
3966 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3967 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3968 msgstr ""
3969
3970 #. type: TP
3971 #: build/C/man2/perf_event_open.2:778
3972 #, no-wrap
3973 msgid "B<PERF_FORMAT_ID>"
3974 msgstr "B<PERF_FORMAT_ID>"
3975
3976 #. type: Plain text
3977 #: build/C/man2/perf_event_open.2:781
3978 msgid "Adds a 64-bit unique value that corresponds to the event group."
3979 msgstr ""
3980
3981 #. type: TP
3982 #: build/C/man2/perf_event_open.2:781
3983 #, no-wrap
3984 msgid "B<PERF_FORMAT_GROUP>"
3985 msgstr "B<PERF_FORMAT_GROUP>"
3986
3987 #. type: Plain text
3988 #: build/C/man2/perf_event_open.2:784
3989 msgid "Allows all counter values in an event group to be read with one read."
3990 msgstr ""
3991
3992 #. type: TP
3993 #: build/C/man2/perf_event_open.2:785
3994 #, no-wrap
3995 msgid "I<disabled>"
3996 msgstr "I<disabled>"
3997
3998 #. type: Plain text
3999 #: build/C/man2/perf_event_open.2:795
4000 msgid ""
4001 "The I<disabled> bit specifies whether the counter starts out disabled or "
4002 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
4003 "B<prctl>(2), or I<enable_on_exec>."
4004 msgstr ""
4005
4006 #. type: Plain text
4007 #: build/C/man2/perf_event_open.2:806
4008 msgid ""
4009 "When creating an event group, typically the group leader is initialized with "
4010 "I<disabled> set to 1 and any child events are initialized with I<disabled> "
4011 "set to 0.  Despite I<disabled> being 0, the child events will not start "
4012 "until the group leader is enabled."
4013 msgstr ""
4014
4015 #. type: TP
4016 #: build/C/man2/perf_event_open.2:806
4017 #, no-wrap
4018 msgid "I<inherit>"
4019 msgstr "I<inherit>"
4020
4021 #. type: Plain text
4022 #: build/C/man2/perf_event_open.2:815
4023 msgid ""
4024 "The I<inherit> bit specifies that this counter should count events of child "
4025 "tasks as well as the task specified.  This applies only to new children, not "
4026 "to any existing children at the time the counter is created (nor to any new "
4027 "children of existing children)."
4028 msgstr ""
4029
4030 #. type: Plain text
4031 #: build/C/man2/perf_event_open.2:820
4032 msgid ""
4033 "Inherit does not work for some combinations of I<read_format>s, such as "
4034 "B<PERF_FORMAT_GROUP>."
4035 msgstr ""
4036
4037 #. type: TP
4038 #: build/C/man2/perf_event_open.2:820
4039 #, no-wrap
4040 msgid "I<pinned>"
4041 msgstr "I<pinned>"
4042
4043 #. type: Plain text
4044 #: build/C/man2/perf_event_open.2:833
4045 msgid ""
4046 "The I<pinned> bit specifies that the counter should always be on the CPU if "
4047 "at all possible.  It applies only to hardware counters and only to group "
4048 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
4049 "there are not enough hardware counters or because of a conflict with some "
4050 "other event), then the counter goes into an 'error' state, where reads "
4051 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
4052 "subsequently enabled or disabled."
4053 msgstr ""
4054
4055 #. type: TP
4056 #: build/C/man2/perf_event_open.2:833
4057 #, no-wrap
4058 msgid "I<exclusive>"
4059 msgstr "I<exclusive>"
4060
4061 #. type: Plain text
4062 #: build/C/man2/perf_event_open.2:842
4063 msgid ""
4064 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
4065 "it should be the only group using the CPU's counters.  In the future this "
4066 "may allow monitoring programs to support PMU features that need to run alone "
4067 "so that they do not disrupt other hardware counters."
4068 msgstr ""
4069
4070 #. type: Plain text
4071 #: build/C/man2/perf_event_open.2:849
4072 msgid ""
4073 "Note that many unexpected situations may prevent events with the "
4074 "I<exclusive> bit set from ever running.  This includes any users running a "
4075 "system-wide measurement as well as any kernel use of the performance "
4076 "counters (including the commonly enabled NMI Watchdog Timer interface)."
4077 msgstr ""
4078
4079 #. type: TP
4080 #: build/C/man2/perf_event_open.2:849
4081 #, no-wrap
4082 msgid "I<exclude_user>"
4083 msgstr "I<exclude_user>"
4084
4085 #. type: Plain text
4086 #: build/C/man2/perf_event_open.2:852
4087 msgid ""
4088 "If this bit is set, the count excludes events that happen in user space."
4089 msgstr ""
4090
4091 #. type: TP
4092 #: build/C/man2/perf_event_open.2:852
4093 #, no-wrap
4094 msgid "I<exclude_kernel>"
4095 msgstr "I<exclude_kernel>"
4096
4097 #. type: Plain text
4098 #: build/C/man2/perf_event_open.2:855
4099 msgid ""
4100 "If this bit is set, the count excludes events that happen in kernel-space."
4101 msgstr ""
4102
4103 #. type: TP
4104 #: build/C/man2/perf_event_open.2:855
4105 #, no-wrap
4106 msgid "I<exclude_hv>"
4107 msgstr "I<exclude_hv>"
4108
4109 #. type: Plain text
4110 #: build/C/man2/perf_event_open.2:863
4111 msgid ""
4112 "If this bit is set, the count excludes events that happen in the "
4113 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
4114 "this (such as POWER).  Extra support is needed for handling hypervisor "
4115 "measurements on most machines."
4116 msgstr ""
4117
4118 #. type: TP
4119 #: build/C/man2/perf_event_open.2:863
4120 #, no-wrap
4121 msgid "I<exclude_idle>"
4122 msgstr "I<exclude_idle>"
4123
4124 #. type: Plain text
4125 #: build/C/man2/perf_event_open.2:866
4126 msgid "If set, don't count when the CPU is idle."
4127 msgstr ""
4128
4129 #. type: TP
4130 #: build/C/man2/perf_event_open.2:866
4131 #, no-wrap
4132 msgid "I<mmap>"
4133 msgstr "I<mmap>"
4134
4135 #. type: Plain text
4136 #: build/C/man2/perf_event_open.2:880
4137 msgid ""
4138 "The I<mmap> bit enables generation of B<PERF_RECORD_MMAP> samples for every "
4139 "B<mmap>(2)  call that has B<PROT_EXEC> set.  This allows tools to notice new "
4140 "executable code being mapped into a program (dynamic shared libraries for "
4141 "example)  so that addresses can be mapped back to the original code."
4142 msgstr ""
4143
4144 #. type: TP
4145 #: build/C/man2/perf_event_open.2:880 build/C/man2/perf_event_open.2:1761
4146 #, no-wrap
4147 msgid "I<comm>"
4148 msgstr "I<comm>"
4149
4150 #.  commit 82b897782d10fcc4930c9d4a15b175348fdd2871
4151 #. type: Plain text
4152 #: build/C/man2/perf_event_open.2:899
4153 msgid ""
4154 "The I<comm> bit enables tracking of process command name as modified by the "
4155 "B<exec>(2)  and B<prctl>(PR_SET_NAME)  system calls as well as writing to I</"
4156 "proc/self/comm>.  If the I<comm_exec> flag is also successfully set "
4157 "(possible since Linux 3.16), then the misc flag "
4158 "B<PERF_RECORD_MISC_COMM_EXEC> can be used to differentiate the B<exec>(2)  "
4159 "case from the others."
4160 msgstr ""
4161
4162 #. type: TP
4163 #: build/C/man2/perf_event_open.2:899
4164 #, no-wrap
4165 msgid "I<freq>"
4166 msgstr "I<freq>"
4167
4168 #. type: Plain text
4169 #: build/C/man2/perf_event_open.2:906
4170 msgid ""
4171 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
4172 "when setting up the sampling interval."
4173 msgstr ""
4174
4175 #. type: TP
4176 #: build/C/man2/perf_event_open.2:906
4177 #, no-wrap
4178 msgid "I<inherit_stat>"
4179 msgstr "I<inherit_stat>"
4180
4181 #. type: Plain text
4182 #: build/C/man2/perf_event_open.2:913
4183 msgid ""
4184 "This bit enables saving of event counts on context switch for inherited "
4185 "tasks.  This is meaningful only if the I<inherit> field is set."
4186 msgstr ""
4187
4188 #. type: TP
4189 #: build/C/man2/perf_event_open.2:913
4190 #, no-wrap
4191 msgid "I<enable_on_exec>"
4192 msgstr "I<enable_on_exec>"
4193
4194 #. type: Plain text
4195 #: build/C/man2/perf_event_open.2:918
4196 msgid ""
4197 "If this bit is set, a counter is automatically enabled after a call to "
4198 "B<exec>(2)."
4199 msgstr ""
4200
4201 #. type: TP
4202 #: build/C/man2/perf_event_open.2:918
4203 #, no-wrap
4204 msgid "I<task>"
4205 msgstr "I<task>"
4206
4207 #. type: Plain text
4208 #: build/C/man2/perf_event_open.2:922
4209 msgid ""
4210 "If this bit is set, then fork/exit notifications are included in the ring "
4211 "buffer."
4212 msgstr ""
4213
4214 #. type: TP
4215 #: build/C/man2/perf_event_open.2:922
4216 #, no-wrap
4217 msgid "I<watermark>"
4218 msgstr "I<watermark>"
4219
4220 #. type: Plain text
4221 #: build/C/man2/perf_event_open.2:930
4222 msgid ""
4223 "If set, have an overflow notification happen when we cross the "
4224 "I<wakeup_watermark> boundary.  Otherwise, overflow notifications happen "
4225 "after I<wakeup_events> samples."
4226 msgstr ""
4227
4228 #. type: TP
4229 #: build/C/man2/perf_event_open.2:930
4230 #, no-wrap
4231 msgid "I<precise_ip> (since Linux 2.6.35)"
4232 msgstr "I<precise_ip> (Linux 2.6.35 以降)"
4233
4234 #.  commit ab608344bcbde4f55ec4cd911b686b0ce3eae076
4235 #. type: Plain text
4236 #: build/C/man2/perf_event_open.2:941
4237 msgid ""
4238 "This controls the amount of skid.  Skid is how many instructions execute "
4239 "between an event of interest happening and the kernel being able to stop and "
4240 "record the event.  Smaller skid is better and allows more accurate reporting "
4241 "of which events correspond to which instructions, but hardware is often "
4242 "limited with how small this can be."
4243 msgstr ""
4244
4245 #. type: Plain text
4246 #: build/C/man2/perf_event_open.2:943
4247 msgid "The values of this are the following:"
4248 msgstr ""
4249
4250 #. type: TP
4251 #: build/C/man2/perf_event_open.2:944
4252 #, no-wrap
4253 msgid "0 -"
4254 msgstr "0 -"
4255
4256 #. type: Plain text
4257 #: build/C/man2/perf_event_open.2:948
4258 msgid "B<SAMPLE_IP> can have arbitrary skid."
4259 msgstr ""
4260
4261 #. type: TP
4262 #: build/C/man2/perf_event_open.2:948
4263 #, no-wrap
4264 msgid "1 -"
4265 msgstr "1 -"
4266
4267 #. type: Plain text
4268 #: build/C/man2/perf_event_open.2:952
4269 msgid "B<SAMPLE_IP> must have constant skid."
4270 msgstr ""
4271
4272 #. type: TP
4273 #: build/C/man2/perf_event_open.2:952
4274 #, no-wrap
4275 msgid "2 -"
4276 msgstr "2 -"
4277
4278 #. type: Plain text
4279 #: build/C/man2/perf_event_open.2:956
4280 msgid "B<SAMPLE_IP> requested to have 0 skid."
4281 msgstr ""
4282
4283 #. type: TP
4284 #: build/C/man2/perf_event_open.2:956
4285 #, no-wrap
4286 msgid "3 -"
4287 msgstr "3 -"
4288
4289 #. type: Plain text
4290 #: build/C/man2/perf_event_open.2:962
4291 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
4292 msgstr ""
4293
4294 #. type: TP
4295 #: build/C/man2/perf_event_open.2:963
4296 #, no-wrap
4297 msgid "I<mmap_data> (since Linux 2.6.36)"
4298 msgstr "I<mmap_data> (Linux 2.6.36 以降)"
4299
4300 #.  commit 3af9e859281bda7eb7c20b51879cf43aa788ac2e
4301 #. type: Plain text
4302 #: build/C/man2/perf_event_open.2:976
4303 msgid ""
4304 "The counterpart of the I<mmap> field.  This enables generation of "
4305 "B<PERF_RECORD_MMAP> samples for B<mmap>(2)  calls that do not have "
4306 "B<PROT_EXEC> set (for example data and SysV shared memory)."
4307 msgstr ""
4308
4309 #. type: TP
4310 #: build/C/man2/perf_event_open.2:976
4311 #, no-wrap
4312 msgid "I<sample_id_all> (since Linux 2.6.38)"
4313 msgstr "I<sample_id_all> (Linux 2.6.38 以降)"
4314
4315 #.  commit c980d1091810df13f21aabbce545fd98f545bbf7
4316 #. type: Plain text
4317 #: build/C/man2/perf_event_open.2:985
4318 msgid ""
4319 "If set, then TID, TIME, ID, STREAM_ID, and CPU can additionally be included "
4320 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
4321 "selected."
4322 msgstr ""
4323
4324 #. type: Plain text
4325 #: build/C/man2/perf_event_open.2:993
4326 msgid ""
4327 "If B<PERF_SAMPLE_IDENTIFIER> is specified, then an additional ID value is "
4328 "included as the last value to ease parsing the record stream.  This may lead "
4329 "to the I<id> value appearing twice."
4330 msgstr ""
4331
4332 #. type: Plain text
4333 #: build/C/man2/perf_event_open.2:995
4334 msgid "The layout is described by this pseudo-structure:"
4335 msgstr ""
4336
4337 #. type: Plain text
4338 #: build/C/man2/perf_event_open.2:1005
4339 #, no-wrap
4340 msgid ""
4341 "struct sample_id {\n"
4342 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4343 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4344 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4345 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4346 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4347 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4348 "};\n"
4349 msgstr ""
4350 "struct sample_id {\n"
4351 "    { u32 pid, tid; } /* if PERF_SAMPLE_TID set        */\n"
4352 "    { u64 time;     } /* if PERF_SAMPLE_TIME set       */\n"
4353 "    { u64 id;       } /* if PERF_SAMPLE_ID set         */\n"
4354 "    { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set  */\n"
4355 "    { u32 cpu, res; } /* if PERF_SAMPLE_CPU set        */\n"
4356 "    { u64 id;       } /* if PERF_SAMPLE_IDENTIFIER set */\n"
4357 "};\n"
4358
4359 #. type: TP
4360 #: build/C/man2/perf_event_open.2:1006
4361 #, no-wrap
4362 msgid "I<exclude_host> (since Linux 3.2)"
4363 msgstr "I<exclude_host> (Linux 3.2 以降)"
4364
4365 #.  commit a240f76165e6255384d4bdb8139895fac7988799
4366 #. type: Plain text
4367 #: build/C/man2/perf_event_open.2:1010
4368 msgid "Do not measure time spent in VM host."
4369 msgstr ""
4370
4371 #. type: TP
4372 #: build/C/man2/perf_event_open.2:1010
4373 #, no-wrap
4374 msgid "I<exclude_guest> (since Linux 3.2)"
4375 msgstr "I<exclude_guest> (Linux 3.2 以降)"
4376
4377 #.  commit a240f76165e6255384d4bdb8139895fac7988799
4378 #. type: Plain text
4379 #: build/C/man2/perf_event_open.2:1014
4380 msgid "Do not measure time spent in VM guest."
4381 msgstr ""
4382
4383 #. type: TP
4384 #: build/C/man2/perf_event_open.2:1014
4385 #, no-wrap
4386 msgid "I<exclude_callchain_kernel> (since Linux 3.7)"
4387 msgstr "I<exclude_callchain_kernel> (Linux 3.7 以降)"
4388
4389 #.  commit d077526485d5c9b12fe85d0b2b3b7041e6bc5f91
4390 #. type: Plain text
4391 #: build/C/man2/perf_event_open.2:1018
4392 msgid "Do not include kernel callchains."
4393 msgstr ""
4394
4395 #. type: TP
4396 #: build/C/man2/perf_event_open.2:1018
4397 #, no-wrap
4398 msgid "I<exclude_callchain_user> (since Linux 3.7)"
4399 msgstr "I<exclude_callchain_user> (Linux 3.7 以降)"
4400
4401 #.  commit d077526485d5c9b12fe85d0b2b3b7041e6bc5f91
4402 #. type: Plain text
4403 #: build/C/man2/perf_event_open.2:1022
4404 msgid "Do not include user callchains."
4405 msgstr ""
4406
4407 #. type: TP
4408 #: build/C/man2/perf_event_open.2:1022
4409 #, no-wrap
4410 msgid "I<mmap2> (since Linux 3.16)"
4411 msgstr "I<mmap2> (Linux 3.16 以降)"
4412
4413 #.  commit 13d7a2410fa637f450a29ecb515ac318ee40c741
4414 #.  This is tricky; was committed during 3.12 development
4415 #.  but right before release was disabled.
4416 #.  So while you could select mmap2 starting with 3.12
4417 #.  it did not work until 3.16
4418 #.  commit a5a5ba72843dd05f991184d6cb9a4471acce1005
4419 #. type: Plain text
4420 #: build/C/man2/perf_event_open.2:1035
4421 msgid ""
4422 "Generate an extended executable mmap record that contains enough additional "
4423 "information to uniquely identify shared mappings.  The I<mmap> flag must "
4424 "also be set for this to work."
4425 msgstr ""
4426
4427 #. type: TP
4428 #: build/C/man2/perf_event_open.2:1035
4429 #, no-wrap
4430 msgid "I<comm_exec> (since Linux 3.16)"
4431 msgstr "I<comm_exec> (Linux 3.16 以降)"
4432
4433 #.  commit 82b897782d10fcc4930c9d4a15b175348fdd2871
4434 #. type: Plain text
4435 #: build/C/man2/perf_event_open.2:1051
4436 msgid ""
4437 "This is purely a feature-detection flag, it does not change kernel "
4438 "behavior.  If this flag can successfully be set, then, when I<comm> is "
4439 "enabled, the B<PERF_RECORD_MISC_COMM_EXEC> flag will be set in the I<misc> "
4440 "field of a comm record header if the rename event being reported was caused "
4441 "by a call to B<exec>(2).  This allows tools to distinguish between the "
4442 "various types of process renaming."
4443 msgstr ""
4444
4445 #. type: TP
4446 #: build/C/man2/perf_event_open.2:1051
4447 #, no-wrap
4448 msgid "I<wakeup_events>, I<wakeup_watermark>"
4449 msgstr "I<wakeup_events>, I<wakeup_watermark>"
4450
4451 #. type: Plain text
4452 #: build/C/man2/perf_event_open.2:1061
4453 msgid ""
4454 "This union sets how many samples (I<wakeup_events>)  or bytes "
4455 "(I<wakeup_watermark>)  happen before an overflow notification happens.  "
4456 "Which one is used is selected by the I<watermark> bit flag."
4457 msgstr ""
4458
4459 #. type: Plain text
4460 #: build/C/man2/perf_event_open.2:1071
4461 msgid ""
4462 "I<wakeup_events> counts only B<PERF_RECORD_SAMPLE> record types.  To receive "
4463 "overflow notification for all B<PERF_RECORD> types choose watermark and set "
4464 "I<wakeup_watermark> to 1."
4465 msgstr ""
4466
4467 #.  commit f506b3dc0ec454a16d40cab9ee5d75435b39dc50
4468 #. type: Plain text
4469 #: build/C/man2/perf_event_open.2:1077
4470 msgid ""
4471 "Prior to Linux 3.0 setting I<wakeup_events> to 0 resulted in no overflow "
4472 "notifications; more recent kernels treat 0 the same as 1."
4473 msgstr ""
4474
4475 #. type: TP
4476 #: build/C/man2/perf_event_open.2:1077
4477 #, no-wrap
4478 msgid "I<bp_type> (since Linux 2.6.33)"
4479 msgstr "I<bp_type> (Linux 2.6.33 以降)"
4480
4481 #.  commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
4482 #. type: Plain text
4483 #: build/C/man2/perf_event_open.2:1082
4484 msgid "This chooses the breakpoint type.  It is one of:"
4485 msgstr ""
4486
4487 #. type: TP
4488 #: build/C/man2/perf_event_open.2:1083
4489 #, no-wrap
4490 msgid "B<HW_BREAKPOINT_EMPTY>"
4491 msgstr "B<HW_BREAKPOINT_EMPTY>"
4492
4493 #. type: Plain text
4494 #: build/C/man2/perf_event_open.2:1086
4495 msgid "No breakpoint."
4496 msgstr ""
4497
4498 #. type: TP
4499 #: build/C/man2/perf_event_open.2:1086
4500 #, no-wrap
4501 msgid "B<HW_BREAKPOINT_R>"
4502 msgstr "B<HW_BREAKPOINT_R>"
4503
4504 #. type: Plain text
4505 #: build/C/man2/perf_event_open.2:1089
4506 msgid "Count when we read the memory location."
4507 msgstr ""
4508
4509 #. type: TP
4510 #: build/C/man2/perf_event_open.2:1089
4511 #, no-wrap
4512 msgid "B<HW_BREAKPOINT_W>"
4513 msgstr "B<HW_BREAKPOINT_W>"
4514
4515 #. type: Plain text
4516 #: build/C/man2/perf_event_open.2:1092
4517 msgid "Count when we write the memory location."
4518 msgstr ""
4519
4520 #. type: TP
4521 #: build/C/man2/perf_event_open.2:1092
4522 #, no-wrap
4523 msgid "B<HW_BREAKPOINT_RW>"
4524 msgstr "B<HW_BREAKPOINT_RW>"
4525
4526 #. type: Plain text
4527 #: build/C/man2/perf_event_open.2:1095
4528 msgid "Count when we read or write the memory location."
4529 msgstr ""
4530
4531 #. type: TP
4532 #: build/C/man2/perf_event_open.2:1095
4533 #, no-wrap
4534 msgid "B<HW_BREAKPOINT_X>"
4535 msgstr "B<HW_BREAKPOINT_X>"
4536
4537 #. type: Plain text
4538 #: build/C/man2/perf_event_open.2:1098
4539 msgid "Count when we execute code at the memory location."
4540 msgstr ""
4541
4542 #. type: Plain text
4543 #: build/C/man2/perf_event_open.2:1107
4544 msgid ""
4545 "The values can be combined via a bitwise or, but the combination of "
4546 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
4547 "allowed."
4548 msgstr ""
4549
4550 #. type: TP
4551 #: build/C/man2/perf_event_open.2:1108
4552 #, no-wrap
4553 msgid "I<bp_addr> (since Linux 2.6.33)"
4554 msgstr "I<bp_addr> (Linux 2.6.33 以降)"
4555
4556 #.  commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
4557 #. type: Plain text
4558 #: build/C/man2/perf_event_open.2:1116
4559 msgid ""
4560 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
4561 "memory address of the instruction of interest; for read and write "
4562 "breakpoints it is the memory address of the memory location of interest."
4563 msgstr ""
4564
4565 #. type: TP
4566 #: build/C/man2/perf_event_open.2:1116
4567 #, no-wrap
4568 msgid "I<config1> (since Linux 2.6.39)"
4569 msgstr "I<config1> (Linux 2.6.39 以降)"
4570
4571 #.  commit a7e3ed1e470116c9d12c2f778431a481a6be8ab6
4572 #. type: Plain text
4573 #: build/C/man2/perf_event_open.2:1124
4574 msgid ""
4575 "I<config1> is used for setting events that need an extra register or "
4576 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
4577 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
4578 msgstr ""
4579
4580 #. type: TP
4581 #: build/C/man2/perf_event_open.2:1124
4582 #, no-wrap
4583 msgid "I<bp_len> (since Linux 2.6.33)"
4584 msgstr "I<bp_len> (Linux 2.6.33 以降)"
4585
4586 #.  commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
4587 #. type: Plain text
4588 #: build/C/man2/perf_event_open.2:1139
4589 msgid ""
4590 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
4591 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
4592 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
4593 "an execution breakpoint, set this to I<sizeof(long)>."
4594 msgstr ""
4595
4596 #. type: TP
4597 #: build/C/man2/perf_event_open.2:1139
4598 #, no-wrap
4599 msgid "I<config2> (since Linux 2.6.39)"
4600 msgstr "I<config2> (Linux 2.6.39 以降)"
4601
4602 #.  commit a7e3ed1e470116c9d12c2f778431a481a6be8ab6
4603 #. type: Plain text
4604 #: build/C/man2/perf_event_open.2:1147
4605 msgid "I<config2> is a further extension of the I<config1> field."
4606 msgstr ""
4607
4608 #. type: TP
4609 #: build/C/man2/perf_event_open.2:1147
4610 #, no-wrap
4611 msgid "I<branch_sample_type> (since Linux 3.4)"
4612 msgstr "I<branch_sample_type> (Linux 3.4 以降)"
4613
4614 #.  commit bce38cd53e5ddba9cb6d708c4ef3d04a4016ec7e
4615 #. type: Plain text
4616 #: build/C/man2/perf_event_open.2:1154
4617 msgid ""
4618 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
4619 "to include in the branch record."
4620 msgstr ""
4621
4622 #. type: Plain text
4623 #: build/C/man2/perf_event_open.2:1160
4624 msgid ""
4625 "The first part of the value is the privilege level, which is a combination "
4626 "of one of the following values.  If the user does not set privilege level "
4627 "explicitly, the kernel will use the event's privilege level.  Event and "
4628 "branch privilege levels do not have to match."
4629 msgstr ""
4630
4631 #. type: TP
4632 #: build/C/man2/perf_event_open.2:1161
4633 #, no-wrap
4634 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4635 msgstr ""
4636
4637 #. type: Plain text
4638 #: build/C/man2/perf_event_open.2:1164
4639 msgid "Branch target is in user space."
4640 msgstr ""
4641
4642 #. type: TP
4643 #: build/C/man2/perf_event_open.2:1164
4644 #, no-wrap
4645 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4646 msgstr ""
4647
4648 #. type: Plain text
4649 #: build/C/man2/perf_event_open.2:1167
4650 msgid "Branch target is in kernel space."
4651 msgstr ""
4652
4653 #. type: TP
4654 #: build/C/man2/perf_event_open.2:1167
4655 #, no-wrap
4656 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4657 msgstr ""
4658
4659 #. type: Plain text
4660 #: build/C/man2/perf_event_open.2:1170
4661 msgid "Branch target is in hypervisor."
4662 msgstr ""
4663
4664 #. type: TP
4665 #: build/C/man2/perf_event_open.2:1170
4666 #, no-wrap
4667 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4668 msgstr ""
4669
4670 #. type: Plain text
4671 #: build/C/man2/perf_event_open.2:1173
4672 msgid "A convenience value that is the three preceding values ORed together."
4673 msgstr ""
4674
4675 #. type: Plain text
4676 #: build/C/man2/perf_event_open.2:1177
4677 msgid ""
4678 "In addition to the privilege value, at least one or more of the following "
4679 "bits must be set."
4680 msgstr ""
4681
4682 #. type: TP
4683 #: build/C/man2/perf_event_open.2:1178
4684 #, no-wrap
4685 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4686 msgstr ""
4687
4688 #. type: Plain text
4689 #: build/C/man2/perf_event_open.2:1181
4690 msgid "Any branch type."
4691 msgstr ""
4692
4693 #. type: TP
4694 #: build/C/man2/perf_event_open.2:1181
4695 #, no-wrap
4696 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4697 msgstr ""
4698
4699 #. type: Plain text
4700 #: build/C/man2/perf_event_open.2:1184
4701 msgid "Any call branch."
4702 msgstr ""
4703
4704 #. type: TP
4705 #: build/C/man2/perf_event_open.2:1184
4706 #, no-wrap
4707 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4708 msgstr ""
4709
4710 #. type: Plain text
4711 #: build/C/man2/perf_event_open.2:1187
4712 msgid "Any return branch."
4713 msgstr ""
4714
4715 #. type: TP
4716 #: build/C/man2/perf_event_open.2:1187
4717 #, no-wrap
4718 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4719 msgstr ""
4720
4721 #. type: Plain text
4722 #: build/C/man2/perf_event_open.2:1190
4723 msgid "Indirect calls."
4724 msgstr ""
4725
4726 #. type: TP
4727 #: build/C/man2/perf_event_open.2:1190
4728 #, no-wrap
4729 msgid "B<PERF_SAMPLE_BRANCH_COND> (since Linux 3.16)"
4730 msgstr "B<PERF_SAMPLE_BRANCH_COND> (Linux 3.16 以降)"
4731
4732 #.  commit bac52139f0b7ab31330e98fd87fc5a2664951050
4733 #. type: Plain text
4734 #: build/C/man2/perf_event_open.2:1194
4735 msgid "Conditional branches."
4736 msgstr ""
4737
4738 #. type: TP
4739 #: build/C/man2/perf_event_open.2:1194
4740 #, no-wrap
4741 msgid "B<PERF_SAMPLE_BRANCH_ABORT_TX> (since Linux 3.11)"
4742 msgstr "B<PERF_SAMPLE_BRANCH_ABORT_TX> (Linux 3.11 以降)"
4743
4744 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4745 #. type: Plain text
4746 #: build/C/man2/perf_event_open.2:1198
4747 msgid "Transactional memory aborts."
4748 msgstr ""
4749
4750 #. type: TP
4751 #: build/C/man2/perf_event_open.2:1198
4752 #, no-wrap
4753 msgid "B<PERF_SAMPLE_BRANCH_IN_TX> (since Linux 3.11)"
4754 msgstr "B<PERF_SAMPLE_BRANCH_IN_TX> (Linux 3.11 以降)"
4755
4756 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4757 #. type: Plain text
4758 #: build/C/man2/perf_event_open.2:1202
4759 msgid "Branch in transactional memory transaction."
4760 msgstr ""
4761
4762 #. type: TP
4763 #: build/C/man2/perf_event_open.2:1202
4764 #, no-wrap
4765 msgid "B<PERF_SAMPLE_BRANCH_NO_TX> (since Linux 3.11)"
4766 msgstr "B<PERF_SAMPLE_BRANCH_NO_TX> (Linux 3.11 以降)"
4767
4768 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
4769 #. type: Plain text
4770 #: build/C/man2/perf_event_open.2:1206
4771 msgid "Branch not in transactional memory transaction."
4772 msgstr ""
4773
4774 #. type: TP
4775 #: build/C/man2/perf_event_open.2:1208
4776 #, no-wrap
4777 msgid "I<sample_regs_user> (since Linux 3.7)"
4778 msgstr "I<sample_regs_user> (Linux 3.7 以降)"
4779
4780 #.  commit 4018994f3d8785275ef0e7391b75c3462c029e56
4781 #. type: Plain text
4782 #: build/C/man2/perf_event_open.2:1215
4783 msgid ""
4784 "This bit mask defines the set of user CPU registers to dump on samples.  The "
4785 "layout of the register mask is architecture-specific and described in the "
4786 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4787 msgstr ""
4788
4789 #. type: TP
4790 #: build/C/man2/perf_event_open.2:1215
4791 #, no-wrap
4792 msgid "I<sample_stack_user> (since Linux 3.7)"
4793 msgstr "I<sample_stack_user> (Linux 3.7 以降)"
4794
4795 #.  commit c5ebcedb566ef17bda7b02686e0d658a7bb42ee7
4796 #. type: Plain text
4797 #: build/C/man2/perf_event_open.2:1221
4798 msgid ""
4799 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4800 "is specified."
4801 msgstr ""
4802
4803 #. type: SS
4804 #: build/C/man2/perf_event_open.2:1221
4805 #, no-wrap
4806 msgid "Reading results"
4807 msgstr ""
4808
4809 #. type: Plain text
4810 #: build/C/man2/perf_event_open.2:1231
4811 msgid ""
4812 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4813 "the events can be read from the file descriptor.  The values that are there "
4814 "are specified by the I<read_format> field in the I<attr> structure at open "
4815 "time."
4816 msgstr ""
4817
4818 #. type: Plain text
4819 #: build/C/man2/perf_event_open.2:1236
4820 msgid ""
4821 "If you attempt to read into a buffer that is not big enough to hold the data "
4822 "B<ENOSPC> is returned"
4823 msgstr ""
4824
4825 #. type: Plain text
4826 #: build/C/man2/perf_event_open.2:1238
4827 msgid "Here is the layout of the data returned by a read:"
4828 msgstr ""
4829
4830 #. type: Plain text
4831 #: build/C/man2/perf_event_open.2:1242
4832 msgid ""
4833 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4834 "at once:"
4835 msgstr ""
4836
4837 #. type: Plain text
4838 #: build/C/man2/perf_event_open.2:1254
4839 #, no-wrap
4840 msgid ""
4841 "struct read_format {\n"
4842 "    u64 nr;            /* The number of events */\n"
4843 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4844 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4845 "    struct {\n"
4846 "        u64 value;     /* The value of the event */\n"
4847 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4848 "    } values[nr];\n"
4849 "};\n"
4850 msgstr ""
4851
4852 #. type: Plain text
4853 #: build/C/man2/perf_event_open.2:1262
4854 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4855 msgstr ""
4856
4857 #. type: Plain text
4858 #: build/C/man2/perf_event_open.2:1271
4859 #, no-wrap
4860 msgid ""
4861 "struct read_format {\n"
4862 "    u64 value;         /* The value of the event */\n"
4863 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4864 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4865 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4866 "};\n"
4867 msgstr ""
4868
4869 #. type: Plain text
4870 #: build/C/man2/perf_event_open.2:1275
4871 msgid "The values read are as follows:"
4872 msgstr ""
4873
4874 #. type: TP
4875 #: build/C/man2/perf_event_open.2:1275
4876 #, no-wrap
4877 msgid "I<nr>"
4878 msgstr ""
4879
4880 #. type: Plain text
4881 #: build/C/man2/perf_event_open.2:1281
4882 msgid ""
4883 "The number of events in this file descriptor.  Only available if "
4884 "B<PERF_FORMAT_GROUP> was specified."
4885 msgstr ""
4886
4887 #. type: TP
4888 #: build/C/man2/perf_event_open.2:1281
4889 #, no-wrap
4890 msgid "I<time_enabled>, I<time_running>"
4891 msgstr ""
4892
4893 #. type: Plain text
4894 #: build/C/man2/perf_event_open.2:1293
4895 msgid ""
4896 "Total time the event was enabled and running.  Normally these are the same.  "
4897 "If more events are started, then available counter slots on the PMU, then "
4898 "multiplexing happens and events run only part of the time.  In that case, "
4899 "the I<time_enabled> and I<time running> values can be used to scale an "
4900 "estimated value for the count."
4901 msgstr ""
4902
4903 #. type: TP
4904 #: build/C/man2/perf_event_open.2:1293
4905 #, no-wrap
4906 msgid "I<value>"
4907 msgstr ""
4908
4909 #. type: Plain text
4910 #: build/C/man2/perf_event_open.2:1296
4911 msgid "An unsigned 64-bit value containing the counter result."
4912 msgstr ""
4913
4914 #. type: TP
4915 #: build/C/man2/perf_event_open.2:1296 build/C/man2/perf_event_open.2:1732
4916 #: build/C/man2/perf_event_open.2:1898
4917 #, no-wrap
4918 msgid "I<id>"
4919 msgstr ""
4920
4921 #. type: Plain text
4922 #: build/C/man2/perf_event_open.2:1302
4923 msgid ""
4924 "A globally unique value for this particular event, only present if "
4925 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4926 msgstr ""
4927
4928 #. type: SS
4929 #: build/C/man2/perf_event_open.2:1302
4930 #, no-wrap
4931 msgid "MMAP layout"
4932 msgstr ""
4933
4934 #. type: Plain text
4935 #: build/C/man2/perf_event_open.2:1312
4936 msgid ""
4937 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4938 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4939 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4940 msgstr ""
4941
4942 #. type: Plain text
4943 #: build/C/man2/perf_event_open.2:1318
4944 msgid ""
4945 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4946 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4947 "such as where the ring-buffer head is."
4948 msgstr ""
4949
4950 #. type: Plain text
4951 #: build/C/man2/perf_event_open.2:1321
4952 msgid ""
4953 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4954 "ring buffer when sampling even if you do not plan to access it."
4955 msgstr ""
4956
4957 #. type: Plain text
4958 #: build/C/man2/perf_event_open.2:1323
4959 msgid "The structure of the first metadata mmap page is as follows:"
4960 msgstr ""
4961
4962 #. type: Plain text
4963 #: build/C/man2/perf_event_open.2:1352
4964 #, no-wrap
4965 msgid ""
4966 "struct perf_event_mmap_page {\n"
4967 "    __u32 version;        /* version number of this structure */\n"
4968 "    __u32 compat_version; /* lowest version this is compat with */\n"
4969 "    __u32 lock;           /* seqlock for synchronization */\n"
4970 "    __u32 index;          /* hardware counter identifier */\n"
4971 "    __s64 offset;         /* add to hardware counter value */\n"
4972 "    __u64 time_enabled;   /* time event active */\n"
4973 "    __u64 time_running;   /* time event on CPU */\n"
4974 "    union {\n"
4975 "        __u64   capabilities;\n"
4976 "        struct {\n"
4977 "            __u64 cap_usr_time / cap_usr_rdpmc / cap_bit0 : 1,\n"
4978 "                  cap_bit0_is_deprecated : 1,\n"
4979 "                  cap_user_rdpmc         : 1,\n"
4980 "                  cap_user_time          : 1,\n"
4981 "                  cap_user_time_zero     : 1,\n"
4982 "        };\n"
4983 "    };\n"
4984 "    __u16 pmc_width;\n"
4985 "    __u16 time_shift;\n"
4986 "    __u32 time_mult;\n"
4987 "    __u64 time_offset;\n"
4988 "    __u64 __reserved[120];   /* Pad to 1k */\n"
4989 "    __u64 data_head;         /* head in the data section */\n"
4990 "    __u64 data_tail;         /* user-space written tail */\n"
4991 "}\n"
4992 msgstr ""
4993
4994 #. type: Plain text
4995 #: build/C/man2/perf_event_open.2:1358
4996 msgid ""
4997 "The following list describes the fields in the I<perf_event_mmap_page> "
4998 "structure in more detail:"
4999 msgstr ""
5000
5001 #. type: TP
5002 #: build/C/man2/perf_event_open.2:1358
5003 #, no-wrap
5004 msgid "I<version>"
5005 msgstr ""
5006
5007 #. type: Plain text
5008 #: build/C/man2/perf_event_open.2:1361
5009 msgid "Version number of this structure."
5010 msgstr ""
5011
5012 #. type: TP
5013 #: build/C/man2/perf_event_open.2:1361
5014 #, no-wrap
5015 msgid "I<compat_version>"
5016 msgstr ""
5017
5018 #. type: Plain text
5019 #: build/C/man2/perf_event_open.2:1364
5020 msgid "The lowest version this is compatible with."
5021 msgstr ""
5022
5023 #. type: TP
5024 #: build/C/man2/perf_event_open.2:1364
5025 #, no-wrap
5026 msgid "I<lock>"
5027 msgstr ""
5028
5029 #. type: Plain text
5030 #: build/C/man2/perf_event_open.2:1367
5031 msgid "A seqlock for synchronization."
5032 msgstr ""
5033
5034 #. type: TP
5035 #: build/C/man2/perf_event_open.2:1367
5036 #, no-wrap
5037 msgid "I<index>"
5038 msgstr ""
5039
5040 #. type: Plain text
5041 #: build/C/man2/perf_event_open.2:1370
5042 msgid "A unique hardware counter identifier."
5043 msgstr ""
5044
5045 #. type: TP
5046 #: build/C/man2/perf_event_open.2:1370
5047 #, no-wrap
5048 msgid "I<offset>"
5049 msgstr ""
5050
5051 #. type: Plain text
5052 #: build/C/man2/perf_event_open.2:1375
5053 msgid ""
5054 "When using rdpmc for reads this offset value must be added to the one "
5055 "returned by rdpmc to get the current total event count."
5056 msgstr ""
5057
5058 #. type: TP
5059 #: build/C/man2/perf_event_open.2:1375
5060 #, no-wrap
5061 msgid "I<time_enabled>"
5062 msgstr ""
5063
5064 #. type: Plain text
5065 #: build/C/man2/perf_event_open.2:1378
5066 msgid "Time the event was active."
5067 msgstr ""
5068
5069 #. type: TP
5070 #: build/C/man2/perf_event_open.2:1378
5071 #, no-wrap
5072 msgid "I<time_running>"
5073 msgstr ""
5074
5075 #. type: Plain text
5076 #: build/C/man2/perf_event_open.2:1381
5077 msgid "Time the event was running."
5078 msgstr ""
5079
5080 #. type: TP
5081 #: build/C/man2/perf_event_open.2:1381
5082 #, no-wrap
5083 msgid "I<cap_usr_time> / I<cap_usr_rdpmc> / I<cap_bit0> (since Linux 3.4)"
5084 msgstr ""
5085
5086 #.  commit c7206205d00ab375839bd6c7ddb247d600693c09
5087 #. type: Plain text
5088 #: build/C/man2/perf_event_open.2:1395
5089 msgid ""
5090 "There was a bug in the definition of I<cap_usr_time> and I<cap_usr_rdpmc> "
5091 "from Linux 3.4 until Linux 3.11.  Both bits were defined to point to the "
5092 "same location, so it was impossible to know if I<cap_usr_time> or "
5093 "I<cap_usr_rdpmc> were actually set."
5094 msgstr ""
5095
5096 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5097 #. type: Plain text
5098 #: build/C/man2/perf_event_open.2:1404
5099 msgid ""
5100 "Starting with Linux 3.12, these are renamed to I<cap_bit0> and you should "
5101 "use the I<cap_user_time> and I<cap_user_rdpmc> fields instead."
5102 msgstr ""
5103
5104 #. type: TP
5105 #: build/C/man2/perf_event_open.2:1405
5106 #, no-wrap
5107 msgid "I<cap_bit0_is_deprecated> (since Linux 3.12)"
5108 msgstr "I<cap_bit0_is_deprecated> (Linux 3.12 以降)"
5109
5110 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5111 #. type: Plain text
5112 #: build/C/man2/perf_event_open.2:1414
5113 msgid ""
5114 "If set, this bit indicates that the kernel supports the properly separated "
5115 "I<cap_user_time> and I<cap_user_rdpmc> bits."
5116 msgstr ""
5117
5118 #. type: Plain text
5119 #: build/C/man2/perf_event_open.2:1421
5120 msgid ""
5121 "If not-set, it indicates an older kernel where I<cap_usr_time> and "
5122 "I<cap_usr_rdpmc> map to the same bit and thus both features should be used "
5123 "with caution."
5124 msgstr ""
5125
5126 #. type: TP
5127 #: build/C/man2/perf_event_open.2:1422
5128 #, no-wrap
5129 msgid "I<cap_user_rdpmc> (since Linux 3.12)"
5130 msgstr "I<cap_user_rdpmc> (Linux 3.12 以降)"
5131
5132 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5133 #. type: Plain text
5134 #: build/C/man2/perf_event_open.2:1428
5135 msgid ""
5136 "If the hardware supports user-space read of performance counters without "
5137 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
5138 "can be used to do a read:"
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man2/perf_event_open.2:1434
5143 #, no-wrap
5144 msgid ""
5145 "u32 seq, time_mult, time_shift, idx, width;\n"
5146 "u64 count, enabled, running;\n"
5147 "u64 cyc, time_offset;\n"
5148 msgstr ""
5149 "u32 seq, time_mult, time_shift, idx, width;\n"
5150 "u64 count, enabled, running;\n"
5151 "u64 cyc, time_offset;\n"
5152
5153 #. type: Plain text
5154 #: build/C/man2/perf_event_open.2:1440
5155 #, no-wrap
5156 msgid ""
5157 "do {\n"
5158 "    seq = pc-E<gt>lock;\n"
5159 "    barrier();\n"
5160 "    enabled = pc-E<gt>time_enabled;\n"
5161 "    running = pc-E<gt>time_running;\n"
5162 msgstr ""
5163 "do {\n"
5164 "    seq = pc-E<gt>lock;\n"
5165 "    barrier();\n"
5166 "    enabled = pc-E<gt>time_enabled;\n"
5167 "    running = pc-E<gt>time_running;\n"
5168
5169 #. type: Plain text
5170 #: build/C/man2/perf_event_open.2:1447
5171 #, no-wrap
5172 msgid ""
5173 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
5174 "        cyc = rdtsc();\n"
5175 "        time_offset = pc-E<gt>time_offset;\n"
5176 "        time_mult   = pc-E<gt>time_mult;\n"
5177 "        time_shift  = pc-E<gt>time_shift;\n"
5178 "    }\n"
5179 msgstr ""
5180 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
5181 "        cyc = rdtsc();\n"
5182 "        time_offset = pc-E<gt>time_offset;\n"
5183 "        time_mult   = pc-E<gt>time_mult;\n"
5184 "        time_shift  = pc-E<gt>time_shift;\n"
5185 "    }\n"
5186
5187 #. type: Plain text
5188 #: build/C/man2/perf_event_open.2:1450
5189 #, no-wrap
5190 msgid ""
5191 "    idx = pc-E<gt>index;\n"
5192 "    count = pc-E<gt>offset;\n"
5193 msgstr ""
5194 "    idx = pc-E<gt>index;\n"
5195 "    count = pc-E<gt>offset;\n"
5196
5197 #. type: Plain text
5198 #: build/C/man2/perf_event_open.2:1455
5199 #, no-wrap
5200 msgid ""
5201 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
5202 "        width = pc-E<gt>pmc_width;\n"
5203 "        count += rdpmc(idx - 1);\n"
5204 "    }\n"
5205 msgstr ""
5206 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
5207 "        width = pc-E<gt>pmc_width;\n"
5208 "        count += rdpmc(idx - 1);\n"
5209 "    }\n"
5210
5211 #. type: Plain text
5212 #: build/C/man2/perf_event_open.2:1458
5213 #, no-wrap
5214 msgid ""
5215 "    barrier();\n"
5216 "} while (pc-E<gt>lock != seq);\n"
5217 msgstr ""
5218 "    barrier();\n"
5219 "} while (pc-E<gt>lock != seq);\n"
5220
5221 #. type: TP
5222 #: build/C/man2/perf_event_open.2:1460
5223 #, no-wrap
5224 msgid "I<cap_user_time> (since Linux 3.12)"
5225 msgstr "I<cap_user_time> (Linux 3.12 以降)"
5226
5227 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5228 #. type: Plain text
5229 #: build/C/man2/perf_event_open.2:1465
5230 msgid ""
5231 "This bit indicates the hardware has a constant, nonstop timestamp counter "
5232 "(TSC on x86)."
5233 msgstr ""
5234
5235 #. type: TP
5236 #: build/C/man2/perf_event_open.2:1465
5237 #, no-wrap
5238 msgid "I<cap_user_time_zero> (since Linux 3.12)"
5239 msgstr "I<cap_user_time_zero> (Linux 3.12 以降)"
5240
5241 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5242 #. type: Plain text
5243 #: build/C/man2/perf_event_open.2:1472
5244 msgid ""
5245 "Indicates the presence of I<time_zero> which allows mapping timestamp values "
5246 "to the hardware clock."
5247 msgstr ""
5248
5249 #. type: TP
5250 #: build/C/man2/perf_event_open.2:1472
5251 #, no-wrap
5252 msgid "I<pmc_width>"
5253 msgstr "I<pmc_width>"
5254
5255 #. type: Plain text
5256 #: build/C/man2/perf_event_open.2:1479
5257 msgid ""
5258 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
5259 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
5260 "the result like:"
5261 msgstr ""
5262
5263 #. type: Plain text
5264 #: build/C/man2/perf_event_open.2:1485
5265 #, no-wrap
5266 msgid ""
5267 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
5268 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
5269 "count += pmc;\n"
5270 msgstr ""
5271 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
5272 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
5273 "count += pmc;\n"
5274
5275 #. type: TP
5276 #: build/C/man2/perf_event_open.2:1487
5277 #, no-wrap
5278 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
5279 msgstr "I<time_shift>, I<time_mult>, I<time_offset>"
5280
5281 #. type: Plain text
5282 #: build/C/man2/perf_event_open.2:1494
5283 msgid ""
5284 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
5285 "time_enabled (in nanoseconds) using rdtsc or similar."
5286 msgstr ""
5287
5288 #. type: Plain text
5289 #: build/C/man2/perf_event_open.2:1502
5290 #, no-wrap
5291 msgid ""
5292 "    u64 quot, rem;\n"
5293 "    u64 delta;\n"
5294 "    quot = (cyc E<gt>E<gt> time_shift);\n"
5295 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5296 "    delta = time_offset + quot * time_mult +\n"
5297 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5298 msgstr ""
5299 "    u64 quot, rem;\n"
5300 "    u64 delta;\n"
5301 "    quot = (cyc E<gt>E<gt> time_shift);\n"
5302 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5303 "    delta = time_offset + quot * time_mult +\n"
5304 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5305
5306 #. type: Plain text
5307 #: build/C/man2/perf_event_open.2:1514
5308 msgid ""
5309 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
5310 "the seqcount loop described above.  This delta can then be added to enabled "
5311 "and possible running (if idx), improving the scaling:"
5312 msgstr ""
5313
5314 #. type: Plain text
5315 #: build/C/man2/perf_event_open.2:1522
5316 #, no-wrap
5317 msgid ""
5318 "    enabled += delta;\n"
5319 "    if (idx)\n"
5320 "        running += delta;\n"
5321 "    quot = count / running;\n"
5322 "    rem  = count % running;\n"
5323 "    count = quot * enabled + (rem * enabled) / running;\n"
5324 msgstr ""
5325 "    enabled += delta;\n"
5326 "    if (idx)\n"
5327 "        running += delta;\n"
5328 "    quot = count / running;\n"
5329 "    rem  = count % running;\n"
5330 "    count = quot * enabled + (rem * enabled) / running;\n"
5331
5332 #. type: TP
5333 #: build/C/man2/perf_event_open.2:1523
5334 #, no-wrap
5335 msgid "I<time_zero> (since Linux 3.12)"
5336 msgstr "I<time_zero> (Linux 3.12 以降)"
5337
5338 #.  commit fa7315871046b9a4c48627905691dbde57e51033
5339 #. type: Plain text
5340 #: build/C/man2/perf_event_open.2:1532
5341 msgid ""
5342 "If I<cap_usr_time_zero> is set, then the hardware clock (the TSC timestamp "
5343 "counter on x86)  can be calculated from the I<time_zero>, I<time_mult>, and "
5344 "I<time_shift> values:"
5345 msgstr ""
5346
5347 #. type: Plain text
5348 #: build/C/man2/perf_event_open.2:1538
5349 #, no-wrap
5350 msgid ""
5351 "    time = timestamp - time_zero;\n"
5352 "    quot = time / time_mult;\n"
5353 "    rem  = time % time_mult;\n"
5354 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5355 msgstr ""
5356 "    time = timestamp - time_zero;\n"
5357 "    quot = time / time_mult;\n"
5358 "    rem  = time % time_mult;\n"
5359 "    cyc = (quot E<lt>E<lt> time_shift) + (rem E<lt>E<lt> time_shift) / time_mult;\n"
5360
5361 #. type: Plain text
5362 #: build/C/man2/perf_event_open.2:1541
5363 msgid "And vice versa:"
5364 msgstr ""
5365
5366 #. type: Plain text
5367 #: build/C/man2/perf_event_open.2:1547
5368 #, no-wrap
5369 msgid ""
5370 "    quot = cyc E<gt>E<gt> time_shift;\n"
5371 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5372 "    timestamp = time_zero + quot * time_mult +\n"
5373 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5374 msgstr ""
5375 "    quot = cyc E<gt>E<gt> time_shift;\n"
5376 "    rem  = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
5377 "    timestamp = time_zero + quot * time_mult +\n"
5378 "        ((rem * time_mult) E<gt>E<gt> time_shift);\n"
5379
5380 #. type: TP
5381 #: build/C/man2/perf_event_open.2:1548
5382 #, no-wrap
5383 msgid "I<data_head>"
5384 msgstr "I<data_head>"
5385
5386 #. type: Plain text
5387 #: build/C/man2/perf_event_open.2:1554
5388 msgid ""
5389 "This points to the head of the data section.  The value continuously "
5390 "increases, it does not wrap.  The value needs to be manually wrapped by the "
5391 "size of the mmap buffer before accessing the samples."
5392 msgstr ""
5393
5394 #. type: Plain text
5395 #: build/C/man2/perf_event_open.2:1559
5396 msgid ""
5397 "On SMP-capable platforms, after reading the I<data_head> value, user space "
5398 "should issue an rmb()."
5399 msgstr ""
5400
5401 #. type: TP
5402 #: build/C/man2/perf_event_open.2:1559
5403 #, no-wrap
5404 msgid "I<data_tail>"
5405 msgstr "I<data_tail>"
5406
5407 #. type: Plain text
5408 #: build/C/man2/perf_event_open.2:1567
5409 msgid ""
5410 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
5411 "by user space to reflect the last read data.  In this case, the kernel will "
5412 "not overwrite unread data."
5413 msgstr ""
5414
5415 #. type: Plain text
5416 #: build/C/man2/perf_event_open.2:1569
5417 msgid "The following 2^n ring-buffer pages have the layout described below."
5418 msgstr ""
5419
5420 #. type: Plain text
5421 #: build/C/man2/perf_event_open.2:1583
5422 msgid ""
5423 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
5424 "the sample_type selected fields related to where/when (identity)  an event "
5425 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
5426 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
5427 "I<perf_event_header> and the fields already present for the existing fields, "
5428 "that is, at the end of the payload.  That way a newer perf.data file will be "
5429 "supported by older perf tools, with these new optional fields being ignored."
5430 msgstr ""
5431
5432 #. type: Plain text
5433 #: build/C/man2/perf_event_open.2:1585
5434 msgid "The mmap values start with a header:"
5435 msgstr ""
5436
5437 #. type: Plain text
5438 #: build/C/man2/perf_event_open.2:1593
5439 #, no-wrap
5440 msgid ""
5441 "struct perf_event_header {\n"
5442 "    __u32   type;\n"
5443 "    __u16   misc;\n"
5444 "    __u16   size;\n"
5445 "};\n"
5446 msgstr ""
5447 "struct perf_event_header {\n"
5448 "    __u32   type;\n"
5449 "    __u16   misc;\n"
5450 "    __u16   size;\n"
5451 "};\n"
5452
5453 #. type: Plain text
5454 #: build/C/man2/perf_event_open.2:1601
5455 msgid ""
5456 "Below, we describe the I<perf_event_header> fields in more detail.  For ease "
5457 "of reading, the fields with shorter descriptions are presented first."
5458 msgstr ""
5459
5460 #. type: Plain text
5461 #: build/C/man2/perf_event_open.2:1604
5462 msgid "This indicates the size of the record."
5463 msgstr ""
5464
5465 #. type: TP
5466 #: build/C/man2/perf_event_open.2:1604
5467 #, no-wrap
5468 msgid "I<misc>"
5469 msgstr "I<misc>"
5470
5471 #. type: Plain text
5472 #: build/C/man2/perf_event_open.2:1609
5473 msgid "The I<misc> field contains additional information about the sample."
5474 msgstr ""
5475
5476 #. type: Plain text
5477 #: build/C/man2/perf_event_open.2:1614
5478 msgid ""
5479 "The CPU mode can be determined from this value by masking with "
5480 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5481 "these are not bit masks, only one can be set at a time):"
5482 msgstr ""
5483
5484 #. type: TP
5485 #: build/C/man2/perf_event_open.2:1615
5486 #, no-wrap
5487 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5488 msgstr "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5489
5490 #. type: Plain text
5491 #: build/C/man2/perf_event_open.2:1618
5492 msgid "Unknown CPU mode."
5493 msgstr ""
5494
5495 #. type: TP
5496 #: build/C/man2/perf_event_open.2:1618
5497 #, no-wrap
5498 msgid "B<PERF_RECORD_MISC_KERNEL>"
5499 msgstr "B<PERF_RECORD_MISC_KERNEL>"
5500
5501 #. type: Plain text
5502 #: build/C/man2/perf_event_open.2:1621
5503 msgid "Sample happened in the kernel."
5504 msgstr ""
5505
5506 #. type: TP
5507 #: build/C/man2/perf_event_open.2:1621
5508 #, no-wrap
5509 msgid "B<PERF_RECORD_MISC_USER>"
5510 msgstr "B<PERF_RECORD_MISC_USER>"
5511
5512 #. type: Plain text
5513 #: build/C/man2/perf_event_open.2:1624
5514 msgid "Sample happened in user code."
5515 msgstr ""
5516
5517 #. type: TP
5518 #: build/C/man2/perf_event_open.2:1624
5519 #, no-wrap
5520 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5521 msgstr "B<PERF_RECORD_MISC_HYPERVISOR>"
5522
5523 #. type: Plain text
5524 #: build/C/man2/perf_event_open.2:1627
5525 msgid "Sample happened in the hypervisor."
5526 msgstr ""
5527
5528 #. type: TP
5529 #: build/C/man2/perf_event_open.2:1627
5530 #, fuzzy, no-wrap
5531 #| msgid "B<PERF_RECORD_MISC_GUEST_KERNEL> (since Linux2.6.35)"
5532 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL> (since Linux 2.6.35)"
5533 msgstr "B<PERF_RECORD_MISC_GUEST_KERNEL> (Linux 2.6.35 以降)"
5534
5535 #.  commit 39447b386c846bbf1c56f6403c5282837486200f
5536 #. type: Plain text
5537 #: build/C/man2/perf_event_open.2:1631
5538 msgid "Sample happened in the guest kernel."
5539 msgstr ""
5540
5541 #. type: TP
5542 #: build/C/man2/perf_event_open.2:1631
5543 #, fuzzy, no-wrap
5544 #| msgid "B<PERF_RECORD_MISC_GUEST_USER  (since Linux2.6.35)>"
5545 msgid "B<PERF_RECORD_MISC_GUEST_USER  (since Linux 2.6.35)>"
5546 msgstr "B<PERF_RECORD_MISC_GUEST_USER  (Linux 2.6.35 以降)>"
5547
5548 #.  commit 39447b386c846bbf1c56f6403c5282837486200f
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1635
5551 msgid "Sample happened in guest user code."
5552 msgstr ""
5553
5554 #. type: Plain text
5555 #: build/C/man2/perf_event_open.2:1639
5556 msgid "In addition, one of the following bits can be set:"
5557 msgstr ""
5558
5559 #. type: TP
5560 #: build/C/man2/perf_event_open.2:1639
5561 #, no-wrap
5562 msgid "B<PERF_RECORD_MISC_MMAP_DATA> (since Linux 3.10)"
5563 msgstr "B<PERF_RECORD_MISC_MMAP_DATA> (Linux 3.10 以降)"
5564
5565 #.  commit 2fe85427e3bf65d791700d065132772fc26e4d75
5566 #. type: Plain text
5567 #: build/C/man2/perf_event_open.2:1644
5568 msgid ""
5569 "This is set when the mapping is not executable; otherwise the mapping is "
5570 "executable."
5571 msgstr ""
5572
5573 #. type: TP
5574 #: build/C/man2/perf_event_open.2:1644
5575 #, no-wrap
5576 msgid "B<PERF_RECORD_MISC_COMM_EXEC> (since Linux 3.16)"
5577 msgstr "B<PERF_RECORD_MISC_COMM_EXEC> (Linux 3.16 以降)"
5578
5579 #.  commit 82b897782d10fcc4930c9d4a15b175348fdd2871
5580 #. type: Plain text
5581 #: build/C/man2/perf_event_open.2:1656
5582 msgid ""
5583 "This is set for a B<PERF_RECORD_COMM> record on kernels more recent than "
5584 "Linux 3.16 if a process name change was caused by an B<exec>(2)  system "
5585 "call.  It is an alias for B<PERF_RECORD_MISC_MMAP_DATA> since the two values "
5586 "would not be set in the same record."
5587 msgstr ""
5588
5589 #. type: TP
5590 #: build/C/man2/perf_event_open.2:1656
5591 #, no-wrap
5592 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5593 msgstr "B<PERF_RECORD_MISC_EXACT_IP>"
5594
5595 #. type: Plain text
5596 #: build/C/man2/perf_event_open.2:1664
5597 msgid ""
5598 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5599 "instruction that triggered the event.  See also I<perf_event_attr."
5600 "precise_ip>."
5601 msgstr ""
5602
5603 #. type: TP
5604 #: build/C/man2/perf_event_open.2:1664
5605 #, no-wrap
5606 msgid "B<PERF_RECORD_MISC_EXT_RESERVED> (since Linux 2.6.35)"
5607 msgstr "B<PERF_RECORD_MISC_EXT_RESERVED> (Linux 2.6.35 以降)"
5608
5609 #.  commit 1676b8a077c352085d52578fb4f29350b58b6e74
5610 #. type: Plain text
5611 #: build/C/man2/perf_event_open.2:1668
5612 msgid "This indicates there is extended data available (currently not used)."
5613 msgstr ""
5614
5615 #. type: Plain text
5616 #: build/C/man2/perf_event_open.2:1678
5617 msgid ""
5618 "The I<type> value is one of the below.  The values in the corresponding "
5619 "record (that follows the header)  depend on the I<type> selected as shown."
5620 msgstr ""
5621
5622 #. type: TP
5623 #: build/C/man2/perf_event_open.2:1680
5624 #, no-wrap
5625 msgid "B<PERF_RECORD_MMAP>"
5626 msgstr "B<PERF_RECORD_MMAP>"
5627
5628 #. type: Plain text
5629 #: build/C/man2/perf_event_open.2:1687
5630 msgid ""
5631 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
5632 "user-space IPs to code.  They have the following structure:"
5633 msgstr ""
5634
5635 #. type: Plain text
5636 #: build/C/man2/perf_event_open.2:1698
5637 #, no-wrap
5638 msgid ""
5639 "struct {\n"
5640 "    struct perf_event_header header;\n"
5641 "    u32    pid, tid;\n"
5642 "    u64    addr;\n"
5643 "    u64    len;\n"
5644 "    u64    pgoff;\n"
5645 "    char   filename[];\n"
5646 "};\n"
5647 msgstr ""
5648 "struct {\n"
5649 "    struct perf_event_header header;\n"
5650 "    u32    pid, tid;\n"
5651 "    u64    addr;\n"
5652 "    u64    len;\n"
5653 "    u64    pgoff;\n"
5654 "    char   filename[];\n"
5655 "};\n"
5656
5657 #. type: TP
5658 #: build/C/man2/perf_event_open.2:1701 build/C/man2/perf_event_open.2:1755
5659 #: build/C/man2/perf_event_open.2:2276
5660 #, no-wrap
5661 msgid "I<pid>"
5662 msgstr "I<pid>"
5663
5664 #. type: Plain text
5665 #: build/C/man2/perf_event_open.2:1704 build/C/man2/perf_event_open.2:1758
5666 #: build/C/man2/perf_event_open.2:2279
5667 msgid "is the process ID."
5668 msgstr ""
5669
5670 #. type: TP
5671 #: build/C/man2/perf_event_open.2:1704 build/C/man2/perf_event_open.2:1758
5672 #: build/C/man2/perf_event_open.2:2279
5673 #, no-wrap
5674 msgid "I<tid>"
5675 msgstr "I<tid>"
5676
5677 #. type: Plain text
5678 #: build/C/man2/perf_event_open.2:1707 build/C/man2/perf_event_open.2:1761
5679 #: build/C/man2/perf_event_open.2:2282
5680 msgid "is the thread ID."
5681 msgstr ""
5682
5683 #. type: TP
5684 #: build/C/man2/perf_event_open.2:1707 build/C/man2/perf_event_open.2:1891
5685 #: build/C/man2/perf_event_open.2:2282
5686 #, no-wrap
5687 msgid "I<addr>"
5688 msgstr "I<addr>"
5689
5690 #. type: Plain text
5691 #: build/C/man2/perf_event_open.2:1716
5692 msgid ""
5693 "is the address of the allocated memory.  I<len> is the length of the "
5694 "allocated memory.  I<pgoff> is the page offset of the allocated memory.  "
5695 "I<filename> is a string describing the backing of the allocated memory."
5696 msgstr ""
5697
5698 #. type: TP
5699 #: build/C/man2/perf_event_open.2:1717
5700 #, no-wrap
5701 msgid "B<PERF_RECORD_LOST>"
5702 msgstr "B<PERF_RECORD_LOST>"
5703
5704 #. type: Plain text
5705 #: build/C/man2/perf_event_open.2:1720
5706 msgid "This record indicates when events are lost."
5707 msgstr ""
5708
5709 #. type: Plain text
5710 #: build/C/man2/perf_event_open.2:1729
5711 #, no-wrap
5712 msgid ""
5713 "struct {\n"
5714 "    struct perf_event_header header;\n"
5715 "    u64 id;\n"
5716 "    u64 lost;\n"
5717 "    struct sample_id sample_id;\n"
5718 "};\n"
5719 msgstr ""
5720 "struct {\n"
5721 "    struct perf_event_header header;\n"
5722 "    u64 id;\n"
5723 "    u64 lost;\n"
5724 "    struct sample_id sample_id;\n"
5725 "};\n"
5726
5727 #. type: Plain text
5728 #: build/C/man2/perf_event_open.2:1735
5729 msgid "is the unique event ID for the samples that were lost."
5730 msgstr ""
5731
5732 #. type: TP
5733 #: build/C/man2/perf_event_open.2:1735
5734 #, no-wrap
5735 msgid "I<lost>"
5736 msgstr "I<lost>"
5737
5738 #. type: Plain text
5739 #: build/C/man2/perf_event_open.2:1738
5740 msgid "is the number of events that were lost."
5741 msgstr ""
5742
5743 #. type: TP
5744 #: build/C/man2/perf_event_open.2:1739
5745 #, no-wrap
5746 msgid "B<PERF_RECORD_COMM>"
5747 msgstr "B<PERF_RECORD_COMM>"
5748
5749 #. type: Plain text
5750 #: build/C/man2/perf_event_open.2:1742
5751 msgid "This record indicates a change in the process name."
5752 msgstr ""
5753
5754 #. type: Plain text
5755 #: build/C/man2/perf_event_open.2:1752
5756 #, no-wrap
5757 msgid ""
5758 "struct {\n"
5759 "    struct perf_event_header header;\n"
5760 "    u32 pid;\n"
5761 "    u32 tid;\n"
5762 "    char comm[];\n"
5763 "    struct sample_id sample_id;\n"
5764 "};\n"
5765 msgstr ""
5766 "struct {\n"
5767 "    struct perf_event_header header;\n"
5768 "    u32 pid;\n"
5769 "    u32 tid;\n"
5770 "    char comm[];\n"
5771 "    struct sample_id sample_id;\n"
5772 "};\n"
5773
5774 #. type: Plain text
5775 #: build/C/man2/perf_event_open.2:1764
5776 msgid "is a string containing the new name of the process."
5777 msgstr ""
5778
5779 #. type: TP
5780 #: build/C/man2/perf_event_open.2:1765
5781 #, no-wrap
5782 msgid "B<PERF_RECORD_EXIT>"
5783 msgstr "B<PERF_RECORD_EXIT>"
5784
5785 #. type: Plain text
5786 #: build/C/man2/perf_event_open.2:1768
5787 msgid "This record indicates a process exit event."
5788 msgstr ""
5789
5790 #. type: Plain text
5791 #: build/C/man2/perf_event_open.2:1778 build/C/man2/perf_event_open.2:1808
5792 #, no-wrap
5793 msgid ""
5794 "struct {\n"
5795 "    struct perf_event_header header;\n"
5796 "    u32 pid, ppid;\n"
5797 "    u32 tid, ptid;\n"
5798 "    u64 time;\n"
5799 "    struct sample_id sample_id;\n"
5800 "};\n"
5801 msgstr ""
5802 "struct {\n"
5803 "    struct perf_event_header header;\n"
5804 "    u32 pid, ppid;\n"
5805 "    u32 tid, ptid;\n"
5806 "    u64 time;\n"
5807 "    struct sample_id sample_id;\n"
5808 "};\n"
5809
5810 #. type: TP
5811 #: build/C/man2/perf_event_open.2:1780
5812 #, no-wrap
5813 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5814 msgstr "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
5815
5816 #. type: Plain text
5817 #: build/C/man2/perf_event_open.2:1783
5818 msgid "This record indicates a throttle/unthrottle event."
5819 msgstr ""
5820
5821 #. type: Plain text
5822 #: build/C/man2/perf_event_open.2:1793
5823 #, no-wrap
5824 msgid ""
5825 "struct {\n"
5826 "    struct perf_event_header header;\n"
5827 "    u64 time;\n"
5828 "    u64 id;\n"
5829 "    u64 stream_id;\n"
5830 "    struct sample_id sample_id;\n"
5831 "};\n"
5832 msgstr ""
5833 "struct {\n"
5834 "    struct perf_event_header header;\n"
5835 "    u64 time;\n"
5836 "    u64 id;\n"
5837 "    u64 stream_id;\n"
5838 "    struct sample_id sample_id;\n"
5839 "};\n"
5840
5841 #. type: TP
5842 #: build/C/man2/perf_event_open.2:1795
5843 #, no-wrap
5844 msgid "B<PERF_RECORD_FORK>"
5845 msgstr "B<PERF_RECORD_FORK>"
5846
5847 #. type: Plain text
5848 #: build/C/man2/perf_event_open.2:1798
5849 msgid "This record indicates a fork event."
5850 msgstr ""
5851
5852 #. type: TP
5853 #: build/C/man2/perf_event_open.2:1810
5854 #, no-wrap
5855 msgid "B<PERF_RECORD_READ>"
5856 msgstr "B<PERF_RECORD_READ>"
5857
5858 #. type: Plain text
5859 #: build/C/man2/perf_event_open.2:1813
5860 msgid "This record indicates a read event."
5861 msgstr ""
5862
5863 #. type: Plain text
5864 #: build/C/man2/perf_event_open.2:1822
5865 #, no-wrap
5866 msgid ""
5867 "struct {\n"
5868 "    struct perf_event_header header;\n"
5869 "    u32 pid, tid;\n"
5870 "    struct read_format values;\n"
5871 "    struct sample_id sample_id;\n"
5872 "};\n"
5873 msgstr ""
5874 "struct {\n"
5875 "    struct perf_event_header header;\n"
5876 "    u32 pid, tid;\n"
5877 "    struct read_format values;\n"
5878 "    struct sample_id sample_id;\n"
5879 "};\n"
5880
5881 #. type: TP
5882 #: build/C/man2/perf_event_open.2:1824
5883 #, no-wrap
5884 msgid "B<PERF_RECORD_SAMPLE>"
5885 msgstr "B<PERF_RECORD_SAMPLE>"
5886
5887 #. type: Plain text
5888 #: build/C/man2/perf_event_open.2:1827
5889 msgid "This record indicates a sample."
5890 msgstr ""
5891
5892 #. type: Plain text
5893 #: build/C/man2/perf_event_open.2:1859
5894 #, no-wrap
5895 msgid ""
5896 "struct {\n"
5897 "    struct perf_event_header header;\n"
5898 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5899 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5900 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5901 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5902 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5903 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5904 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5905 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5906 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5907 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5908 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5909 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5910 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5911 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5912 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5913 "    struct perf_branch_entry lbr[bnr];\n"
5914 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5915 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5916 "    u64   regs[weight(mask)];\n"
5917 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5918 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5919 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5920 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5921 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5922 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5923 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5924 "};\n"
5925 msgstr ""
5926 "struct {\n"
5927 "    struct perf_event_header header;\n"
5928 "    u64   sample_id;  /* if PERF_SAMPLE_IDENTIFIER */\n"
5929 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
5930 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
5931 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
5932 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
5933 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
5934 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
5935 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
5936 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
5937 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
5938 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
5939 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
5940 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
5941 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
5942 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
5943 "    struct perf_branch_entry lbr[bnr];\n"
5944 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
5945 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
5946 "    u64   regs[weight(mask)];\n"
5947 "                      /* if PERF_SAMPLE_REGS_USER */\n"
5948 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
5949 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
5950 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
5951 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
5952 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
5953 "    u64   transaction;/* if PERF_SAMPLE_TRANSACTION */\n"
5954 "};\n"
5955
5956 #. type: TP
5957 #: build/C/man2/perf_event_open.2:1861
5958 #, no-wrap
5959 msgid "I<sample_id>"
5960 msgstr "I<sample_id>"
5961
5962 #. type: Plain text
5963 #: build/C/man2/perf_event_open.2:1871
5964 msgid ""
5965 "If B<PERF_SAMPLE_IDENTIFIER> is enabled, a 64-bit unique ID is included.  "
5966 "This is a duplication of the B<PERF_SAMPLE_ID> I<id> value, but included at "
5967 "the beginning of the sample so parsers can easily obtain the value."
5968 msgstr ""
5969
5970 #. type: TP
5971 #: build/C/man2/perf_event_open.2:1871
5972 #, no-wrap
5973 msgid "I<ip>"
5974 msgstr "I<ip>"
5975
5976 #. type: Plain text
5977 #: build/C/man2/perf_event_open.2:1877
5978 msgid ""
5979 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
5980 "included."
5981 msgstr ""
5982
5983 #. type: TP
5984 #: build/C/man2/perf_event_open.2:1877
5985 #, no-wrap
5986 msgid "I<pid>, I<tid>"
5987 msgstr "I<pid>, I<tid>"
5988
5989 #. type: Plain text
5990 #: build/C/man2/perf_event_open.2:1883
5991 msgid ""
5992 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
5993 "ID are included."
5994 msgstr ""
5995
5996 #. type: TP
5997 #: build/C/man2/perf_event_open.2:1883
5998 #, no-wrap
5999 msgid "I<time>"
6000 msgstr "I<time>"
6001
6002 #. type: Plain text
6003 #: build/C/man2/perf_event_open.2:1891
6004 msgid ""
6005 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
6006 "This is obtained via local_clock() which is a hardware timestamp if "
6007 "available and the jiffies value if not."
6008 msgstr ""
6009
6010 #. type: Plain text
6011 #: build/C/man2/perf_event_open.2:1898
6012 msgid ""
6013 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
6014 "is usually the address of a tracepoint, breakpoint, or software event; "
6015 "otherwise the value is 0."
6016 msgstr ""
6017
6018 #. type: Plain text
6019 #: build/C/man2/perf_event_open.2:1906
6020 msgid ""
6021 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
6022 "event is a member of an event group, the group leader ID is returned.  This "
6023 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
6024 msgstr ""
6025
6026 #. type: TP
6027 #: build/C/man2/perf_event_open.2:1906
6028 #, no-wrap
6029 msgid "I<stream_id>"
6030 msgstr "I<stream_id>"
6031
6032 #. type: Plain text
6033 #: build/C/man2/perf_event_open.2:1916
6034 msgid ""
6035 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
6036 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
6037 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
6038 msgstr ""
6039
6040 #. type: TP
6041 #: build/C/man2/perf_event_open.2:1916
6042 #, no-wrap
6043 msgid "I<cpu>, I<res>"
6044 msgstr "I<cpu>, I<res>"
6045
6046 #. type: Plain text
6047 #: build/C/man2/perf_event_open.2:1923
6048 msgid ""
6049 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
6050 "CPU was being used, in addition to a reserved (unused)  32-bit value."
6051 msgstr ""
6052
6053 #. type: TP
6054 #: build/C/man2/perf_event_open.2:1923
6055 #, no-wrap
6056 msgid "I<period>"
6057 msgstr "I<period>"
6058
6059 #. type: Plain text
6060 #: build/C/man2/perf_event_open.2:1929
6061 msgid ""
6062 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
6063 "sampling period is written."
6064 msgstr ""
6065
6066 #. type: TP
6067 #: build/C/man2/perf_event_open.2:1929
6068 #, no-wrap
6069 msgid "I<v>"
6070 msgstr "I<v>"
6071
6072 #. type: Plain text
6073 #: build/C/man2/perf_event_open.2:1940
6074 msgid ""
6075 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
6076 "included which has values for all events in the event group.  The values "
6077 "included depend on the I<read_format> value used at B<perf_event_open>()  "
6078 "time."
6079 msgstr ""
6080
6081 #. type: TP
6082 #: build/C/man2/perf_event_open.2:1940
6083 #, no-wrap
6084 msgid "I<nr>, I<ips[nr]>"
6085 msgstr "I<nr>, I<ips[nr]>"
6086
6087 #. type: Plain text
6088 #: build/C/man2/perf_event_open.2:1948
6089 msgid ""
6090 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
6091 "which indicates how many following 64-bit instruction pointers will follow.  "
6092 "This is the current callchain."
6093 msgstr ""
6094
6095 #. type: TP
6096 #: build/C/man2/perf_event_open.2:1948
6097 #, no-wrap
6098 msgid "I<size>, I<data[size]>"
6099 msgstr "I<size>, I<data[size]>"
6100
6101 #. type: Plain text
6102 #: build/C/man2/perf_event_open.2:1955
6103 msgid ""
6104 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
6105 "included followed by an array of 8-bit values of length size.  The values "
6106 "are padded with 0 to have 64-bit alignment."
6107 msgstr ""
6108
6109 #. type: Plain text
6110 #: build/C/man2/perf_event_open.2:1960
6111 msgid ""
6112 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
6113 "make any promises with respect to the stability of its content, it may vary "
6114 "depending on event, hardware, and kernel version."
6115 msgstr ""
6116
6117 #. type: TP
6118 #: build/C/man2/perf_event_open.2:1960
6119 #, no-wrap
6120 msgid "I<bnr>, I<lbr[bnr]>"
6121 msgstr "I<bnr>, I<lbr[bnr]>"
6122
6123 #. type: Plain text
6124 #: build/C/man2/perf_event_open.2:1969
6125 msgid ""
6126 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
6127 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
6128 "structures which each include the fields:"
6129 msgstr ""
6130
6131 #. type: TP
6132 #: build/C/man2/perf_event_open.2:1970
6133 #, no-wrap
6134 msgid "I<from>"
6135 msgstr "I<from>"
6136
6137 #. type: Plain text
6138 #: build/C/man2/perf_event_open.2:1973
6139 msgid "This indicates the source instruction (may not be a branch)."
6140 msgstr ""
6141
6142 #. type: TP
6143 #: build/C/man2/perf_event_open.2:1973
6144 #, no-wrap
6145 msgid "I<to>"
6146 msgstr "I<to>"
6147
6148 #. type: Plain text
6149 #: build/C/man2/perf_event_open.2:1976
6150 msgid "The branch target."
6151 msgstr ""
6152
6153 #. type: TP
6154 #: build/C/man2/perf_event_open.2:1976
6155 #, no-wrap
6156 msgid "I<mispred>"
6157 msgstr "I<mispred>"
6158
6159 #. type: Plain text
6160 #: build/C/man2/perf_event_open.2:1979
6161 msgid "The branch target was mispredicted."
6162 msgstr ""
6163
6164 #. type: TP
6165 #: build/C/man2/perf_event_open.2:1979
6166 #, no-wrap
6167 msgid "I<predicted>"
6168 msgstr "I<predicted>"
6169
6170 #. type: Plain text
6171 #: build/C/man2/perf_event_open.2:1982
6172 msgid "The branch target was predicted."
6173 msgstr ""
6174
6175 #. type: TP
6176 #: build/C/man2/perf_event_open.2:1982
6177 #, no-wrap
6178 msgid "I<in_tx> (since Linux 3.11)"
6179 msgstr "I<in_tx> (Linux 3.11 以降)"
6180
6181 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
6182 #. type: Plain text
6183 #: build/C/man2/perf_event_open.2:1986
6184 msgid "The branch was in a transactional memory transaction."
6185 msgstr ""
6186
6187 #. type: TP
6188 #: build/C/man2/perf_event_open.2:1986
6189 #, no-wrap
6190 msgid "I<abort> (since Linux 3.11)"
6191 msgstr "I<abort> (Linux 3.11 以降)"
6192
6193 #.  commit 135c5612c460f89657c4698fe2ea753f6f667963
6194 #. type: Plain text
6195 #: build/C/man2/perf_event_open.2:1990
6196 msgid "The branch was in an aborted transactional memory transaction."
6197 msgstr ""
6198
6199 #. type: Plain text
6200 #: build/C/man2/perf_event_open.2:1994
6201 msgid ""
6202 "The entries are from most to least recent, so the first entry has the most "
6203 "recent branch."
6204 msgstr ""
6205
6206 #. type: Plain text
6207 #: build/C/man2/perf_event_open.2:2001
6208 msgid ""
6209 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
6210 "values will be 0."
6211 msgstr ""
6212
6213 #. type: Plain text
6214 #: build/C/man2/perf_event_open.2:2005
6215 msgid ""
6216 "The type of branches recorded is specified by the I<branch_sample_type> "
6217 "field."
6218 msgstr ""
6219
6220 #. type: TP
6221 #: build/C/man2/perf_event_open.2:2007
6222 #, no-wrap
6223 msgid "I<abi>, I<regs[weight(mask)]>"
6224 msgstr "I<abi>, I<regs[weight(mask)]>"
6225
6226 #. type: Plain text
6227 #: build/C/man2/perf_event_open.2:2012
6228 msgid ""
6229 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
6230 "recorded."
6231 msgstr ""
6232
6233 #. type: Plain text
6234 #: build/C/man2/perf_event_open.2:2018
6235 msgid ""
6236 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
6237 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
6238 msgstr ""
6239
6240 #. type: Plain text
6241 #: build/C/man2/perf_event_open.2:2028
6242 msgid ""
6243 "The I<regs> field is an array of the CPU registers that were specified by "
6244 "the I<sample_regs_user> attr field.  The number of values is the number of "
6245 "bits set in the I<sample_regs_user> bit mask."
6246 msgstr ""
6247
6248 #. type: TP
6249 #: build/C/man2/perf_event_open.2:2028
6250 #, no-wrap
6251 msgid "I<size>, I<data[size]>, I<dyn_size>"
6252 msgstr "I<size>, I<data[size]>, I<dyn_size>"
6253
6254 #. type: Plain text
6255 #: build/C/man2/perf_event_open.2:2044
6256 msgid ""
6257 "If B<PERF_SAMPLE_STACK_USER> is enabled, then the user stack is recorded.  "
6258 "This can be used to generate stack backtraces.  I<size> is the size "
6259 "requested by the user in I<sample_stack_user> or else the maximum record "
6260 "size.  I<data> is the stack data (a raw dump of the memory pointed to by the "
6261 "stack pointer at the time of sampling).  I<dyn_size> is the amount of data "
6262 "actually dumped (can be less than I<size>)."
6263 msgstr ""
6264
6265 #. type: TP
6266 #: build/C/man2/perf_event_open.2:2044
6267 #, no-wrap
6268 msgid "I<weight>"
6269 msgstr "I<weight>"
6270
6271 #. type: Plain text
6272 #: build/C/man2/perf_event_open.2:2052
6273 msgid ""
6274 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64-bit value provided by the "
6275 "hardware is recorded that indicates how costly the event was.  This allows "
6276 "expensive events to stand out more clearly in profiles."
6277 msgstr ""
6278
6279 #. type: TP
6280 #: build/C/man2/perf_event_open.2:2052
6281 #, no-wrap
6282 msgid "I<data_src>"
6283 msgstr "I<data_src>"
6284
6285 #. type: Plain text
6286 #: build/C/man2/perf_event_open.2:2058
6287 msgid ""
6288 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64-bit value is recorded that "
6289 "is made up of the following fields:"
6290 msgstr ""
6291
6292 #. type: TP
6293 #: build/C/man2/perf_event_open.2:2059
6294 #, no-wrap
6295 msgid "I<mem_op>"
6296 msgstr "I<mem_op>"
6297
6298 #. type: Plain text
6299 #: build/C/man2/perf_event_open.2:2062
6300 msgid "Type of opcode, a bitwise combination of:"
6301 msgstr ""
6302
6303 #. type: TP
6304 #: build/C/man2/perf_event_open.2:2065
6305 #, no-wrap
6306 msgid "B<PERF_MEM_OP_NA>"
6307 msgstr "B<PERF_MEM_OP_NA>"
6308
6309 #. type: Plain text
6310 #: build/C/man2/perf_event_open.2:2068 build/C/man2/perf_event_open.2:2093
6311 #: build/C/man2/perf_event_open.2:2144 build/C/man2/perf_event_open.2:2168
6312 #: build/C/man2/perf_event_open.2:2184
6313 msgid "Not available"
6314 msgstr ""
6315
6316 #. type: TP
6317 #: build/C/man2/perf_event_open.2:2068
6318 #, no-wrap
6319 msgid "B<PERF_MEM_OP_LOAD>"
6320 msgstr "B<PERF_MEM_OP_LOAD>"
6321
6322 #. type: Plain text
6323 #: build/C/man2/perf_event_open.2:2071
6324 msgid "Load instruction"
6325 msgstr ""
6326
6327 #. type: TP
6328 #: build/C/man2/perf_event_open.2:2071
6329 #, no-wrap
6330 msgid "B<PERF_MEM_OP_STORE>"
6331 msgstr "B<PERF_MEM_OP_STORE>"
6332
6333 #. type: Plain text
6334 #: build/C/man2/perf_event_open.2:2074
6335 msgid "Store instruction"
6336 msgstr ""
6337
6338 #. type: TP
6339 #: build/C/man2/perf_event_open.2:2074
6340 #, no-wrap
6341 msgid "B<PERF_MEM_OP_PFETCH>"
6342 msgstr "B<PERF_MEM_OP_PFETCH>"
6343
6344 #. type: Plain text
6345 #: build/C/man2/perf_event_open.2:2077
6346 msgid "Prefetch"
6347 msgstr ""
6348
6349 #. type: TP
6350 #: build/C/man2/perf_event_open.2:2077
6351 #, no-wrap
6352 msgid "B<PERF_MEM_OP_EXEC>"
6353 msgstr "B<PERF_MEM_OP_EXEC>"
6354
6355 #. type: Plain text
6356 #: build/C/man2/perf_event_open.2:2080
6357 msgid "Executable code"
6358 msgstr ""
6359
6360 #. type: TP
6361 #: build/C/man2/perf_event_open.2:2082
6362 #, no-wrap
6363 msgid "I<mem_lvl>"
6364 msgstr "I<mem_lvl>"
6365
6366 #. type: Plain text
6367 #: build/C/man2/perf_event_open.2:2087
6368 msgid ""
6369 "Memory hierarchy level hit or miss, a bitwise combination of the following, "
6370 "shifted left by B<PERF_MEM_LVL_SHIFT>:"
6371 msgstr ""
6372
6373 #. type: TP
6374 #: build/C/man2/perf_event_open.2:2090
6375 #, no-wrap
6376 msgid "B<PERF_MEM_LVL_NA>"
6377 msgstr "B<PERF_MEM_LVL_NA>"
6378
6379 #. type: TP
6380 #: build/C/man2/perf_event_open.2:2093
6381 #, no-wrap
6382 msgid "B<PERF_MEM_LVL_HIT>"
6383 msgstr "B<PERF_MEM_LVL_HIT>"
6384
6385 #. type: Plain text
6386 #: build/C/man2/perf_event_open.2:2096 build/C/man2/perf_event_open.2:2187
6387 msgid "Hit"
6388 msgstr ""
6389
6390 #. type: TP
6391 #: build/C/man2/perf_event_open.2:2096
6392 #, no-wrap
6393 msgid "B<PERF_MEM_LVL_MISS>"
6394 msgstr "B<PERF_MEM_LVL_MISS>"
6395
6396 #. type: Plain text
6397 #: build/C/man2/perf_event_open.2:2099 build/C/man2/perf_event_open.2:2190
6398 msgid "Miss"
6399 msgstr ""
6400
6401 #. type: TP
6402 #: build/C/man2/perf_event_open.2:2099
6403 #, no-wrap
6404 msgid "B<PERF_MEM_LVL_L1>"
6405 msgstr "B<PERF_MEM_LVL_L1>"
6406
6407 #. type: Plain text
6408 #: build/C/man2/perf_event_open.2:2102
6409 msgid "Level 1 cache"
6410 msgstr ""
6411
6412 #. type: TP
6413 #: build/C/man2/perf_event_open.2:2102
6414 #, no-wrap
6415 msgid "B<PERF_MEM_LVL_LFB>"
6416 msgstr "B<PERF_MEM_LVL_LFB>"
6417
6418 #. type: Plain text
6419 #: build/C/man2/perf_event_open.2:2105
6420 msgid "Line fill buffer"
6421 msgstr ""
6422
6423 #. type: TP
6424 #: build/C/man2/perf_event_open.2:2105
6425 #, no-wrap
6426 msgid "B<PERF_MEM_LVL_L2>"
6427 msgstr "B<PERF_MEM_LVL_L2>"
6428
6429 #. type: Plain text
6430 #: build/C/man2/perf_event_open.2:2108
6431 msgid "Level 2 cache"
6432 msgstr ""
6433
6434 #. type: TP
6435 #: build/C/man2/perf_event_open.2:2108
6436 #, no-wrap
6437 msgid "B<PERF_MEM_LVL_L3>"
6438 msgstr "B<PERF_MEM_LVL_L3>"
6439
6440 #. type: Plain text
6441 #: build/C/man2/perf_event_open.2:2111
6442 msgid "Level 3 cache"
6443 msgstr ""
6444
6445 #. type: TP
6446 #: build/C/man2/perf_event_open.2:2111
6447 #, no-wrap
6448 msgid "B<PERF_MEM_LVL_LOC_RAM>"
6449 msgstr "B<PERF_MEM_LVL_LOC_RAM>"
6450
6451 #. type: Plain text
6452 #: build/C/man2/perf_event_open.2:2114
6453 msgid "Local DRAM"
6454 msgstr ""
6455
6456 #. type: TP
6457 #: build/C/man2/perf_event_open.2:2114
6458 #, no-wrap
6459 msgid "B<PERF_MEM_LVL_REM_RAM1>"
6460 msgstr "B<PERF_MEM_LVL_REM_RAM1>"
6461
6462 #. type: Plain text
6463 #: build/C/man2/perf_event_open.2:2117
6464 msgid "Remote DRAM 1 hop"
6465 msgstr ""
6466
6467 #. type: TP
6468 #: build/C/man2/perf_event_open.2:2117
6469 #, no-wrap
6470 msgid "B<PERF_MEM_LVL_REM_RAM2>"
6471 msgstr "B<PERF_MEM_LVL_REM_RAM2>"
6472
6473 #. type: Plain text
6474 #: build/C/man2/perf_event_open.2:2120
6475 msgid "Remote DRAM 2 hops"
6476 msgstr ""
6477
6478 #. type: TP
6479 #: build/C/man2/perf_event_open.2:2120
6480 #, no-wrap
6481 msgid "B<PERF_MEM_LVL_REM_CCE1>"
6482 msgstr "B<PERF_MEM_LVL_REM_CCE1>"
6483
6484 #. type: Plain text
6485 #: build/C/man2/perf_event_open.2:2123
6486 msgid "Remote cache 1 hop"
6487 msgstr ""
6488
6489 #. type: TP
6490 #: build/C/man2/perf_event_open.2:2123
6491 #, no-wrap
6492 msgid "B<PERF_MEM_LVL_REM_CCE2>"
6493 msgstr "B<PERF_MEM_LVL_REM_CCE2>"
6494
6495 #. type: Plain text
6496 #: build/C/man2/perf_event_open.2:2126
6497 msgid "Remote cache 2 hops"
6498 msgstr ""
6499
6500 #. type: TP
6501 #: build/C/man2/perf_event_open.2:2126
6502 #, no-wrap
6503 msgid "B<PERF_MEM_LVL_IO>"
6504 msgstr "B<PERF_MEM_LVL_IO>"
6505
6506 #. type: Plain text
6507 #: build/C/man2/perf_event_open.2:2129
6508 msgid "I/O memory"
6509 msgstr ""
6510
6511 #. type: TP
6512 #: build/C/man2/perf_event_open.2:2129
6513 #, no-wrap
6514 msgid "B<PERF_MEM_LVL_UNC>"
6515 msgstr "B<PERF_MEM_LVL_UNC>"
6516
6517 #. type: Plain text
6518 #: build/C/man2/perf_event_open.2:2132
6519 msgid "Uncached memory"
6520 msgstr ""
6521
6522 #. type: TP
6523 #: build/C/man2/perf_event_open.2:2134
6524 #, no-wrap
6525 msgid "I<mem_snoop>"
6526 msgstr "I<mem_snoop>"
6527
6528 #. type: Plain text
6529 #: build/C/man2/perf_event_open.2:2138
6530 msgid ""
6531 "Snoop mode, a bitwise combination of the following, shifted left by "
6532 "B<PERF_MEM_SNOOP_SHIFT>:"
6533 msgstr ""
6534
6535 #. type: TP
6536 #: build/C/man2/perf_event_open.2:2141
6537 #, no-wrap
6538 msgid "B<PERF_MEM_SNOOP_NA>"
6539 msgstr "B<PERF_MEM_SNOOP_NA>"
6540
6541 #. type: TP
6542 #: build/C/man2/perf_event_open.2:2144
6543 #, no-wrap
6544 msgid "B<PERF_MEM_SNOOP_NONE>"
6545 msgstr "B<PERF_MEM_SNOOP_NONE>"
6546
6547 #. type: Plain text
6548 #: build/C/man2/perf_event_open.2:2147
6549 msgid "No snoop"
6550 msgstr ""
6551
6552 #. type: TP
6553 #: build/C/man2/perf_event_open.2:2147
6554 #, no-wrap
6555 msgid "B<PERF_MEM_SNOOP_HIT>"
6556 msgstr "B<PERF_MEM_SNOOP_HIT>"
6557
6558 #. type: Plain text
6559 #: build/C/man2/perf_event_open.2:2150
6560 msgid "Snoop hit"
6561 msgstr ""
6562
6563 #. type: TP
6564 #: build/C/man2/perf_event_open.2:2150
6565 #, no-wrap
6566 msgid "B<PERF_MEM_SNOOP_MISS>"
6567 msgstr "B<PERF_MEM_SNOOP_MISS>"
6568
6569 #. type: Plain text
6570 #: build/C/man2/perf_event_open.2:2153
6571 msgid "Snoop miss"
6572 msgstr ""
6573
6574 #. type: TP
6575 #: build/C/man2/perf_event_open.2:2153
6576 #, no-wrap
6577 msgid "B<PERF_MEM_SNOOP_HITM>"
6578 msgstr "B<PERF_MEM_SNOOP_HITM>"
6579
6580 #. type: Plain text
6581 #: build/C/man2/perf_event_open.2:2156
6582 msgid "Snoop hit modified"
6583 msgstr ""
6584
6585 #. type: TP
6586 #: build/C/man2/perf_event_open.2:2158
6587 #, no-wrap
6588 msgid "I<mem_lock>"
6589 msgstr "I<mem_lock>"
6590
6591 #. type: Plain text
6592 #: build/C/man2/perf_event_open.2:2162
6593 msgid ""
6594 "Lock instruction, a bitwise combination of the following, shifted left by "
6595 "B<PERF_MEM_LOCK_SHIFT>:"
6596 msgstr ""
6597
6598 #. type: TP
6599 #: build/C/man2/perf_event_open.2:2165
6600 #, no-wrap
6601 msgid "B<PERF_MEM_LOCK_NA>"
6602 msgstr "B<PERF_MEM_LOCK_NA>"
6603
6604 #. type: TP
6605 #: build/C/man2/perf_event_open.2:2168
6606 #, no-wrap
6607 msgid "B<PERF_MEM_LOCK_LOCKED>"
6608 msgstr "B<PERF_MEM_LOCK_LOCKED>"
6609
6610 #. type: Plain text
6611 #: build/C/man2/perf_event_open.2:2171
6612 msgid "Locked transaction"
6613 msgstr ""
6614
6615 #. type: TP
6616 #: build/C/man2/perf_event_open.2:2173
6617 #, no-wrap
6618 msgid "I<mem_dtlb>"
6619 msgstr "I<mem_dtlb>"
6620
6621 #. type: Plain text
6622 #: build/C/man2/perf_event_open.2:2178
6623 msgid ""
6624 "TLB access hit or miss, a bitwise combination of the following, shifted left "
6625 "by B<PERF_MEM_TLB_SHIFT>:"
6626 msgstr ""
6627
6628 #. type: TP
6629 #: build/C/man2/perf_event_open.2:2181
6630 #, no-wrap
6631 msgid "B<PERF_MEM_TLB_NA>"
6632 msgstr "B<PERF_MEM_TLB_NA>"
6633
6634 #. type: TP
6635 #: build/C/man2/perf_event_open.2:2184
6636 #, no-wrap
6637 msgid "B<PERF_MEM_TLB_HIT>"
6638 msgstr "B<PERF_MEM_TLB_HIT>"
6639
6640 #. type: TP
6641 #: build/C/man2/perf_event_open.2:2187
6642 #, no-wrap
6643 msgid "B<PERF_MEM_TLB_MISS>"
6644 msgstr "B<PERF_MEM_TLB_MISS>"
6645
6646 #. type: TP
6647 #: build/C/man2/perf_event_open.2:2190
6648 #, no-wrap
6649 msgid "B<PERF_MEM_TLB_L1>"
6650 msgstr "B<PERF_MEM_TLB_L1>"
6651
6652 #. type: Plain text
6653 #: build/C/man2/perf_event_open.2:2193
6654 msgid "Level 1 TLB"
6655 msgstr ""
6656
6657 #. type: TP
6658 #: build/C/man2/perf_event_open.2:2193
6659 #, no-wrap
6660 msgid "B<PERF_MEM_TLB_L2>"
6661 msgstr "B<PERF_MEM_TLB_L2>"
6662
6663 #. type: Plain text
6664 #: build/C/man2/perf_event_open.2:2196
6665 msgid "Level 2 TLB"
6666 msgstr ""
6667
6668 #. type: TP
6669 #: build/C/man2/perf_event_open.2:2196
6670 #, no-wrap
6671 msgid "B<PERF_MEM_TLB_WK>"
6672 msgstr "B<PERF_MEM_TLB_WK>"
6673
6674 #. type: Plain text
6675 #: build/C/man2/perf_event_open.2:2199
6676 msgid "Hardware walker"
6677 msgstr ""
6678
6679 #. type: TP
6680 #: build/C/man2/perf_event_open.2:2199
6681 #, no-wrap
6682 msgid "B<PERF_MEM_TLB_OS>"
6683 msgstr "B<PERF_MEM_TLB_OS>"
6684
6685 #. type: Plain text
6686 #: build/C/man2/perf_event_open.2:2202
6687 msgid "OS fault handler"
6688 msgstr ""
6689
6690 #. type: TP
6691 #: build/C/man2/perf_event_open.2:2205
6692 #, no-wrap
6693 msgid "I<transaction>"
6694 msgstr "I<transaction>"
6695
6696 #. type: Plain text
6697 #: build/C/man2/perf_event_open.2:2211
6698 msgid ""
6699 "If the B<PERF_SAMPLE_TRANSACTION> flag is set, then a 64-bit field is "
6700 "recorded describing the sources of any transactional memory aborts."
6701 msgstr ""
6702
6703 #. type: Plain text
6704 #: build/C/man2/perf_event_open.2:2213
6705 msgid "The field is a bitwise combination of the following values:"
6706 msgstr ""
6707
6708 #. type: TP
6709 #: build/C/man2/perf_event_open.2:2214
6710 #, no-wrap
6711 msgid "B<PERF_TXN_ELISION>"
6712 msgstr "B<PERF_TXN_ELISION>"
6713
6714 #. type: Plain text
6715 #: build/C/man2/perf_event_open.2:2217
6716 msgid "Abort from an elision type transaction (Intel-CPU-specific)."
6717 msgstr ""
6718
6719 #. type: TP
6720 #: build/C/man2/perf_event_open.2:2217
6721 #, no-wrap
6722 msgid "B<PERF_TXN_TRANSACTION>"
6723 msgstr "B<PERF_TXN_TRANSACTION>"
6724
6725 #. type: Plain text
6726 #: build/C/man2/perf_event_open.2:2220
6727 msgid "Abort from a generic transaction."
6728 msgstr ""
6729
6730 #. type: TP
6731 #: build/C/man2/perf_event_open.2:2220
6732 #, no-wrap
6733 msgid "B<PERF_TXN_SYNC>"
6734 msgstr "B<PERF_TXN_SYNC>"
6735
6736 #. type: Plain text
6737 #: build/C/man2/perf_event_open.2:2223
6738 msgid "Synchronous abort (related to the reported instruction)."
6739 msgstr ""
6740
6741 #. type: TP
6742 #: build/C/man2/perf_event_open.2:2223
6743 #, no-wrap
6744 msgid "B<PERF_TXN_ASYNC>"
6745 msgstr "B<PERF_TXN_ASYNC>"
6746
6747 #. type: Plain text
6748 #: build/C/man2/perf_event_open.2:2226
6749 msgid "Asynchronous abort (not related to the reported instruction)."
6750 msgstr ""
6751
6752 #. type: TP
6753 #: build/C/man2/perf_event_open.2:2226
6754 #, no-wrap
6755 msgid "B<PERF_TXN_RETRY>"
6756 msgstr "B<PERF_TXN_RETRY>"
6757
6758 #. type: Plain text
6759 #: build/C/man2/perf_event_open.2:2229
6760 msgid "Retryable abort (retrying the transaction may have succeeded)."
6761 msgstr ""
6762
6763 #. type: TP
6764 #: build/C/man2/perf_event_open.2:2229
6765 #, no-wrap
6766 msgid "B<PERF_TXN_CONFLICT>"
6767 msgstr "B<PERF_TXN_CONFLICT>"
6768
6769 #. type: Plain text
6770 #: build/C/man2/perf_event_open.2:2232
6771 msgid "Abort due to memory conflicts with other threads."
6772 msgstr ""
6773
6774 #. type: TP
6775 #: build/C/man2/perf_event_open.2:2232
6776 #, no-wrap
6777 msgid "B<PERF_TXN_CAPACITY_WRITE>"
6778 msgstr ""
6779
6780 #. type: Plain text
6781 #: build/C/man2/perf_event_open.2:2235
6782 msgid "Abort due to write capacity overflow."
6783 msgstr ""
6784
6785 #. type: TP
6786 #: build/C/man2/perf_event_open.2:2235
6787 #, no-wrap
6788 msgid "B<PERF_TXN_CAPACITY_READ>"
6789 msgstr ""
6790
6791 #. type: Plain text
6792 #: build/C/man2/perf_event_open.2:2238
6793 msgid "Abort due to read capacity overflow."
6794 msgstr ""
6795
6796 #. type: Plain text
6797 #: build/C/man2/perf_event_open.2:2245
6798 msgid ""
6799 "In addition, a user-specified abort code can be obtained from the high 32 "
6800 "bits of the field by shifting right by B<PERF_TXN_ABORT_SHIFT> and masking "
6801 "with B<PERF_TXN_ABORT_MASK>."
6802 msgstr ""
6803
6804 #. type: TP
6805 #: build/C/man2/perf_event_open.2:2246
6806 #, no-wrap
6807 msgid "B<PERF_RECORD_MMAP2>"
6808 msgstr "B<PERF_RECORD_MMAP2>"
6809
6810 #. type: Plain text
6811 #: build/C/man2/perf_event_open.2:2255
6812 msgid ""
6813 "This record includes extended information on B<mmap>(2)  calls returning "
6814 "executable mappings.  The format is similar to that of the "
6815 "B<PERF_RECORD_MMAP> record, but includes extra values that allow uniquely "
6816 "identifying shared mappings."
6817 msgstr ""
6818
6819 #. type: Plain text
6820 #: build/C/man2/perf_event_open.2:2274
6821 #, no-wrap
6822 msgid ""
6823 "struct {\n"
6824 "    struct perf_event_header header;\n"
6825 "    u32 pid;\n"
6826 "    u32 tid;\n"
6827 "    u64 addr;\n"
6828 "    u64 len;\n"
6829 "    u64 pgoff;\n"
6830 "    u32 maj;\n"
6831 "    u32 min;\n"
6832 "    u64 ino;\n"
6833 "    u64 ino_generation;\n"
6834 "    u32 prot;\n"
6835 "    u32 flags;\n"
6836 "    char filename[];\n"
6837 "    struct sample_id sample_id;\n"
6838 "};\n"
6839 msgstr ""
6840 "struct {\n"
6841 "    struct perf_event_header header;\n"
6842 "    u32 pid;\n"
6843 "    u32 tid;\n"
6844 "    u64 addr;\n"
6845 "    u64 len;\n"
6846 "    u64 pgoff;\n"
6847 "    u32 maj;\n"
6848 "    u32 min;\n"
6849 "    u64 ino;\n"
6850 "    u64 ino_generation;\n"
6851 "    u32 prot;\n"
6852 "    u32 flags;\n"
6853 "    char filename[];\n"
6854 "    struct sample_id sample_id;\n"
6855 "};\n"
6856
6857 #. type: Plain text
6858 #: build/C/man2/perf_event_open.2:2285
6859 msgid "is the address of the allocated memory."
6860 msgstr ""
6861
6862 #. type: TP
6863 #: build/C/man2/perf_event_open.2:2285
6864 #, no-wrap
6865 msgid "I<len>"
6866 msgstr "I<len>"
6867
6868 #. type: Plain text
6869 #: build/C/man2/perf_event_open.2:2288
6870 msgid "is the length of the allocated memory."
6871 msgstr ""
6872
6873 #. type: TP
6874 #: build/C/man2/perf_event_open.2:2288
6875 #, no-wrap
6876 msgid "I<pgoff>"
6877 msgstr "I<pgoff>"
6878
6879 #. type: Plain text
6880 #: build/C/man2/perf_event_open.2:2291
6881 msgid "is the page offset of the allocated memory."
6882 msgstr ""
6883
6884 #. type: TP
6885 #: build/C/man2/perf_event_open.2:2291
6886 #, no-wrap
6887 msgid "I<maj>"
6888 msgstr "I<maj>"
6889
6890 #. type: Plain text
6891 #: build/C/man2/perf_event_open.2:2294
6892 msgid "is the major ID of the underlying device."
6893 msgstr ""
6894
6895 #. type: TP
6896 #: build/C/man2/perf_event_open.2:2294
6897 #, no-wrap
6898 msgid "I<min>"
6899 msgstr "I<min>"
6900
6901 #. type: Plain text
6902 #: build/C/man2/perf_event_open.2:2297
6903 msgid "is the minor ID of the underlying device."
6904 msgstr ""
6905
6906 #. type: TP
6907 #: build/C/man2/perf_event_open.2:2297
6908 #, no-wrap
6909 msgid "I<ino>"
6910 msgstr "I<ino>"
6911
6912 #. type: Plain text
6913 #: build/C/man2/perf_event_open.2:2300
6914 msgid "is the inode number."
6915 msgstr ""
6916
6917 #. type: TP
6918 #: build/C/man2/perf_event_open.2:2300
6919 #, no-wrap
6920 msgid "I<ino_generation>"
6921 msgstr "I<ino_generation>"
6922
6923 #. type: Plain text
6924 #: build/C/man2/perf_event_open.2:2303
6925 msgid "is the inode generation."
6926 msgstr ""
6927
6928 #. type: TP
6929 #: build/C/man2/perf_event_open.2:2303
6930 #, no-wrap
6931 msgid "I<prot>"
6932 msgstr "I<prot>"
6933
6934 #. type: Plain text
6935 #: build/C/man2/perf_event_open.2:2306
6936 msgid "is the protection information."
6937 msgstr ""
6938
6939 #. type: TP
6940 #: build/C/man2/perf_event_open.2:2306
6941 #, no-wrap
6942 msgid "I<flags>"
6943 msgstr "I<flags>"
6944
6945 #. type: Plain text
6946 #: build/C/man2/perf_event_open.2:2309
6947 msgid "is the flags information."
6948 msgstr ""
6949
6950 #. type: TP
6951 #: build/C/man2/perf_event_open.2:2309
6952 #, no-wrap
6953 msgid "I<filename>"
6954 msgstr "I<filename>"
6955
6956 #. type: Plain text
6957 #: build/C/man2/perf_event_open.2:2312
6958 msgid "is a string describing the backing of the allocated memory."
6959 msgstr ""
6960
6961 #. type: SS
6962 #: build/C/man2/perf_event_open.2:2314
6963 #, no-wrap
6964 msgid "Overflow handling"
6965 msgstr ""
6966
6967 #. type: Plain text
6968 #: build/C/man2/perf_event_open.2:2327
6969 msgid ""
6970 "Events can be set to notify when a threshold is crossed, indicating an "
6971 "overflow.  Overflow conditions can be captured by monitoring the event file "
6972 "descriptor with B<poll>(2), B<select>(2), or B<epoll>(2).  Alternately, a "
6973 "SIGIO signal handler can be created and the event configured with "
6974 "B<fcntl>(2)  to generate SIGIO signals."
6975 msgstr ""
6976
6977 #. type: Plain text
6978 #: build/C/man2/perf_event_open.2:2331
6979 msgid ""
6980 "Overflows are generated only by sampling events (I<sample_period> must have "
6981 "a nonzero value)."
6982 msgstr ""
6983
6984 #. type: Plain text
6985 #: build/C/man2/perf_event_open.2:2333
6986 msgid "There are two ways to generate overflow notifications."
6987 msgstr ""
6988
6989 #. type: Plain text
6990 #: build/C/man2/perf_event_open.2:2343
6991 msgid ""
6992 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
6993 "will trigger if a certain number of samples or bytes have been written to "
6994 "the mmap ring buffer.  In this case B<POLL_IN> is indicated."
6995 msgstr ""
6996
6997 #. type: Plain text
6998 #: build/C/man2/perf_event_open.2:2355
6999 msgid ""
7000 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
7001 "adds to a counter that decrements each time the event overflows.  When "
7002 "nonzero, B<POLL_IN> is indicated, but once the counter reaches 0 B<POLL_HUP> "
7003 "is indicated and the underlying event is disabled."
7004 msgstr ""
7005
7006 #.  commit 179033b3e064d2cd3f5f9945e76b0a0f0fbf4883
7007 #. type: Plain text
7008 #: build/C/man2/perf_event_open.2:2361
7009 msgid ""
7010 "Starting with Linux 3.18, B<POLL_HUP> is indicated if the event being "
7011 "monitored is attached to a different process and that process exits."
7012 msgstr ""
7013
7014 #. type: SS
7015 #: build/C/man2/perf_event_open.2:2361
7016 #, no-wrap
7017 msgid "rdpmc instruction"
7018 msgstr ""
7019
7020 #.  commit c7206205d00ab375839bd6c7ddb247d600693c09
7021 #. type: Plain text
7022 #: build/C/man2/perf_event_open.2:2369
7023 msgid ""
7024 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
7025 "low-latency reads without having to enter the kernel.  Note that using "
7026 "I<rdpmc> is not necessarily faster than other methods for reading event "
7027 "values."
7028 msgstr ""
7029
7030 #. type: Plain text
7031 #: build/C/man2/perf_event_open.2:2374
7032 msgid ""
7033 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
7034 "page; documentation on how to calculate event values can be found in that "
7035 "section."
7036 msgstr ""
7037
7038 #. type: SS
7039 #: build/C/man2/perf_event_open.2:2374
7040 #, no-wrap
7041 msgid "perf_event ioctl calls"
7042 msgstr ""
7043
7044 #. type: Plain text
7045 #: build/C/man2/perf_event_open.2:2379
7046 msgid "Various ioctls act on B<perf_event_open>()  file descriptors:"
7047 msgstr ""
7048
7049 #. type: TP
7050 #: build/C/man2/perf_event_open.2:2379
7051 #, no-wrap
7052 msgid "B<PERF_EVENT_IOC_ENABLE>"
7053 msgstr "B<PERF_EVENT_IOC_ENABLE>"
7054
7055 #. type: Plain text
7056 #: build/C/man2/perf_event_open.2:2383
7057 msgid ""
7058 "This enables the individual event or event group specified by the file "
7059 "descriptor argument."
7060 msgstr ""
7061
7062 #. type: Plain text
7063 #: build/C/man2/perf_event_open.2:2389
7064 msgid ""
7065 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
7066 "events in a group are enabled, even if the event specified is not the group "
7067 "leader (but see BUGS)."
7068 msgstr ""
7069
7070 #. type: TP
7071 #: build/C/man2/perf_event_open.2:2389
7072 #, no-wrap
7073 msgid "B<PERF_EVENT_IOC_DISABLE>"
7074 msgstr "B<PERF_EVENT_IOC_DISABLE>"
7075
7076 #. type: Plain text
7077 #: build/C/man2/perf_event_open.2:2393
7078 msgid ""
7079 "This disables the individual counter or event group specified by the file "
7080 "descriptor argument."
7081 msgstr ""
7082
7083 #. type: Plain text
7084 #: build/C/man2/perf_event_open.2:2400
7085 msgid ""
7086 "Enabling or disabling the leader of a group enables or disables the entire "
7087 "group; that is, while the group leader is disabled, none of the counters in "
7088 "the group will count.  Enabling or disabling a member of a group other than "
7089 "the leader affects only that counter; disabling a non-leader stops that "
7090 "counter from counting but doesn't affect any other counter."
7091 msgstr ""
7092
7093 #. type: Plain text
7094 #: build/C/man2/perf_event_open.2:2406
7095 msgid ""
7096 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
7097 "events in a group are disabled, even if the event specified is not the group "
7098 "leader (but see BUGS)."
7099 msgstr ""
7100
7101 #. type: TP
7102 #: build/C/man2/perf_event_open.2:2406
7103 #, no-wrap
7104 msgid "B<PERF_EVENT_IOC_REFRESH>"
7105 msgstr "B<PERF_EVENT_IOC_REFRESH>"
7106
7107 #. type: Plain text
7108 #: build/C/man2/perf_event_open.2:2420
7109 msgid ""
7110 "Non-inherited overflow counters can use this to enable a counter for a "
7111 "number of overflows specified by the argument, after which it is disabled.  "
7112 "Subsequent calls of this ioctl add the argument value to the current count.  "
7113 "An overflow notification with B<POLL_IN> set will happen on each overflow "
7114 "until the count reaches 0; when that happens a notification with B<POLL_HUP> "
7115 "set is sent and the event is disabled.  Using an argument of 0 is considered "
7116 "undefined behavior."
7117 msgstr ""
7118
7119 #. type: TP
7120 #: build/C/man2/perf_event_open.2:2420
7121 #, no-wrap
7122 msgid "B<PERF_EVENT_IOC_RESET>"
7123 msgstr "B<PERF_EVENT_IOC_RESET>"
7124
7125 #. type: Plain text
7126 #: build/C/man2/perf_event_open.2:2430
7127 msgid ""
7128 "Reset the event count specified by the file descriptor argument to zero.  "
7129 "This resets only the counts; there is no way to reset the multiplexing "
7130 "I<time_enabled> or I<time_running> values."
7131 msgstr ""
7132
7133 #. type: Plain text
7134 #: build/C/man2/perf_event_open.2:2436
7135 msgid ""
7136 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
7137 "events in a group are reset, even if the event specified is not the group "
7138 "leader (but see BUGS)."
7139 msgstr ""
7140
7141 #. type: TP
7142 #: build/C/man2/perf_event_open.2:2436
7143 #, no-wrap
7144 msgid "B<PERF_EVENT_IOC_PERIOD>"
7145 msgstr "B<PERF_EVENT_IOC_PERIOD>"
7146
7147 #. type: Plain text
7148 #: build/C/man2/perf_event_open.2:2439
7149 msgid "This updates the overflow period for the event."
7150 msgstr ""
7151
7152 #.  commit 3581fe0ef37ce12ac7a4f74831168352ae848edc
7153 #.  commit bad7192b842c83e580747ca57104dd51fe08c223
7154 #. type: Plain text
7155 #: build/C/man2/perf_event_open.2:2447
7156 msgid ""
7157 "Since Linux 3.7 (on ARM)  and Linux 3.14 (all other architectures), the new "
7158 "period takes effect immediately.  On older kernels, the new period did not "
7159 "take effect until after the next overflow."
7160 msgstr ""
7161
7162 #. type: Plain text
7163 #: build/C/man2/perf_event_open.2:2450
7164 msgid ""
7165 "The argument is a pointer to a 64-bit value containing the desired new "
7166 "period."
7167 msgstr ""
7168
7169 #.  commit ad0cf3478de8677f720ee06393b3147819568d6a
7170 #. type: Plain text
7171 #: build/C/man2/perf_event_open.2:2455
7172 msgid ""
7173 "Prior to Linux 2.6.36 this ioctl always failed due to a bug in the kernel."
7174 msgstr ""
7175
7176 #. type: TP
7177 #: build/C/man2/perf_event_open.2:2456
7178 #, no-wrap
7179 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
7180 msgstr ""
7181
7182 #. type: Plain text
7183 #: build/C/man2/perf_event_open.2:2461
7184 msgid ""
7185 "This tells the kernel to report event notifications to the specified file "
7186 "descriptor rather than the default one.  The file descriptors must all be on "
7187 "the same CPU."
7188 msgstr ""
7189
7190 #. type: Plain text
7191 #: build/C/man2/perf_event_open.2:2464
7192 msgid ""
7193 "The argument specifies the desired file descriptor, or -1 if output should "
7194 "be ignored."
7195 msgstr ""
7196
7197 #. type: TP
7198 #: build/C/man2/perf_event_open.2:2464
7199 #, no-wrap
7200 msgid "B<PERF_EVENT_IOC_SET_FILTER> (since Linux 2.6.33)"
7201 msgstr "B<PERF_EVENT_IOC_SET_FILTER> (Linux 2.6.33 以降)"
7202
7203 #.  commit 6fb2915df7f0747d9044da9dbff5b46dc2e20830
7204 #. type: Plain text
7205 #: build/C/man2/perf_event_open.2:2468
7206 msgid "This adds an ftrace filter to this event."
7207 msgstr ""
7208
7209 #. type: Plain text
7210 #: build/C/man2/perf_event_open.2:2470
7211 msgid "The argument is a pointer to the desired ftrace filter."
7212 msgstr ""
7213
7214 #. type: TP
7215 #: build/C/man2/perf_event_open.2:2470
7216 #, no-wrap
7217 msgid "B<PERF_EVENT_IOC_ID> (since Linux 3.12)"
7218 msgstr "B<PERF_EVENT_IOC_ID> (Linux 3.12 以降)"
7219
7220 #.  commit cf4957f17f2a89984915ea808876d9c82225b862
7221 #. type: Plain text
7222 #: build/C/man2/perf_event_open.2:2474
7223 msgid "This returns the event ID value for the given event file descriptor."
7224 msgstr ""
7225
7226 #. type: Plain text
7227 #: build/C/man2/perf_event_open.2:2477
7228 msgid ""
7229 "The argument is a pointer to a 64-bit unsigned integer to hold the result."
7230 msgstr ""
7231
7232 #. type: SS
7233 #: build/C/man2/perf_event_open.2:2477
7234 #, no-wrap
7235 msgid "Using prctl"
7236 msgstr ""
7237
7238 #. type: Plain text
7239 #: build/C/man2/perf_event_open.2:2490
7240 msgid ""
7241 "A process can enable or disable all the event groups that are attached to it "
7242 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
7243 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
7244 "the calling process, whether created by this process or by another, and does "
7245 "not affect any counters that this process has created on other processes.  "
7246 "It enables or disables only the group leaders, not any other members in the "
7247 "groups."
7248 msgstr ""
7249
7250 #. type: SS
7251 #: build/C/man2/perf_event_open.2:2490
7252 #, no-wrap
7253 msgid "perf_event related configuration files"
7254 msgstr ""
7255
7256 #. type: Plain text
7257 #: build/C/man2/perf_event_open.2:2493
7258 msgid "Files in I</proc/sys/kernel/>"
7259 msgstr ""
7260
7261 #. type: TP
7262 #: build/C/man2/perf_event_open.2:2494
7263 #, no-wrap
7264 msgid "I</proc/sys/kernel/perf_event_paranoid>"
7265 msgstr ""
7266
7267 #. type: Plain text
7268 #: build/C/man2/perf_event_open.2:2500
7269 msgid ""
7270 "The I<perf_event_paranoid> file can be set to restrict access to the "
7271 "performance counters."
7272 msgstr ""
7273
7274 #. type: IP
7275 #: build/C/man2/perf_event_open.2:2501
7276 #, no-wrap
7277 msgid "2"
7278 msgstr ""
7279
7280 #. type: Plain text
7281 #: build/C/man2/perf_event_open.2:2503
7282 msgid "allow only user-space measurements."
7283 msgstr ""
7284
7285 #. type: IP
7286 #: build/C/man2/perf_event_open.2:2503
7287 #, no-wrap
7288 msgid "1"
7289 msgstr ""
7290
7291 #. type: Plain text
7292 #: build/C/man2/perf_event_open.2:2505
7293 msgid "allow both kernel and user measurements (default)."
7294 msgstr ""
7295
7296 #. type: IP
7297 #: build/C/man2/perf_event_open.2:2505
7298 #, no-wrap
7299 msgid "0"
7300 msgstr ""
7301
7302 #. type: Plain text
7303 #: build/C/man2/perf_event_open.2:2507
7304 msgid "allow access to CPU-specific data but not raw tracepoint samples."
7305 msgstr ""
7306
7307 #. type: IP
7308 #: build/C/man2/perf_event_open.2:2507
7309 #, no-wrap
7310 msgid "-1"
7311 msgstr "-1"
7312
7313 #. type: Plain text
7314 #: build/C/man2/perf_event_open.2:2509
7315 msgid "no restrictions."
7316 msgstr ""
7317
7318 #. type: Plain text
7319 #: build/C/man2/perf_event_open.2:2515
7320 msgid ""
7321 "The existence of the I<perf_event_paranoid> file is the official method for "
7322 "determining if a kernel supports B<perf_event_open>()."
7323 msgstr ""
7324
7325 #. type: TP
7326 #: build/C/man2/perf_event_open.2:2515
7327 #, no-wrap
7328 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
7329 msgstr ""
7330
7331 #. type: Plain text
7332 #: build/C/man2/perf_event_open.2:2524
7333 msgid ""
7334 "This sets the maximum sample rate.  Setting this too high can allow users to "
7335 "sample at a rate that impacts overall machine performance and potentially "
7336 "lock up the machine.  The default value is 100000 (samples per second)."
7337 msgstr ""
7338
7339 #. type: TP
7340 #: build/C/man2/perf_event_open.2:2524
7341 #, no-wrap
7342 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
7343 msgstr ""
7344
7345 #. type: Plain text
7346 #: build/C/man2/perf_event_open.2:2530
7347 msgid ""
7348 "Maximum number of pages an unprivileged user can B<mlock>(2).  The default "
7349 "is 516 (kB)."
7350 msgstr ""
7351
7352 #. type: Plain text
7353 #: build/C/man2/perf_event_open.2:2534
7354 msgid "Files in I</sys/bus/event_source/devices/>"
7355 msgstr ""
7356
7357 #. type: Plain text
7358 #: build/C/man2/perf_event_open.2:2540
7359 msgid ""
7360 "Since Linux 2.6.34, the kernel supports having multiple PMUs available for "
7361 "monitoring.  Information on how to program these PMUs can be found under I</"
7362 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
7363 "different PMU."
7364 msgstr ""
7365
7366 #. type: TP
7367 #: build/C/man2/perf_event_open.2:2540
7368 #, no-wrap
7369 msgid "I</sys/bus/event_source/devices/*/type> (since Linux 2.6.38)"
7370 msgstr "I</sys/bus/event_source/devices/*/type> (Linux 2.6.38 以降)"
7371
7372 #.  commit abe43400579d5de0078c2d3a760e6598e183f871
7373 #. type: Plain text
7374 #: build/C/man2/perf_event_open.2:2548
7375 msgid ""
7376 "This contains an integer that can be used in the I<type> field of "
7377 "I<perf_event_attr> to indicate that you wish to use this PMU."
7378 msgstr ""
7379
7380 #. type: TP
7381 #: build/C/man2/perf_event_open.2:2548
7382 #, no-wrap
7383 msgid "I</sys/bus/event_source/devices/*/rdpmc> (since Linux 3.4)"
7384 msgstr "I</sys/bus/event_source/devices/*/rdpmc> (Linux 3.4 以降)"
7385
7386 #.  commit 0c9d42ed4cee2aa1dfc3a260b741baae8615744f
7387 #. type: Plain text
7388 #: build/C/man2/perf_event_open.2:2554
7389 msgid ""
7390 "If this file is 1, then direct user-space access to the performance counter "
7391 "registers is allowed via the rdpmc instruction.  This can be disabled by "
7392 "echoing 0 to the file."
7393 msgstr ""
7394
7395 #. type: TP
7396 #: build/C/man2/perf_event_open.2:2554
7397 #, no-wrap
7398 msgid "I</sys/bus/event_source/devices/*/format/> (since Linux 3.4)"
7399 msgstr "I</sys/bus/event_source/devices/*/format/> (Linux 3.4 以降)"
7400
7401 #.  commit 641cc938815dfd09f8fa1ec72deb814f0938ac33
7402 #. type: Plain text
7403 #: build/C/man2/perf_event_open.2:2563
7404 msgid ""
7405 "This subdirectory contains information on the architecture-specific "
7406 "subfields available for programming the various I<config> fields in the "
7407 "I<perf_event_attr> struct."
7408 msgstr ""
7409
7410 #. type: Plain text
7411 #: build/C/man2/perf_event_open.2:2574
7412 msgid ""
7413 "The content of each file is the name of the config field, followed by a "
7414 "colon, followed by a series of integer bit ranges separated by commas.  For "
7415 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
7416 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
7417 "I<perf_event_attr::config1>."
7418 msgstr ""
7419
7420 #. type: TP
7421 #: build/C/man2/perf_event_open.2:2574
7422 #, no-wrap
7423 msgid "I</sys/bus/event_source/devices/*/events/> (since Linux 3.4)"
7424 msgstr "I</sys/bus/event_source/devices/*/events/> (Linux 3.4 以降)"
7425
7426 #.  commit 641cc938815dfd09f8fa1ec72deb814f0938ac33
7427 #. type: Plain text
7428 #: build/C/man2/perf_event_open.2:2584
7429 msgid ""
7430 "This subdirectory contains files with predefined events.  The contents are "
7431 "strings describing the event settings expressed in terms of the fields found "
7432 "in the previously mentioned I<./format/> directory.  These are not "
7433 "necessarily complete lists of all events supported by a PMU, but usually a "
7434 "subset of events deemed useful or interesting."
7435 msgstr ""
7436
7437 #. type: Plain text
7438 #: build/C/man2/perf_event_open.2:2592
7439 msgid ""
7440 "The content of each file is a list of attribute names separated by commas.  "
7441 "Each entry has an optional value (either hex or decimal).  If no value is "
7442 "specified, then it is assumed to be a single-bit field with a value of 1.  "
7443 "An example entry may look like this: I<event=0x2,inv,ldlat=3>."
7444 msgstr ""
7445
7446 #. type: TP
7447 #: build/C/man2/perf_event_open.2:2592
7448 #, no-wrap
7449 msgid "I</sys/bus/event_source/devices/*/uevent>"
7450 msgstr "I</sys/bus/event_source/devices/*/uevent>"
7451
7452 #. type: Plain text
7453 #: build/C/man2/perf_event_open.2:2596
7454 msgid ""
7455 "This file is the standard kernel device interface for injecting hotplug "
7456 "events."
7457 msgstr ""
7458
7459 #. type: TP
7460 #: build/C/man2/perf_event_open.2:2596
7461 #, no-wrap
7462 msgid "I</sys/bus/event_source/devices/*/cpumask> (since Linux 3.7)"
7463 msgstr "I</sys/bus/event_source/devices/*/cpumask> (Linux 3.7 以降)"
7464
7465 #.  commit 314d9f63f385096580e9e2a06eaa0745d92fe4ac
7466 #. type: Plain text
7467 #: build/C/man2/perf_event_open.2:2606
7468 msgid ""
7469 "The I<cpumask> file contains a comma-separated list of integers that "
7470 "indicate a representative CPU number for each socket (package)  on the "
7471 "motherboard.  This is needed when setting up uncore or northbridge events, "
7472 "as those PMUs present socket-wide events."
7473 msgstr ""
7474
7475 #. type: Plain text
7476 #: build/C/man2/perf_event_open.2:2613
7477 msgid ""
7478 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
7479 "occurred (in which case, I<errno> is set appropriately)."
7480 msgstr ""
7481
7482 #. type: Plain text
7483 #: build/C/man2/perf_event_open.2:2618
7484 msgid ""
7485 "The errors returned by B<perf_event_open>()  can be inconsistent, and may "
7486 "vary across processor architectures and performance monitoring units."
7487 msgstr ""
7488
7489 #. type: TP
7490 #: build/C/man2/perf_event_open.2:2618
7491 #, no-wrap
7492 msgid "B<E2BIG>"
7493 msgstr "B<E2BIG>"
7494
7495 #. type: Plain text
7496 #: build/C/man2/perf_event_open.2:2635
7497 msgid ""
7498 "Returned if the I<perf_event_attr> I<size> value is too small (smaller than "
7499 "B<PERF_ATTR_SIZE_VER0>), too big (larger than the page size), or larger than "
7500 "the kernel supports and the extra bytes are not zero.  When B<E2BIG> is "
7501 "returned, the I<perf_event_attr> I<size> field is overwritten by the kernel "
7502 "to be the size of the structure it was expecting."
7503 msgstr ""
7504
7505 #. type: Plain text
7506 #: build/C/man2/perf_event_open.2:2649
7507 msgid ""
7508 "Returned when the requested event requires B<CAP_SYS_ADMIN> permissions (or "
7509 "a more permissive perf_event paranoid setting).  Some common cases where an "
7510 "unprivileged process may encounter this error: attaching to a process owned "
7511 "by a different user; monitoring all processes on a given CPU (i.e., "
7512 "specifying the I<pid> argument as -1); and not setting I<exclude_kernel> "
7513 "when the paranoid setting requires it."
7514 msgstr ""
7515
7516 #. type: Plain text
7517 #: build/C/man2/perf_event_open.2:2659
7518 msgid ""
7519 "Returned if the I<group_fd> file descriptor is not valid, or, if "
7520 "B<PERF_FLAG_PID_CGROUP> is set, the cgroup file descriptor in I<pid> is not "
7521 "valid."
7522 msgstr ""
7523
7524 #. type: Plain text
7525 #: build/C/man2/perf_event_open.2:2664
7526 msgid "Returned if the I<attr> pointer points at an invalid memory address."
7527 msgstr ""
7528
7529 #. type: Plain text
7530 #: build/C/man2/perf_event_open.2:2690
7531 msgid ""
7532 "Returned if the specified event is invalid.  There are many possible reasons "
7533 "for this.  A not-exhaustive list: I<sample_freq> is higher than the maximum "
7534 "setting; the I<cpu> to monitor does not exist; I<read_format> is out of "
7535 "range; I<sample_type> is out of range; the I<flags> value is out of range; "
7536 "I<exclusive> or I<pinned> set and the event is not a group leader; the event "
7537 "I<config> values are out of range or set reserved bits; the generic event "
7538 "selected is not supported; or there is not enough room to add the selected "
7539 "event."
7540 msgstr ""
7541
7542 #. type: TP
7543 #: build/C/man2/perf_event_open.2:2690
7544 #, no-wrap
7545 msgid "B<EMFILE>"
7546 msgstr "B<EMFILE>"
7547
7548 #. type: Plain text
7549 #: build/C/man2/perf_event_open.2:2696
7550 msgid ""
7551 "Each opened event uses one file descriptor.  If a large number of events are "
7552 "opened the per-user file descriptor limit (often 1024) will be hit and no "
7553 "more events can be created."
7554 msgstr ""
7555
7556 #. type: Plain text
7557 #: build/C/man2/perf_event_open.2:2700
7558 msgid ""
7559 "Returned when the event involves a feature not supported by the current CPU."
7560 msgstr ""
7561
7562 #. type: TP
7563 #: build/C/man2/perf_event_open.2:2700 build/C/man2/quotactl.2:440
7564 #, no-wrap
7565 msgid "B<ENOENT>"
7566 msgstr "B<ENOENT>"
7567
7568 #. type: Plain text
7569 #: build/C/man2/perf_event_open.2:2707
7570 msgid ""
7571 "Returned if the I<type> setting is not valid.  This error is also returned "
7572 "for some unsupported generic events."
7573 msgstr ""
7574
7575 #. type: TP
7576 #: build/C/man2/perf_event_open.2:2707
7577 #, no-wrap
7578 msgid "B<ENOSPC>"
7579 msgstr "B<ENOSPC>"
7580
7581 #.  commit aa2bc1ade59003a379ffc485d6da2d92ea3370a6
7582 #. type: Plain text
7583 #: build/C/man2/perf_event_open.2:2718
7584 msgid ""
7585 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
7586 "was returned.  In Linux 3.3, this was changed to B<EINVAL>.  B<ENOSPC> is "
7587 "still returned if you try to add more breakpoint events than supported by "
7588 "the hardware."
7589 msgstr ""
7590
7591 #. type: Plain text
7592 #: build/C/man2/perf_event_open.2:2725
7593 msgid ""
7594 "Returned if B<PERF_SAMPLE_STACK_USER> is set in I<sample_type> and it is not "
7595 "supported by hardware."
7596 msgstr ""
7597
7598 #. type: Plain text
7599 #: build/C/man2/perf_event_open.2:2732
7600 msgid ""
7601 "Returned if an event requiring a specific hardware feature is requested but "
7602 "there is no hardware support.  This includes requesting low-skid events if "
7603 "not supported, branch tracing if it is not available, sampling if no PMU "
7604 "interrupt is available, and branch stacks for software events."
7605 msgstr ""
7606
7607 #. type: Plain text
7608 #: build/C/man2/perf_event_open.2:2737
7609 msgid ""
7610 "Returned on many (but not all) architectures when an unsupported "
7611 "I<exclude_hv>, I<exclude_idle>, I<exclude_user>, or I<exclude_kernel> "
7612 "setting is specified."
7613 msgstr ""
7614
7615 #.  commit a4e95fc2cbb31d70a65beffeaf8773f881328c34
7616 #. type: Plain text
7617 #: build/C/man2/perf_event_open.2:2746
7618 msgid ""
7619 "It can also happen, as with B<EACCES>, when the requested event requires "
7620 "B<CAP_SYS_ADMIN> permissions (or a more permissive perf_event paranoid "
7621 "setting).  This includes setting a breakpoint on a kernel address, and "
7622 "(since Linux 3.13) setting a kernel function-trace tracepoint."
7623 msgstr ""
7624
7625 #. type: Plain text
7626 #: build/C/man2/perf_event_open.2:2749
7627 msgid "Returned if attempting to attach to a process that does not exist."
7628 msgstr ""
7629
7630 #. type: SH
7631 #: build/C/man2/perf_event_open.2:2749
7632 #, no-wrap
7633 msgid "VERSION"
7634 msgstr "バージョン"
7635
7636 #.  commit 0793a61d4df8daeac6492dbf8d2f3e5713caae5e
7637 #.  commit cdd6c482c9ff9c55475ee7392ec8f672eddb7be6
7638 #. type: Plain text
7639 #: build/C/man2/perf_event_open.2:2756
7640 msgid ""
7641 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
7642 "B<perf_counter_open>().  It was renamed in Linux 2.6.32."
7643 msgstr ""
7644
7645 #. type: Plain text
7646 #: build/C/man2/perf_event_open.2:2761
7647 msgid ""
7648 "This B<perf_event_open>()  system call Linux- specific and should not be "
7649 "used in programs intended to be portable."
7650 msgstr ""
7651 "B<perf_event_open>() システムコールは Linux 固有であり、 移植を意図したプログ"
7652 "ラムで使用すべきではない。"
7653
7654 #. type: Plain text
7655 #: build/C/man2/perf_event_open.2:2765
7656 msgid ""
7657 "Glibc does not provide a wrapper for this system call; call it using "
7658 "B<syscall>(2).  See the example below."
7659 msgstr ""
7660 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
7661 "B<syscall>(2)  を使って呼び出すこと。 以下の例を参照。"
7662
7663 #. type: Plain text
7664 #: build/C/man2/perf_event_open.2:2771
7665 msgid ""
7666 "The official way of knowing if B<perf_event_open>()  support is enabled is "
7667 "checking for the existence of the file I</proc/sys/kernel/"
7668 "perf_event_paranoid>."
7669 msgstr ""
7670
7671 #. type: SH
7672 #: build/C/man2/perf_event_open.2:2771 build/C/man2/pivot_root.2:134
7673 #: build/C/man2/ptrace.2:2006
7674 #, no-wrap
7675 msgid "BUGS"
7676 msgstr "バグ"
7677
7678 #.  commit ba0a6c9f6fceed11c6a99e8326f0477fe383e6b5
7679 #. type: Plain text
7680 #: build/C/man2/perf_event_open.2:2779
7681 msgid ""
7682 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
7683 "signals in threads.  This was introduced in Linux 2.6.32."
7684 msgstr ""
7685
7686 #.  commit b690081d4d3f6a23541493f1682835c3cd5c54a1
7687 #. type: Plain text
7688 #: build/C/man2/perf_event_open.2:2789
7689 msgid ""
7690 "Prior to Linux 2.6.33 (at least for x86), the kernel did not check if events "
7691 "could be scheduled together until read time.  The same happens on all known "
7692 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
7693 "events works you have to B<perf_event_open>(), start, then read before you "
7694 "know for sure you can get valid measurements."
7695 msgstr ""
7696
7697 #.  FIXME: cannot find a kernel commit for this one
7698 #. type: Plain text
7699 #: build/C/man2/perf_event_open.2:2794
7700 msgid ""
7701 "Prior to Linux 2.6.34, event constraints were not enforced by the kernel.  "
7702 "In that case, some events would silently return \"0\" if the kernel "
7703 "scheduled them in an improper counter slot."
7704 msgstr ""
7705
7706 #.  commit 45e16a6834b6af098702e5ea6c9a40de42ff77d8
7707 #. type: Plain text
7708 #: build/C/man2/perf_event_open.2:2798
7709 msgid ""
7710 "Prior to Linux 2.6.34, there was a bug when multiplexing where the wrong "
7711 "results could be returned."
7712 msgstr ""
7713
7714 #.  commit 38b435b16c36b0d863efcf3f07b34a6fac9873fd
7715 #. type: Plain text
7716 #: build/C/man2/perf_event_open.2:2802
7717 msgid ""
7718 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
7719 "\"inherit\" is enabled and many threads are started."
7720 msgstr ""
7721
7722 #.  commit 050735b08ca8a016bbace4445fa025b88fee770b
7723 #. type: Plain text
7724 #: build/C/man2/perf_event_open.2:2807
7725 msgid ""
7726 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
7727 "processes."
7728 msgstr ""
7729
7730 #. type: Plain text
7731 #: build/C/man2/perf_event_open.2:2812
7732 msgid ""
7733 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
7734 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
7735 "This behavior is unsupported and should not be relied on."
7736 msgstr ""
7737
7738 #.  commit 4ec8363dfc1451f8c8f86825731fe712798ada02
7739 #. type: Plain text
7740 #: build/C/man2/perf_event_open.2:2819
7741 msgid ""
7742 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
7743 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
7744 "the union has a nonzero value in it."
7745 msgstr ""
7746
7747 #.  commit 724b6daa13e100067c30cfc4d1ad06629609dc4e
7748 #. type: Plain text
7749 #: build/C/man2/perf_event_open.2:2826
7750 msgid ""
7751 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
7752 "was broken and would repeatedly operate on the event specified rather than "
7753 "iterating across all sibling events in a group."
7754 msgstr ""
7755
7756 #.  commit fa7315871046b9a4c48627905691dbde57e51033
7757 #. type: Plain text
7758 #: build/C/man2/perf_event_open.2:2838
7759 msgid ""
7760 "From Linux 3.4 to Linux 3.11, the mmap I<cap_usr_rdpmc> and I<cap_usr_time> "
7761 "bits mapped to the same location.  Code should migrate to the new "
7762 "I<cap_user_rdpmc> and I<cap_user_time> fields instead."
7763 msgstr ""
7764
7765 #.  commit f287d332ce835f77a4f5077d2c0ef1e3f9ea42d2
7766 #. type: Plain text
7767 #: build/C/man2/perf_event_open.2:2844
7768 msgid ""
7769 "Always double-check your results! Various generalized events have had wrong "
7770 "values.  For example, retired branches measured the wrong thing on AMD "
7771 "machines until Linux 2.6.35."
7772 msgstr ""
7773
7774 #. type: SH
7775 #: build/C/man2/perf_event_open.2:2844 build/C/man2/process_vm_readv.2:311
7776 #: build/C/man2/splice.2:237 build/C/man2/tee.2:136
7777 #, no-wrap
7778 msgid "EXAMPLE"
7779 msgstr "例"
7780
7781 #. type: Plain text
7782 #: build/C/man2/perf_event_open.2:2848
7783 msgid ""
7784 "The following is a short example that measures the total instruction count "
7785 "of a call to B<printf>(3)."
7786 msgstr ""
7787
7788 #. type: Plain text
7789 #: build/C/man2/perf_event_open.2:2857
7790 #, no-wrap
7791 msgid ""
7792 "#include E<lt>stdlib.hE<gt>\n"
7793 "#include E<lt>stdio.hE<gt>\n"
7794 "#include E<lt>unistd.hE<gt>\n"
7795 "#include E<lt>string.hE<gt>\n"
7796 "#include E<lt>sys/ioctl.hE<gt>\n"
7797 "#include E<lt>linux/perf_event.hE<gt>\n"
7798 "#include E<lt>asm/unistd.hE<gt>\n"
7799 msgstr ""
7800 "#include E<lt>stdlib.hE<gt>\n"
7801 "#include E<lt>stdio.hE<gt>\n"
7802 "#include E<lt>unistd.hE<gt>\n"
7803 "#include E<lt>string.hE<gt>\n"
7804 "#include E<lt>sys/ioctl.hE<gt>\n"
7805 "#include E<lt>linux/perf_event.hE<gt>\n"
7806 "#include E<lt>asm/unistd.hE<gt>\n"
7807
7808 #. type: Plain text
7809 #: build/C/man2/perf_event_open.2:2863
7810 #, no-wrap
7811 msgid ""
7812 "static long\n"
7813 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7814 "                int cpu, int group_fd, unsigned long flags)\n"
7815 "{\n"
7816 "    int ret;\n"
7817 msgstr ""
7818 "static long\n"
7819 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
7820 "                int cpu, int group_fd, unsigned long flags)\n"
7821 "{\n"
7822 "    int ret;\n"
7823
7824 #. type: Plain text
7825 #: build/C/man2/perf_event_open.2:2868
7826 #, no-wrap
7827 msgid ""
7828 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7829 "                   group_fd, flags);\n"
7830 "    return ret;\n"
7831 "}\n"
7832 msgstr ""
7833 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
7834 "                   group_fd, flags);\n"
7835 "    return ret;\n"
7836 "}\n"
7837
7838 #. type: Plain text
7839 #: build/C/man2/perf_event_open.2:2875
7840 #, no-wrap
7841 msgid ""
7842 "int\n"
7843 "main(int argc, char **argv)\n"
7844 "{\n"
7845 "    struct perf_event_attr pe;\n"
7846 "    long long count;\n"
7847 "    int fd;\n"
7848 msgstr ""
7849 "int\n"
7850 "main(int argc, char **argv)\n"
7851 "{\n"
7852 "    struct perf_event_attr pe;\n"
7853 "    long long count;\n"
7854 "    int fd;\n"
7855
7856 #. type: Plain text
7857 #: build/C/man2/perf_event_open.2:2883
7858 #, no-wrap
7859 msgid ""
7860 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7861 "    pe.type = PERF_TYPE_HARDWARE;\n"
7862 "    pe.size = sizeof(struct perf_event_attr);\n"
7863 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7864 "    pe.disabled = 1;\n"
7865 "    pe.exclude_kernel = 1;\n"
7866 "    pe.exclude_hv = 1;\n"
7867 msgstr ""
7868 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
7869 "    pe.type = PERF_TYPE_HARDWARE;\n"
7870 "    pe.size = sizeof(struct perf_event_attr);\n"
7871 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
7872 "    pe.disabled = 1;\n"
7873 "    pe.exclude_kernel = 1;\n"
7874 "    pe.exclude_hv = 1;\n"
7875
7876 #. type: Plain text
7877 #: build/C/man2/perf_event_open.2:2889
7878 #, no-wrap
7879 msgid ""
7880 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7881 "    if (fd == -1) {\n"
7882 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7883 "       exit(EXIT_FAILURE);\n"
7884 "    }\n"
7885 msgstr ""
7886 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
7887 "    if (fd == -1) {\n"
7888 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
7889 "       exit(EXIT_FAILURE);\n"
7890 "    }\n"
7891
7892 #. type: Plain text
7893 #: build/C/man2/perf_event_open.2:2892
7894 #, no-wrap
7895 msgid ""
7896 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7897 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7898 msgstr ""
7899 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
7900 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
7901
7902 #. type: Plain text
7903 #: build/C/man2/perf_event_open.2:2894
7904 #, no-wrap
7905 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
7906 msgstr "    printf(\"Measuring instruction count for this printf\\en\");\n"
7907
7908 #. type: Plain text
7909 #: build/C/man2/perf_event_open.2:2897
7910 #, no-wrap
7911 msgid ""
7912 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7913 "    read(fd, &count, sizeof(long long));\n"
7914 msgstr ""
7915 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
7916 "    read(fd, &count, sizeof(long long));\n"
7917
7918 #. type: Plain text
7919 #: build/C/man2/perf_event_open.2:2899
7920 #, no-wrap
7921 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
7922 msgstr "    printf(\"Used %lld instructions\\en\", count);\n"
7923
7924 #. type: Plain text
7925 #: build/C/man2/perf_event_open.2:2902
7926 #, no-wrap
7927 msgid ""
7928 "    close(fd);\n"
7929 "}\n"
7930 msgstr ""
7931 "    close(fd);\n"
7932 "}\n"
7933
7934 #. type: Plain text
7935 #: build/C/man2/perf_event_open.2:2909
7936 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7937 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
7938
7939 #. type: TH
7940 #: build/C/man2/perfmonctl.2:27
7941 #, no-wrap
7942 msgid "PERFMONCTL"
7943 msgstr "PERFMONCTL"
7944
7945 #. type: TH
7946 #: build/C/man2/perfmonctl.2:27
7947 #, no-wrap
7948 msgid "2013-02-13"
7949 msgstr "2013-02-13"
7950
7951 #. type: Plain text
7952 #: build/C/man2/perfmonctl.2:30
7953 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
7954 msgstr "perfmonctl - IA-64 の PMU (性能監視ユニット) のインターフェース"
7955
7956 #. type: Plain text
7957 #: build/C/man2/perfmonctl.2:34
7958 #, no-wrap
7959 msgid ""
7960 "B<#include E<lt>syscall.hE<gt>>\n"
7961 "B<#include E<lt>perfmon.hE<gt>>\n"
7962 msgstr ""
7963 "B<#include E<lt>syscall.hE<gt>>\n"
7964 "B<#include E<lt>perfmon.hE<gt>>\n"
7965
7966 #. type: Plain text
7967 #: build/C/man2/perfmonctl.2:36
7968 #, no-wrap
7969 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7970 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
7971
7972 #. type: Plain text
7973 #: build/C/man2/perfmonctl.2:47
7974 msgid ""
7975 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
7976 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
7977 "monitoring data) registers and PMC (performance monitoring control) "
7978 "registers, which gather hardware statistics."
7979 msgstr ""
7980 "IA-64 固有の B<perfmonctl>() システムコールは PMU (性能監視ユニット; "
7981 "performance monitoring unit) へのインターフェースを提供する。 PMU は PMD "
7982 "(performance monitoring data) レジスターと PMC (performance monitoring "
7983 "control) レジスターで構成され、 ハードウェアの統計を収集する。"
7984
7985 #. type: Plain text
7986 #: build/C/man2/perfmonctl.2:57
7987 msgid ""
7988 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
7989 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
7990 "I<fd> argument specifies the perfmon context to operate on."
7991 msgstr ""
7992 "B<perfmonctl>() は、 操作 I<cmd> を I<arg> で指定された入力引き数で行う。 引"
7993 "き数の数は I<narg> で規定される。 I<fd> 引き数は操作対象の perfmon コンテキス"
7994 "トを指定する。"
7995
7996 #. type: Plain text
7997 #: build/C/man2/perfmonctl.2:61
7998 msgid "Supported values for I<cmd> are:"
7999 msgstr "I<cmd> に指定できる値は以下のとおりである。"
8000
8001 #. type: TP
8002 #: build/C/man2/perfmonctl.2:61
8003 #, no-wrap
8004 msgid "B<PFM_CREATE_CONTEXT>"
8005 msgstr "B<PFM_CREATE_CONTEXT>"
8006
8007 #. type: Plain text
8008 #: build/C/man2/perfmonctl.2:65
8009 #, no-wrap
8010 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
8011 msgstr "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
8012
8013 #. type: Plain text
8014 #: build/C/man2/perfmonctl.2:67
8015 msgid "Set up a context."
8016 msgstr "コンテキストを用意する。"
8017
8018 #. type: Plain text
8019 #: build/C/man2/perfmonctl.2:74
8020 msgid ""
8021 "The I<fd> parameter is ignored.  A new perfmon context is created as "
8022 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
8023 "E<gt>ctx_fd>."
8024 msgstr ""
8025 "I<fd> 引き数は無視される。 新しい perfmon コンテキストを I<ctxt> で指定した内"
8026 "容で作成し、 そのファイルディスクリプターを I<ctxt-E<gt>ctx_fd> で返す。"
8027
8028 #. type: Plain text
8029 #: build/C/man2/perfmonctl.2:86
8030 msgid ""
8031 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
8032 "can be used to read event notifications (type I<pfm_msg_t>)  using "
8033 "B<read>(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), "
8034 "and B<epoll>(7)."
8035 msgstr ""
8036 "ファイルディスクリプターはそれ以降の B<perfmonctl>() の呼び出しで使用した"
8037 "り、 B<read>(2) を使ってイベント通知 (I<pfm_msg_t> 型) を読み出したりするのに"
8038 "使用できる。 このファイルディスクリプターは B<select>(2), B<poll>(2), "
8039 "B<epoll>(7) で状態監視 (ポーリング) することができる。"
8040
8041 #. type: Plain text
8042 #: build/C/man2/perfmonctl.2:90
8043 msgid ""
8044 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
8045 msgstr ""
8046 "コンテキストを破棄するには、 そのファイルディスクリプターに対して "
8047 "B<close>(2) を呼び出す。"
8048
8049 #. type: TP
8050 #: build/C/man2/perfmonctl.2:90
8051 #, no-wrap
8052 msgid "B<PFM_WRITE_PMCS>"
8053 msgstr "B<PFM_WRITE_PMCS>"
8054
8055 #. type: Plain text
8056 #: build/C/man2/perfmonctl.2:95
8057 #, no-wrap
8058 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
8059 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
8060
8061 #. type: Plain text
8062 #: build/C/man2/perfmonctl.2:97
8063 msgid "Set PMC registers."
8064 msgstr "PMC レジスターを設定する。"
8065
8066 #. type: TP
8067 #: build/C/man2/perfmonctl.2:97
8068 #, no-wrap
8069 msgid "B<PFM_WRITE_PMDS>"
8070 msgstr "B<PFM_WRITE_PMDS>"
8071
8072 #. type: Plain text
8073 #: build/C/man2/perfmonctl.2:101
8074 #, no-wrap
8075 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
8076 msgstr "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
8077
8078 #.  pfm_write_pmds()
8079 #. type: Plain text
8080 #: build/C/man2/perfmonctl.2:104
8081 msgid "Set PMD registers."
8082 msgstr "PMD レジスターを設定する。"
8083
8084 #. type: TP
8085 #: build/C/man2/perfmonctl.2:104
8086 #, no-wrap
8087 msgid "B<PFM_READ_PMDS>"
8088 msgstr "B<PFM_READ_PMDS>"
8089
8090 #. type: Plain text
8091 #: build/C/man2/perfmonctl.2:109
8092 #, no-wrap
8093 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
8094 msgstr "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
8095
8096 #. type: Plain text
8097 #: build/C/man2/perfmonctl.2:111
8098 msgid "Read PMD registers."
8099 msgstr "PMD レジスターを読み出す。"
8100
8101 #. type: TP
8102 #: build/C/man2/perfmonctl.2:111
8103 #, no-wrap
8104 msgid "B<PFM_START>"
8105 msgstr "B<PFM_START>"
8106
8107 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
8108 #. type: Plain text
8109 #: build/C/man2/perfmonctl.2:117
8110 #, no-wrap
8111 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
8112 msgstr "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
8113
8114 #. type: Plain text
8115 #: build/C/man2/perfmonctl.2:119
8116 msgid "Start monitoring."
8117 msgstr "監視を開始する。"
8118
8119 #. type: TP
8120 #: build/C/man2/perfmonctl.2:119
8121 #, no-wrap
8122 msgid "B<PFM_STOP>"
8123 msgstr "B<PFM_STOP>"
8124
8125 #. type: Plain text
8126 #: build/C/man2/perfmonctl.2:124
8127 #, no-wrap
8128 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
8129 msgstr "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
8130
8131 #. type: Plain text
8132 #: build/C/man2/perfmonctl.2:126
8133 msgid "Stop monitoring."
8134 msgstr "監視を停止する。"
8135
8136 #. type: TP
8137 #: build/C/man2/perfmonctl.2:126
8138 #, no-wrap
8139 msgid "B<PFM_LOAD_CONTEXT>"
8140 msgstr "B<PFM_LOAD_CONTEXT>"
8141
8142 #. type: Plain text
8143 #: build/C/man2/perfmonctl.2:131
8144 #, no-wrap
8145 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
8146 msgstr "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
8147
8148 #. type: Plain text
8149 #: build/C/man2/perfmonctl.2:133
8150 msgid "Attach the context to a thread."
8151 msgstr "指定したコンテキストをスレッドに接続する。"
8152
8153 #. type: TP
8154 #: build/C/man2/perfmonctl.2:133
8155 #, no-wrap
8156 msgid "B<PFM_UNLOAD_CONTEXT>"
8157 msgstr "B<PFM_UNLOAD_CONTEXT>"
8158
8159 #. type: Plain text
8160 #: build/C/man2/perfmonctl.2:138
8161 #, no-wrap
8162 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
8163 msgstr "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
8164
8165 #. type: Plain text
8166 #: build/C/man2/perfmonctl.2:140
8167 msgid "Detach the context from a thread."
8168 msgstr "指定したコンテキストをスレッドが切り離す。"
8169
8170 #. type: TP
8171 #: build/C/man2/perfmonctl.2:140
8172 #, no-wrap
8173 msgid "B<PFM_RESTART>"
8174 msgstr "B<PFM_RESTART>"
8175
8176 #. type: Plain text
8177 #: build/C/man2/perfmonctl.2:145
8178 #, no-wrap
8179 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
8180 msgstr "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
8181
8182 #. type: Plain text
8183 #: build/C/man2/perfmonctl.2:147
8184 msgid "Restart monitoring after receiving an overflow notification."
8185 msgstr "オーバーフロー通知を受信した後、 監視を再開する。"
8186
8187 #. type: TP
8188 #: build/C/man2/perfmonctl.2:147
8189 #, no-wrap
8190 msgid "B<PFM_GET_FEATURES>"
8191 msgstr "B<PFM_GET_FEATURES>"
8192
8193 #. type: Plain text
8194 #: build/C/man2/perfmonctl.2:152
8195 #, no-wrap
8196 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
8197 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
8198
8199 #. type: TP
8200 #: build/C/man2/perfmonctl.2:153
8201 #, no-wrap
8202 msgid "B<PFM_DEBUG>"
8203 msgstr "B<PFM_DEBUG>"
8204
8205 #. type: Plain text
8206 #: build/C/man2/perfmonctl.2:158
8207 #, no-wrap
8208 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
8209 msgstr "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
8210
8211 #. type: Plain text
8212 #: build/C/man2/perfmonctl.2:162
8213 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
8214 msgstr ""
8215 "I<val> が 0 以外の場合、デバッグモードを有効にする。 そうでない場合、 無効に"
8216 "する。"
8217
8218 #. type: TP
8219 #: build/C/man2/perfmonctl.2:162
8220 #, no-wrap
8221 msgid "B<PFM_GET_PMC_RESET_VAL>"
8222 msgstr "B<PFM_GET_PMC_RESET_VAL>"
8223
8224 #. type: Plain text
8225 #: build/C/man2/perfmonctl.2:167
8226 #, no-wrap
8227 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
8228 msgstr "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
8229
8230 #
8231 #
8232 #
8233 #.  .TP
8234 #.  .B PFM_CREATE_EVTSETS
8235 #.  create or modify event sets
8236 #.  .nf
8237 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
8238 #.  .fi
8239 #.  .TP
8240 #.  .B PFM_DELETE_EVTSETS
8241 #.  delete event sets
8242 #.  .nf
8243 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
8244 #.  .fi
8245 #.  .TP
8246 #.  .B PFM_GETINFO_EVTSETS
8247 #.  get information about event sets
8248 #.  .nf
8249 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
8250 #.  .fi
8251 #. type: Plain text
8252 #: build/C/man2/perfmonctl.2:190
8253 msgid "Reset PMC registers to default values."
8254 msgstr "PMC レジスターをデフォルト値にリセットする。"
8255
8256 #. type: Plain text
8257 #: build/C/man2/perfmonctl.2:196
8258 msgid ""
8259 "B<perfmonctl>()  returns zero when the operation is successful.  On error, "
8260 "-1 is returned and I<errno> is set to indicate the cause of the error."
8261 msgstr ""
8262 "B<perfmonctl>() は操作が成功すると 0 を返す。 エラーの場合、 -1 が返り、 "
8263 "I<errno> にエラーの原因を示す値が設定される。"
8264
8265 #. type: Plain text
8266 #: build/C/man2/perfmonctl.2:199
8267 msgid "B<perfmonctl>()  is available since Linux 2.4."
8268 msgstr "B<perfmonctl>() は Linux 2.4 以降で利用可能である。"
8269
8270 #. type: Plain text
8271 #: build/C/man2/perfmonctl.2:202
8272 msgid ""
8273 "B<perfmonctl>()  is Linux-specific and is available only on the IA-64 "
8274 "architecture."
8275 msgstr ""
8276 "B<perfmonctl>() は Linux 固有で、 IA-64 アーキテクチャーでのみ利用できる。"
8277
8278 #. type: Plain text
8279 #: build/C/man2/perfmonctl.2:207
8280 msgid "B<gprof>(1)"
8281 msgstr "B<gprof>(1)"
8282
8283 #. type: Plain text
8284 #: build/C/man2/perfmonctl.2:209
8285 msgid "The perfmon2 interface specification"
8286 msgstr "perfmon2 インターフェース仕様"
8287
8288 #. type: TH
8289 #: build/C/man2/personality.2:32
8290 #, no-wrap
8291 msgid "PERSONALITY"
8292 msgstr "PERSONALITY"
8293
8294 #. type: Plain text
8295 #: build/C/man2/personality.2:35
8296 msgid "personality - set the process execution domain"
8297 msgstr "personality - プロセスを実行するドメインを設定する"
8298
8299 #. type: Plain text
8300 #: build/C/man2/personality.2:37
8301 msgid "B<#include E<lt>sys/personality.hE<gt>>"
8302 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
8303
8304 #. type: Plain text
8305 #: build/C/man2/personality.2:39
8306 msgid "B<int personality(unsigned long >I<persona>B<);>"
8307 msgstr "B<int personality(unsigned long >I<persona>B<);>"
8308
8309 #. type: Plain text
8310 #: build/C/man2/personality.2:47
8311 msgid ""
8312 "Linux supports different execution domains, or personalities, for each "
8313 "process.  Among other things, execution domains tell Linux how to map signal "
8314 "numbers into signal actions.  The execution domain system allows Linux to "
8315 "provide limited support for binaries compiled under other UNIX-like "
8316 "operating systems."
8317 msgstr ""
8318 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
8319 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
8320 "シグナルを割り付けるかを 教えたりする。また、実行ドメインシステムにより、 "
8321 "Linux は、 他の UNIX 風のオペレーティングシステムでコンパイルされたバイナリに"
8322 "対する限定的なサポートを提供している。"
8323
8324 #. type: Plain text
8325 #: build/C/man2/personality.2:59
8326 msgid ""
8327 "If I<persona> is not 0xffffffff, then B<personality>()  sets the caller's "
8328 "execution domain to the value specified by I<persona>.  Specifying "
8329 "I<persona> as 0xffffffff provides a way of retrieving the current persona "
8330 "without changing it."
8331 msgstr ""
8332 "I<persona> が 0xffffffff 以外の場合、 B<personality>() は呼び出し元の実行ドメ"
8333 "インを I<persona> で指定された値に設定する。 I<persona> に 0xffffffff を指定"
8334 "すると、変更を行わず、現在の persona 値を取得できる。"
8335
8336 #. type: Plain text
8337 #: build/C/man2/personality.2:62
8338 msgid ""
8339 "A list of the available execution domains can be found in I<E<lt>sys/"
8340 "personality.hE<gt>>."
8341 msgstr ""
8342 "利用可能な実行ドメインのリストは I<E<lt>sys/personality.hE<gt>> にある。"
8343
8344 #. type: Plain text
8345 #: build/C/man2/personality.2:69
8346 msgid ""
8347 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
8348 "and I<errno> is set appropriately."
8349 msgstr ""
8350 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
8351 "I<errno> が適切に設定される。"
8352
8353 #. type: Plain text
8354 #: build/C/man2/personality.2:73
8355 msgid "The kernel was unable to change the personality."
8356 msgstr "カーネルがパーソナリティを変更できなかった。"
8357
8358 #. type: Plain text
8359 #: build/C/man2/personality.2:77
8360 msgid ""
8361 "B<personality>()  is Linux-specific and should not be used in programs "
8362 "intended to be portable."
8363 msgstr ""
8364 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
8365 "はない。"
8366
8367 #. type: Plain text
8368 #: build/C/man2/personality.2:79
8369 msgid "B<setarch>(8)"
8370 msgstr ""
8371
8372 #. type: TH
8373 #: build/C/man2/pivot_root.2:10
8374 #, no-wrap
8375 msgid "PIVOT_ROOT"
8376 msgstr "PIVOT_ROOT"
8377
8378 #. type: Plain text
8379 #: build/C/man2/pivot_root.2:13
8380 msgid "pivot_root - change the root filesystem"
8381 msgstr "pivot_root - root ファイルシステムを変更する"
8382
8383 #. type: Plain text
8384 #: build/C/man2/pivot_root.2:15
8385 msgid ""
8386 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8387 msgstr ""
8388 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
8389
8390 #.  The
8391 #.  .B CAP_SYS_ADMIN
8392 #.  capability is required.
8393 #. type: Plain text
8394 #: build/C/man2/pivot_root.2:27
8395 msgid ""
8396 "B<pivot_root>()  moves the root filesystem of the calling process to the "
8397 "directory I<put_old> and makes I<new_root> the new root filesystem of the "
8398 "calling process."
8399 msgstr ""
8400 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
8401 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
8402 "ルシステムにする。"
8403
8404 #. type: Plain text
8405 #: build/C/man2/pivot_root.2:34
8406 msgid ""
8407 "The typical use of B<pivot_root>()  is during system startup, when the "
8408 "system mounts a temporary root filesystem (e.g., an B<initrd>), then mounts "
8409 "the real root filesystem, and eventually turns the latter into the current "
8410 "root of all relevant processes or threads."
8411 msgstr ""
8412 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
8413 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
8414 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
8415 "レント root に変更するような場合である。"
8416
8417 #. type: Plain text
8418 #: build/C/man2/pivot_root.2:46
8419 msgid ""
8420 "B<pivot_root>()  may or may not change the current root and the current "
8421 "working directory of any processes or threads which use the old root "
8422 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
8423 "root or current working directory at the old root operate correctly in "
8424 "either case.  An easy way to ensure this is to change their root and current "
8425 "working directory to I<new_root> before invoking B<pivot_root>()."
8426 msgstr ""
8427 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
8428 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
8429 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
8430 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
8431 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
8432 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
8433 "更しておくことである。"
8434
8435 #. type: Plain text
8436 #: build/C/man2/pivot_root.2:64
8437 msgid ""
8438 "The paragraph above is intentionally vague because the implementation of "
8439 "B<pivot_root>()  may change in the future.  At the time of writing, "
8440 "B<pivot_root>()  changes root and current working directory of each process "
8441 "or thread to I<new_root> if they point to the old root directory.  This is "
8442 "necessary in order to prevent kernel threads from keeping the old root "
8443 "directory busy with their root and current working directory, even if they "
8444 "never access the filesystem in any way.  In the future, there may be a "
8445 "mechanism for kernel threads to explicitly relinquish any access to the "
8446 "filesystem, such that this fairly intrusive mechanism can be removed from "
8447 "B<pivot_root>()."
8448 msgstr ""
8449 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
8450 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
8451 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
8452 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
8453 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
8454 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
8455 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
8456 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
8457 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
8458 "除されるかもしれない。"
8459
8460 #. type: Plain text
8461 #: build/C/man2/pivot_root.2:72
8462 msgid ""
8463 "Note that this also applies to the calling process: B<pivot_root>()  may or "
8464 "may not affect its current working directory.  It is therefore recommended "
8465 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
8466 msgstr ""
8467 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
8468 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
8469 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
8470
8471 #. type: Plain text
8472 #: build/C/man2/pivot_root.2:74
8473 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
8474 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
8475
8476 #. type: IP
8477 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
8478 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
8479 #, no-wrap
8480 msgid "-"
8481 msgstr "-"
8482
8483 #. type: Plain text
8484 #: build/C/man2/pivot_root.2:76
8485 msgid "They must be directories."
8486 msgstr "ディレクトリでなければならない。"
8487
8488 #. type: Plain text
8489 #: build/C/man2/pivot_root.2:79
8490 msgid ""
8491 "I<new_root> and I<put_old> must not be on the same filesystem as the current "
8492 "root."
8493 msgstr ""
8494 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
8495 "ない。"
8496
8497 #. type: Plain text
8498 #: build/C/man2/pivot_root.2:83
8499 msgid ""
8500 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
8501 "of I</..> to the string pointed to by I<put_old> must yield the same "
8502 "directory as I<new_root>."
8503 msgstr ""
8504 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
8505 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
8506 "リが得られなければならない。"
8507
8508 #. type: Plain text
8509 #: build/C/man2/pivot_root.2:85
8510 msgid "No other filesystem may be mounted on I<put_old>."
8511 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
8512
8513 #. type: Plain text
8514 #: build/C/man2/pivot_root.2:89
8515 msgid "See also B<pivot_root>(8)  for additional usage examples."
8516 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
8517
8518 #. type: Plain text
8519 #: build/C/man2/pivot_root.2:96
8520 msgid ""
8521 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
8522 "B<pivot_root>(), see also below), not the old root directory, but the mount "
8523 "point of that filesystem is mounted on I<put_old>."
8524 msgstr ""
8525 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
8526 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
8527 "テムのマウントポイントが I<put_old> にマウントされる。"
8528
8529 #. type: Plain text
8530 #: build/C/man2/pivot_root.2:101
8531 msgid ""
8532 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
8533 "mounts> will show the mount point of the filesystem containing I<new_root> "
8534 "as root (I</>)."
8535 msgstr ""
8536 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
8537 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
8538 "る。"
8539
8540 #. type: Plain text
8541 #: build/C/man2/pivot_root.2:110
8542 msgid ""
8543 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
8544 "B<stat>(2).  Additionally, it may return:"
8545 msgstr ""
8546 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
8547 "性がある。さらに以下を返すことがある:"
8548
8549 #. type: Plain text
8550 #: build/C/man2/pivot_root.2:114
8551 msgid ""
8552 "I<new_root> or I<put_old> are on the current root filesystem, or a "
8553 "filesystem is already mounted on I<put_old>."
8554 msgstr ""
8555 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
8556 "に I<put_old> になんらかのファイルシステムがマウントされている。"
8557
8558 #. type: Plain text
8559 #: build/C/man2/pivot_root.2:117
8560 msgid "I<put_old> is not underneath I<new_root>."
8561 msgstr "I<put_old> が I<new_root> の下層にない。"
8562
8563 #. type: TP
8564 #: build/C/man2/pivot_root.2:117
8565 #, no-wrap
8566 msgid "B<ENOTDIR>"
8567 msgstr "B<ENOTDIR>"
8568
8569 #. type: Plain text
8570 #: build/C/man2/pivot_root.2:120
8571 msgid "I<new_root> or I<put_old> is not a directory."
8572 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
8573
8574 #. type: Plain text
8575 #: build/C/man2/pivot_root.2:125
8576 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
8577 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
8578
8579 #. type: Plain text
8580 #: build/C/man2/pivot_root.2:128
8581 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
8582 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
8583
8584 #. type: Plain text
8585 #: build/C/man2/pivot_root.2:131
8586 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
8587 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
8588
8589 #. type: Plain text
8590 #: build/C/man2/pivot_root.2:138
8591 msgid ""
8592 "B<pivot_root>()  should not have to change root and current working "
8593 "directory of all other processes in the system."
8594 msgstr ""
8595 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
8596 "ディレクトリとを変更しなくてもよいはずである。"
8597
8598 #. type: Plain text
8599 #: build/C/man2/pivot_root.2:143
8600 msgid ""
8601 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
8602 "insanity."
8603 msgstr ""
8604 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
8605 "からない状態になってしまうだろう"
8606
8607 #. type: Plain text
8608 #: build/C/man2/pivot_root.2:149
8609 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8610 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
8611
8612 #. type: TH
8613 #: build/C/man2/process_vm_readv.2:29
8614 #, no-wrap
8615 msgid "PROCESS_VM_READV"
8616 msgstr "PROCESS_VM_READV"
8617
8618 #. type: TH
8619 #: build/C/man2/process_vm_readv.2:29
8620 #, no-wrap
8621 msgid "2014-08-19"
8622 msgstr "2014-08-19"
8623
8624 #. type: Plain text
8625 #: build/C/man2/process_vm_readv.2:32
8626 msgid ""
8627 "process_vm_readv, process_vm_writev - transfer data between process address "
8628 "spaces"
8629 msgstr ""
8630 "process_vm_readv, process_vm_writev - プロセスのアドレス空間間でデータを転送"
8631 "する"
8632
8633 #. type: Plain text
8634 #: build/C/man2/process_vm_readv.2:35
8635 #, no-wrap
8636 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
8637 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
8638
8639 #. type: Plain text
8640 #: build/C/man2/process_vm_readv.2:42
8641 #, no-wrap
8642 msgid ""
8643 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8644 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8645 "B<                         unsigned long >I<liovcnt>B<,>\n"
8646 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8647 "B<                         unsigned long >I<riovcnt>B<,>\n"
8648 "B<                         unsigned long >I<flags>B<);>\n"
8649 msgstr ""
8650 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
8651 "B<                         const struct iovec *>I<local_iov>B<,>\n"
8652 "B<                         unsigned long >I<liovcnt>B<,>\n"
8653 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
8654 "B<                         unsigned long >I<riovcnt>B<,>\n"
8655 "B<                         unsigned long >I<flags>B<);>\n"
8656
8657 #. type: Plain text
8658 #: build/C/man2/process_vm_readv.2:49
8659 #, no-wrap
8660 msgid ""
8661 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8662 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8663 "B<                          unsigned long >I<liovcnt>B<,>\n"
8664 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8665 "B<                          unsigned long >I<riovcnt>B<,>\n"
8666 "B<                          unsigned long >I<flags>B<);>\n"
8667 msgstr ""
8668 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
8669 "B<                          const struct iovec *>I<local_iov>B<,>\n"
8670 "B<                          unsigned long >I<liovcnt>B<,>\n"
8671 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
8672 "B<                          unsigned long >I<riovcnt>B<,>\n"
8673 "B<                          unsigned long >I<flags>B<);>\n"
8674
8675 #. type: Plain text
8676 #: build/C/man2/process_vm_readv.2:54
8677 msgid ""
8678 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
8679 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7) 参照):"
8680
8681 #. type: Plain text
8682 #: build/C/man2/process_vm_readv.2:58
8683 msgid "B<process_vm_readv>(), B<process_vm_writev>():"
8684 msgstr "B<process_vm_readv>(), B<process_vm_writev>():"
8685
8686 #. type: Plain text
8687 #: build/C/man2/process_vm_readv.2:62
8688 msgid "B<_GNU_SOURCE>"
8689 msgstr "B<_GNU_SOURCE>"
8690
8691 #. type: Plain text
8692 #: build/C/man2/process_vm_readv.2:73
8693 msgid ""
8694 "These system calls transfer data between the address space of the calling "
8695 "process (\"the local process\") and the process identified by I<pid> (\"the "
8696 "remote process\").  The data moves directly between the address spaces of "
8697 "the two processes, without passing through kernel space."
8698 msgstr ""
8699 "これらのシステムコールは、 呼び出し元プロセス (「ローカルプロセス」) と "
8700 "I<pid> で指定されるプロセス (「リモートプロセス」) のアドレス空間間でデータを"
8701 "転送する。 データの移動は、 カーネル空間を経由することなく、 2 つのプロセスの"
8702 "アドレス空間間で直接行われる。"
8703
8704 #. type: Plain text
8705 #: build/C/man2/process_vm_readv.2:98
8706 msgid ""
8707 "The B<process_vm_readv>()  system call transfers data from the remote "
8708 "process to the local process.  The data to be transferred is identified by "
8709 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
8710 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
8711 "the number of elements in I<remote_iov>.  The data is transferred to the "
8712 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
8713 "pointer to an array describing address ranges in the calling process, and "
8714 "I<liovcnt> specifies the number of elements in I<local_iov>."
8715 msgstr ""
8716 "B<process_vm_readv>() システムコールは、 リモートプロセスからローカルプロセス"
8717 "へデータを転送する。 転送対象のデータは I<remote_iov> と I<riovcnt> で指定さ"
8718 "れる。 I<remote_iov> はプロセス I<pid> におけるアドレス範囲を指定する配列への"
8719 "ポインターで、 I<riovcnt> は I<remote_iov> の要素数を指定する。 データは "
8720 "I<local_iov> と I<liovcnt> で指定された場所に転送される。 I<local_iov> は呼び"
8721 "出し元プロセスにおけるアドレス範囲を指定する配列で、 I<liovcnt> は "
8722 "I<local_iov> の要素数を指定する。"
8723
8724 #. type: Plain text
8725 #: build/C/man2/process_vm_readv.2:112
8726 msgid ""
8727 "The B<process_vm_writev>()  system call is the converse of "
8728 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
8729 "remote process.  Other than the direction of the transfer, the arguments "
8730 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
8731 "meaning as for B<process_vm_readv>()."
8732 msgstr ""
8733 "B<process_vm_writev>() システムコールは B<process_vm_readv>() の逆で、 ローカ"
8734 "ルプロセスからリモートプロセスにデータを転送する。 転送の方向が違う以外は、 "
8735 "引き数 I<liovcnt>, I<local_iov>, I<riovcnt>, I<remote_iov> は "
8736 "B<process_vm_readv>() と同じ意味を持つ。"
8737
8738 #. type: Plain text
8739 #: build/C/man2/process_vm_readv.2:122
8740 msgid ""
8741 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
8742 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
8743 msgstr ""
8744 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
8745 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
8746 "されている:"
8747
8748 #. type: Plain text
8749 #: build/C/man2/process_vm_readv.2:129
8750 #, no-wrap
8751 msgid ""
8752 "struct iovec {\n"
8753 "    void  *iov_base;    /* Starting address */\n"
8754 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8755 "};\n"
8756 msgstr ""
8757 "struct iovec {\n"
8758 "    void  *iov_base;    /* Starting address */\n"
8759 "    size_t iov_len;     /* Number of bytes to transfer */\n"
8760 "};\n"
8761
8762 #. type: Plain text
8763 #: build/C/man2/process_vm_readv.2:145
8764 msgid ""
8765 "Buffers are processed in array order.  This means that "
8766 "B<process_vm_readv>()  completely fills I<local_iov[0]> before proceeding to "
8767 "I<local_iov[1]>, and so on.  Likewise, I<remote_iov[0]> is completely read "
8768 "before proceeding to I<remote_iov[1]>, and so on."
8769 msgstr ""
8770 "バッファーは配列の順序で処理される。 つまり、 B<process_vm_readv>() は "
8771 "I<local_iov>[0] が一杯になるまでデータを詰めてから、 I<local_iov>[1] に進むこ"
8772 "とを意味する。 同様に、 I<remote_iov>[0] を全部読み出してから "
8773 "I<remote_iov>[1] に進み、 以降も同様である。"
8774
8775 #. type: Plain text
8776 #: build/C/man2/process_vm_readv.2:156
8777 msgid ""
8778 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
8779 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
8780 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
8781 msgstr ""
8782 "同様に、 B<process_vm_writev>() は I<local_iov[0]> の内容を全部読み出してか"
8783 "ら I<local_iov[1]> に進み、 書き込み先でも I<remote_iov[0]> が一杯になってか"
8784 "ら I<remote_iov[1]> に進む。"
8785
8786 #. type: Plain text
8787 #: build/C/man2/process_vm_readv.2:164
8788 msgid ""
8789 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
8790 "have to be the same.  Thus, it is possible to split a single local buffer "
8791 "into multiple remote buffers, or vice versa."
8792 msgstr ""
8793 "長さ I<remote_iov[i].iov_len> と I<local_iov[i].iov_len> は同じである必要はな"
8794 "い。 したがって、 ローカル側で 1 つのバッファーのデータがリモート側で複数の"
8795 "バッファーに分割されることがあるし、 その逆も起こりえる。"
8796
8797 #. type: Plain text
8798 #: build/C/man2/process_vm_readv.2:168
8799 msgid "The I<flags> argument is currently unused and must be set to 0."
8800 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
8801
8802 #.  In time, glibc might provide a wrapper that works around this limit,
8803 #.  as is done for readv()/writev()
8804 #. type: Plain text
8805 #: build/C/man2/process_vm_readv.2:181
8806 msgid ""
8807 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
8808 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
8809 "via the call I<sysconf(_SC_IOV_MAX)>)."
8810 msgstr ""
8811 "I<liovcnt> と I<riovcnt> で指定される値は B<IOV_MAX> 以下でなければならない "
8812 "(B<IOV_MAX> は I<E<lt>limits.hE<gt>> で定義されており、 "
8813 "I<sysconf(_SC_IOV_MAX)> の呼び出しでも入手できる)。"
8814
8815 #. type: Plain text
8816 #: build/C/man2/process_vm_readv.2:191
8817 msgid ""
8818 "The count arguments and I<local_iov> are checked before doing any "
8819 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
8820 "addresses refer to regions that are inaccessible to the local process, none "
8821 "of the vectors will be processed and an error will be returned immediately."
8822 msgstr ""
8823 "要素数引き数と I<local_iov> のチェックは、 すべてのデータ転送に先立って行われ"
8824 "る。 要素数が大きすぎる場合や I<local_iov> が無効な場合、 アドレスがローカル"
8825 "プロセスがアクセスできない領域を参照している場合は、 配列のどの要素も処理され"
8826 "ず、 すぐにエラーが返される。"
8827
8828 #. type: Plain text
8829 #: build/C/man2/process_vm_readv.2:211
8830 msgid ""
8831 "Note, however, that these system calls do not check the memory regions in "
8832 "the remote process until just before doing the read/write.  Consequently, a "
8833 "partial read/write (see RETURN VALUE)  may result if one of the "
8834 "I<remote_iov> elements points to an invalid memory region in the remote "
8835 "process.  No further reads/writes will be attempted beyond that point.  Keep "
8836 "this in mind when attempting to read data of unknown length (such as C "
8837 "strings that are null-terminated) from a remote process, by avoiding "
8838 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
8839 "(Instead, split the remote read into two I<remote_iov> elements and have "
8840 "them merge back into a single write I<local_iov> entry.  The first read "
8841 "entry goes up to the page boundary, while the second starts on the next page "
8842 "boundary.)"
8843 msgstr ""
8844 "ただし、 これらのシステムコールは、 実際に読み出し/書き込みを行う直前までリ"
8845 "モートプロセスのメモリー領域のチェックを行わない点に注意すること。 結果とし"
8846 "て、 I<remote_iov> の要素の一つがリモートプロセスで無効なメモリー領域を参照し"
8847 "ている場合、 部分的な読み出し/書き込み (「返り値」の節を参照) が行われること"
8848 "になる。 これ以降は読み出し/書き込みは行われない。 リモートプロセスから長さ不"
8849 "明のデータ (例えば NULL 終端された C 文字列) を読み出す際で、 リモート側の一"
8850 "つの I<iovec> 要素が複数のメモリーページ (通常は 4KiB) にまたがらないようにし"
8851 "ている場合は、 この点に注意が必要である。\n"
8852 "(リモートからの読み出しを 2 つの I<remote_iov> 要素に分割し、 1 つの "
8853 "I<local_iov> 要素への書き込みにマージすればよい。 最初の読み出しでページ境界"
8854 "まで読み出し、 次の読み出しを次のページ境界から行う。)"
8855
8856 #. type: Plain text
8857 #: build/C/man2/process_vm_readv.2:225
8858 msgid ""
8859 "In order to read from or write to another process, either the caller must "
8860 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
8861 "ID, and saved set-user-ID of the remote process must match the real user ID "
8862 "of the caller I<and> the real group ID, effective group ID, and saved set-"
8863 "group-ID of the remote process must match the real group ID of the caller.  "
8864 "(The permission required is exactly the same as that required to perform a "
8865 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
8866 msgstr ""
8867 "他のプロセスからの読み出しや他のプロセスへの書き込みを行うには、 呼び出し元が"
8868 "ケーパビリティ B<CAP_SYS_PTRACE> を持っていなければならない、もしくは、 リ"
8869 "モートプロセスの実ユーザー ID、 実効ユーザー ID、 保存 set-user-ID が呼び出し"
8870 "元の実ユーザー ID と一致し、 かつリモートプロセスの実グループ ID、 実効グルー"
8871 "プ ID、 保存 set-group-ID が呼び出し元の実グループ ID と一致していなければな"
8872 "らない。 (ここで必要なアクセス許可は、 リモートプロセスに対して B<ptrace>(2) "
8873 "の B<PTRACE_ATTACH> を実行するのに必要な許可と全く同じである。)"
8874
8875 #. type: Plain text
8876 #: build/C/man2/process_vm_readv.2:241
8877 msgid ""
8878 "On success, B<process_vm_readv>()  returns the number of bytes read and "
8879 "B<process_vm_writev>()  returns the number of bytes written.  This return "
8880 "value may be less than the total number of requested bytes, if a partial "
8881 "read/write occurred.  (Partial transfers apply at the granularity of "
8882 "I<iovec> elements.  These system calls won't perform a partial transfer that "
8883 "splits a single I<iovec> element.)  The caller should check the return value "
8884 "to determine whether a partial read/write occurred."
8885 msgstr ""
8886 "成功すると、 B<process_vm_readv>() は読み出したバイト数を返し、 "
8887 "B<process_vm_writev>() は書き込んだバイト数を返す。 この返り値は、 読み出し/"
8888 "書き込みが部分的に行われた場合には、 要求された総バイト数よりも小さくなること"
8889 "がある (部分的な転送は I<iovec> 要素単位に行われ、 これらのシステムコールが一"
8890 "つの I<iovec> 要素の一部だけが転送されることはない)。 呼び出し元は返り値を検"
8891 "査して、 部分的な読み出し/書き込みが起こったかどうかを判定できる。"
8892
8893 #. type: Plain text
8894 #: build/C/man2/process_vm_readv.2:245
8895 msgid "On error, -1 is returned and I<errno> is set appropriately."
8896 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
8897
8898 #. type: Plain text
8899 #: build/C/man2/process_vm_readv.2:257
8900 msgid ""
8901 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
8902 "overflows a I<ssize_t> value."
8903 msgstr ""
8904 "I<local_iov> か I<remote_iov> のいずれかの I<iov_len> の合計値が I<ssize_t> "
8905 "で表現できる値を超えている。"
8906
8907 #. type: Plain text
8908 #: build/C/man2/process_vm_readv.2:261
8909 msgid "I<flags> is not 0."
8910 msgstr "I<flags> が 0 でない。"
8911
8912 #. type: Plain text
8913 #: build/C/man2/process_vm_readv.2:267
8914 msgid "I<liovcnt> or I<riovcnt> is too large."
8915 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
8916
8917 #. type: Plain text
8918 #: build/C/man2/process_vm_readv.2:272
8919 msgid ""
8920 "The memory described by I<local_iov> is outside the caller's accessible "
8921 "address space."
8922 msgstr ""
8923 "I<local_iov> で指定されたメモリーが呼び出し元がアクセス可能なアドレス空間の外"
8924 "にある。"
8925
8926 #. type: Plain text
8927 #: build/C/man2/process_vm_readv.2:278
8928 msgid ""
8929 "The memory described by I<remote_iov> is outside the accessible address "
8930 "space of the process I<pid>."
8931 msgstr ""
8932 "I<remote_iov> で指定されたメモリーがプロセス I<pid> がアクセス可能なアドレス"
8933 "空間の外にある。"
8934
8935 #. type: Plain text
8936 #: build/C/man2/process_vm_readv.2:283
8937 msgid ""
8938 "Could not allocate memory for internal copies of the I<iovec> structures."
8939 msgstr "I<iovec> 構造体の内部コピーのためのメモリーを割り当てできなかった。"
8940
8941 #. type: Plain text
8942 #: build/C/man2/process_vm_readv.2:287
8943 msgid ""
8944 "The caller does not have permission to access the address space of the "
8945 "process I<pid>."
8946 msgstr ""
8947 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
8948 "持っていない。"
8949
8950 #. type: Plain text
8951 #: build/C/man2/process_vm_readv.2:292
8952 msgid "No process with ID I<pid> exists."
8953 msgstr "ID が I<pid> のプロセスが存在しない。"
8954
8955 #. type: Plain text
8956 #: build/C/man2/process_vm_readv.2:295
8957 msgid ""
8958 "These system calls were added in Linux 3.2.  Support is provided in glibc "
8959 "since version 2.15."
8960 msgstr ""
8961 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
8962 "サポートは glibc バージョン 2.15 以降で提供されている。"
8963
8964 #. type: Plain text
8965 #: build/C/man2/process_vm_readv.2:297
8966 msgid "These system calls are nonstandard Linux extensions."
8967 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
8968
8969 #. type: Plain text
8970 #: build/C/man2/process_vm_readv.2:303
8971 msgid ""
8972 "The data transfers performed by B<process_vm_readv>()  and "
8973 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
8974 msgstr ""
8975 "B<process_vm_readv>() と B<process_vm_writev>() により実行されるデータ転送を"
8976 "どのように行ったとしても、 これらがアトミックに行われる保証はない。"
8977
8978 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
8979 #.  See also some benchmarks at http://lwn.net/Articles/405284/
8980 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
8981 #. type: Plain text
8982 #: build/C/man2/process_vm_readv.2:311
8983 msgid ""
8984 "These system calls were designed to permit fast message passing by allowing "
8985 "messages to be exchanged with a single copy operation (rather than the "
8986 "double copy that would be required when using, for example, shared memory or "
8987 "pipes)."
8988 msgstr ""
8989 "これらのシステムコールは、 (共有メモリーやパイプなどを使った場合に必要となる "
8990 "2 回のコピーではなく)\n"
8991 "1 回のコピー処理でメッセージの交換を許すことで、 高速なメッセージ送信をできる"
8992 "ようにするために設計された。"
8993
8994 #. type: Plain text
8995 #: build/C/man2/process_vm_readv.2:319
8996 msgid ""
8997 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
8998 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
8999 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
9000 msgstr ""
9001 "以下のサンプルコードは B<process_vm_readv>() の使用例を示すものである。 この"
9002 "コードは PID 10 のプロセスのアドレス 0x10000 から 20 バイトを読み取り、 最初"
9003 "の 10 バイトを I<buf1> に、 残りの 10 バイトを I<buf2> に書き込む。"
9004
9005 #. type: Plain text
9006 #: build/C/man2/process_vm_readv.2:322
9007 #, no-wrap
9008 msgid "#include E<lt>sys/uio.hE<gt>\n"
9009 msgstr "#include E<lt>sys/uio.hE<gt>\n"
9010
9011 #. type: Plain text
9012 #: build/C/man2/process_vm_readv.2:332
9013 #, no-wrap
9014 msgid ""
9015 "int\n"
9016 "main(void)\n"
9017 "{\n"
9018 "    struct iovec local[2];\n"
9019 "    struct iovec remote[1];\n"
9020 "    char buf1[10];\n"
9021 "    char buf2[10];\n"
9022 "    ssize_t nread;\n"
9023 "    pid_t pid = 10;             /* PID of remote process */\n"
9024 msgstr ""
9025 "int\n"
9026 "main(void)\n"
9027 "{\n"
9028 "    struct iovec local[2];\n"
9029 "    struct iovec remote[1];\n"
9030 "    char buf1[10];\n"
9031 "    char buf2[10];\n"
9032 "    ssize_t nread;\n"
9033 "    pid_t pid = 10;             /* PID of remote process */\n"
9034
9035 #. type: Plain text
9036 #: build/C/man2/process_vm_readv.2:339
9037 #, no-wrap
9038 msgid ""
9039 "    local[0].iov_base = buf1;\n"
9040 "    local[0].iov_len = 10;\n"
9041 "    local[1].iov_base = buf2;\n"
9042 "    local[1].iov_len = 10;\n"
9043 "    remote[0].iov_base = (void *) 0x10000;\n"
9044 "    remote[0].iov_len = 20;\n"
9045 msgstr ""
9046 "    local[0].iov_base = buf1;\n"
9047 "    local[0].iov_len = 10;\n"
9048 "    local[1].iov_base = buf2;\n"
9049 "    local[1].iov_len = 10;\n"
9050 "    remote[0].iov_base = (void *) 0x10000;\n"
9051 "    remote[0].iov_len = 20;\n"
9052
9053 #. type: Plain text
9054 #: build/C/man2/process_vm_readv.2:346
9055 #, no-wrap
9056 msgid ""
9057 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
9058 "    if (nread != 20)\n"
9059 "        return 1;\n"
9060 "    else\n"
9061 "        return 0;\n"
9062 "}\n"
9063 msgstr ""
9064 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
9065 "    if (nread != 20)\n"
9066 "        return 1;\n"
9067 "    else\n"
9068 "        return 0;\n"
9069 "}\n"
9070
9071 #. type: Plain text
9072 #: build/C/man2/process_vm_readv.2:350
9073 msgid "B<readv>(2), B<writev>(2)"
9074 msgstr "B<readv>(2), B<writev>(2)"
9075
9076 #. type: TH
9077 #: build/C/man2/ptrace.2:46
9078 #, no-wrap
9079 msgid "PTRACE"
9080 msgstr "PTRACE"
9081
9082 #. type: Plain text
9083 #: build/C/man2/ptrace.2:49
9084 msgid "ptrace - process trace"
9085 msgstr "ptrace - プロセスのトレース"
9086
9087 #. type: Plain text
9088 #: build/C/man2/ptrace.2:52
9089 #, no-wrap
9090 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
9091 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
9092
9093 #. type: Plain text
9094 #: build/C/man2/ptrace.2:55
9095 #, no-wrap
9096 msgid ""
9097 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
9098 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
9099 msgstr ""
9100 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
9101 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
9102
9103 #. type: Plain text
9104 #: build/C/man2/ptrace.2:64
9105 msgid ""
9106 "The B<ptrace>()  system call provides a means by which one process (the "
9107 "\"tracer\")  may observe and control the execution of another process (the "
9108 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
9109 "is primarily used to implement breakpoint debugging and system call tracing."
9110 msgstr ""
9111 "B<ptrace>()  システムコールは、 あるプロセス (\"tracer\") が、 別のプロセス "
9112 "(\"tracee\") の実行の監視/制御を行ったり、 tracee のメモリーやレジスターの調"
9113 "査/変更を行ったりする手段を提供する。 B<ptrace>()  は、 主にブレークポイント"
9114 "によるデバッグやシステムコールのトレースを実装するのに用いられる。"
9115
9116 #. type: Plain text
9117 #: build/C/man2/ptrace.2:75
9118 msgid ""
9119 "A tracee first needs to be attached to the tracer.  Attachment and "
9120 "subsequent commands are per thread: in a multithreaded process, every thread "
9121 "can be individually attached to a (potentially different) tracer, or left "
9122 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
9123 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
9124 "commands are always sent to a specific tracee using a call of the form"
9125 msgstr ""
9126
9127 #. type: Plain text
9128 #: build/C/man2/ptrace.2:77
9129 #, no-wrap
9130 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
9131 msgstr "    ptrace(PTRACE_foo, pid, ...)\n"
9132
9133 #. type: Plain text
9134 #: build/C/man2/ptrace.2:81
9135 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
9136 msgstr "ここで I<pid> は対応する Linux スレッドのスレッド ID である。"
9137
9138 #. type: Plain text
9139 #: build/C/man2/ptrace.2:87
9140 msgid ""
9141 "(Note that in this page, a \"multithreaded process\" means a thread group "
9142 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
9143 msgstr ""
9144
9145 #. type: Plain text
9146 #: build/C/man2/ptrace.2:98
9147 msgid ""
9148 "A process can initiate a trace by calling B<fork>(2)  and having the "
9149 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an "
9150 "B<execve>(2).  Alternatively, one process may commence tracing another "
9151 "process using B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
9152 msgstr ""
9153 "プロセスがトレースを開始するには、 まず親プロセスで B<fork>(2)  を呼び出す。 "
9154 "生成された子プロセスで B<PTRACE_TRACEME> を行い、 続いて (典型的には)  "
9155 "B<execve>(2)  を行なう。 別の方法としては、 プロセスが別のプロセスに対して "
9156 "B<PTRACE_ATTACH> か B<PTRACE_SEIZE> を使用し、 トレースを開始する。"
9157
9158 #. type: Plain text
9159 #: build/C/man2/ptrace.2:115
9160 msgid ""
9161 "While being traced, the tracee will stop each time a signal is delivered, "
9162 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
9163 "its usual effect.)  The tracer will be notified at its next call to "
9164 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
9165 "return a I<status> value containing information that indicates the cause of "
9166 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
9167 "various ptrace requests to inspect and modify the tracee.  The tracer then "
9168 "causes the tracee to continue, optionally ignoring the delivered signal (or "
9169 "even delivering a different signal instead)."
9170 msgstr ""
9171 "トレースの実行中、tracee はシグナルが配送されるたびに、 たとえそのシグナルが"
9172 "無視されている場合であっても停止する (B<SIGKILL> は例外で、通常どおりの効果を"
9173 "持つ)。 tracer には次の B<waitpid>(2) (や関連の \"wait\" システムコール) の呼"
9174 "び出しで通知され、 その呼び出しでは tracee で停止の原因を示す情報が入った "
9175 "I<status> 値が返される。 tracee が停止している間に、 tracer は様々な ptrace "
9176 "の要求を使って tracee を調査したり修正したりすることができる。 それから "
9177 "tracer は tracee の実行を再開させるが、 配送されたシグナルを無視することもで"
9178 "きる (あるいは別のシグナルを配送することもできる) 。"
9179
9180 #. type: Plain text
9181 #: build/C/man2/ptrace.2:125
9182 msgid ""
9183 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
9184 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
9185 "signal, giving the parent a chance to gain control before the new program "
9186 "begins execution."
9187 msgstr ""
9188
9189 #. type: Plain text
9190 #: build/C/man2/ptrace.2:129
9191 msgid ""
9192 "When the tracer is finished tracing, it can cause the tracee to continue "
9193 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
9194 msgstr ""
9195 "tracer がトレースを終了する際には、 B<PTRACE_DETACH> を用いて tracee を通常の"
9196 "トレースなしのモードにして、 実行を継続させることができる。"
9197
9198 #. type: Plain text
9199 #: build/C/man2/ptrace.2:133
9200 msgid "The value of I<request> determines the action to be performed:"
9201 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
9202
9203 #. type: TP
9204 #: build/C/man2/ptrace.2:133
9205 #, no-wrap
9206 msgid "B<PTRACE_TRACEME>"
9207 msgstr "B<PTRACE_TRACEME>"
9208
9209 #. type: Plain text
9210 #: build/C/man2/ptrace.2:143
9211 msgid ""
9212 "Indicate that this process is to be traced by its parent.  A process "
9213 "probably shouldn't make this request if its parent isn't expecting to trace "
9214 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
9215 msgstr ""
9216 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
9217 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
9218 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
9219
9220 #. type: Plain text
9221 #: build/C/man2/ptrace.2:158
9222 msgid ""
9223 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
9224 "requests are used only by the tracer.  In the following requests, I<pid> "
9225 "specifies the thread ID of the tracee to be acted on.  For requests other "
9226 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT>, and "
9227 "B<PTRACE_KILL>, the tracee must be stopped."
9228 msgstr ""
9229 "B<PTRACE_TRACEME> 要求は tracee だけが使用するものである。 残りの要求は "
9230 "tracer だけが使用する。 以下の要求では、I<pid> は操作の対象となる tracee のス"
9231 "レッド ID を指定する。 B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
9232 "B<PTRACE_INTERRUPT>, B<PTRACE_KILL> 以外の要求では、 tracee は停止していなけ"
9233 "ればならない。"
9234
9235 #. type: TP
9236 #: build/C/man2/ptrace.2:158
9237 #, no-wrap
9238 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
9239 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
9240
9241 #. type: Plain text
9242 #: build/C/man2/ptrace.2:169
9243 msgid ""
9244 "Read a word at the address I<addr> in the tracee's memory, returning the "
9245 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
9246 "text and data address spaces, so these two requests are currently "
9247 "equivalent.  (I<data> is ignored; but see NOTES.)"
9248 msgstr ""
9249 "tracee のメモリーの I<addr> のアドレスから 1 ワードを読み出す。 読み出した"
9250 "ワードは B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) と"
9251 "データ (data) で 同じアドレス空間を使用するため、これらの 2 つの要求は現在の"
9252 "ところ 同じものである。 (I<data> は無視される。 ただし「注意」を参照。)"
9253
9254 #. type: TP
9255 #: build/C/man2/ptrace.2:169
9256 #, no-wrap
9257 msgid "B<PTRACE_PEEKUSER>"
9258 msgstr "B<PTRACE_PEEKUSER>"
9259
9260 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
9261 #.  and that is the name that seems common on other systems.
9262 #. type: Plain text
9263 #: build/C/man2/ptrace.2:187
9264 msgid ""
9265 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
9266 "registers and other information about the process (see I<E<lt>sys/user."
9267 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
9268 "Typically, the offset must be word-aligned, though this might vary by "
9269 "architecture.  See NOTES.  (I<data> is ignored; but see NOTES.)"
9270 msgstr ""
9271 "tracee の USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。USER "
9272 "領域にはそのプロセスの レジスター (registers) などの情報が保持されている "
9273 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
9274 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
9275 "アーキテクチャーによってはその必要はない。 「注意」の節を参照。 (I<data> は無"
9276 "視される。 ただし「注意」を参照。)"
9277
9278 #. type: TP
9279 #: build/C/man2/ptrace.2:187
9280 #, no-wrap
9281 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
9282 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
9283
9284 #. type: Plain text
9285 #: build/C/man2/ptrace.2:199
9286 msgid ""
9287 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
9288 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
9289 "equivalent."
9290 msgstr ""
9291 "ワード I<data> を tracee のメモリーの I<addr> のアドレスへコピーする。 "
9292 "B<PTRACE_PEEKTEXT> や B<PTRACE_PEEKDATA> と同様に、 現在のところ二つの要求は"
9293 "同じものである。"
9294
9295 #. type: TP
9296 #: build/C/man2/ptrace.2:199
9297 #, no-wrap
9298 msgid "B<PTRACE_POKEUSER>"
9299 msgstr "B<PTRACE_POKEUSER>"
9300
9301 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
9302 #.  and that is the name that seems common on other systems.
9303 #.  FIXME In the preceding sentence, which modifications are disallowed,
9304 #.  and when they are disallowed, how does user space discover that fact?
9305 #. type: Plain text
9306 #: build/C/man2/ptrace.2:215
9307 msgid ""
9308 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
9309 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
9310 "maintain the integrity of the kernel, some modifications to the USER area "
9311 "are disallowed."
9312 msgstr ""
9313 "ワード I<data> を tracee の USER 領域のオフセット I<addr> のアドレスにコピー"
9314 "する。 B<PTRACE_PEEKUSER> と同様に、通常、オフセットはワード境界になければな"
9315 "らない。 カーネルの完全性 (integrity) を維持するため、 変更内容によっては "
9316 "USER 領域の変更は禁止されている。"
9317
9318 #. type: TP
9319 #: build/C/man2/ptrace.2:215
9320 #, no-wrap
9321 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
9322 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
9323
9324 #. type: Plain text
9325 #: build/C/man2/ptrace.2:238
9326 msgid ""
9327 "Copy the tracee's general-purpose or floating-point registers, respectively, "
9328 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
9329 "information on the format of this data.  (I<addr> is ignored.)  Note that "
9330 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
9331 "I<data> is ignored and the registers are copied to the address I<addr>.  "
9332 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
9333 "architectures."
9334 msgstr ""
9335 "それぞれ、 tracee の汎用レジスター、 浮動小数点レジスターを tracer の "
9336 "I<data> のアドレスにコピーする。この data の書式に関しては I<E<lt>sys/user."
9337 "hE<gt>> を参照すること。(I<addr> は無視される。) SPARC システムでは I<data> "
9338 "と I<addr> の意味が逆になっている点に注意。 つまり、 I<data> は無視され、 レ"
9339 "ジスターはアドレス I<addr> にコピーされる。 B<PTRACE_GETREGS> と "
9340 "B<PTRACE_GETFPREGS> はすべてのアーキテクチャーで存在するわけではない。"
9341
9342 #. type: TP
9343 #: build/C/man2/ptrace.2:238
9344 #, no-wrap
9345 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
9346 msgstr " B<PTRACE_GETREGSET> (since Linux 2.6.34)"
9347
9348 #. type: Plain text
9349 #: build/C/man2/ptrace.2:259
9350 msgid ""
9351 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
9352 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
9353 "numerical value 1)  usually results in reading of general-purpose "
9354 "registers.  If the CPU has, for example, floating-point and/or vector "
9355 "registers, they can be retrieved by setting I<addr> to the corresponding "
9356 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
9357 "the destination buffer's location and length.  On return, the kernel "
9358 "modifies B<iov.len> to indicate the actual number of bytes returned."
9359 msgstr ""
9360
9361 #. type: TP
9362 #: build/C/man2/ptrace.2:259
9363 #, no-wrap
9364 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
9365 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
9366
9367 #.  FIXME . In the preceding sentence, which modifications are disallowed,
9368 #.  and when they are disallowed, how does user space discover that fact?
9369 #. type: Plain text
9370 #: build/C/man2/ptrace.2:284
9371 msgid ""
9372 "Modify the tracee's general-purpose or floating-point registers, "
9373 "respectively, from the address I<data> in the tracer.  As for "
9374 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
9375 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
9376 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
9377 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
9378 "B<PTRACE_SETFPREGS> are not present on all architectures."
9379 msgstr ""
9380 "それぞれ、 tracee の汎用レジスター、浮動小数点レジスターに tracer の I<date> "
9381 "のアドレスからコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスターによっ"
9382 "ては 変更が禁止されている場合がある。 (I<addr> は無視される。)\n"
9383 "\n"
9384 "Note that SPARC systems have the meaning of I<data> and I<addr>\n"
9385 "reversed; that is, I<data> is ignored and the registers are copied\n"
9386 "from the address I<addr>.  B<PTRACE_SETREGS> and B<PTRACE_SETFPREGS>\n"
9387 "are not present on all architectures."
9388
9389 #. type: TP
9390 #: build/C/man2/ptrace.2:284
9391 #, no-wrap
9392 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9393 msgstr " B<PTRACE_SETREGSET> (since Linux 2.6.34)"
9394
9395 #. type: Plain text
9396 #: build/C/man2/ptrace.2:293
9397 msgid ""
9398 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
9399 "analogous to B<PTRACE_GETREGSET>."
9400 msgstr ""
9401
9402 #. type: TP
9403 #: build/C/man2/ptrace.2:293
9404 #, no-wrap
9405 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
9406 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
9407
9408 #. type: Plain text
9409 #: build/C/man2/ptrace.2:305
9410 msgid ""
9411 "Retrieve information about the signal that caused the stop.  Copy a "
9412 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
9413 "I<data> in the tracer.  (I<addr> is ignored.)"
9414 msgstr ""
9415 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
9416 "(B<sigaction>(2)  参照) を tracee から tracer の I<data> のアドレスにコピーす"
9417 "る。 (I<addr> は無視される。)"
9418
9419 #. type: TP
9420 #: build/C/man2/ptrace.2:305
9421 #, no-wrap
9422 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
9423 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
9424
9425 #. type: Plain text
9426 #: build/C/man2/ptrace.2:321
9427 msgid ""
9428 "Set signal information: copy a I<siginfo_t> structure from the address "
9429 "I<data> in the tracer to the tracee.  This will affect only signals that "
9430 "would normally be delivered to the tracee and were caught by the tracer.  It "
9431 "may be difficult to tell these normal signals from synthetic signals "
9432 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
9433 msgstr ""
9434 "シグナル情報を設定する。 I<siginfo_t> 構造体を tracer のデータ I<data> のアド"
9435 "レスから tracee にコピーする。 この処理を行うことができるのは、 tracee に通常"
9436 "は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これらの"
9437 "通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しいかも"
9438 "しれない。 (I<addr> は無視される。)"
9439
9440 #. type: TP
9441 #: build/C/man2/ptrace.2:321
9442 #, no-wrap
9443 msgid "B<PTRACE_PEEKSIGINFO> (since Linux 3.10)"
9444 msgstr "B<PTRACE_PEEKSIGINFO> (Linux 3.10 以降)"
9445
9446 #.  commit 84c751bd4aebbaae995fe32279d3dba48327bad4
9447 #. type: Plain text
9448 #: build/C/man2/ptrace.2:347
9449 msgid ""
9450 "Retrieve I<siginfo_t> structures without removing signals from a queue.  "
9451 "I<addr> points to a I<ptrace_peeksiginfo_args> structure that specifies the "
9452 "ordinal position from which copying of signals should start, and the number "
9453 "of signals to copy.  I<siginfo_t> structures are copied into the buffer "
9454 "pointed to by I<data>.  The return value contains the number of copied "
9455 "signals (zero indicates that there is no signal corresponding to the "
9456 "specified ordinal position).  Within the returned I<siginfo> structures, the "
9457 "I<si_code> field includes information (B<__SI_CHLD>, B<__SI_FAULT>, etc.) "
9458 "that are not otherwise exposed to user space."
9459 msgstr ""
9460
9461 #. type: Plain text
9462 #: build/C/man2/ptrace.2:356
9463 #, no-wrap
9464 msgid ""
9465 "struct ptrace_peeksiginfo_args {\n"
9466 "    u64 off;    /* Ordinal position in queue at which\n"
9467 "                   to start copying signals */\n"
9468 "    u32 flags;  /* PTRACE_PEEKSIGINFO_SHARED or 0 */\n"
9469 "    s32 nr;     /* Number of signals to copy */\n"
9470 "};\n"
9471 msgstr ""
9472
9473 #. type: Plain text
9474 #: build/C/man2/ptrace.2:363
9475 msgid ""
9476 "Currently, there is only one flag, B<PTRACE_PEEKSIGINFO_SHARED>, for dumping "
9477 "signals from the process-wide signal queue.  If this flag is not set, "
9478 "signals are read from the per-thread queue of the specified thread."
9479 msgstr ""
9480
9481 #. type: TP
9482 #: build/C/man2/ptrace.2:365
9483 #, no-wrap
9484 msgid "B<PTRACE_GETSIGMASK> (since Linux 3.11)"
9485 msgstr "B<PTRACE_GETSIGMASK> (Linux 3.11 以降)"
9486
9487 #.  commit 29000caecbe87b6b66f144f72111f0d02fbbf0c1
9488 #. type: Plain text
9489 #: build/C/man2/ptrace.2:380
9490 msgid ""
9491 "Place a copy of the mask of blocked signals (see B<sigprocmask>(2))  in the "
9492 "buffer pointed to by I<data>, which should be a pointer to a buffer of type "
9493 "I<sigset_t>.  The I<addr> argument contains the size of the buffer pointed "
9494 "to by I<data> (i.e., I<sizeof(sigset_t)>)."
9495 msgstr ""
9496
9497 #. type: TP
9498 #: build/C/man2/ptrace.2:380
9499 #, no-wrap
9500 msgid "B<PTRACE_SETSIGMASK> (since Linux 3.11)"
9501 msgstr "B<PTRACE_SETSIGMASK> (Linux 3.11 以降)"
9502
9503 #. type: Plain text
9504 #: build/C/man2/ptrace.2:394
9505 msgid ""
9506 "Change the mask of blocked signals (see B<sigprocmask>(2))  to the value "
9507 "specified in the buffer pointed to by I<data>, which should be a pointer to "
9508 "a buffer of type I<sigset_t>.  The I<addr> argument contains the size of the "
9509 "buffer pointed to by I<data> (i.e., I<sizeof(sigset_t)>)."
9510 msgstr ""
9511
9512 #. type: TP
9513 #: build/C/man2/ptrace.2:394
9514 #, no-wrap
9515 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
9516 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
9517
9518 #. type: Plain text
9519 #: build/C/man2/ptrace.2:403
9520 msgid ""
9521 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
9522 "interpreted as a bit mask of options, which are specified by the following "
9523 "flags:"
9524 msgstr ""
9525 "I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視される)。 "
9526 "I<data> はオプションのビットマスクとして解釈され、 オプションには以下のフラグ"
9527 "を指定できる:"
9528
9529 #. type: TP
9530 #: build/C/man2/ptrace.2:404
9531 #, no-wrap
9532 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9533 msgstr " B<PTRACE_O_EXITKILL> (since Linux 3.8)"
9534
9535 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
9536 #. type: Plain text
9537 #: build/C/man2/ptrace.2:412
9538 msgid ""
9539 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
9540 "if the tracer exits.  This option is useful for ptrace jailers that want to "
9541 "ensure that tracees can never escape the tracer's control."
9542 msgstr ""
9543
9544 #. type: TP
9545 #: build/C/man2/ptrace.2:412
9546 #, no-wrap
9547 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
9548 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
9549
9550 #. type: Plain text
9551 #: build/C/man2/ptrace.2:429
9552 msgid ""
9553 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
9554 "newly cloned process, which will start with a B<SIGSTOP>, or "
9555 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9556 "tracer will return a I<status> value such that"
9557 msgstr ""
9558 "次の B<clone>(2) 呼び出し時に tracee を停止し、 新しくクローンされたプロセス"
9559 "のトレースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 "
9560 "B<PTRACE_SEIZE> が使用された場合は B<PTRACE_EVENT_STOP> で開始する。 tracer "
9561 "による B<waitpid>(2) の呼び出しでは以下のような I<status> 値が返る。"
9562
9563 #. type: Plain text
9564 #: build/C/man2/ptrace.2:432
9565 #, no-wrap
9566 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9567 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
9568
9569 #. type: Plain text
9570 #: build/C/man2/ptrace.2:436 build/C/man2/ptrace.2:522
9571 #: build/C/man2/ptrace.2:555
9572 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
9573 msgstr "新規のプロセスの PID は B<PTRACE_GETEVENTMSG> で取得できる。"
9574
9575 #. type: Plain text
9576 #: build/C/man2/ptrace.2:457
9577 msgid ""
9578 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
9579 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
9580 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
9581 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
9582 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
9583 msgstr ""
9584 "このオプションで全ての B<clone>(2)  コールを捕まえられるわけではない。  "
9585 "tracee が B<CLONE_VFORK> フラグ付きで B<clone>(2)  を呼び出した場合、 "
9586 "B<PTRACE_O_TRACEVFORK> が設定されていれば代わりに B<PTRACE_EVENT_VFORK> が配"
9587 "送される。 また、 tracee が終了シグナルを B<SIGCHLD> に設定して B<clone>(2)  "
9588 "を呼び出した場合は、 B<PTRACE_O_TRACEFORK> が設定されていれば "
9589 "B<PTRACE_EVENT_FORK> が配送される。"
9590
9591 #. type: TP
9592 #: build/C/man2/ptrace.2:457
9593 #, no-wrap
9594 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
9595 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
9596
9597 #. type: Plain text
9598 #: build/C/man2/ptrace.2:466
9599 msgid ""
9600 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
9601 "will return a I<status> value such that"
9602 msgstr ""
9603
9604 #. type: Plain text
9605 #: build/C/man2/ptrace.2:469
9606 #, no-wrap
9607 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9608 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
9609
9610 #. type: Plain text
9611 #: build/C/man2/ptrace.2:475
9612 msgid ""
9613 "If the execing thread is not a thread group leader, the thread ID is reset "
9614 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
9615 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
9616 msgstr ""
9617
9618 #. type: TP
9619 #: build/C/man2/ptrace.2:475
9620 #, no-wrap
9621 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
9622 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
9623
9624 #. type: Plain text
9625 #: build/C/man2/ptrace.2:483
9626 msgid ""
9627 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
9628 "I<status> value such that"
9629 msgstr ""
9630 "exit 時に tracee を停止する。 tracer による B<waiting>(2) では以下のような "
9631 "I<status> 値が返る。"
9632
9633 #. type: Plain text
9634 #: build/C/man2/ptrace.2:486
9635 #, no-wrap
9636 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9637 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
9638
9639 #. type: Plain text
9640 #: build/C/man2/ptrace.2:490
9641 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
9642 msgstr "tracee の終了ステータスは B<PTRACE_GETEVENTMSG> で取得できる。"
9643
9644 #. type: Plain text
9645 #: build/C/man2/ptrace.2:498
9646 msgid ""
9647 "The tracee is stopped early during process exit, when registers are still "
9648 "available, allowing the tracer to see where the exit occurred, whereas the "
9649 "normal exit notification is done after the process is finished exiting.  "
9650 "Even though context is available, the tracer cannot prevent the exit from "
9651 "happening at this point."
9652 msgstr ""
9653 "tracee の停止はレジスターがまだ参照可能であるプロセス終了処理の初期に行わ"
9654 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
9655 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
9656 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
9657 "できない。"
9658
9659 #. type: TP
9660 #: build/C/man2/ptrace.2:498
9661 #, no-wrap
9662 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
9663 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
9664
9665 #. type: Plain text
9666 #: build/C/man2/ptrace.2:515
9667 msgid ""
9668 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
9669 "newly forked process, which will start with a B<SIGSTOP>, or "
9670 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9671 "tracer will return a I<status> value such that"
9672 msgstr ""
9673 "次の B<fork>(2)  呼び出し時に tracee を停止し、 新しく fork されたプロセスの"
9674 "トレースを自動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 "
9675 "B<PTRACE_SEIZE> が使用された場合は B<PTRACE_EVENT_STOP> で実行を開始する。 "
9676 "tracer による B<waitpid>(2) の呼び出しでは以下のような I<status> 値が返る。"
9677
9678 #. type: Plain text
9679 #: build/C/man2/ptrace.2:518
9680 #, no-wrap
9681 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9682 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
9683
9684 #. type: TP
9685 #: build/C/man2/ptrace.2:522
9686 #, no-wrap
9687 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
9688 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
9689
9690 #. type: Plain text
9691 #: build/C/man2/ptrace.2:531
9692 msgid ""
9693 "When delivering system call traps, set bit 7 in the signal number (i.e., "
9694 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
9695 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
9696 "may not work on all architectures.)"
9697 msgstr ""
9698 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
9699 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
9700 "ラップとシステムコールによるトラップを区別しやすくなる。 "
9701 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャーでも動作しない可能性がある。)"
9702
9703 #. type: TP
9704 #: build/C/man2/ptrace.2:531
9705 #, no-wrap
9706 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
9707 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
9708
9709 #. type: Plain text
9710 #: build/C/man2/ptrace.2:548
9711 msgid ""
9712 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
9713 "newly vforked process, which will start with a B<SIGSTOP>, or "
9714 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
9715 "tracer will return a I<status> value such that"
9716 msgstr ""
9717 "次の B<vfork>(2)  呼び出し時に tracee を停止し、 新しく vfork されたプロセス"
9718 "のトレースを自動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 "
9719 "B<PTRACE_SEIZE> が使用された場合は B<PTRACE_EVENT_STOP> で実行を開始する。 "
9720 "tracer による B<waitpid>(2) の呼び出しでは以下のような I<status> 値が返る。"
9721
9722 #. type: Plain text
9723 #: build/C/man2/ptrace.2:551
9724 #, no-wrap
9725 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9726 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
9727
9728 #. type: TP
9729 #: build/C/man2/ptrace.2:555
9730 #, no-wrap
9731 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
9732 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
9733
9734 #. type: Plain text
9735 #: build/C/man2/ptrace.2:564
9736 msgid ""
9737 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
9738 "by the tracer will return a I<status> value such that"
9739 msgstr ""
9740
9741 #. type: Plain text
9742 #: build/C/man2/ptrace.2:567
9743 #, no-wrap
9744 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
9745 msgstr ""
9746
9747 #. type: Plain text
9748 #: build/C/man2/ptrace.2:571
9749 msgid ""
9750 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
9751 "B<PTRACE_GETEVENTMSG>."
9752 msgstr ""
9753
9754 #. type: TP
9755 #: build/C/man2/ptrace.2:571
9756 #, no-wrap
9757 msgid "B<PTRACE_O_TRACESECCOMP> (since Linux 3.5)"
9758 msgstr "B<PTRACE_O_TRACESECCOMP> (Linux 3.5 以降)"
9759
9760 #. type: Plain text
9761 #: build/C/man2/ptrace.2:582
9762 msgid ""
9763 "Stop the tracee when a B<seccomp>(2)  B<SECCOMP_RET_TRACE> rule is "
9764 "triggered.  A B<waitpid>(2)  by the tracer will return a I<status> value "
9765 "such that"
9766 msgstr ""
9767 "B<seccomp>(2) B<SECCOMP_RET_TRACE> ルールが起動された場合に tracee を停止す"
9768 "る。 tracer による B<waitpid>(2) の呼び出しでは以下のような I<status> 値が返"
9769 "る。"
9770
9771 #. type: Plain text
9772 #: build/C/man2/ptrace.2:585
9773 #, no-wrap
9774 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n"
9775 msgstr "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_SECCOMPE<lt>E<lt>8))\n"
9776
9777 #. type: Plain text
9778 #: build/C/man2/ptrace.2:595
9779 msgid ""
9780 "While this triggers a B<PTRACE_EVENT> stop, it is similar to a syscall-enter-"
9781 "stop, in that the tracee has not yet entered the syscall that seccomp "
9782 "triggered on.  The seccomp event message data (from the B<SECCOMP_RET_DATA> "
9783 "portion of the seccomp filter rule) can be retrieved with "
9784 "B<PTRACE_GETEVENTMSG>."
9785 msgstr ""
9786
9787 #. type: TP
9788 #: build/C/man2/ptrace.2:596
9789 #, no-wrap
9790 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
9791 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
9792
9793 #. type: Plain text
9794 #: build/C/man2/ptrace.2:623
9795 msgid ""
9796 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
9797 "just happened, placing it at the address I<data> in the tracer.  For "
9798 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
9799 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
9800 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  For "
9801 "B<PTRACE_EVENT_SECCOMP>, this is the B<seccomp>(2)  filter's "
9802 "B<SECCOMP_RET_DATA> associated with the triggered rule.  (I<addr> is "
9803 "ignored.)"
9804 msgstr ""
9805 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
9806 "取得する。 取得したメッセージは tracer の I<data> のアドレスに格納される。 格"
9807 "納される内容は、 B<PTRACE_EVENT_EXIT> の場合は tracee の終了ステータスであ"
9808 "る。 B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, "
9809 "B<PTRACE_EVENT_VFORK_DONE>, B<PTRACE_EVENT_CLONE> の場合は新しいプロセスの "
9810 "PID が格納される。 B<PTRACE_EVENT_SECCOMP> の場合は、起動されたルールに関連付"
9811 "けられた B<seccomp>(2) フィルターの B<SECCOMP_RET_DATA> が格納される。 "
9812 "(I<addr> は無視される。)"
9813
9814 #. type: TP
9815 #: build/C/man2/ptrace.2:623
9816 #, no-wrap
9817 msgid "B<PTRACE_CONT>"
9818 msgstr "B<PTRACE_CONT>"
9819
9820 #. type: Plain text
9821 #: build/C/man2/ptrace.2:635
9822 msgid ""
9823 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
9824 "interpreted as the number of a signal to be delivered to the tracee; "
9825 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
9826 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
9827 "is ignored.)"
9828 msgstr ""
9829 "停止した tracee の実行を再開させる。 I<data> がゼロでない場合、 tracee に配送"
9830 "されるシグナル数と解釈される。 ゼロの場合はシグナルは配送されない。 これを使"
9831 "うと、例えば、 tracer は tracee に送られたシグナルを実際に配送するかどうかを "
9832 "制御することができる。(I<addr> は無視される。)"
9833
9834 #. type: TP
9835 #: build/C/man2/ptrace.2:635
9836 #, no-wrap
9837 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9838 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
9839
9840 #. type: Plain text
9841 #: build/C/man2/ptrace.2:659
9842 msgid ""
9843 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
9844 "to be stopped at the next entry to or exit from a system call, or after "
9845 "execution of a single instruction, respectively.  (The tracee will also, as "
9846 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
9847 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
9848 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
9849 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
9850 "inspect the return value of the system call at the second stop.  The I<data> "
9851 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
9852 msgstr ""
9853 "B<PTRACE_CONT> と同様に停止した tracee を再開する。ただし、 "
9854 "B<PTRACE_SYSCALL> の場合は tracee が 次にシステムコールに入るかシステムコール"
9855 "から抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) 実"
9856 "行した後に停止させる (通常どおり、 tracee はシグナルを受け取った場合にも停止"
9857 "する)。 tracer から見ると、 tracee は B<SIGTRAP> を受信して停止したように見え"
9858 "る。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き数を調べて "
9859 "B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を調べる、 と"
9860 "いうようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と同じ様に解"
9861 "釈される。 (I<addr> は無視される。)"
9862
9863 #. type: TP
9864 #: build/C/man2/ptrace.2:659
9865 #, no-wrap
9866 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
9867 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
9868
9869 #.  As at 3.7
9870 #. type: Plain text
9871 #: build/C/man2/ptrace.2:680
9872 msgid ""
9873 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
9874 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
9875 "but also singlestep if not a system call.  This call is used by programs "
9876 "like User Mode Linux that want to emulate all the tracee's system calls.  "
9877 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
9878 "is ignored.  These requests are currently supported only on x86."
9879 msgstr ""
9880 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
9881 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
9882 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
9883 "このコールは User Mode Linux のように tracee のシステムコールを全て エミュ"
9884 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
9885 "の場合と同じ様に解釈される。 I<addr> 引き数は無視される。 現在のところこれら"
9886 "の要求は x86 でのみサポートされている。"
9887
9888 #. type: TP
9889 #: build/C/man2/ptrace.2:680
9890 #, no-wrap
9891 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
9892 msgstr " B<PTRACE_LISTEN> (since Linux 3.4)"
9893
9894 #. type: Plain text
9895 #: build/C/man2/ptrace.2:691
9896 msgid ""
9897 "Restart the stopped tracee, but prevent it from executing.  The resulting "
9898 "state of the tracee is similar to a process which has been stopped by a "
9899 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
9900 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
9901 "by B<PTRACE_SEIZE>."
9902 msgstr ""
9903
9904 #. type: TP
9905 #: build/C/man2/ptrace.2:691
9906 #, no-wrap
9907 msgid "B<PTRACE_KILL>"
9908 msgstr "B<PTRACE_KILL>"
9909
9910 #. type: Plain text
9911 #: build/C/man2/ptrace.2:700
9912 msgid ""
9913 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
9914 "ignored.)"
9915 msgstr ""
9916 "tracee に B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
9917
9918 #.  [Note from Denys Vlasenko:
9919 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
9920 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
9921 #. type: Plain text
9922 #: build/C/man2/ptrace.2:719
9923 msgid ""
9924 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
9925 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
9926 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
9927 "may not work (i.e., may complete successfully but won't kill the tracee).  "
9928 "By contrast, sending a B<SIGKILL> directly has no such limitation."
9929 msgstr ""
9930
9931 #. type: TP
9932 #: build/C/man2/ptrace.2:719
9933 #, no-wrap
9934 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
9935 msgstr " B<PTRACE_INTERRUPT> (since Linux 3.4)"
9936
9937 #. type: Plain text
9938 #: build/C/man2/ptrace.2:747
9939 msgid ""
9940 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
9941 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
9942 "exit-stop is reported.  (The interrupted system call is restarted when the "
9943 "tracee is restarted.)  If the tracee was already stopped by a signal and "
9944 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
9945 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
9946 "is generated at the same time (for example, if a signal is sent to the "
9947 "tracee), this ptrace-stop happens.  If none of the above applies (for "
9948 "example, if the tracee is running in user space), it stops with "
9949 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
9950 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
9951 msgstr ""
9952
9953 #. type: TP
9954 #: build/C/man2/ptrace.2:747
9955 #, no-wrap
9956 msgid "B<PTRACE_ATTACH>"
9957 msgstr "B<PTRACE_ATTACH>"
9958
9959 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
9960 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
9961 #.          Basically, it's not true for any Linux in practical use.
9962 #.  ; the behavior of the tracee is as if it had done a
9963 #.  .BR PTRACE_TRACEME .
9964 #.  The calling process actually becomes the parent of the tracee
9965 #.  process for most purposes (e.g., it will receive
9966 #.  notification of tracee events and appears in
9967 #.  .BR ps (1)
9968 #.  output as the tracee's parent), but a
9969 #.  .BR getppid (2)
9970 #.  by the tracee will still return the PID of the original parent.
9971 #. type: Plain text
9972 #: build/C/man2/ptrace.2:775
9973 msgid ""
9974 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9975 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
9976 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
9977 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
9978 "additional information.  (I<addr> and I<data> are ignored.)"
9979 msgstr ""
9980
9981 #. type: TP
9982 #: build/C/man2/ptrace.2:775
9983 #, no-wrap
9984 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
9985 msgstr " B<PTRACE_SEIZE> (since Linux 3.4)"
9986
9987 #. type: Plain text
9988 #: build/C/man2/ptrace.2:795
9989 msgid ""
9990 "Attach to the process specified in I<pid>, making it a tracee of the calling "
9991 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
9992 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
9993 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
9994 "mask of ptrace options to activate immediately."
9995 msgstr ""
9996
9997 #. type: TP
9998 #: build/C/man2/ptrace.2:795
9999 #, no-wrap
10000 msgid "B<PTRACE_DETACH>"
10001 msgstr "B<PTRACE_DETACH>"
10002
10003 #. type: Plain text
10004 #: build/C/man2/ptrace.2:804
10005 msgid ""
10006 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
10007 "Under Linux, a tracee can be detached in this way regardless of which method "
10008 "was used to initiate tracing.  (I<addr> is ignored.)"
10009 msgstr ""
10010 "B<PTRACE_CONT> と同様に停止した tracee を再開するが、 まずそのプロセスからの"
10011 "分離 (detach) を行う。 Linux では、トレースされている tracee はどのような方法"
10012 "でトレースを開始されたとしても、この方法で分離 (detach) することができる。 "
10013 "(I<addr> は無視される。)"
10014
10015 #. type: SS
10016 #: build/C/man2/ptrace.2:804
10017 #, no-wrap
10018 msgid "Death under ptrace"
10019 msgstr ""
10020
10021 #. type: Plain text
10022 #: build/C/man2/ptrace.2:813
10023 msgid ""
10024 "When a (possibly multithreaded) process receives a killing signal (one whose "
10025 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
10026 "process), all threads exit.  Tracees report their death to their tracer(s).  "
10027 "Notification of this event is delivered via B<waitpid>(2)."
10028 msgstr ""
10029
10030 #. type: Plain text
10031 #: build/C/man2/ptrace.2:822
10032 msgid ""
10033 "Note that the killing signal will first cause signal-delivery-stop (on one "
10034 "tracee only), and only after it is injected by the tracer (or after it was "
10035 "dispatched to a thread which isn't traced), will death from the signal "
10036 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
10037 "delivery-stop\" is explained below.)"
10038 msgstr ""
10039
10040 #. type: Plain text
10041 #: build/C/man2/ptrace.2:834
10042 msgid ""
10043 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
10044 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
10045 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
10046 "B<SIGKILL> always kills the process (all its threads), even if some threads "
10047 "of the process are ptraced."
10048 msgstr ""
10049
10050 #. type: Plain text
10051 #: build/C/man2/ptrace.2:839
10052 msgid ""
10053 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
10054 "Other threads are not affected."
10055 msgstr ""
10056
10057 #. type: Plain text
10058 #: build/C/man2/ptrace.2:843
10059 msgid ""
10060 "When any thread executes B<exit_group>(2), every tracee in its thread group "
10061 "reports its death to its tracer."
10062 msgstr ""
10063
10064 #. type: Plain text
10065 #: build/C/man2/ptrace.2:857
10066 msgid ""
10067 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
10068 "before actual death.  This applies to exits via B<exit>(2), "
10069 "B<exit_group>(2), and signal deaths (except B<SIGKILL>), and when threads "
10070 "are torn down on B<execve>(2)  in a multithreaded process."
10071 msgstr ""
10072
10073 #. type: Plain text
10074 #: build/C/man2/ptrace.2:882
10075 msgid ""
10076 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
10077 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
10078 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
10079 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
10080 "exists but is not ptrace-stopped (for commands which require a stopped "
10081 "tracee), or if it is not traced by the process which issued the ptrace "
10082 "call.  The tracer needs to keep track of the stopped/running state of the "
10083 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
10084 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
10085 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
10086 "tracee's death status if a ptrace operation returned B<ESRCH>.  "
10087 "I<waitpid(WNOHANG)> may return 0 instead.  In other words, the tracee may be "
10088 "\"not yet fully dead\", but already refusing ptrace requests."
10089 msgstr ""
10090
10091 #. type: Plain text
10092 #: build/C/man2/ptrace.2:896
10093 msgid ""
10094 "The tracer can't assume that the tracee I<always> ends its life by reporting "
10095 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
10096 "does not occur.  For example, if a thread other than thread group leader "
10097 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
10098 "any subsequent ptrace stops will be reported under the thread group leader's "
10099 "PID."
10100 msgstr ""
10101
10102 #. type: SS
10103 #: build/C/man2/ptrace.2:896
10104 #, no-wrap
10105 msgid "Stopped states"
10106 msgstr ""
10107
10108 #. type: Plain text
10109 #: build/C/man2/ptrace.2:918
10110 msgid ""
10111 "A tracee can be in two states: running or stopped.  For the purposes of "
10112 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
10113 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
10114 "tracee is blocked for a long time.  The state of the tracee after "
10115 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
10116 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
10117 "notifications), but it also may be considered \"stopped\" because it is not "
10118 "executing instructions (is not scheduled), and if it was in group-stop "
10119 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
10120 "received."
10121 msgstr ""
10122
10123 #. type: Plain text
10124 #: build/C/man2/ptrace.2:922
10125 msgid ""
10126 "There are many kinds of states when the tracee is stopped, and in ptrace "
10127 "discussions they are often conflated.  Therefore, it is important to use "
10128 "precise terms."
10129 msgstr ""
10130
10131 #. type: Plain text
10132 #: build/C/man2/ptrace.2:933
10133 msgid ""
10134 "In this manual page, any stopped state in which the tracee is ready to "
10135 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
10136 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
10137 "I<syscall-stop>, and so on.  These stopped states are described in detail "
10138 "below."
10139 msgstr ""
10140
10141 #. type: Plain text
10142 #: build/C/man2/ptrace.2:938
10143 msgid ""
10144 "When the running tracee enters ptrace-stop, it notifies its tracer using "
10145 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
10146 "manual page assumes that the tracer waits with:"
10147 msgstr ""
10148
10149 #. type: Plain text
10150 #: build/C/man2/ptrace.2:940
10151 #, no-wrap
10152 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
10153 msgstr ""
10154
10155 #.  Denys Vlasenko:
10156 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
10157 #.      I am not 100% sure there aren't ugly corner cases.) Are the
10158 #.      rules different if user wants to use waitid? Will waitid require
10159 #.      WEXITED?
10160 #. type: Plain text
10161 #: build/C/man2/ptrace.2:952
10162 msgid ""
10163 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
10164 "and I<WIFSTOPPED(status)> true."
10165 msgstr ""
10166
10167 #. type: Plain text
10168 #: build/C/man2/ptrace.2:960
10169 msgid ""
10170 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
10171 "but implies their functionality."
10172 msgstr ""
10173
10174 #. type: Plain text
10175 #: build/C/man2/ptrace.2:967
10176 msgid ""
10177 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
10178 "recommended: the \"continued\" state is per-process and consuming it can "
10179 "confuse the real parent of the tracee."
10180 msgstr ""
10181
10182 #. type: Plain text
10183 #: build/C/man2/ptrace.2:975
10184 msgid ""
10185 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
10186 "results available yet\")  even if the tracer knows there should be a "
10187 "notification.  Example:"
10188 msgstr ""
10189
10190 #. type: Plain text
10191 #: build/C/man2/ptrace.2:984
10192 #, no-wrap
10193 msgid ""
10194 "    errno = 0;\n"
10195 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
10196 "    if (errno == ESRCH) {\n"
10197 "        /* tracee is dead */\n"
10198 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
10199 "        /* r can still be 0 here! */\n"
10200 "    }\n"
10201 msgstr ""
10202
10203 #. type: Plain text
10204 #: build/C/man2/ptrace.2:1007
10205 msgid ""
10206 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
10207 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
10208 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
10209 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
10210 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the "
10211 "I<WSTOPSIG(status)> macro can't be used to perform this examination, because "
10212 "it returns the value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
10213 msgstr ""
10214
10215 #. type: SS
10216 #: build/C/man2/ptrace.2:1007
10217 #, no-wrap
10218 msgid "Signal-delivery-stop"
10219 msgstr ""
10220
10221 #. type: Plain text
10222 #: build/C/man2/ptrace.2:1027
10223 msgid ""
10224 "When a (possibly multithreaded) process receives any signal except "
10225 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
10226 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
10227 "can be explicitly selected by the caller.)  If the selected thread is "
10228 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
10229 "yet delivered to the process, and can be suppressed by the tracer.  If the "
10230 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
10231 "the next ptrace restart request.  This second step of signal delivery is "
10232 "called I<signal injection> in this manual page.  Note that if the signal is "
10233 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
10234 "with the usual exception that B<SIGSTOP> can't be blocked."
10235 msgstr ""
10236
10237 #. type: Plain text
10238 #: build/C/man2/ptrace.2:1041
10239 msgid ""
10240 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
10241 "with I<WIFSTOPPED(status)> true, with the signal returned by "
10242 "I<WSTOPSIG(status)>.  If the signal is B<SIGTRAP>, this may be a different "
10243 "kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below "
10244 "for details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be "
10245 "a group-stop; see below."
10246 msgstr ""
10247
10248 #. type: SS
10249 #: build/C/man2/ptrace.2:1041
10250 #, no-wrap
10251 msgid "Signal injection and suppression"
10252 msgstr ""
10253
10254 #. type: Plain text
10255 #: build/C/man2/ptrace.2:1044
10256 msgid ""
10257 "After signal-delivery-stop is observed by the tracer, the tracer should "
10258 "restart the tracee with the call"
10259 msgstr ""
10260
10261 #. type: Plain text
10262 #: build/C/man2/ptrace.2:1046
10263 #, no-wrap
10264 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
10265 msgstr ""
10266
10267 #. type: Plain text
10268 #: build/C/man2/ptrace.2:1059
10269 msgid ""
10270 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
10271 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
10272 "delivered.  This operation is called I<signal injection> in this manual "
10273 "page, to distinguish it from signal-delivery-stop."
10274 msgstr ""
10275
10276 #. type: Plain text
10277 #: build/C/man2/ptrace.2:1065
10278 msgid ""
10279 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
10280 "tracer can cause a different signal to be injected."
10281 msgstr ""
10282
10283 #. type: Plain text
10284 #: build/C/man2/ptrace.2:1081
10285 msgid ""
10286 "Note that a suppressed signal still causes system calls to return "
10287 "prematurely.  In this case, system calls will be restarted: the tracer will "
10288 "observe the tracee to reexecute the interrupted system call (or "
10289 "B<restart_syscall>(2)  system call for a few system calls which use a "
10290 "different mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  "
10291 "Even system calls (such as B<poll>(2))  which are not restartable after "
10292 "signal are restarted after signal is suppressed; however, kernel bugs exist "
10293 "which cause some system calls to fail with B<EINTR> even though no "
10294 "observable signal is injected to the tracee."
10295 msgstr ""
10296
10297 #. type: Plain text
10298 #: build/C/man2/ptrace.2:1092
10299 msgid ""
10300 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
10301 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
10302 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
10303 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
10304 "instead."
10305 msgstr ""
10306
10307 #. type: Plain text
10308 #: build/C/man2/ptrace.2:1099
10309 msgid ""
10310 "The fact that signal injection requests may be ignored when restarting the "
10311 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
10312 "confusion among ptrace users.  One typical scenario is that the tracer "
10313 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
10314 "tracee with"
10315 msgstr ""
10316
10317 #. type: Plain text
10318 #: build/C/man2/ptrace.2:1101
10319 #, no-wrap
10320 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
10321 msgstr ""
10322
10323 #. type: Plain text
10324 #: build/C/man2/ptrace.2:1107
10325 msgid ""
10326 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
10327 "the tracee continues to run."
10328 msgstr ""
10329
10330 #. type: Plain text
10331 #: build/C/man2/ptrace.2:1127
10332 msgid ""
10333 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
10334 "group-stopped process.  This side effect happens before signal-delivery-"
10335 "stop.  The tracer can't suppress this side effect (it can only suppress "
10336 "signal injection, which only causes the B<SIGCONT> handler to not be "
10337 "executed in the tracee, if such a handler is installed).  In fact, waking up "
10338 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
10339 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
10340 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
10341 "by the tracee after it was sent."
10342 msgstr ""
10343
10344 #. type: Plain text
10345 #: build/C/man2/ptrace.2:1131
10346 msgid ""
10347 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
10348 "side effect happens after signal injection, and therefore can be suppressed "
10349 "by the tracer."
10350 msgstr ""
10351
10352 #
10353 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
10354 #.  there is:
10355 #.              /* The debugger continued.  Ignore SIGSTOP.  */
10356 #.              if (signr == SIGSTOP)
10357 #.                      continue;
10358 #. type: Plain text
10359 #: build/C/man2/ptrace.2:1141
10360 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
10361 msgstr ""
10362
10363 #. type: Plain text
10364 #: build/C/man2/ptrace.2:1158
10365 msgid ""
10366 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
10367 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
10368 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
10369 "I<si_signo> field and the I<sig> parameter in the restarting command must "
10370 "match, otherwise the result is undefined."
10371 msgstr ""
10372
10373 #. type: SS
10374 #: build/C/man2/ptrace.2:1158
10375 #, no-wrap
10376 msgid "Group-stop"
10377 msgstr ""
10378
10379 #. type: Plain text
10380 #: build/C/man2/ptrace.2:1170
10381 msgid ""
10382 "When a (possibly multithreaded) process receives a stopping signal, all "
10383 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
10384 "that the stopping signal will first cause signal-delivery-stop (on one "
10385 "tracee only), and only after it is injected by the tracer (or after it was "
10386 "dispatched to a thread which isn't traced), will group-stop be initiated on "
10387 "I<all> tracees within the multithreaded process.  As usual, every tracee "
10388 "reports its group-stop separately to the corresponding tracer."
10389 msgstr ""
10390
10391 #. type: Plain text
10392 #: build/C/man2/ptrace.2:1179
10393 msgid ""
10394 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
10395 "I<WIFSTOPPED(status)> true, with the stopping signal available via "
10396 "I<WSTOPSIG(status)>.  The same result is returned by some other classes of "
10397 "ptrace-stops, therefore the recommended practice is to perform the call"
10398 msgstr ""
10399
10400 #. type: Plain text
10401 #: build/C/man2/ptrace.2:1181
10402 #, no-wrap
10403 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
10404 msgstr ""
10405
10406 #. type: Plain text
10407 #: build/C/man2/ptrace.2:1202
10408 msgid ""
10409 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
10410 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
10411 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
10412 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
10413 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
10414 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
10415 "the tracee.)"
10416 msgstr ""
10417
10418 #. type: Plain text
10419 #: build/C/man2/ptrace.2:1212
10420 msgid ""
10421 "If tracee was attached using B<PTRACE_SEIZE>, group-stop is indicated by "
10422 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
10423 "allows detection of group-stops without requiring an extra "
10424 "B<PTRACE_GETSIGINFO> call."
10425 msgstr ""
10426
10427 #. type: Plain text
10428 #: build/C/man2/ptrace.2:1221
10429 msgid ""
10430 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
10431 "it restarts or kills it, the tracee will not run, and will not send "
10432 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
10433 "enters into another B<waitpid>(2)  call."
10434 msgstr ""
10435
10436 #. type: Plain text
10437 #: build/C/man2/ptrace.2:1235
10438 msgid ""
10439 "The kernel behavior described in the previous paragraph causes a problem "
10440 "with transparent handling of stopping signals.  If the tracer restarts the "
10441 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
10442 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
10443 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
10444 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
10445 "signals to have no effect on the tracee."
10446 msgstr ""
10447
10448 #. type: Plain text
10449 #: build/C/man2/ptrace.2:1246
10450 msgid ""
10451 "Since Linux 3.4, there is a method to overcome this problem: instead of "
10452 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
10453 "in a way where it does not execute, but waits for a new event which it can "
10454 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
10455 msgstr ""
10456
10457 #. type: SS
10458 #: build/C/man2/ptrace.2:1246
10459 #, no-wrap
10460 msgid "PTRACE_EVENT stops"
10461 msgstr ""
10462
10463 #. type: Plain text
10464 #: build/C/man2/ptrace.2:1252
10465 msgid ""
10466 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
10467 "stops called B<PTRACE_EVENT> stops."
10468 msgstr ""
10469
10470 #. type: Plain text
10471 #: build/C/man2/ptrace.2:1266
10472 msgid ""
10473 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
10474 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
10475 "additional bit is set in the higher byte of the status word: the value "
10476 "I<statusE<gt>E<gt>8> will be"
10477 msgstr ""
10478
10479 #. type: Plain text
10480 #: build/C/man2/ptrace.2:1268
10481 #, no-wrap
10482 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
10483 msgstr ""
10484
10485 #. type: Plain text
10486 #: build/C/man2/ptrace.2:1270
10487 msgid "The following events exist:"
10488 msgstr ""
10489
10490 #. type: TP
10491 #: build/C/man2/ptrace.2:1270
10492 #, no-wrap
10493 msgid "B<PTRACE_EVENT_VFORK>"
10494 msgstr "B<PTRACE_EVENT_VFORK>"
10495
10496 #. type: Plain text
10497 #: build/C/man2/ptrace.2:1283
10498 msgid ""
10499 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10500 "flag.  When the tracee is continued after this stop, it will wait for child "
10501 "to exit/exec before continuing its execution (in other words, the usual "
10502 "behavior on B<vfork>(2))."
10503 msgstr ""
10504
10505 #. type: TP
10506 #: build/C/man2/ptrace.2:1283
10507 #, no-wrap
10508 msgid "B<PTRACE_EVENT_FORK>"
10509 msgstr "B<PTRACE_EVENT_FORK>"
10510
10511 #. type: Plain text
10512 #: build/C/man2/ptrace.2:1291
10513 msgid ""
10514 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
10515 "to B<SIGCHLD>."
10516 msgstr ""
10517
10518 #. type: TP
10519 #: build/C/man2/ptrace.2:1291
10520 #, no-wrap
10521 msgid "B<PTRACE_EVENT_CLONE>"
10522 msgstr "B<PTRACE_EVENT_CLONE>"
10523
10524 #. type: Plain text
10525 #: build/C/man2/ptrace.2:1295
10526 msgid "Stop before return from B<clone>(2)."
10527 msgstr ""
10528
10529 #. type: TP
10530 #: build/C/man2/ptrace.2:1295
10531 #, no-wrap
10532 msgid "B<PTRACE_EVENT_VFORK_DONE>"
10533 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
10534
10535 #. type: Plain text
10536 #: build/C/man2/ptrace.2:1305
10537 msgid ""
10538 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
10539 "flag, but after the child unblocked this tracee by exiting or execing."
10540 msgstr ""
10541
10542 #. type: Plain text
10543 #: build/C/man2/ptrace.2:1311
10544 msgid ""
10545 "For all four stops described above, the stop occurs in the parent (i.e., the "
10546 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
10547 "to retrieve the new thread's ID."
10548 msgstr ""
10549
10550 #. type: TP
10551 #: build/C/man2/ptrace.2:1311
10552 #, no-wrap
10553 msgid "B<PTRACE_EVENT_EXEC>"
10554 msgstr "B<PTRACE_EVENT_EXEC>"
10555
10556 #. type: Plain text
10557 #: build/C/man2/ptrace.2:1318
10558 msgid ""
10559 "Stop before return from B<execve>(2).  Since Linux 3.0, "
10560 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
10561 msgstr ""
10562
10563 #. type: TP
10564 #: build/C/man2/ptrace.2:1318
10565 #, no-wrap
10566 msgid "B<PTRACE_EVENT_EXIT>"
10567 msgstr "B<PTRACE_EVENT_EXIT>"
10568
10569 #. type: Plain text
10570 #: build/C/man2/ptrace.2:1334
10571 msgid ""
10572 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
10573 "exit caused by B<execve>(2)  in a multithreaded process.  "
10574 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
10575 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
10576 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
10577 msgstr ""
10578
10579 #. type: TP
10580 #: build/C/man2/ptrace.2:1334
10581 #, no-wrap
10582 msgid "B<PTRACE_EVENT_STOP>"
10583 msgstr "B<PTRACE_EVENT_STOP>"
10584
10585 #. type: Plain text
10586 #: build/C/man2/ptrace.2:1346
10587 msgid ""
10588 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
10589 "ptrace-stop when a new child is attached (only if attached using "
10590 "B<PTRACE_SEIZE>), or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
10591 msgstr ""
10592
10593 #. type: TP
10594 #: build/C/man2/ptrace.2:1346
10595 #, no-wrap
10596 msgid "B<PTRACE_EVENT_SECCOMP>"
10597 msgstr "B<PTRACE_EVENT_SECCOMP>"
10598
10599 #. type: Plain text
10600 #: build/C/man2/ptrace.2:1357
10601 msgid ""
10602 "Stop triggered by a B<seccomp>(2)  rule on tracee syscall entry when "
10603 "B<PTRACE_O_TRACESECCOMP> has been set by the tracer.  The seccomp event "
10604 "message data (from the B<SECCOMP_RET_DATA> portion of the seccomp filter "
10605 "rule) can be retrieved with B<PTRACE_GETEVENTMSG>."
10606 msgstr ""
10607
10608 #. type: Plain text
10609 #: build/C/man2/ptrace.2:1369
10610 msgid ""
10611 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
10612 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
10613 msgstr ""
10614
10615 #. type: SS
10616 #: build/C/man2/ptrace.2:1369
10617 #, no-wrap
10618 msgid "Syscall-stops"
10619 msgstr ""
10620
10621 #. type: Plain text
10622 #: build/C/man2/ptrace.2:1382
10623 msgid ""
10624 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
10625 "enter-stop just prior to entering any system call.  If the tracer restarts "
10626 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
10627 "the system call is finished, or if it is interrupted by a signal.  (That is, "
10628 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
10629 "exit-stop; it happens I<after> syscall-exit-stop.)"
10630 msgstr ""
10631
10632 #. type: Plain text
10633 #: build/C/man2/ptrace.2:1396
10634 msgid ""
10635 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
10636 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
10637 "B<SIGKILL>, or die silently (if it is a thread group leader, the "
10638 "B<execve>(2)  happened in another thread, and that thread is not traced by "
10639 "the same tracer; this situation is discussed later)."
10640 msgstr ""
10641
10642 #. type: Plain text
10643 #: build/C/man2/ptrace.2:1411
10644 msgid ""
10645 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
10646 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and "
10647 "I<WSTOPSIG(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> "
10648 "option was set by the tracer, then I<WSTOPSIG(status)> will give the value "
10649 "I<(SIGTRAP\\ |\\ 0x80)>."
10650 msgstr ""
10651
10652 #. type: Plain text
10653 #: build/C/man2/ptrace.2:1417
10654 msgid ""
10655 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
10656 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
10657 msgstr ""
10658
10659 #. type: TP
10660 #: build/C/man2/ptrace.2:1417
10661 #, no-wrap
10662 msgid "I<si_code> E<lt>= 0"
10663 msgstr ""
10664
10665 #. type: Plain text
10666 #: build/C/man2/ptrace.2:1429
10667 msgid ""
10668 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
10669 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
10670 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
10671 "asynchronous I/O request."
10672 msgstr ""
10673
10674 #. type: TP
10675 #: build/C/man2/ptrace.2:1429
10676 #, no-wrap
10677 msgid "I<si_code> == SI_KERNEL (0x80)"
10678 msgstr ""
10679
10680 #. type: Plain text
10681 #: build/C/man2/ptrace.2:1433
10682 msgid "B<SIGTRAP> was sent by the kernel."
10683 msgstr ""
10684
10685 #. type: TP
10686 #: build/C/man2/ptrace.2:1433
10687 #, no-wrap
10688 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
10689 msgstr ""
10690
10691 #. type: Plain text
10692 #: build/C/man2/ptrace.2:1436
10693 msgid "This is a syscall-stop."
10694 msgstr ""
10695
10696 #. type: Plain text
10697 #: build/C/man2/ptrace.2:1441
10698 msgid ""
10699 "However, syscall-stops happen very often (twice per system call), and "
10700 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
10701 "expensive."
10702 msgstr ""
10703
10704 #. type: Plain text
10705 #: build/C/man2/ptrace.2:1464
10706 msgid ""
10707 "Some architectures allow the cases to be distinguished by examining "
10708 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
10709 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
10710 "syscall-exit-stop, and at this point I<rax> almost never contains -"
10711 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
10712 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
10713 "and can be detected this way.  But such detection is fragile and is best "
10714 "avoided."
10715 msgstr ""
10716
10717 #. type: Plain text
10718 #: build/C/man2/ptrace.2:1470
10719 msgid ""
10720 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
10721 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
10722 "reliable and does not incur a performance penalty."
10723 msgstr ""
10724
10725 #. type: Plain text
10726 #: build/C/man2/ptrace.2:1481
10727 msgid ""
10728 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
10729 "other by the tracer.  The tracer needs to keep track of the sequence of "
10730 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
10731 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
10732 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
10733 "kinds of ptrace-stop can occur in between."
10734 msgstr ""
10735
10736 #. type: Plain text
10737 #: build/C/man2/ptrace.2:1486
10738 msgid ""
10739 "If after syscall-enter-stop, the tracer uses a restarting command other than "
10740 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
10741 msgstr ""
10742
10743 #. type: Plain text
10744 #: build/C/man2/ptrace.2:1498
10745 msgid ""
10746 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
10747 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
10748 msgstr ""
10749
10750 #. type: SS
10751 #: build/C/man2/ptrace.2:1498
10752 #, no-wrap
10753 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
10754 msgstr ""
10755
10756 #
10757 #.  FIXME .
10758 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
10759 #.  PTRACE_SYSEMU_SINGLESTEP
10760 #. type: Plain text
10761 #: build/C/man2/ptrace.2:1504
10762 msgid "[Details of these kinds of stops are yet to be documented.]"
10763 msgstr ""
10764
10765 #. type: SS
10766 #: build/C/man2/ptrace.2:1504
10767 #, no-wrap
10768 msgid "Informational and restarting ptrace commands"
10769 msgstr ""
10770
10771 #. type: Plain text
10772 #: build/C/man2/ptrace.2:1514
10773 msgid ""
10774 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
10775 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
10776 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
10777 msgstr ""
10778
10779 #. type: Plain text
10780 #: build/C/man2/ptrace.2:1519
10781 msgid ""
10782 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
10783 "tracee using informational commands.  These commands leave the tracee in "
10784 "ptrace-stopped state:"
10785 msgstr ""
10786
10787 #. type: Plain text
10788 #: build/C/man2/ptrace.2:1531
10789 #, no-wrap
10790 msgid ""
10791 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
10792 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
10793 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
10794 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
10795 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
10796 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
10797 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
10798 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
10799 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
10800 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10801 msgstr ""
10802
10803 #. type: Plain text
10804 #: build/C/man2/ptrace.2:1543
10805 msgid ""
10806 "Note that some errors are not reported.  For example, setting signal "
10807 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
10808 "call may succeed (return 0 and not set I<errno>); querying "
10809 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
10810 "ptrace-stop is not documented as returning a meaningful event message."
10811 msgstr ""
10812
10813 #. type: Plain text
10814 #: build/C/man2/ptrace.2:1545
10815 msgid "The call"
10816 msgstr ""
10817
10818 #. type: Plain text
10819 #: build/C/man2/ptrace.2:1547
10820 #, no-wrap
10821 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
10822 msgstr ""
10823
10824 #. type: Plain text
10825 #: build/C/man2/ptrace.2:1556
10826 msgid ""
10827 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
10828 "inherited by new tracees created and \"auto-attached\" via active "
10829 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
10830 "options."
10831 msgstr ""
10832
10833 #. type: Plain text
10834 #: build/C/man2/ptrace.2:1559
10835 msgid ""
10836 "Another group of commands makes the ptrace-stopped tracee run.  They have "
10837 "the form:"
10838 msgstr ""
10839
10840 #. type: Plain text
10841 #: build/C/man2/ptrace.2:1561
10842 #, no-wrap
10843 msgid "    ptrace(cmd, pid, 0, sig);\n"
10844 msgstr ""
10845
10846 #. type: Plain text
10847 #: build/C/man2/ptrace.2:1582
10848 msgid ""
10849 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
10850 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
10851 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
10852 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
10853 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
10854 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
10855 msgstr ""
10856
10857 #. type: SS
10858 #: build/C/man2/ptrace.2:1582
10859 #, no-wrap
10860 msgid "Attaching and detaching"
10861 msgstr ""
10862
10863 #. type: Plain text
10864 #: build/C/man2/ptrace.2:1584
10865 msgid "A thread can be attached to the tracer using the call"
10866 msgstr ""
10867
10868 #. type: Plain text
10869 #: build/C/man2/ptrace.2:1586
10870 #, no-wrap
10871 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
10872 msgstr ""
10873
10874 #. type: Plain text
10875 #: build/C/man2/ptrace.2:1588 build/C/man2/ptrace.2:2090
10876 msgid "or"
10877 msgstr ""
10878
10879 #. type: Plain text
10880 #: build/C/man2/ptrace.2:1590
10881 #, no-wrap
10882 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
10883 msgstr ""
10884
10885 #
10886 #.  FIXME . Describe how to attach to a thread which is already group-stopped.
10887 #. type: Plain text
10888 #: build/C/man2/ptrace.2:1614
10889 msgid ""
10890 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
10891 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
10892 "signals are concurrently sent to this thread during attach, the tracer may "
10893 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
10894 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
10895 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
10896 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
10897 "B<SIGSTOP> may be lost."
10898 msgstr ""
10899
10900 #. type: Plain text
10901 #: build/C/man2/ptrace.2:1621
10902 msgid ""
10903 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
10904 "may cause a stray B<EINTR> return from the currently executing system call "
10905 "in the tracee, as described in the \"Signal injection and suppression\" "
10906 "section."
10907 msgstr ""
10908
10909 #. type: Plain text
10910 #: build/C/man2/ptrace.2:1633
10911 msgid ""
10912 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
10913 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
10914 "after attach (or at any other time) without sending it any signals, use "
10915 "B<PTRACE_INTERRUPT> command."
10916 msgstr ""
10917
10918 #. type: Plain text
10919 #: build/C/man2/ptrace.2:1635
10920 msgid "The request"
10921 msgstr ""
10922
10923 #. type: Plain text
10924 #: build/C/man2/ptrace.2:1637
10925 #, no-wrap
10926 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
10927 msgstr ""
10928
10929 #. type: Plain text
10930 #: build/C/man2/ptrace.2:1643
10931 msgid ""
10932 "turns the calling thread into a tracee.  The thread continues to run "
10933 "(doesn't enter ptrace-stop).  A common practice is to follow the "
10934 "B<PTRACE_TRACEME> with"
10935 msgstr ""
10936
10937 #. type: Plain text
10938 #: build/C/man2/ptrace.2:1645
10939 #, no-wrap
10940 msgid "    raise(SIGSTOP);\n"
10941 msgstr ""
10942
10943 #. type: Plain text
10944 #: build/C/man2/ptrace.2:1648
10945 msgid ""
10946 "and allow the parent (which is our tracer now) to observe our signal-"
10947 "delivery-stop."
10948 msgstr ""
10949
10950 #. type: Plain text
10951 #: build/C/man2/ptrace.2:1672
10952 msgid ""
10953 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
10954 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
10955 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
10956 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
10957 "other kinds of B<clone>(2), are automatically attached to the same tracer "
10958 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
10959 "them to enter signal-delivery-stop after they exit the system call which "
10960 "created them."
10961 msgstr ""
10962
10963 #. type: Plain text
10964 #: build/C/man2/ptrace.2:1674
10965 msgid "Detaching of the tracee is performed by:"
10966 msgstr ""
10967
10968 #. type: Plain text
10969 #: build/C/man2/ptrace.2:1676
10970 #, no-wrap
10971 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
10972 msgstr ""
10973
10974 #. type: Plain text
10975 #: build/C/man2/ptrace.2:1684
10976 msgid ""
10977 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
10978 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
10979 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
10980 msgstr ""
10981
10982 #.  FIXME . Describe how to detach from a group-stopped tracee so that it
10983 #.         doesn't run, but continues to wait for SIGCONT.
10984 #. type: Plain text
10985 #: build/C/man2/ptrace.2:1708
10986 msgid ""
10987 "If the tracee is running when the tracer wants to detach it, the usual "
10988 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
10989 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
10990 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
10991 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
10992 "is that the tracee may enter other ptrace-stops and needs to be restarted "
10993 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
10994 "to be sure that the tracee is not already ptrace-stopped, because no signal "
10995 "delivery happens while it is\\(emnot even B<SIGSTOP>."
10996 msgstr ""
10997
10998 #. type: Plain text
10999 #: build/C/man2/ptrace.2:1716
11000 msgid ""
11001 "If the tracer dies, all tracees are automatically detached and restarted, "
11002 "unless they were in group-stop.  Handling of restart from group-stop is "
11003 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
11004 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
11005 "stop, the pending signal is injected."
11006 msgstr ""
11007
11008 #. type: SS
11009 #: build/C/man2/ptrace.2:1716
11010 #, no-wrap
11011 msgid "execve(2) under ptrace"
11012 msgstr ""
11013
11014 #
11015 #.  clone(2) CLONE_THREAD says:
11016 #.      If  any  of the threads in a thread group performs an execve(2),
11017 #.      then all threads other than the thread group leader are terminated,
11018 #.      and the new program is executed in the thread group leader.
11019 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
11020 #. type: Plain text
11021 #: build/C/man2/ptrace.2:1735
11022 msgid ""
11023 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
11024 "destroys all other threads in the process, and resets the thread ID of the "
11025 "execing thread to the thread group ID (process ID).  (Or, to put things "
11026 "another way, when a multithreaded process does an B<execve>(2), at "
11027 "completion of the call, it appears as though the B<execve>(2)  occurred in "
11028 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
11029 "This resetting of the thread ID looks very confusing to tracers:"
11030 msgstr ""
11031
11032 #. type: Plain text
11033 #: build/C/man2/ptrace.2:1745
11034 msgid ""
11035 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
11036 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
11037 "the thread group leader report death as if they exited via B<_exit>(2)  with "
11038 "exit code 0."
11039 msgstr ""
11040
11041 #. type: Plain text
11042 #: build/C/man2/ptrace.2:1753
11043 msgid ""
11044 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
11045 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
11046 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
11047 "ID is reset to be the same as its process ID, which is the same as the "
11048 "thread group leader's thread ID."
11049 msgstr ""
11050
11051 #. type: Plain text
11052 #: build/C/man2/ptrace.2:1759
11053 msgid ""
11054 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
11055 "option was turned on."
11056 msgstr ""
11057
11058 #. type: Plain text
11059 #: build/C/man2/ptrace.2:1780
11060 msgid ""
11061 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
11062 "this time, it appears to the tracer that the dead thread leader \"reappears "
11063 "from nowhere\".  (Note: the thread group leader does not report death via "
11064 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
11065 "eliminates the possibility that the tracer will see it dying and then "
11066 "reappearing.)  If the thread group leader was still alive, for the tracer "
11067 "this may look as if thread group leader returns from a different system call "
11068 "than it entered, or even \"returned from a system call even though it was "
11069 "not in any system call\".  If the thread group leader was not traced (or was "
11070 "traced by a different tracer), then during B<execve>(2)  it will appear as "
11071 "if it has become a tracee of the tracer of the execing tracee."
11072 msgstr ""
11073
11074 #. type: Plain text
11075 #: build/C/man2/ptrace.2:1783
11076 msgid ""
11077 "All of the above effects are the artifacts of the thread ID change in the "
11078 "tracee."
11079 msgstr ""
11080
11081 #. type: Plain text
11082 #: build/C/man2/ptrace.2:1803
11083 msgid ""
11084 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
11085 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
11086 "before B<execve>(2)  returns.  In this stop, the tracer can use "
11087 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
11088 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
11089 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
11090 msgstr ""
11091
11092 #. type: Plain text
11093 #: build/C/man2/ptrace.2:1809
11094 msgid ""
11095 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
11096 "guaranteed that except this tracee and the thread group leader, no other "
11097 "threads from the process are alive."
11098 msgstr ""
11099
11100 #. type: Plain text
11101 #: build/C/man2/ptrace.2:1817
11102 msgid ""
11103 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
11104 "clean up all its internal data structures describing the threads of this "
11105 "process, and retain only one data structure\\(emone which describes the "
11106 "single still running tracee, with"
11107 msgstr ""
11108
11109 #. type: Plain text
11110 #: build/C/man2/ptrace.2:1819
11111 #, no-wrap
11112 msgid "    thread ID == thread group ID == process ID.\n"
11113 msgstr ""
11114
11115 #. type: Plain text
11116 #: build/C/man2/ptrace.2:1823
11117 msgid "Example: two threads call B<execve>(2)  at the same time:"
11118 msgstr ""
11119
11120 #. type: Plain text
11121 #: build/C/man2/ptrace.2:1834
11122 #, no-wrap
11123 msgid ""
11124 "*** we get syscall-enter-stop in thread 1: **\n"
11125 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
11126 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
11127 "*** we get syscall-enter-stop in thread 2: **\n"
11128 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
11129 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
11130 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
11131 "*** we get syscall-exit-stop for PID0: **\n"
11132 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
11133 msgstr ""
11134
11135 #. type: Plain text
11136 #: build/C/man2/ptrace.2:1857
11137 msgid ""
11138 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
11139 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after "
11140 "B<execve>(2)  returns.  This is an ordinary signal (similar to one which can "
11141 "be generated by I<kill -TRAP>), not a special kind of ptrace-stop.  "
11142 "Employing B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
11143 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
11144 "delivered (much) later."
11145 msgstr ""
11146
11147 #. type: Plain text
11148 #: build/C/man2/ptrace.2:1876
11149 msgid ""
11150 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
11151 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
11152 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
11153 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
11154 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
11155 "B<SIGTRAP> is the recommended approach."
11156 msgstr ""
11157
11158 #. type: SS
11159 #: build/C/man2/ptrace.2:1876
11160 #, no-wrap
11161 msgid "Real parent"
11162 msgstr ""
11163
11164 #. type: Plain text
11165 #: build/C/man2/ptrace.2:1883
11166 msgid ""
11167 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
11168 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
11169 "receiving several kinds of B<waitpid>(2)  notifications when the child "
11170 "process is traced by some other process."
11171 msgstr ""
11172
11173 #. type: Plain text
11174 #: build/C/man2/ptrace.2:1886
11175 msgid ""
11176 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
11177 "exist; see BUGS below."
11178 msgstr ""
11179
11180 #. type: Plain text
11181 #: build/C/man2/ptrace.2:1888
11182 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
11183 msgstr ""
11184
11185 #. type: Plain text
11186 #: build/C/man2/ptrace.2:1896
11187 msgid ""
11188 "exit/death by signal is reported first to the tracer, then, when the tracer "
11189 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
11190 "only when the whole multithreaded process exits).  If the tracer and the "
11191 "real parent are the same process, the report is sent only once."
11192 msgstr ""
11193
11194 #. type: Plain text
11195 #: build/C/man2/ptrace.2:1901
11196 msgid ""
11197 "On success, the B<PTRACE_PEEK*> requests return the requested data (but see "
11198 "NOTES), while other requests return zero."
11199 msgstr ""
11200 "成功すると B<PTRACE_PEEK*> の場合は要求したデータを返し (「注意」を参照)、 そ"
11201 "れ以外の場合は 0 を返す。"
11202
11203 #. type: Plain text
11204 #: build/C/man2/ptrace.2:1911
11205 msgid ""
11206 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
11207 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
11208 "caller must clear I<errno> before the call, and then check it afterward to "
11209 "determine whether or not an error occurred."
11210 msgstr ""
11211 "エラーの場合は -1 を返し、 I<errno> が適切に設定される。 B<PTRACE_PEEK*> が成"
11212 "功して返す値も-1 になることがあるため、 呼び出し元は呼び出しを行う前に "
11213 "I<errno> をクリアして、 あとで I<errno> を調べ、エラーか発生したのかどうかを"
11214 "判断しなければならない。"
11215
11216 #. type: Plain text
11217 #: build/C/man2/ptrace.2:1915
11218 msgid ""
11219 "(i386 only) There was an error with allocating or freeing a debug register."
11220 msgstr "(i386 のみ) デバッグレジスターの確保または解放でエラーが発生した。"
11221
11222 #. type: Plain text
11223 #: build/C/man2/ptrace.2:1926
11224 msgid ""
11225 "There was an attempt to read from or write to an invalid area in the "
11226 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
11227 "accessible.  Unfortunately, under Linux, different variations of this fault "
11228 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
11229 msgstr ""
11230 "tracer または tracee のメモリーの不正な領域に読み書きしようとした。 おそらく"
11231 "その領域がマッピングされていないか、 その領域へのアクセスが許されていないかで"
11232 "ある。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意的"
11233 "に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
11234
11235 #. type: Plain text
11236 #: build/C/man2/ptrace.2:1929
11237 msgid "An attempt was made to set an invalid option."
11238 msgstr "不正なオプションを設定しようとした。"
11239
11240 #. type: Plain text
11241 #: build/C/man2/ptrace.2:1936
11242 msgid ""
11243 "I<request> is invalid, or an attempt was made to read from or write to an "
11244 "invalid area in the tracer's or the tracee's memory, or there was a word-"
11245 "alignment violation, or an invalid signal was specified during a restart "
11246 "request."
11247 msgstr ""
11248 "I<request> が不正である。 または、tracer または tracee のメモリーの 不正な領"
11249 "域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再開"
11250 "の要求で不正なシグナルを指定した。"
11251
11252 #. type: Plain text
11253 #: build/C/man2/ptrace.2:1949
11254 msgid ""
11255 "The specified process cannot be traced.  This could be because the tracer "
11256 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
11257 "unprivileged processes cannot trace processes that they cannot send signals "
11258 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
11259 "Alternatively, the process may already be being traced, or (on kernels "
11260 "before 2.6.26) be B<init>(1)  (PID 1)."
11261 msgstr ""
11262 "指定したプロセスをトレースすることができない。これは tracer が 必要な権限 (必"
11263 "要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合があ"
11264 "る。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることができ"
11265 "ないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実行"
11266 "しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
11267 "る、 または (カーネル 2.6.26 より前では) B<init>(1)  プロセス (PID が 1) であ"
11268 "る。"
11269
11270 #. type: Plain text
11271 #: build/C/man2/ptrace.2:1954
11272 msgid ""
11273 "The specified process does not exist, or is not currently being traced by "
11274 "the caller, or is not stopped (for requests that require a stopped tracee)."
11275 msgstr ""
11276 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセスが"
11277 "トレース中のプロセスではない。 または、指定したプロセスが停止していない "
11278 "(tracee が停止していることが必要な要求の場合)。"
11279
11280 #. type: Plain text
11281 #: build/C/man2/ptrace.2:1956
11282 msgid "SVr4, 4.3BSD."
11283 msgstr "SVr4, 4.3BSD."
11284
11285 #. type: Plain text
11286 #: build/C/man2/ptrace.2:1971
11287 msgid ""
11288 "Although arguments to B<ptrace>()  are interpreted according to the "
11289 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
11290 "function with only the I<request> argument fixed.  It is recommended to "
11291 "always supply four arguments, even if the requested operation does not use "
11292 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
11293 msgstr ""
11294 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
11295 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
11296 "関数として宣言されている。 要求する操作が引き数を使用しない場合であっても、 "
11297 "未使用や無視される引き数には I<0L> や I<(void\\ *)\\ 0> を設定して、 4 つの引"
11298 "き数を常に省略せずに指定することを推奨する。"
11299
11300 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
11301 #. type: Plain text
11302 #: build/C/man2/ptrace.2:1976
11303 msgid ""
11304 "In Linux kernels before 2.6.26, B<init>(1), the process with PID 1, may not "
11305 "be traced."
11306 msgstr ""
11307 "バージョン 2.6.26 より前の Linux カーネルでは、 B<init>(1) すなわち PID が 1 "
11308 "のプロセスはトレースすることができない。"
11309
11310 #.  See http://lkml.org/lkml/2008/5/8/375
11311 #. type: Plain text
11312 #: build/C/man2/ptrace.2:1983
11313 msgid ""
11314 "The layout of the contents of memory and the USER area are quite operating-"
11315 "system- and architecture-specific.  The offset supplied, and the data "
11316 "returned, might not entirely match with the definition of I<struct user>."
11317 msgstr ""
11318 "メモリーや USER 領域の内容や配置はオペレーティングシステムごと、アーキテク"
11319 "チャーごとに 非常に依存する。 オフセットが指定された場合、返されるデータは "
11320 "I<struct user> の定義と完全に一致しないこともありえる。"
11321
11322 #. type: Plain text
11323 #: build/C/man2/ptrace.2:1986
11324 msgid ""
11325 "The size of a \"word\" is determined by the operating-system variant (e.g., "
11326 "for 32-bit Linux it is 32 bits)."
11327 msgstr ""
11328 "「ワード (word) 」の大きさはオペレーティングシステムによって決まる。 (例え"
11329 "ば、32 ビットの Linux では 32 ビットである、など。)"
11330
11331 #. type: Plain text
11332 #: build/C/man2/ptrace.2:1994
11333 msgid ""
11334 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
11335 "Its behavior differs significantly on other flavors of UNIX.  In any case, "
11336 "use of B<ptrace>()  is highly specific to the operating system and "
11337 "architecture."
11338 msgstr ""
11339 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
11340 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
11341 "を使うとオペレーションシステムやアーキテクチャーに非常に依存したものになる。"
11342
11343 #. type: SS
11344 #: build/C/man2/ptrace.2:1994
11345 #, no-wrap
11346 msgid "C library/kernel ABI differences"
11347 msgstr "C ライブラリとカーネル ABI の違い"
11348
11349 #. type: Plain text
11350 #: build/C/man2/ptrace.2:2006
11351 msgid ""
11352 "At the system call level, the B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>, and "
11353 "B<PTRACE_PEEKUSER> requests have a different API: they store the result at "
11354 "the address specified by the I<data> parameter, and the return value is the "
11355 "error flag.  The glibc wrapper function provides the API given in "
11356 "DESCRIPTION above, with the result being returned via the function return "
11357 "value."
11358 msgstr ""
11359
11360 #. type: Plain text
11361 #: build/C/man2/ptrace.2:2017
11362 msgid ""
11363 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
11364 "different value than the one for 2.4.  This leads to applications compiled "
11365 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
11366 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
11367 "that is defined."
11368 msgstr ""
11369 "カーネル 2.6 のヘッダーがインストールされたホストでは、 B<PTRACE_SETOPTIONS> "
11370 "はカーネル 2.4 のヘッダーとは異なる値で宣言される。 このため、カーネル 2.6 の"
11371 "ヘッダーでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しな"
11372 "い。 この問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 "
11373 "B<PTRACE_SETOPTIONS> を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処でき"
11374 "る。"
11375
11376 #. type: Plain text
11377 #: build/C/man2/ptrace.2:2020
11378 msgid ""
11379 "Group-stop notifications are sent to the tracer, but not to real parent.  "
11380 "Last confirmed on 2.6.38.6."
11381 msgstr ""
11382
11383 #.  Note from Denys Vlasenko:
11384 #.      Here "exits" means any kind of death - _exit, exit_group,
11385 #.      signal death. Signal death and exit_group cases are trivial,
11386 #.      though: since signal death and exit_group kill all other threads
11387 #.      too, "until all other threads exit" thing happens rather soon
11388 #.      in these cases. Therefore, only _exit presents observably
11389 #.      puzzling behavior to ptrace users: thread leader _exit's,
11390 #.      but WIFEXITED isn't reported! We are trying to explain here
11391 #.      why it is so.
11392 #.   FIXME . need to test/verify this scenario
11393 #. type: Plain text
11394 #: build/C/man2/ptrace.2:2051
11395 msgid ""
11396 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
11397 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
11398 "subsequent B<WIFEXITED> notification will not be delivered until all other "
11399 "threads exit.  As explained above, if one of other threads calls "
11400 "B<execve>(2), the death of the thread group leader will I<never> be "
11401 "reported.  If the execed thread is not traced by this tracer, the tracer "
11402 "will never know that B<execve>(2)  happened.  One possible workaround is to "
11403 "B<PTRACE_DETACH> the thread group leader instead of restarting it in this "
11404 "case.  Last confirmed on 2.6.38.6."
11405 msgstr ""
11406
11407 #. type: Plain text
11408 #: build/C/man2/ptrace.2:2061
11409 msgid ""
11410 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
11411 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
11412 "to always immediately kill tasks even under ptrace.  Last confirmed on "
11413 "2.6.38.6."
11414 msgstr ""
11415
11416 #. type: Plain text
11417 #: build/C/man2/ptrace.2:2079
11418 msgid ""
11419 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
11420 "delivery was suppressed by the tracer.  (This is very typical operation: it "
11421 "is usually done by debuggers on every attach, in order to not introduce a "
11422 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
11423 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
11424 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
11425 "that when you attach to a quiescent process with the command"
11426 msgstr ""
11427
11428 #. type: Plain text
11429 #: build/C/man2/ptrace.2:2081
11430 #, no-wrap
11431 msgid "    strace -p E<lt>process-IDE<gt>\n"
11432 msgstr ""
11433
11434 #. type: Plain text
11435 #: build/C/man2/ptrace.2:2084
11436 msgid "then, instead of the usual and expected one-line output such as"
11437 msgstr ""
11438
11439 #. type: Plain text
11440 #: build/C/man2/ptrace.2:2087
11441 #, no-wrap
11442 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
11443 msgstr ""
11444
11445 #. type: Plain text
11446 #: build/C/man2/ptrace.2:2093
11447 #, no-wrap
11448 msgid "    select(6, [5], NULL, [5], NULL_\n"
11449 msgstr ""
11450
11451 #. type: Plain text
11452 #: build/C/man2/ptrace.2:2097
11453 msgid ""
11454 "('_' denotes the cursor position), you observe more than one line.  For "
11455 "example:"
11456 msgstr ""
11457
11458 #. type: Plain text
11459 #: build/C/man2/ptrace.2:2101
11460 #, no-wrap
11461 msgid ""
11462 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
11463 "    epoll_wait(4,_\n"
11464 msgstr ""
11465
11466 #. type: Plain text
11467 #: build/C/man2/ptrace.2:2122
11468 msgid ""
11469 "What is not visible here is that the process was blocked in "
11470 "B<epoll_wait>(2)  before B<strace>(1)  has attached to it.  Attaching caused "
11471 "B<epoll_wait>(2)  to return to user space with the error B<EINTR>.  In this "
11472 "particular case, the program reacted to B<EINTR> by checking the current "
11473 "time, and then executing B<epoll_wait>(2)  again.  (Programs which do not "
11474 "expect such \"stray\" B<EINTR> errors may behave in an unintended way upon "
11475 "an B<strace>(1)  attach.)"
11476 msgstr ""
11477
11478 #. type: Plain text
11479 #: build/C/man2/ptrace.2:2137
11480 msgid ""
11481 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
11482 "B<gettid>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), "
11483 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
11484 msgstr ""
11485 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
11486 "B<gettid>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), "
11487 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
11488
11489 #. type: TH
11490 #: build/C/man2/quotactl.2:27
11491 #, no-wrap
11492 msgid "QUOTACTL"
11493 msgstr "QUOTACTL"
11494
11495 #. type: TH
11496 #: build/C/man2/quotactl.2:27
11497 #, no-wrap
11498 msgid "2010-06-16"
11499 msgstr "2010-06-16"
11500
11501 #. type: Plain text
11502 #: build/C/man2/quotactl.2:30
11503 msgid "quotactl - manipulate disk quotas"
11504 msgstr "quotactl - ディスク quota を操作する"
11505
11506 #. type: Plain text
11507 #: build/C/man2/quotactl.2:34
11508 #, no-wrap
11509 msgid ""
11510 "B<#include E<lt>sys/quota.hE<gt>>\n"
11511 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11512 msgstr ""
11513 "B<#include E<lt>sys/quota.hE<gt>>\n"
11514 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
11515
11516 #. type: Plain text
11517 #: build/C/man2/quotactl.2:37
11518 #, no-wrap
11519 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11520 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
11521
11522 #. type: Plain text
11523 #: build/C/man2/quotactl.2:49
11524 msgid ""
11525 "The quota system can be used to set per-user and per-group limits on the "
11526 "amount of disk space used on a filesystem.  For each user and/or group, a "
11527 "soft limit and a hard limit can be set for each filesystem.  The hard limit "
11528 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
11529 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
11530 "week (by default) at a time; after this time, the soft limit counts as a "
11531 "hard limit."
11532 msgstr ""
11533
11534 #. type: Plain text
11535 #: build/C/man2/quotactl.2:74
11536 msgid ""
11537 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
11538 "indicates a command to be applied to the user or group ID specified in "
11539 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
11540 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
11541 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
11542 msgstr ""
11543
11544 #. type: Plain text
11545 #: build/C/man2/quotactl.2:79
11546 msgid ""
11547 "The I<special> argument is a pointer to a null-terminated string containing "
11548 "the pathname of the (mounted) block special device for the filesystem being "
11549 "manipulated."
11550 msgstr ""
11551
11552 #. type: Plain text
11553 #: build/C/man2/quotactl.2:87
11554 msgid ""
11555 "The I<addr> argument is the address of an optional, command-specific, data "
11556 "structure that is copied in or out of the system.  The interpretation of "
11557 "I<addr> is given with each command below."
11558 msgstr ""
11559
11560 #. type: Plain text
11561 #: build/C/man2/quotactl.2:91
11562 msgid "The I<subcmd> value is one of the following:"
11563 msgstr "I<subcmd> の値は以下のいずれかである"
11564
11565 #. type: TP
11566 #: build/C/man2/quotactl.2:91
11567 #, no-wrap
11568 msgid "B<Q_QUOTAON>"
11569 msgstr "B<Q_QUOTAON>"
11570
11571 #. type: Plain text
11572 #: build/C/man2/quotactl.2:98
11573 msgid ""
11574 "Turn on quotas for a filesystem.  The I<id> argument is the identification "
11575 "number of the quota format to be used.  Currently, there are three supported "
11576 "quota formats:"
11577 msgstr ""
11578
11579 #. type: TP
11580 #: build/C/man2/quotactl.2:99
11581 #, no-wrap
11582 msgid "B<QFMT_VFS_OLD>"
11583 msgstr ""
11584
11585 #. type: Plain text
11586 #: build/C/man2/quotactl.2:102
11587 msgid "The original quota format."
11588 msgstr ""
11589
11590 #. type: TP
11591 #: build/C/man2/quotactl.2:102
11592 #, no-wrap
11593 msgid "B<QFMT_VFS_V0>"
11594 msgstr ""
11595
11596 #. type: Plain text
11597 #: build/C/man2/quotactl.2:106
11598 msgid ""
11599 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
11600 "quota limits up to 2^42 bytes and 2^32 inodes."
11601 msgstr ""
11602
11603 #. type: TP
11604 #: build/C/man2/quotactl.2:106
11605 #, no-wrap
11606 msgid "B<QFMT_VFS_V1>"
11607 msgstr ""
11608
11609 #. type: Plain text
11610 #: build/C/man2/quotactl.2:110
11611 msgid ""
11612 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
11613 "bytes and 2^64 inodes."
11614 msgstr ""
11615
11616 #. type: Plain text
11617 #: build/C/man2/quotactl.2:121
11618 msgid ""
11619 "The I<addr> argument points to the pathname of a file containing the quotas "
11620 "for the filesystem.  The quota file must exist; it is normally created with "
11621 "the B<quotacheck>(8)  program.  This operation requires privilege "
11622 "(B<CAP_SYS_ADMIN>)."
11623 msgstr ""
11624
11625 #. type: TP
11626 #: build/C/man2/quotactl.2:121
11627 #, no-wrap
11628 msgid "B<Q_QUOTAOFF>"
11629 msgstr "B<Q_QUOTAOFF>"
11630
11631 #. type: Plain text
11632 #: build/C/man2/quotactl.2:131
11633 msgid ""
11634 "Turn off quotas for a filesystem.  The I<addr> and I<id> arguments are "
11635 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
11636 msgstr ""
11637
11638 #. type: TP
11639 #: build/C/man2/quotactl.2:131
11640 #, no-wrap
11641 msgid "B<Q_GETQUOTA>"
11642 msgstr "B<Q_GETQUOTA>"
11643
11644 #. type: Plain text
11645 #: build/C/man2/quotactl.2:142
11646 msgid ""
11647 "Get disk quota limits and current usage for user or group I<id>.  The "
11648 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
11649 "quota.hE<gt>> as follows:"
11650 msgstr ""
11651
11652 #. type: Plain text
11653 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
11654 #, no-wrap
11655 msgid ""
11656 "/* uint64_t is an unsigned 64-bit integer;\n"
11657 "   uint32_t is an unsigned 32-bit integer */\n"
11658 msgstr ""
11659
11660 #. type: Plain text
11661 #: build/C/man2/quotactl.2:167
11662 #, no-wrap
11663 msgid ""
11664 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
11665 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
11666 "                                  quota blocks alloc */\n"
11667 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
11668 "                                  disk quota blocks */\n"
11669 "    uint64_t dqb_curspace;     /* current quota block\n"
11670 "                                  count */\n"
11671 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
11672 "                                  allocated inodes */\n"
11673 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
11674 "    uint64_t dqb_curinodes;    /* current number of\n"
11675 "                                  allocated inodes */\n"
11676 "    uint64_t dqb_btime;        /* time limit for excessive\n"
11677 "                                  disk use */\n"
11678 "    uint64_t dqb_itime;        /* time limit for excessive\n"
11679 "                                  files */\n"
11680 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
11681 "                                  constants */\n"
11682 "};\n"
11683 msgstr ""
11684
11685 #. type: Plain text
11686 #: build/C/man2/quotactl.2:170
11687 #, no-wrap
11688 msgid ""
11689 "/* Flags in dqb_valid that indicate which fields in\n"
11690 "   dqblk structure are valid. */\n"
11691 msgstr ""
11692
11693 #. type: Plain text
11694 #: build/C/man2/quotactl.2:181
11695 #, no-wrap
11696 msgid ""
11697 "#define QIF_BLIMITS   1\n"
11698 "#define QIF_SPACE     2\n"
11699 "#define QIF_ILIMITS   4\n"
11700 "#define QIF_INODES    8\n"
11701 "#define QIF_BTIME     16\n"
11702 "#define QIF_ITIME     32\n"
11703 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
11704 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
11705 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
11706 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
11707 msgstr ""
11708
11709 #. type: Plain text
11710 #: build/C/man2/quotactl.2:198
11711 msgid ""
11712 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
11713 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
11714 "entries of the I<dqblk> structure and marks them as valid in the "
11715 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
11716 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
11717 msgstr ""
11718
11719 #. type: TP
11720 #: build/C/man2/quotactl.2:198
11721 #, no-wrap
11722 msgid "B<Q_SETQUOTA>"
11723 msgstr "B<Q_SETQUOTA>"
11724
11725 #. type: Plain text
11726 #: build/C/man2/quotactl.2:218
11727 msgid ""
11728 "Set quota information for user or group I<id>, using the information "
11729 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
11730 "field of the I<dqblk> structure indicates which entries in the structure "
11731 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
11732 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
11733 "requires privilege (B<CAP_SYS_ADMIN>)."
11734 msgstr ""
11735
11736 #. type: TP
11737 #: build/C/man2/quotactl.2:218
11738 #, no-wrap
11739 msgid "B<Q_GETINFO>"
11740 msgstr "B<Q_GETINFO>"
11741
11742 #. type: Plain text
11743 #: build/C/man2/quotactl.2:229
11744 msgid ""
11745 "Get information (like grace times) about quotafile.  The I<addr> argument "
11746 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
11747 "I<E<lt>sys/quota.hE<gt>> as follows:"
11748 msgstr ""
11749
11750 #. type: Plain text
11751 #: build/C/man2/quotactl.2:238
11752 #, no-wrap
11753 msgid ""
11754 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11755 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11756 "                               becomes hard limit */\n"
11757 msgstr ""
11758 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
11759 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
11760 "                               becomes hard limit */\n"
11761
11762 #. type: Plain text
11763 #: build/C/man2/quotactl.2:245
11764 #, no-wrap
11765 msgid ""
11766 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11767 "                               becomes hard limit */\n"
11768 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11769 "                               (DQF_*) */\n"
11770 "    uint32_t dqi_valid;\n"
11771 "};\n"
11772 msgstr ""
11773 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
11774 "                               becomes hard limit */\n"
11775 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
11776 "                               (DQF_*) */\n"
11777 "    uint32_t dqi_valid;\n"
11778 "};\n"
11779
11780 #. type: Plain text
11781 #: build/C/man2/quotactl.2:247
11782 #, no-wrap
11783 msgid "/* Bits for dqi_flags */\n"
11784 msgstr "/* Bits for dqi_flags */\n"
11785
11786 #. type: Plain text
11787 #: build/C/man2/quotactl.2:249
11788 #, no-wrap
11789 msgid "/* Quota format QFMT_VFS_OLD */\n"
11790 msgstr "/* Quota format QFMT_VFS_OLD */\n"
11791
11792 #. type: Plain text
11793 #: build/C/man2/quotactl.2:251
11794 #, no-wrap
11795 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11796 msgstr "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
11797
11798 #. type: Plain text
11799 #: build/C/man2/quotactl.2:253
11800 #, no-wrap
11801 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
11802 msgstr "/* Other quota formats have no dqi_flags bits defined */\n"
11803
11804 #. type: Plain text
11805 #: build/C/man2/quotactl.2:256
11806 #, no-wrap
11807 msgid ""
11808 "/* Flags in dqi_valid that indicate which fields in\n"
11809 "   dqinfo structure are valid. */\n"
11810 msgstr ""
11811 "/* Flags in dqi_valid that indicate which fields in\n"
11812 "   dqinfo structure are valid. */\n"
11813
11814 #. type: Plain text
11815 #: build/C/man2/quotactl.2:261
11816 #, no-wrap
11817 msgid ""
11818 "# define IIF_BGRACE\t1\n"
11819 "# define IIF_IGRACE\t2\n"
11820 "# define IIF_FLAGS\t4\n"
11821 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11822 msgstr ""
11823 "# define IIF_BGRACE\t1\n"
11824 "# define IIF_IGRACE\t2\n"
11825 "# define IIF_FLAGS\t4\n"
11826 "# define IIF_ALL        (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
11827
11828 #. type: Plain text
11829 #: build/C/man2/quotactl.2:277
11830 msgid ""
11831 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
11832 "the structure that are valid.  Currently, the kernel fills in all entries of "
11833 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
11834 "field.  The I<id> argument is ignored."
11835 msgstr ""
11836
11837 #. type: TP
11838 #: build/C/man2/quotactl.2:277
11839 #, no-wrap
11840 msgid "B<Q_SETINFO>"
11841 msgstr "B<Q_SETINFO>"
11842
11843 #. type: Plain text
11844 #: build/C/man2/quotactl.2:301
11845 msgid ""
11846 "Set information about quotafile.  The I<addr> argument should be a pointer "
11847 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
11848 "indicates the entries in the structure that have been set by the caller.  "
11849 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
11850 "the previous quota interfaces.  The I<id> argument is ignored.  This "
11851 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11852 msgstr ""
11853
11854 #. type: TP
11855 #: build/C/man2/quotactl.2:301
11856 #, no-wrap
11857 msgid "B<Q_GETFMT>"
11858 msgstr "B<Q_GETFMT>"
11859
11860 #. type: Plain text
11861 #: build/C/man2/quotactl.2:308
11862 msgid ""
11863 "Get quota format used on the specified filesystem.  The I<addr> argument "
11864 "should be a pointer to a 4-byte buffer where the format number will be "
11865 "stored."
11866 msgstr ""
11867
11868 #. type: TP
11869 #: build/C/man2/quotactl.2:308
11870 #, no-wrap
11871 msgid "B<Q_SYNC>"
11872 msgstr "B<Q_SYNC>"
11873
11874 #. type: Plain text
11875 #: build/C/man2/quotactl.2:319
11876 msgid ""
11877 "Update the on-disk copy of quota usages for a filesystem.  If I<special> is "
11878 "NULL, then all filesystems with active quotas are sync'ed.  The I<addr> and "
11879 "I<id> arguments are ignored."
11880 msgstr ""
11881
11882 #. type: TP
11883 #: build/C/man2/quotactl.2:319
11884 #, no-wrap
11885 msgid "B<Q_GETSTATS>"
11886 msgstr "B<Q_GETSTATS>"
11887
11888 #.  Q_GETSTATS was removed in kernel 2.4.22.
11889 #. type: Plain text
11890 #: build/C/man2/quotactl.2:339
11891 msgid ""
11892 "Get statistics and other generic information about the quota subsystem.  The "
11893 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
11894 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>>.  "
11895 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
11896 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
11897 "the information instead."
11898 msgstr ""
11899
11900 #. type: Plain text
11901 #: build/C/man2/quotactl.2:342
11902 msgid ""
11903 "For XFS filesystems making use of the XFS Quota Manager (XQM), the above "
11904 "commands are bypassed and the following commands are used:"
11905 msgstr ""
11906
11907 #. type: TP
11908 #: build/C/man2/quotactl.2:342
11909 #, no-wrap
11910 msgid "B<Q_XQUOTAON>"
11911 msgstr "B<Q_XQUOTAON>"
11912
11913 #. type: Plain text
11914 #: build/C/man2/quotactl.2:363
11915 msgid ""
11916 "Turn on quotas for an XFS filesystem.  XFS provides the ability to turn on/"
11917 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
11918 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
11919 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
11920 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
11921 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
11922 "(B<CAP_SYS_ADMIN>)."
11923 msgstr ""
11924
11925 #. type: TP
11926 #: build/C/man2/quotactl.2:363
11927 #, no-wrap
11928 msgid "B<Q_XQUOTAOFF>"
11929 msgstr "B<Q_XQUOTAOFF>"
11930
11931 #. type: Plain text
11932 #: build/C/man2/quotactl.2:374
11933 msgid ""
11934 "Turn off quotas for an XFS filesystem.  As with B<Q_QUOTAON>, XFS "
11935 "filesystems expect a pointer to an I<unsigned int> that specifies whether "
11936 "quota accounting and/or limit enforcement need to be turned off.  This "
11937 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11938 msgstr ""
11939
11940 #. type: TP
11941 #: build/C/man2/quotactl.2:374
11942 #, no-wrap
11943 msgid "B<Q_XGETQUOTA>"
11944 msgstr "B<Q_XGETQUOTA>"
11945
11946 #. type: Plain text
11947 #: build/C/man2/quotactl.2:388
11948 msgid ""
11949 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
11950 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
11951 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
11952 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
11953 "user."
11954 msgstr ""
11955
11956 #. type: TP
11957 #: build/C/man2/quotactl.2:388
11958 #, no-wrap
11959 msgid "B<Q_XSETQLIM>"
11960 msgstr "B<Q_XSETQLIM>"
11961
11962 #. type: Plain text
11963 #: build/C/man2/quotactl.2:400
11964 msgid ""
11965 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
11966 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
11967 "operation requires privilege (B<CAP_SYS_ADMIN>)."
11968 msgstr ""
11969
11970 #. type: TP
11971 #: build/C/man2/quotactl.2:400
11972 #, no-wrap
11973 msgid "B<Q_XGETQSTAT>"
11974 msgstr "B<Q_XGETQSTAT>"
11975
11976 #. type: Plain text
11977 #: build/C/man2/quotactl.2:408
11978 msgid ""
11979 "Returns an I<fs_quota_stat> structure containing XFS filesystem-specific "
11980 "quota information.  This is useful for finding out how much space is used to "
11981 "store quota information, and also to get quotaon/off status of a given local "
11982 "XFS filesystem."
11983 msgstr ""
11984
11985 #. type: TP
11986 #: build/C/man2/quotactl.2:408
11987 #, no-wrap
11988 msgid "B<Q_XQUOTARM>"
11989 msgstr "B<Q_XQUOTARM>"
11990
11991 #. type: Plain text
11992 #: build/C/man2/quotactl.2:412
11993 msgid ""
11994 "Free the disk space taken by disk quotas.  Quotas must have already been "
11995 "turned off."
11996 msgstr ""
11997
11998 #. type: Plain text
11999 #: build/C/man2/quotactl.2:419
12000 msgid ""
12001 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
12002 "quota information to disk (in addition to the other filesystem metadata that "
12003 "it writes out)."
12004 msgstr ""
12005
12006 #. type: Plain text
12007 #: build/C/man2/quotactl.2:427
12008 msgid ""
12009 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
12010 "is set to indicate the error."
12011 msgstr ""
12012 "成功すると、 B<quotactl>()  は 0 を返す。\n"
12013 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
12014
12015 #. type: Plain text
12016 #: build/C/man2/quotactl.2:434
12017 msgid "I<addr> or I<special> is invalid."
12018 msgstr ""
12019
12020 #. type: Plain text
12021 #: build/C/man2/quotactl.2:440
12022 msgid "I<cmd> or I<type> is invalid."
12023 msgstr ""
12024
12025 #. type: Plain text
12026 #: build/C/man2/quotactl.2:447
12027 msgid "The file specified by I<special> or I<addr> does not exist."
12028 msgstr ""
12029
12030 #. type: Plain text
12031 #: build/C/man2/quotactl.2:452
12032 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
12033 msgstr ""
12034
12035 #. type: TP
12036 #: build/C/man2/quotactl.2:452
12037 #, no-wrap
12038 msgid "B<ENOTBLK>"
12039 msgstr "B<ENOTBLK>"
12040
12041 #. type: Plain text
12042 #: build/C/man2/quotactl.2:456
12043 msgid "I<special> is not a block device."
12044 msgstr "I<special> がブロックデバイスではない。"
12045
12046 #. type: Plain text
12047 #: build/C/man2/quotactl.2:461
12048 msgid ""
12049 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
12050 "specified operation."
12051 msgstr ""
12052
12053 #. type: Plain text
12054 #: build/C/man2/quotactl.2:465
12055 msgid ""
12056 "No disk quota is found for the indicated user.  Quotas have not been turned "
12057 "on for this filesystem."
12058 msgstr ""
12059
12060 #. type: Plain text
12061 #: build/C/man2/quotactl.2:474
12062 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
12063 msgstr ""
12064
12065 #. type: Plain text
12066 #: build/C/man2/quotactl.2:477
12067 msgid "Specified limits are out of range allowed by quota format."
12068 msgstr ""
12069
12070 #. type: Plain text
12071 #: build/C/man2/quotactl.2:486
12072 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
12073 msgstr ""
12074
12075 #. type: Plain text
12076 #: build/C/man2/quotactl.2:495
12077 msgid ""
12078 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
12079 "the quota file pointed to by I<addr> exists, but is not on the filesystem "
12080 "pointed to by I<special>."
12081 msgstr ""
12082
12083 #. type: Plain text
12084 #: build/C/man2/quotactl.2:501
12085 msgid ""
12086 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
12087 msgstr ""
12088
12089 #. type: Plain text
12090 #: build/C/man2/quotactl.2:504
12091 msgid "The quota file is corrupted."
12092 msgstr "quota ファイルが壊れている。"
12093
12094 #. type: Plain text
12095 #: build/C/man2/quotactl.2:507
12096 msgid "Specified quota format was not found."
12097 msgstr ""
12098
12099 #. type: Plain text
12100 #: build/C/man2/quotactl.2:512
12101 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
12102 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
12103
12104 #. type: TH
12105 #: build/C/man2/sendfile.2:19
12106 #, no-wrap
12107 msgid "SENDFILE"
12108 msgstr "SENDFILE"
12109
12110 #. type: TH
12111 #: build/C/man2/sendfile.2:19
12112 #, no-wrap
12113 msgid "2011-09-14"
12114 msgstr "2011-09-14"
12115
12116 #. type: Plain text
12117 #: build/C/man2/sendfile.2:22
12118 msgid "sendfile - transfer data between file descriptors"
12119 msgstr "sendfile - ファイルディスクリプター間でデータを転送する"
12120
12121 #. type: Plain text
12122 #: build/C/man2/sendfile.2:24
12123 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
12124 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
12125
12126 #.  The below is too ugly. Comments about glibc versions belong
12127 #.  in the notes, not in the header.
12128 #.  .B #include <features.h>
12129 #.  .br
12130 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
12131 #.  .br
12132 #.  .B #include <sys/sendfile.h>
12133 #.  .br
12134 #.  #else
12135 #.  .br
12136 #.  .B #include <sys/types.h>
12137 #.  .br
12138 #.  .B /* No system prototype before glibc 2.1. */
12139 #.  .br
12140 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
12141 #.  .br
12142 #.  .B #endif
12143 #. type: Plain text
12144 #: build/C/man2/sendfile.2:47
12145 msgid ""
12146 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
12147 "size_t>I< count>B<);>"
12148 msgstr ""
12149 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
12150 "size_t>I< count>B<);>"
12151
12152 #. type: Plain text
12153 #: build/C/man2/sendfile.2:57
12154 msgid ""
12155 "B<sendfile>()  copies data between one file descriptor and another.  Because "
12156 "this copying is done within the kernel, B<sendfile>()  is more efficient "
12157 "than the combination of B<read>(2)  and B<write>(2), which would require "
12158 "transferring data to and from user space."
12159 msgstr ""
12160 "B<sendfile>()  は、あるファイルディスクリプターから別の ファイルディスクリプ"
12161 "ターへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
12162 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
12163 "い。 B<read>(2)  や B<write>(2)  ではユーザー空間との間でデータの転送が必要と"
12164 "なるからである。"
12165
12166 #. type: Plain text
12167 #: build/C/man2/sendfile.2:62
12168 msgid ""
12169 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
12170 "be a descriptor opened for writing."
12171 msgstr ""
12172 "I<in_fd> は読み込みのためにオープンされたファイルディスクリプター、 "
12173 "I<out_fd> は書き込みのためにオープンされたディスクリプターでなければならな"
12174 "い。"
12175
12176 #. type: Plain text
12177 #: build/C/man2/sendfile.2:83
12178 msgid ""
12179 "If I<offset> is not NULL, then it points to a variable holding the file "
12180 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
12181 "When B<sendfile>()  returns, this variable will be set to the offset of the "
12182 "byte following the last byte that was read.  If I<offset> is not NULL, then "
12183 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
12184 "otherwise the current file offset is adjusted to reflect the number of bytes "
12185 "read from I<in_fd>."
12186 msgstr ""
12187 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
12188 "からデータを読み始めるかを示すファイルオフセットを保持する変数への ポインター"
12189 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
12190 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
12191 "は I<in_fd> のファイルオフセットの現在値を変更しない。 NULL の場合は、ファイ"
12192 "ルオフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調整す"
12193 "る。"
12194
12195 #. type: Plain text
12196 #: build/C/man2/sendfile.2:90
12197 msgid ""
12198 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
12199 "current file offset, and the file offset will be updated by the call."
12200 msgstr ""
12201 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイルオフセットから読"
12202 "み出され、 ファイルオフセットはこの呼び出しで更新される。"
12203
12204 #. type: Plain text
12205 #: build/C/man2/sendfile.2:93
12206 msgid "I<count> is the number of bytes to copy between the file descriptors."
12207 msgstr "I<count> は、ファイルディスクリプター間でコピーするバイト数である。"
12208
12209 #. type: Plain text
12210 #: build/C/man2/sendfile.2:100
12211 msgid ""
12212 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
12213 "like operations (i.e., it cannot be a socket)."
12214 msgstr ""
12215 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
12216 "な\n"
12217 "い (ソケットを指定することはできない)。"
12218
12219 #. type: Plain text
12220 #: build/C/man2/sendfile.2:108
12221 msgid ""
12222 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
12223 "Linux 2.6.33 it can be any file.  If it is a regular file, then "
12224 "B<sendfile>()  changes the file offset appropriately."
12225 msgstr ""
12226 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
12227 "な\n"
12228 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
12229 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
12230
12231 #. type: Plain text
12232 #: build/C/man2/sendfile.2:115
12233 msgid ""
12234 "If the transfer was successful, the number of bytes written to I<out_fd> is "
12235 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
12236 msgstr ""
12237 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
12238 "合、-1 を返し、 I<errno> に適切な値を設定する。"
12239
12240 #. type: Plain text
12241 #: build/C/man2/sendfile.2:121
12242 msgid ""
12243 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
12244 "block."
12245 msgstr ""
12246 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
12247 "た。"
12248
12249 #. type: Plain text
12250 #: build/C/man2/sendfile.2:125
12251 msgid ""
12252 "The input file was not opened for reading or the output file was not opened "
12253 "for writing."
12254 msgstr ""
12255 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
12256 "のためにオープンされていない。"
12257
12258 #. type: Plain text
12259 #: build/C/man2/sendfile.2:128
12260 msgid "Bad address."
12261 msgstr "アドレスがおかしい。"
12262
12263 #. type: Plain text
12264 #: build/C/man2/sendfile.2:134
12265 msgid ""
12266 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
12267 "available for I<in_fd>."
12268 msgstr ""
12269 "ディスクリプターが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操"
12270 "作が I<in_fd> では利用できない。"
12271
12272 #. type: Plain text
12273 #: build/C/man2/sendfile.2:138
12274 msgid "Unspecified error while reading from I<in_fd>."
12275 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
12276
12277 #. type: Plain text
12278 #: build/C/man2/sendfile.2:142
12279 msgid "Insufficient memory to read from I<in_fd>."
12280 msgstr "I<in_fd> から読み込むための十分なメモリーがない。"
12281
12282 #. type: Plain text
12283 #: build/C/man2/sendfile.2:148
12284 msgid ""
12285 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
12286 "sendfile.hE<gt>> is present since glibc 2.1."
12287 msgstr ""
12288 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
12289 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
12290
12291 #. type: Plain text
12292 #: build/C/man2/sendfile.2:150
12293 msgid "Not specified in POSIX.1-2001, or other standards."
12294 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
12295
12296 #. type: Plain text
12297 #: build/C/man2/sendfile.2:155
12298 msgid ""
12299 "Other UNIX systems implement B<sendfile>()  with different semantics and "
12300 "prototypes.  It should not be used in portable programs."
12301 msgstr ""
12302 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
12303 "ている。移植性を考慮したプログラムでは使用すべきではない。"
12304
12305 #. type: Plain text
12306 #: build/C/man2/sendfile.2:165
12307 msgid ""
12308 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
12309 "need to send some header data in front of the file contents, you will find "
12310 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
12311 "minimize the number of packets and to tune performance."
12312 msgstr ""
12313 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
12314 "内容の前にヘッダーデータを付け加える必要がある場合は、 パケット数を最小にして"
12315 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
12316 "いいだろう。"
12317
12318 #. type: Plain text
12319 #: build/C/man2/sendfile.2:171
12320 msgid ""
12321 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
12322 "B<sendfile>()  changed the current offset of that file."
12323 msgstr ""
12324 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
12325 "き、\n"
12326 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
12327
12328 #. type: Plain text
12329 #: build/C/man2/sendfile.2:183
12330 msgid ""
12331 "The original Linux B<sendfile>()  system call was not designed to handle "
12332 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
12333 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
12334 "function transparently deals with the kernel differences."
12335 msgstr ""
12336 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
12337 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
12338 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
12339 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
12340
12341 #. type: Plain text
12342 #: build/C/man2/sendfile.2:192
12343 msgid ""
12344 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
12345 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
12346 msgstr ""
12347 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
12348 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
12349
12350 #. type: Plain text
12351 #: build/C/man2/sendfile.2:197
12352 msgid ""
12353 "The Linux-specific B<splice>(2)  call supports transferring data between "
12354 "arbitrary files (e.g., a pair of sockets)."
12355 msgstr ""
12356 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
12357 "ソケット同士) でのデータ転送をサポートしている。"
12358
12359 #. type: Plain text
12360 #: build/C/man2/sendfile.2:202
12361 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12362 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
12363
12364 #. type: TH
12365 #: build/C/man2/set_tid_address.2:25
12366 #, no-wrap
12367 msgid "SET_TID_ADDRESS"
12368 msgstr "SET_TID_ADDRESS"
12369
12370 #. type: TH
12371 #: build/C/man2/set_tid_address.2:25
12372 #, no-wrap
12373 msgid "2014-07-08"
12374 msgstr "2014-07-08"
12375
12376 #. type: Plain text
12377 #: build/C/man2/set_tid_address.2:28
12378 msgid "set_tid_address - set pointer to thread ID"
12379 msgstr "set_tid_address - スレッド ID へのポインターを設定する"
12380
12381 #. type: Plain text
12382 #: build/C/man2/set_tid_address.2:31
12383 #, no-wrap
12384 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
12385 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
12386
12387 #. type: Plain text
12388 #: build/C/man2/set_tid_address.2:33
12389 #, no-wrap
12390 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12391 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
12392
12393 #. type: Plain text
12394 #: build/C/man2/set_tid_address.2:40
12395 msgid ""
12396 "For each thread, the kernel maintains two attributes (addresses) called "
12397 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
12398 "value NULL by default."
12399 msgstr ""
12400 "各スレッドについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
12401 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
12402
12403 #. type: TP
12404 #: build/C/man2/set_tid_address.2:40
12405 #, no-wrap
12406 msgid "I<set_child_tid>"
12407 msgstr "I<set_child_tid>"
12408
12409 #. type: Plain text
12410 #: build/C/man2/set_tid_address.2:51
12411 msgid ""
12412 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
12413 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
12414 "that system call."
12415 msgstr ""
12416 "スレッドが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
12417 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
12418 "で渡された値に設定される。"
12419
12420 #. type: Plain text
12421 #: build/C/man2/set_tid_address.2:56
12422 msgid ""
12423 "When I<set_child_tid> is set, the very first thing the new thread does is to "
12424 "write its thread ID at this address."
12425 msgstr ""
12426 "I<set_child_tid> が設定された場合、一番最初に新しいスレッドが行うことは、 こ"
12427 "のアドレスに自身のスレッド ID を書き込むことである。"
12428
12429 #. type: TP
12430 #: build/C/man2/set_tid_address.2:56
12431 #, no-wrap
12432 msgid "I<clear_child_tid>"
12433 msgstr "I<clear_child_tid>"
12434
12435 #. type: Plain text
12436 #: build/C/man2/set_tid_address.2:67
12437 msgid ""
12438 "If a thread is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
12439 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
12440 "of that system call."
12441 msgstr ""
12442 "スレッドが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
12443 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
12444 "き数で渡された値に設定される。"
12445
12446 #. type: Plain text
12447 #: build/C/man2/set_tid_address.2:74
12448 msgid ""
12449 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
12450 "the calling thread to I<tidptr>."
12451 msgstr ""
12452 "システムコール B<set_tid_address>()  は呼び出し元スレッドの "
12453 "I<clear_child_tid> の値を I<tidptr> に設定する。"
12454
12455 #. type: Plain text
12456 #: build/C/man2/set_tid_address.2:82
12457 msgid ""
12458 "When a thread whose I<clear_child_tid> is not NULL terminates, then, if the "
12459 "thread is sharing memory with other threads, then 0 is written at the "
12460 "address specified in I<clear_child_tid> and the kernel performs the "
12461 "following operation:"
12462 msgstr ""
12463 "I<clear_child_tid> が NULL でないスレッドが終了すると、そのスレッドが他のス"
12464 "レッドとメモリーを共有していれば、 I<clear_child_tid> で指定されたアドレスに "
12465 "0 が書き込まれ、カーネルは以下の処理を実行する。"
12466
12467 #. type: Plain text
12468 #: build/C/man2/set_tid_address.2:84
12469 #, no-wrap
12470 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12471 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
12472
12473 #. type: Plain text
12474 #: build/C/man2/set_tid_address.2:88
12475 msgid ""
12476 "The effect of this operation is to wake a single thread that is performing a "
12477 "futex wait on the memory location.  Errors from the futex wake operation are "
12478 "ignored."
12479 msgstr ""
12480 "この処理の結果、このメモリーアドレスに対する futex wait を実行しているスレッ"
12481 "ドを一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
12482
12483 #. type: Plain text
12484 #: build/C/man2/set_tid_address.2:91
12485 msgid "B<set_tid_address>()  always returns the caller's thread ID."
12486 msgstr "B<set_tid_address>()  は常に呼び出し元のスレッド ID を返す。"
12487
12488 #. type: Plain text
12489 #: build/C/man2/set_tid_address.2:94
12490 msgid "B<set_tid_address>()  always succeeds."
12491 msgstr "B<set_tid_address>()  は常に成功する。"
12492
12493 #. type: Plain text
12494 #: build/C/man2/set_tid_address.2:97
12495 msgid ""
12496 "This call is present since Linux 2.5.48.  Details as given here are valid "
12497 "since Linux 2.5.49."
12498 msgstr ""
12499 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
12500 "2.5.49 以降で有効である。"
12501
12502 #. type: Plain text
12503 #: build/C/man2/set_tid_address.2:103
12504 msgid "B<clone>(2), B<futex>(2), B<gettid>(2)"
12505 msgstr "B<clone>(2), B<futex>(2), B<gettid>(2)"
12506
12507 #. type: TH
12508 #: build/C/man2/splice.2:26
12509 #, no-wrap
12510 msgid "SPLICE"
12511 msgstr "SPLICE"
12512
12513 #. type: TH
12514 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26
12515 #, no-wrap
12516 msgid "2014-12-31"
12517 msgstr "2014-12-31"
12518
12519 #. type: Plain text
12520 #: build/C/man2/splice.2:29
12521 msgid "splice - splice data to/from a pipe"
12522 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
12523
12524 #. type: Plain text
12525 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
12526 #, no-wrap
12527 msgid ""
12528 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
12529 "B<#include E<lt>fcntl.hE<gt>>\n"
12530 msgstr ""
12531 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
12532 "B<#include E<lt>fcntl.hE<gt>>\n"
12533
12534 #.  Return type was long before glibc 2.7
12535 #. type: Plain text
12536 #: build/C/man2/splice.2:38
12537 #, no-wrap
12538 msgid ""
12539 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12540 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12541 msgstr ""
12542 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
12543 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
12544
12545 #. type: Plain text
12546 #: build/C/man2/splice.2:50
12547 msgid ""
12548 "B<splice>()  moves data between two file descriptors without copying between "
12549 "kernel address space and user address space.  It transfers up to I<len> "
12550 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
12551 "I<fd_out>, where one of the descriptors must refer to a pipe."
12552 msgstr ""
12553 "B<splice>()  は、カーネルアドレス空間とユーザーアドレス空間との間のコピーを伴"
12554 "わずに、 2 つのファイルディスクリプター間でデータの移動を行う。 ファイルディ"
12555 "スクリプター I<fd_in> からファイルディスクリプター I<fd_out> へ最大 I<len> バ"
12556 "イトを転送する。 2 つのファイルディスクリプターのうち一つは パイプを参照して"
12557 "いなければならない。"
12558
12559 #. type: Plain text
12560 #: build/C/man2/splice.2:55
12561 msgid "The following semantics apply for I<fd_in> and I<off_in>:"
12562 msgstr "I<fd_in> と I<off_in> には以下のルールが適用される。"
12563
12564 #. type: Plain text
12565 #: build/C/man2/splice.2:61
12566 msgid "If I<fd_in> refers to a pipe, then I<off_in> must be NULL."
12567 msgstr ""
12568 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。"
12569
12570 #. type: Plain text
12571 #: build/C/man2/splice.2:70
12572 msgid ""
12573 "If I<fd_in> does not refer to a pipe and I<off_in> is NULL, then bytes are "
12574 "read from I<fd_in> starting from the current file offset, and the current "
12575 "file offset is adjusted appropriately."
12576 msgstr ""
12577 "I<fd_in> がパイプを参照しておらず、かつ I<off_in> が NULL の場合、 バイトは "
12578 "I<fd_in> の現在のファイルオフセットから読み出され、 現在のファイルオフセット"
12579 "は適切に調整される。"
12580
12581 #. type: Plain text
12582 #: build/C/man2/splice.2:83
12583 msgid ""
12584 "If I<fd_in> does not refer to a pipe and I<off_in> is not NULL, then "
12585 "I<off_in> must point to a buffer which specifies the starting offset from "
12586 "which bytes will be read from I<fd_in>; in this case, the current file "
12587 "offset of I<fd_in> is not changed."
12588 msgstr ""
12589 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でない場合、 I<off_in> "
12590 "は I<fd_in> からのデータ読み出しを開始する先頭オフセットを格納したバッファー "
12591 "へのポインターでなければならない。この場合、 I<fd_in> の現在のファイルオフ"
12592 "セットは変更されない。"
12593
12594 #. type: Plain text
12595 #: build/C/man2/splice.2:88
12596 msgid "Analogous statements apply for I<fd_out> and I<off_out>."
12597 msgstr "I<fd_out> と I<off_out> に関しても同様である。"
12598
12599 #. type: Plain text
12600 #: build/C/man2/splice.2:93 build/C/man2/vmsplice.2:78
12601 msgid ""
12602 "The I<flags> argument is a bit mask that is composed by ORing together zero "
12603 "or more of the following values:"
12604 msgstr ""
12605 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
12606
12607 #. type: TP
12608 #: build/C/man2/splice.2:93 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
12609 #, no-wrap
12610 msgid "B<SPLICE_F_MOVE>"
12611 msgstr "B<SPLICE_F_MOVE>"
12612
12613 #. type: Plain text
12614 #: build/C/man2/splice.2:106
12615 msgid ""
12616 "Attempt to move pages instead of copying.  This is only a hint to the "
12617 "kernel: pages may still be copied if the kernel cannot move the pages from "
12618 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
12619 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
12620 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
12621 "correct implementation may be restored."
12622 msgstr ""
12623 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
12624 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファーが"
12625 "ページ全部を参照していない場合は、 ページのコピーが行われることもある。 この"
12626 "フラグの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラ"
12627 "グの操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグ"
12628 "を指定することは今も認められている)。 将来、正しい実装が行われることだろう。"
12629
12630 #. type: TP
12631 #: build/C/man2/splice.2:106 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
12632 #, no-wrap
12633 msgid "B<SPLICE_F_NONBLOCK>"
12634 msgstr "B<SPLICE_F_NONBLOCK>"
12635
12636 #. type: Plain text
12637 #: build/C/man2/splice.2:115
12638 msgid ""
12639 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
12640 "B<splice>()  may nevertheless block because the file descriptors that are "
12641 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
12642 msgstr ""
12643 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
12644 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも "
12645 "B<splice>()  は停止することもある。なぜなら、データのやり取りを行う ファイル"
12646 "ディスクリプターは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可"
12647 "能性があるからである。"
12648
12649 #. type: TP
12650 #: build/C/man2/splice.2:115 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12651 #, no-wrap
12652 msgid "B<SPLICE_F_MORE>"
12653 msgstr "B<SPLICE_F_MORE>"
12654
12655 #. type: Plain text
12656 #: build/C/man2/splice.2:129
12657 msgid ""
12658 "More data will be coming in a subsequent splice.  This is a helpful hint "
12659 "when the I<fd_out> refers to a socket (see also the description of "
12660 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
12661 msgstr ""
12662 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
12663 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
12664 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
12665
12666 #. type: TP
12667 #: build/C/man2/splice.2:129 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
12668 #, no-wrap
12669 msgid "B<SPLICE_F_GIFT>"
12670 msgstr "B<SPLICE_F_GIFT>"
12671
12672 #. type: Plain text
12673 #: build/C/man2/splice.2:135
12674 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
12675 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
12676
12677 #. type: Plain text
12678 #: build/C/man2/splice.2:144
12679 msgid ""
12680 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
12681 "to or from the pipe.  A return value of 0 means that there was no data to "
12682 "transfer, and it would not make sense to block, because there are no writers "
12683 "connected to the write end of the pipe referred to by I<fd_in>."
12684 msgstr ""
12685 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
12686 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
12687 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
12688 "れている者がいないからである。"
12689
12690 #. type: Plain text
12691 #: build/C/man2/splice.2:150
12692 msgid ""
12693 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
12694 msgstr ""
12695 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
12696 "る。"
12697
12698 #. type: Plain text
12699 #: build/C/man2/splice.2:157 build/C/man2/tee.2:107
12700 #: build/C/man2/vmsplice.2:133
12701 msgid ""
12702 "B<SPLICE_F_NONBLOCK> was specified in I<flags>, and the operation would "
12703 "block."
12704 msgstr ""
12705 "B<SPLICE_F_NONBLOCK> が I<flags> に指定されていて、かつ操作が停止するような状"
12706 "態であった。"
12707
12708 #. type: Plain text
12709 #: build/C/man2/splice.2:161
12710 msgid ""
12711 "One or both file descriptors are not valid, or do not have proper read-write "
12712 "mode."
12713 msgstr ""
12714 "ファイルディスクリプターの一方または両方が有効ではない、 もしくは適切な read-"
12715 "write モードではない。"
12716
12717 #.  The append-mode error is given since 2.6.27; in earlier kernels,
12718 #.  splice() in append mode was broken
12719 #. type: Plain text
12720 #: build/C/man2/splice.2:169
12721 msgid ""
12722 "Target filesystem doesn't support splicing; target file is opened in append "
12723 "mode; neither of the descriptors refers to a pipe; or offset given for "
12724 "nonseekable device."
12725 msgstr ""
12726 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
12727 "モードでオープンされている、 またはディスクリプターのどちらもパイプを参照して"
12728 "いない、 または seek できないデバイスに対してオフセットが指定された。"
12729
12730 #. type: Plain text
12731 #: build/C/man2/splice.2:172 build/C/man2/tee.2:120
12732 #: build/C/man2/vmsplice.2:148
12733 msgid "Out of memory."
12734 msgstr "メモリー不足。"
12735
12736 #. type: TP
12737 #: build/C/man2/splice.2:172
12738 #, no-wrap
12739 msgid "B<ESPIPE>"
12740 msgstr "B<ESPIPE>"
12741
12742 #. type: Plain text
12743 #: build/C/man2/splice.2:179
12744 msgid ""
12745 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
12746 "descriptor refers to a pipe."
12747 msgstr ""
12748 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
12749 "クリプターが パイプを参照している。"
12750
12751 #. type: Plain text
12752 #: build/C/man2/splice.2:184
12753 msgid ""
12754 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
12755 "was added to glibc in version 2.5."
12756 msgstr ""
12757 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12758 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12759
12760 #. type: Plain text
12761 #: build/C/man2/splice.2:196
12762 msgid ""
12763 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
12764 "user-space programs with full control over an arbitrary kernel buffer, "
12765 "implemented within the kernel using the same type of buffer that is used for "
12766 "a pipe.  In overview, these system calls perform the following tasks:"
12767 msgstr ""
12768 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
12769 "ザー空間プログラムは任意のカーネルバッファーに対する 完全な制御ができる。カー"
12770 "ネルバッファーは、パイプに使用されているのと 同種のバッファーを使ってカーネル"
12771 "内に実装されている。 大まかにいうと、これらのシステムコールは以下の仕事を行"
12772 "う:"
12773
12774 #. type: TP
12775 #: build/C/man2/splice.2:196
12776 #, no-wrap
12777 msgid "B<splice>()"
12778 msgstr "B<splice>()"
12779
12780 #. type: Plain text
12781 #: build/C/man2/splice.2:200
12782 msgid ""
12783 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
12784 "or from one buffer to another."
12785 msgstr ""
12786 "バッファーから任意のファイルディスクリプターや、その逆方向、 もしくはあるバッ"
12787 "ファーから別のバッファーへの、データ移動を行う。"
12788
12789 #. type: TP
12790 #: build/C/man2/splice.2:200
12791 #, no-wrap
12792 msgid "B<tee>(2)"
12793 msgstr "B<tee>(2)"
12794
12795 #. type: Plain text
12796 #: build/C/man2/splice.2:203
12797 msgid "\"copies\" the data from one buffer to another."
12798 msgstr "あるバッファーから別のバッファーへのデータ「コピー」を行う。"
12799
12800 #. type: TP
12801 #: build/C/man2/splice.2:203
12802 #, no-wrap
12803 msgid "B<vmsplice>(2)"
12804 msgstr "B<vmsplice>(2)"
12805
12806 #. type: Plain text
12807 #: build/C/man2/splice.2:206
12808 msgid "\"copies\" data from user space into the buffer."
12809 msgstr "ユーザー空間からバッファーへのデータ「コピー」を行う。"
12810
12811 #.  Linus: Now, imagine using the above in a media server, for example.
12812 #.  Let's say that a year or two has passed, so that the video drivers
12813 #.  have been updated to be able to do the splice thing, and what can
12814 #.  you do? You can:
12815 #.  - splice from the (mpeg or whatever - let's just assume that the video
12816 #.    input is either digital or does the encoding on its own - like they
12817 #.    pretty much all do) video input into a pipe (remember: no copies - the
12818 #.    video input will just DMA directly into memory, and splice will just
12819 #.    set up the pages in the pipe buffer)
12820 #.  - tee that pipe to split it up
12821 #.  - splice one end to a file (ie "save the compressed stream to disk")
12822 #.  - splice the other end to a real-time video decoder window for your
12823 #.    real-time viewing pleasure.
12824 #.  Linus: Now, the advantage of splice()/tee() is that you can
12825 #.  do zero-copy movement of data, and unlike sendfile() you can
12826 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
12827 #.  than just sending the data to somebody else: you can duplicate
12828 #.  the data and choose to forward it to two or more different
12829 #.  users - for things like logging etc.).
12830 #. type: Plain text
12831 #: build/C/man2/splice.2:237
12832 msgid ""
12833 "Though we talk of copying, actual copies are generally avoided.  The kernel "
12834 "does this by implementing a pipe buffer as a set of reference-counted "
12835 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
12836 "in a buffer by creating new pointers (for the output buffer) referring to "
12837 "the pages, and increasing the reference counts for the pages: only pointers "
12838 "are copied, not the pages of the buffer."
12839 msgstr ""
12840 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
12841 "は、パイプバッファーをカーネルメモリーのページへのポインター集合として 実装"
12842 "し、ページへの参照回数を管理することで、これを実現している。 カーネルは、対象"
12843 "となるページを参照する (出力バッファー用の) ポインターを 新規に作成することで"
12844 "バッファー内のページの「コピー」を作成し、 そのページの参照回数を増やす。つま"
12845 "り、ポインターだけがコピーされ、 バッファーのページはコピーされない。"
12846
12847 #. type: Plain text
12848 #: build/C/man2/splice.2:240
12849 msgid "See B<tee>(2)."
12850 msgstr "B<tee>(2)  参照。"
12851
12852 #. type: Plain text
12853 #: build/C/man2/splice.2:244
12854 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12855 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
12856
12857 #. type: TH
12858 #: build/C/man2/tee.2:26
12859 #, no-wrap
12860 msgid "TEE"
12861 msgstr "TEE"
12862
12863 #. type: Plain text
12864 #: build/C/man2/tee.2:29
12865 msgid "tee - duplicating pipe content"
12866 msgstr "tee - パイプの中身を複製する"
12867
12868 #. type: Plain text
12869 #: build/C/man2/tee.2:36
12870 #, no-wrap
12871 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"
12872 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"
12873
12874 #.  Example programs http://brick.kernel.dk/snaps
12875 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
12876 #.  (again, incrementing their reference count, not copying the data) from
12877 #.  one pipe to two other pipes.
12878 #. type: Plain text
12879 #: build/C/man2/tee.2:56
12880 msgid ""
12881 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
12882 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
12883 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
12884 "therefore, that data can be copied by a subsequent B<splice>(2)."
12885 msgstr ""
12886 "B<tee>()  は、ファイルディスクリプター I<fd_in> が参照するパイプからファイル"
12887 "ディスクリプター I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製"
12888 "する。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
12889 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
12890
12891 #. type: Plain text
12892 #: build/C/man2/tee.2:62
12893 msgid ""
12894 "I<flags> is a series of modifier flags, which share the name space with "
12895 "B<splice>(2)  and B<vmsplice>(2):"
12896 msgstr ""
12897 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
12898 "名前である。"
12899
12900 #. type: Plain text
12901 #: build/C/man2/tee.2:68
12902 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
12903 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
12904
12905 #.  Not used for vmsplice
12906 #.  May be in the future -- therefore EAGAIN
12907 #. type: Plain text
12908 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
12909 msgid "Do not block on I/O; see B<splice>(2)  for further details."
12910 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
12911
12912 #. type: Plain text
12913 #: build/C/man2/tee.2:79
12914 msgid ""
12915 "Currently has no effect for B<tee>(), but may be implemented in the future; "
12916 "see B<splice>(2)."
12917 msgstr ""
12918 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
12919 "る。 B<splice>(2)  参照。"
12920
12921 #. type: Plain text
12922 #: build/C/man2/tee.2:85
12923 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
12924 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
12925
12926 #. type: Plain text
12927 #: build/C/man2/tee.2:94
12928 msgid ""
12929 "Upon successful completion, B<tee>()  returns the number of bytes that were "
12930 "duplicated between the input and output.  A return value of 0 means that "
12931 "there was no data to transfer, and it would not make sense to block, because "
12932 "there are no writers connected to the write end of the pipe referred to by "
12933 "I<fd_in>."
12934 msgstr ""
12935 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
12936 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
12937 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
12938 "ている者がいないからである。"
12939
12940 #. type: Plain text
12941 #: build/C/man2/tee.2:100
12942 msgid ""
12943 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
12944 msgstr ""
12945 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
12946
12947 #. type: Plain text
12948 #: build/C/man2/tee.2:117
12949 msgid ""
12950 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
12951 "refer to the same pipe."
12952 msgstr ""
12953 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
12954 "と I<fd_out> が同じパイプを参照している。"
12955
12956 #. type: Plain text
12957 #: build/C/man2/tee.2:125
12958 msgid ""
12959 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
12960 "was added to glibc in version 2.5."
12961 msgstr ""
12962 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
12963 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
12964
12965 #. type: Plain text
12966 #: build/C/man2/tee.2:136
12967 msgid ""
12968 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
12969 "no real data copying takes place though: under the covers, B<tee>()  assigns "
12970 "data in the output by merely grabbing a reference to the input."
12971 msgstr ""
12972 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
12973 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
12974 "照だけを作成することで出力側にデータを 追加する。"
12975
12976 #. type: Plain text
12977 #: build/C/man2/tee.2:143
12978 msgid ""
12979 "The example below implements a basic B<tee>(1)  program using the B<tee>()  "
12980 "system call.  Here is an example of its use:"
12981 msgstr ""
12982 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
12983 "ムを実装したものである。 以下は利用例である。"
12984
12985 #. type: Plain text
12986 #: build/C/man2/tee.2:150
12987 #, no-wrap
12988 msgid ""
12989 "$ B<date |./a.out out.log | cat>\n"
12990 "Tue Oct 28 10:06:00 CET 2014\n"
12991 "$ B<cat out.log>\n"
12992 "Tue Oct 28 10:06:00 CET 2014\n"
12993 msgstr ""
12994 "$ B<date |./a.out out.log | cat>\n"
12995 "Tue Oct 28 10:06:00 CET 2014\n"
12996 "$ B<cat out.log>\n"
12997 "Tue Oct 28 10:06:00 CET 2014\n"
12998
12999 #. type: SS
13000 #: build/C/man2/tee.2:152
13001 #, no-wrap
13002 msgid "Program source"
13003 msgstr "プログラムのソース"
13004
13005 #. type: Plain text
13006 #: build/C/man2/tee.2:162
13007 #, no-wrap
13008 msgid ""
13009 "#define _GNU_SOURCE\n"
13010 "#include E<lt>fcntl.hE<gt>\n"
13011 "#include E<lt>stdio.hE<gt>\n"
13012 "#include E<lt>stdlib.hE<gt>\n"
13013 "#include E<lt>unistd.hE<gt>\n"
13014 "#include E<lt>errno.hE<gt>\n"
13015 "#include E<lt>limits.hE<gt>\n"
13016 msgstr ""
13017 "#define _GNU_SOURCE\n"
13018 "#include E<lt>fcntl.hE<gt>\n"
13019 "#include E<lt>stdio.hE<gt>\n"
13020 "#include E<lt>stdlib.hE<gt>\n"
13021 "#include E<lt>unistd.hE<gt>\n"
13022 "#include E<lt>errno.hE<gt>\n"
13023 "#include E<lt>limits.hE<gt>\n"
13024
13025 #. type: Plain text
13026 #: build/C/man2/tee.2:168
13027 #, no-wrap
13028 msgid ""
13029 "int\n"
13030 "main(int argc, char *argv[])\n"
13031 "{\n"
13032 "    int fd;\n"
13033 "    int len, slen;\n"
13034 msgstr ""
13035 "int\n"
13036 "main(int argc, char *argv[])\n"
13037 "{\n"
13038 "    int fd;\n"
13039 "    int len, slen;\n"
13040
13041 #. type: Plain text
13042 #: build/C/man2/tee.2:173
13043 #, no-wrap
13044 msgid ""
13045 "    if (argc != 2) {\n"
13046 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
13047 "        exit(EXIT_FAILURE);\n"
13048 "    }\n"
13049 msgstr ""
13050 "    if (argc != 2) {\n"
13051 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
13052 "        exit(EXIT_FAILURE);\n"
13053 "    }\n"
13054
13055 #. type: Plain text
13056 #: build/C/man2/tee.2:179
13057 #, no-wrap
13058 msgid ""
13059 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
13060 "    if (fd == -1) {\n"
13061 "        perror(\"open\");\n"
13062 "        exit(EXIT_FAILURE);\n"
13063 "    }\n"
13064 msgstr ""
13065 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
13066 "    if (fd == -1) {\n"
13067 "        perror(\"open\");\n"
13068 "        exit(EXIT_FAILURE);\n"
13069 "    }\n"
13070
13071 #. type: Plain text
13072 #: build/C/man2/tee.2:186
13073 #, no-wrap
13074 msgid ""
13075 "    do {\n"
13076 "        /*\n"
13077 "         * tee stdin to stdout.\n"
13078 "         */\n"
13079 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
13080 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
13081 msgstr ""
13082 "    do {\n"
13083 "        /*\n"
13084 "         * tee stdin to stdout.\n"
13085 "         */\n"
13086 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
13087 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
13088
13089 #. type: Plain text
13090 #: build/C/man2/tee.2:195
13091 #, no-wrap
13092 msgid ""
13093 "        if (len E<lt> 0) {\n"
13094 "            if (errno == EAGAIN)\n"
13095 "                continue;\n"
13096 "            perror(\"tee\");\n"
13097 "            exit(EXIT_FAILURE);\n"
13098 "        } else\n"
13099 "            if (len == 0)\n"
13100 "                break;\n"
13101 msgstr ""
13102 "        if (len E<lt> 0) {\n"
13103 "            if (errno == EAGAIN)\n"
13104 "                continue;\n"
13105 "            perror(\"tee\");\n"
13106 "            exit(EXIT_FAILURE);\n"
13107 "        } else\n"
13108 "            if (len == 0)\n"
13109 "                break;\n"
13110
13111 #. type: Plain text
13112 #: build/C/man2/tee.2:209
13113 #, no-wrap
13114 msgid ""
13115 "        /*\n"
13116 "         * Consume stdin by splicing it to a file.\n"
13117 "         */\n"
13118 "        while (len E<gt> 0) {\n"
13119 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
13120 "                          len, SPLICE_F_MOVE);\n"
13121 "            if (slen E<lt> 0) {\n"
13122 "                perror(\"splice\");\n"
13123 "                break;\n"
13124 "            }\n"
13125 "            len -= slen;\n"
13126 "        }\n"
13127 "    } while (1);\n"
13128 msgstr ""
13129 "        /*\n"
13130 "         * Consume stdin by splicing it to a file.\n"
13131 "         */\n"
13132 "        while (len E<gt> 0) {\n"
13133 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
13134 "                          len, SPLICE_F_MOVE);\n"
13135 "            if (slen E<lt> 0) {\n"
13136 "                perror(\"splice\");\n"
13137 "                break;\n"
13138 "            }\n"
13139 "            len -= slen;\n"
13140 "        }\n"
13141 "    } while (1);\n"
13142
13143 #. type: Plain text
13144 #: build/C/man2/tee.2:213
13145 #, no-wrap
13146 msgid ""
13147 "    close(fd);\n"
13148 "    exit(EXIT_SUCCESS);\n"
13149 "}\n"
13150 msgstr ""
13151 "    close(fd);\n"
13152 "    exit(EXIT_SUCCESS);\n"
13153 "}\n"
13154
13155 #. type: Plain text
13156 #: build/C/man2/tee.2:217
13157 msgid "B<splice>(2), B<vmsplice>(2)"
13158 msgstr "B<splice>(2), B<vmsplice>(2)"
13159
13160 #. type: TH
13161 #: build/C/man2/vm86.2:26
13162 #, no-wrap
13163 msgid "VM86"
13164 msgstr "VM86"
13165
13166 #. type: TH
13167 #: build/C/man2/vm86.2:26
13168 #, no-wrap
13169 msgid "2009-02-20"
13170 msgstr "2009-02-20"
13171
13172 #. type: Plain text
13173 #: build/C/man2/vm86.2:29
13174 msgid "vm86old, vm86 - enter virtual 8086 mode"
13175 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
13176
13177 #. type: Plain text
13178 #: build/C/man2/vm86.2:31
13179 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
13180 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
13181
13182 #. type: Plain text
13183 #: build/C/man2/vm86.2:33
13184 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
13185 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
13186
13187 #. type: Plain text
13188 #: build/C/man2/vm86.2:35
13189 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
13190 msgstr ""
13191 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
13192
13193 #. type: Plain text
13194 #: build/C/man2/vm86.2:48
13195 msgid ""
13196 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
13197 "and 2.0.28, it was renamed to B<vm86old>(), and a new B<vm86>()  was "
13198 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
13199 "and 1.1.9."
13200 msgstr ""
13201 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
13202 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
13203 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
13204
13205 #. type: Plain text
13206 #: build/C/man2/vm86.2:52
13207 msgid ""
13208 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
13209 "literature), and are used by B<dosemu>."
13210 msgstr ""
13211 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
13212 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
13213
13214 #. type: Plain text
13215 #: build/C/man2/vm86.2:54
13216 msgid "VM86 mode is an emulation of real mode within a protected mode task."
13217 msgstr ""
13218 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
13219 "ある。"
13220
13221 #. type: Plain text
13222 #: build/C/man2/vm86.2:64
13223 msgid ""
13224 "This return value is specific to i386 and indicates a problem with getting "
13225 "user-space data."
13226 msgstr ""
13227 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
13228 "あったことを示す。"
13229
13230 #. type: Plain text
13231 #: build/C/man2/vm86.2:68
13232 msgid ""
13233 "This return value indicates the call is not implemented on the present "
13234 "architecture."
13235 msgstr ""
13236 "この返り値は、このコールが現在のアーキテクチャーで実装されていないことを示"
13237 "す。"
13238
13239 #. type: Plain text
13240 #: build/C/man2/vm86.2:73
13241 msgid ""
13242 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
13243 "should exist only within vm86 mode itself.)"
13244 msgstr ""
13245 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
13246 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
13247 "い。)"
13248
13249 #. type: Plain text
13250 #: build/C/man2/vm86.2:76
13251 msgid ""
13252 "This call is specific to Linux on 32-bit Intel processors, and should not be "
13253 "used in programs intended to be portable."
13254 msgstr ""
13255 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
13256 "したプログラムでは使用すべきでない。"
13257
13258 #. type: TH
13259 #: build/C/man2/vmsplice.2:26
13260 #, no-wrap
13261 msgid "VMSPLICE"
13262 msgstr "VMSPLICE"
13263
13264 #. type: TH
13265 #: build/C/man2/vmsplice.2:26
13266 #, no-wrap
13267 msgid "2014-10-02"
13268 msgstr "2014-10-02"
13269
13270 #. type: Plain text
13271 #: build/C/man2/vmsplice.2:29
13272 msgid "vmsplice - splice user pages into a pipe"
13273 msgstr "vmsplice - ユーザーページをパイプに継ぎ合わせる"
13274
13275 #. type: Plain text
13276 #: build/C/man2/vmsplice.2:34
13277 #, no-wrap
13278 msgid ""
13279 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
13280 "B<#include E<lt>fcntl.hE<gt>>\n"
13281 "B<#include E<lt>sys/uio.hE<gt>>\n"
13282 msgstr ""
13283 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
13284 "B<#include E<lt>fcntl.hE<gt>>\n"
13285 "B<#include E<lt>sys/uio.hE<gt>>\n"
13286
13287 #. type: Plain text
13288 #: build/C/man2/vmsplice.2:37
13289 #, no-wrap
13290 msgid ""
13291 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13292 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13293 msgstr ""
13294 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
13295 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
13296
13297 #.  Linus: vmsplice() system call to basically do a "write to
13298 #.  the buffer", but using the reference counting and VM traversal
13299 #.  to actually fill the buffer. This means that the user needs to
13300 #.  be careful not to reuse the user-space buffer it spliced into
13301 #.  the kernel-space one (contrast this to "write()", which copies
13302 #.  the actual data, and you can thus reuse the buffer immediately
13303 #.  after a successful write), but that is often easy to do.
13304 #. type: Plain text
13305 #: build/C/man2/vmsplice.2:57
13306 msgid ""
13307 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
13308 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
13309 "pipe."
13310 msgstr ""
13311 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザーメモリーの "
13312 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
13313 "ばならない。"
13314
13315 #. type: Plain text
13316 #: build/C/man2/vmsplice.2:64
13317 msgid ""
13318 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
13319 "I<E<lt>sys/uio.hE<gt>>:"
13320 msgstr ""
13321 "ポインター I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
13322 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
13323
13324 #. type: Plain text
13325 #: build/C/man2/vmsplice.2:71
13326 #, no-wrap
13327 msgid ""
13328 "struct iovec {\n"
13329 "    void  *iov_base;            /* Starting address */\n"
13330 "    size_t iov_len;             /* Number of bytes */\n"
13331 "};\n"
13332 msgstr ""
13333 "struct iovec {\n"
13334 "    void  *iov_base;            /* 開始アドレス */\n"
13335 "    size_t iov_len;             /* バイト数 */\n"
13336 "};\n"
13337
13338 #. type: Plain text
13339 #: build/C/man2/vmsplice.2:84
13340 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
13341 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
13342
13343 #. type: Plain text
13344 #: build/C/man2/vmsplice.2:97
13345 msgid ""
13346 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
13347 "future; see B<splice>(2)."
13348 msgstr ""
13349 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
13350 "がある。 B<splice>(2)  参照。"
13351
13352 #.  FIXME . Explain the following line in a little more detail:
13353 #.  FIXME
13354 #.      It looks like the page-alignment requirement went away with
13355 #.      commit bd1a68b59c8e3bce45fb76632c64e1e063c3962d
13356 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
13357 #. type: Plain text
13358 #: build/C/man2/vmsplice.2:117
13359 msgid ""
13360 "The user pages are a gift to the kernel.  The application may not modify "
13361 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
13362 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
13363 "successfully move the pages; if this flag is not specified, then a "
13364 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
13365 "also be properly page aligned, both in memory and length."
13366 msgstr ""
13367 "ユーザーページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
13368 "はこのメモリーを絶対に変更してはならない。 さもなければ、ページキャッシュと"
13369 "ディスク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次"
13370 "の B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 この"
13371 "フラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
13372 "ページのコピーを行わなければならない。 データはメモリー上でページ境界にあって"
13373 "いなければならず、 長さもページ境界の倍数でなければならない。"
13374
13375 #. type: Plain text
13376 #: build/C/man2/vmsplice.2:126
13377 msgid ""
13378 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
13379 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
13380 "is set to indicate the error."
13381 msgstr ""
13382 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
13383 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
13384
13385 #. type: Plain text
13386 #: build/C/man2/vmsplice.2:137
13387 msgid "I<fd> either not valid, or doesn't refer to a pipe."
13388 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
13389
13390 #. type: Plain text
13391 #: build/C/man2/vmsplice.2:145
13392 msgid ""
13393 "I<nr_segs> is greater than B<IOV_MAX>; or memory not aligned if "
13394 "B<SPLICE_F_GIFT> set."
13395 msgstr ""
13396 "I<nr_segs> が B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が設定されたが"
13397 "メモリーがページ境界にあっていない。"
13398
13399 #. type: Plain text
13400 #: build/C/man2/vmsplice.2:153
13401 msgid ""
13402 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
13403 "support was added to glibc in version 2.5."
13404 msgstr ""
13405 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
13406 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
13407
13408 #. type: Plain text
13409 #: build/C/man2/vmsplice.2:164
13410 msgid ""
13411 "B<vmsplice>()  follows the other vectorized read/write type functions when "
13412 "it comes to limitations on number of segments being passed in.  This limit "
13413 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
13414 "writing, that limit is 1024."
13415 msgstr ""
13416 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
13417 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
13418 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
13419 "は 1024 である。"
13420
13421 #. type: Plain text
13422 #: build/C/man2/vmsplice.2:167
13423 msgid "B<splice>(2), B<tee>(2)"
13424 msgstr "B<splice>(2), B<tee>(2)"
13425
13426 #~ msgid ""
13427 #~ "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
13428 #~ msgstr ""
13429 #~ "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
13430
13431 #~ msgid "Execute the new kernel automatically on a system crash."
13432 #~ msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
13433
13434 #~ msgid ""
13435 #~ "The kernel image defined by I<segments> is copied from the calling "
13436 #~ "process into previously reserved memory."
13437 #~ msgstr ""
13438 #~ "I<segments> で定義されたカーネルイメージは、\n"
13439 #~ "呼び出したプロセスから予約済みメモリーにコピーされる。"
13440
13441 #~ msgid "I<flags> is invalid; or I<nr_segments> is too large"
13442 #~ msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
13443
13444 #~ msgid ""
13445 #~ "The required constants are in the Linux kernel source file I<linux/kexec."
13446 #~ "h>, which is not currently exported to glibc.  Therefore, these constants "
13447 #~ "must be defined manually."
13448 #~ msgstr ""
13449 #~ "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されて"
13450 #~ "いる\n"
13451 #~ "が、現在のところ glibc には公開されていない。\n"
13452 #~ "そのため、これらの定数は手動で定義しなければならない。"
13453
13454 #~ msgid "2014-04-15"
13455 #~ msgstr "2014-04-15"