OSDN Git Service

cf3ac85e049b20b596c818d559727a6cbaa3ec4b
[linuxjm/LDP_man-pages.git] / po4a / man2 / po / ja.po
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2013-08-15 19:32+0900\n"
10 "PO-Revision-Date: 2013-07-24 02:16+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long\\ *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long\\ *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 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:209
208 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:2026
212 #: build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57
213 #: build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209
214 #: build/C/man2/ptrace.2:1780 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:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:54
217 #: build/C/man2/vmsplice.2:113
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:234
233 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
234 #: build/C/man2/kexec_load.2:121 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:2032 build/C/man2/personality.2:64
237 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
238 #: build/C/man2/ptrace.2:1801 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:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:59
241 #: build/C/man2/vmsplice.2:122
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:249
248 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
249 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
250 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1805
251 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
252 #: 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:261
268 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
269 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
270 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:2033
271 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
272 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
273 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1816
274 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
275 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
276 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
277 #, no-wrap
278 msgid "B<EINVAL>"
279 msgstr "B<EINVAL>"
280
281 #. type: Plain text
282 #: build/C/man2/arch_prctl.2:97
283 msgid "I<code> is not a valid subcommand."
284 msgstr "I<code> が有効なサブコマンドでない。"
285
286 #. type: TP
287 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
288 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
289 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
290 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1826
291 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:68
292 #, no-wrap
293 msgid "B<EPERM>"
294 msgstr "B<EPERM>"
295
296 #.  .SH AUTHOR
297 #.  Man page written by Andi Kleen.
298 #. type: Plain text
299 #: build/C/man2/arch_prctl.2:103
300 msgid "I<addr> is outside the process address space."
301 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
302
303 #. type: SH
304 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
305 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
306 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
307 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
308 #: build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:2051
309 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
310 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
311 #: build/C/man2/ptrace.2:1844 build/C/man2/sendfile.2:148
312 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
313 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:73 build/C/man2/vmsplice.2:143
314 #, no-wrap
315 msgid "CONFORMING TO"
316 msgstr "準拠"
317
318 #. type: Plain text
319 #: build/C/man2/arch_prctl.2:107
320 msgid ""
321 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
322 "programs intended to be portable."
323 msgstr ""
324 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
325 "うべきでない。"
326
327 #. type: SH
328 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
329 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
330 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
331 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:2056
332 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
333 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1846
334 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
335 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
336 #, no-wrap
337 msgid "NOTES"
338 msgstr "注意"
339
340 #. type: Plain text
341 #: build/C/man2/arch_prctl.2:110
342 msgid ""
343 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
344 "currently."
345 msgstr ""
346 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
347 "ポートされている。"
348
349 #. type: Plain text
350 #: build/C/man2/arch_prctl.2:112
351 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
352 msgstr ""
353 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
354 "される。"
355
356 #. type: Plain text
357 #: build/C/man2/arch_prctl.2:115
358 msgid "B<ARCH_SET_GS> is disabled in some kernels."
359 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
360
361 #. type: Plain text
362 #: build/C/man2/arch_prctl.2:130
363 msgid ""
364 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
365 "faster alternative to set a 32-bit base using a segment selector by setting "
366 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
367 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
368 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
369 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
370 msgstr ""
371 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
372 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
373 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
374 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
375 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
376 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
377
378 #. type: Plain text
379 #: build/C/man2/arch_prctl.2:135
380 msgid ""
381 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
382 "have to declare it yourself for now.  This may be fixed in future glibc "
383 "versions."
384 msgstr ""
385 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
386 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
387 "ジョンで修正されるかもしれない。"
388
389 #. type: Plain text
390 #: build/C/man2/arch_prctl.2:138
391 msgid "I<FS> may be already used by the threading library."
392 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
393
394 #. type: SH
395 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
396 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
397 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
398 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:114
399 #: build/C/man2/perf_event_open.2:2176 build/C/man2/perfmonctl.2:205
400 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
401 #: build/C/man2/ptrace.2:2000 build/C/man2/quotactl.2:507
402 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
403 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
404 #: build/C/man2/vmsplice.2:154
405 #, no-wrap
406 msgid "SEE ALSO"
407 msgstr "関連項目"
408
409 #. type: Plain text
410 #: build/C/man2/arch_prctl.2:143
411 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
413
414 #. type: Plain text
415 #: build/C/man2/arch_prctl.2:145
416 msgid "AMD X86-64 Programmer's manual"
417 msgstr "AMD X86-64 Programmer's manual"
418
419 #. type: SH
420 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:326
421 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
422 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
423 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
424 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:116
425 #: build/C/man2/perf_event_open.2:2182 build/C/man2/perfmonctl.2:209
426 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
427 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:2014
428 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
429 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
430 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:76 build/C/man2/vmsplice.2:157
431 #, no-wrap
432 msgid "COLOPHON"
433 msgstr "この文書について"
434
435 #. type: Plain text
436 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:333
437 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
438 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
439 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
440 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:123
441 #: build/C/man2/perf_event_open.2:2189 build/C/man2/perfmonctl.2:216
442 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
443 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:2021
444 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
445 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
446 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:83 build/C/man2/vmsplice.2:164
447 #, fuzzy
448 #| msgid ""
449 #| "This page is part of release 3.52 of the Linux I<man-pages> project.  A "
450 #| "description of the project, and information about reporting bugs, can be "
451 #| "found at \\%http://www.kernel.org/doc/man-pages/."
452 msgid ""
453 "This page is part of release 3.53 of the Linux I<man-pages> project.  A "
454 "description of the project, and information about reporting bugs, can be "
455 "found at \\%http://www.kernel.org/doc/man-pages/."
456 msgstr ""
457 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.52 の一部\n"
458 "である。プロジェクトの説明とバグ報告に関する情報は\n"
459 "http://www.kernel.org/doc/man-pages/ に書かれている。"
460
461 #. type: TH
462 #: build/C/man2/futex.2:53
463 #, no-wrap
464 msgid "FUTEX"
465 msgstr "FUTEX"
466
467 #. type: TH
468 #: build/C/man2/futex.2:53
469 #, fuzzy, no-wrap
470 #| msgid "2013-07-02"
471 msgid "2013-07-30"
472 msgstr "2013-07-02"
473
474 #. type: Plain text
475 #: build/C/man2/futex.2:56
476 msgid "futex - fast user-space locking"
477 msgstr "futex - 高速ユーザ空間ロック"
478
479 #. type: Plain text
480 #: build/C/man2/futex.2:61
481 #, no-wrap
482 msgid ""
483 "B<#include E<lt>linux/futex.hE<gt>>\n"
484 "B<#include E<lt>sys/time.hE<gt>>\n"
485 msgstr ""
486 "B<#include E<lt>linux/futex.hE<gt>>\n"
487 "B<#include E<lt>sys/time.hE<gt>>\n"
488
489 #. type: Plain text
490 #: build/C/man2/futex.2:64
491 #, no-wrap
492 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
493 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
494
495 #.  int *? void *? u32 *?
496 #. type: Plain text
497 #: build/C/man2/futex.2:67
498 #, no-wrap
499 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
500 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
501
502 #. type: Plain text
503 #: build/C/man2/futex.2:84
504 msgid ""
505 "The B<futex>()  system call provides a method for a program to wait for a "
506 "value at a given address to change, and a method to wake up anyone waiting "
507 "on a particular address (while the addresses for the same memory in separate "
508 "processes may not be equal, the kernel maps them internally so the same "
509 "memory mapped in different locations will correspond for B<futex>()  "
510 "calls).  This system call is typically used to implement the contended case "
511 "of a lock in shared memory, as described in B<futex>(7)."
512 msgstr ""
513 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
514 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
515 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
516 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
517 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
518 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
519 "る。"
520
521 #. type: Plain text
522 #: build/C/man2/futex.2:91
523 msgid ""
524 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
525 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
526 "mean putting the calling process to sleep or, conversely, waking a waiting "
527 "process."
528 msgstr ""
529 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
530 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
531 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
532 "味する。"
533
534 #. type: Plain text
535 #: build/C/man2/futex.2:98
536 msgid ""
537 "Callers of this function are expected to adhere to the semantics as set out "
538 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
539 "instructions, this in turn probably means that most users will in fact be "
540 "library authors and not general application developers."
541 msgstr ""
542 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
543 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
544 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
545 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
546 "る。"
547
548 #. type: Plain text
549 #: build/C/man2/futex.2:106
550 msgid ""
551 "The I<uaddr> argument needs to point to an aligned integer which stores the "
552 "counter.  The operation to execute is passed via the I<op> argument, along "
553 "with a value I<val>."
554 msgstr ""
555 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
556 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
557 "渡される。"
558
559 #. type: Plain text
560 #: build/C/man2/futex.2:108
561 msgid "Five operations are currently defined:"
562 msgstr "現在のところ 5 つの操作が定義されている:"
563
564 #. type: TP
565 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
566 #, no-wrap
567 msgid "B<FUTEX_WAIT>"
568 msgstr "B<FUTEX_WAIT>"
569
570 #. type: Plain text
571 #: build/C/man2/futex.2:126
572 msgid ""
573 "This operation atomically verifies that the futex address I<uaddr> still "
574 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
575 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
576 "minimum duration of the wait, which is infinite otherwise.  The arguments "
577 "I<uaddr2> and I<val3> are ignored."
578 msgstr ""
579 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
580 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
581 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
582 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
583 "I<uaddr2> と I<val3> は無視される。"
584
585 #. type: Plain text
586 #: build/C/man2/futex.2:134
587 msgid ""
588 "For B<futex>(7), this call is executed if decrementing the count gave a "
589 "negative value (indicating contention), and will sleep until another process "
590 "releases the futex and executes the B<FUTEX_WAKE> operation."
591 msgstr ""
592 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
593 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
594 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
595
596 #. type: TP
597 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
598 #, no-wrap
599 msgid "B<FUTEX_WAKE>"
600 msgstr "B<FUTEX_WAKE>"
601
602 #. type: Plain text
603 #: build/C/man2/futex.2:145
604 msgid ""
605 "This operation wakes at most I<val> processes waiting on this futex address "
606 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
607 "I<val3> are ignored."
608 msgstr ""
609 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
610 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
611 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
612
613 #. type: Plain text
614 #: build/C/man2/futex.2:151
615 msgid ""
616 "For B<futex>(7), this is executed if incrementing the count showed that "
617 "there were waiters, once the futex value has been set to 1 (indicating that "
618 "it is available)."
619 msgstr ""
620 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
621 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
622 "場合に実行される。"
623
624 #. type: TP
625 #: build/C/man2/futex.2:151
626 #, no-wrap
627 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
628 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
629
630 #.  , suitable for .BR poll (2).
631 #. type: Plain text
632 #: build/C/man2/futex.2:167
633 msgid ""
634 "To support asynchronous wakeups, this operation associates a file descriptor "
635 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
636 "receive the signal number that was passed in I<val>.  The calling process "
637 "must close the returned file descriptor after use.  The arguments "
638 "I<timeout>, I<uaddr2> and I<val3> are ignored."
639 msgstr ""
640 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
641 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
642 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
643 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
644 "I<uaddr2>, I<val3> は無視される。"
645
646 #. type: Plain text
647 #: build/C/man2/futex.2:172
648 msgid ""
649 "To prevent race conditions, the caller should test if the futex has been "
650 "upped after B<FUTEX_FD> returns."
651 msgstr ""
652 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
653 "up されたかどうかを確認しなければならない。"
654
655 #. type: Plain text
656 #: build/C/man2/futex.2:176
657 msgid ""
658 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
659 "2.6.26 onward."
660 msgstr ""
661 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
662 "ている。"
663
664 #. type: TP
665 #: build/C/man2/futex.2:176
666 #, no-wrap
667 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
668 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
669
670 #. type: Plain text
671 #: build/C/man2/futex.2:191
672 msgid ""
673 "This operation was introduced in order to avoid a \"thundering herd\" effect "
674 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
675 "another futex.  This call wakes up I<val> processes, and requeues all other "
676 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
677 "I<val3> are ignored."
678 msgstr ""
679 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
680 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
681 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
682 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
683 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
684
685 #. type: TP
686 #: build/C/man2/futex.2:191
687 #, no-wrap
688 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
689 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
690
691 #. type: Plain text
692 #: build/C/man2/futex.2:209
693 msgid ""
694 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
695 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
696 "but first checks whether the location I<uaddr> still contains the value "
697 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
698 "argument I<timeout> is ignored."
699 msgstr ""
700 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
701 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
702 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
703 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
704
705 #. type: Plain text
706 #: build/C/man2/futex.2:216
707 msgid ""
708 "In the event of an error, all operations return -1, and set I<errno> to "
709 "indicate the error.  The return value on success depends on the operation, "
710 "as described in the following list:"
711 msgstr ""
712 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
713 "される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りで"
714 "ある。"
715
716 #. type: Plain text
717 #: build/C/man2/futex.2:222
718 msgid ""
719 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
720 "the various possible error returns."
721 msgstr ""
722 "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性"
723 "があるエラーについては「エラー」の節を参照。"
724
725 #. type: Plain text
726 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
727 msgid "Returns the number of processes woken up."
728 msgstr "wake したプロセスの数を返す。"
729
730 #. type: TP
731 #: build/C/man2/futex.2:225
732 #, no-wrap
733 msgid "B<FUTEX_FD>"
734 msgstr "B<FUTEX_FD>"
735
736 #. type: Plain text
737 #: build/C/man2/futex.2:228
738 msgid "Returns the new file descriptor associated with the futex."
739 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
740
741 #. type: TP
742 #: build/C/man2/futex.2:228
743 #, no-wrap
744 msgid "B<FUTEX_REQUEUE>"
745 msgstr "B<FUTEX_REQUEUE>"
746
747 #. type: TP
748 #: build/C/man2/futex.2:231
749 #, no-wrap
750 msgid "B<FUTEX_CMP_REQUEUE>"
751 msgstr "B<FUTEX_CMP_REQUEUE>"
752
753 #. type: TP
754 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
755 #, no-wrap
756 msgid "B<EACCES>"
757 msgstr "B<EACCES>"
758
759 #. type: Plain text
760 #: build/C/man2/futex.2:238
761 msgid "No read access to futex memory."
762 msgstr "futex メモリに読み込みアクセス権がなかった。"
763
764 #. type: TP
765 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
766 #, no-wrap
767 msgid "B<EAGAIN>"
768 msgstr "B<EAGAIN>"
769
770 #. type: Plain text
771 #: build/C/man2/futex.2:249
772 msgid ""
773 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
774 "equal to the expected value I<val3>.  (This probably indicates a race; use "
775 "the safe B<FUTEX_WAKE> now.)"
776 msgstr ""
777 "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出"
778 "された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> "
779 "を使うこと。)"
780
781 #. type: Plain text
782 #: build/C/man2/futex.2:254
783 msgid "Error retrieving I<timeout> information from user space."
784 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
785
786 #. type: TP
787 #: build/C/man2/futex.2:254
788 #, no-wrap
789 msgid "B<EINTR>"
790 msgstr "B<EINTR>"
791
792 #. type: Plain text
793 #: build/C/man2/futex.2:261
794 msgid ""
795 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
796 "a spurious wakeup."
797 msgstr ""
798 "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中"
799 "断された。"
800
801 #. type: Plain text
802 #: build/C/man2/futex.2:264
803 msgid "Invalid argument."
804 msgstr "無効な引き数。"
805
806 #. type: TP
807 #: build/C/man2/futex.2:264
808 #, no-wrap
809 msgid "B<ENFILE>"
810 msgstr "B<ENFILE>"
811
812 #. type: Plain text
813 #: build/C/man2/futex.2:267
814 msgid "The system limit on the total number of open files has been reached."
815 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
816
817 #. type: TP
818 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
819 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
820 #: build/C/man2/vm86.2:64
821 #, no-wrap
822 msgid "B<ENOSYS>"
823 msgstr "B<ENOSYS>"
824
825 #. type: Plain text
826 #: build/C/man2/futex.2:271
827 msgid "Invalid operation specified in I<op>."
828 msgstr "I<op> に無効な操作が指定された。"
829
830 #. type: TP
831 #: build/C/man2/futex.2:271
832 #, no-wrap
833 msgid "B<ETIMEDOUT>"
834 msgstr "B<ETIMEDOUT>"
835
836 #. type: Plain text
837 #: build/C/man2/futex.2:276
838 msgid "Timeout during the B<FUTEX_WAIT> operation."
839 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
840
841 #. type: TP
842 #: build/C/man2/futex.2:276
843 #, no-wrap
844 msgid "B<EWOULDBLOCK>"
845 msgstr "B<EWOULDBLOCK>"
846
847 #. type: Plain text
848 #: build/C/man2/futex.2:286
849 msgid ""
850 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
851 "to the expected value I<val> at the time of the call."
852 msgstr ""
853 "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 "
854 "I<val> と異なっていた。"
855
856 #. type: SH
857 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
858 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
859 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
860 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
861 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
862 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
863 #: build/C/man2/vmsplice.2:138
864 #, no-wrap
865 msgid "VERSIONS"
866 msgstr "バージョン"
867
868 #. type: Plain text
869 #: build/C/man2/futex.2:296
870 msgid ""
871 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
872 "from what was described above.  A 4-argument system call with the semantics "
873 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
874 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
875 "especially on the s390 architecture."
876 msgstr ""
877 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
878 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
879 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
880 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
881 "上の特別のものである。"
882
883 #. type: Plain text
884 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
885 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
886 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
887 msgid "This system call is Linux-specific."
888 msgstr "このシステムコールは Linux 固有である。"
889
890 #.  .SH "AUTHORS"
891 #.  .PP
892 #.  Futexes were designed and worked on by
893 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
894 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
895 #.  and Rusty Russell (IBM Linux Technology Center).
896 #.  This page written by bert hubert.
897 #. type: Plain text
898 #: build/C/man2/futex.2:312
899 msgid ""
900 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
901 "for end-users.  (There is no wrapper function for this system call in "
902 "glibc.)  Implementors are expected to be assembly literate and to have read "
903 "the sources of the futex user-space library referenced below."
904 msgstr ""
905 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
906 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
907 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
908 "ブラリの ソースを読み終えていることが要求される。"
909
910 #. type: Plain text
911 #: build/C/man2/futex.2:315
912 #, fuzzy
913 #| msgid "B<clone>(2), B<futex>(2)"
914 msgid "B<restart_syscall>(2), B<futex>(7)"
915 msgstr "B<clone>(2), B<futex>(2)"
916
917 #. type: Plain text
918 #: build/C/man2/futex.2:318
919 msgid ""
920 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
921 "of the Ottawa Linux Symposium 2002), online at"
922 msgstr ""
923 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
924 "of the Ottawa Linux Symposium 2002), online at"
925
926 #. type: Plain text
927 #: build/C/man2/futex.2:321
928 msgid ""
929 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
930 "E<.UE>"
931 msgstr ""
932 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
933 "E<.UE>"
934
935 #. type: Plain text
936 #: build/C/man2/futex.2:323
937 msgid "Futex example library, futex-*.tar.bz2 at"
938 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
939
940 #. type: Plain text
941 #: build/C/man2/futex.2:326
942 msgid ""
943 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
944 "E<.UE>"
945 msgstr ""
946 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
947 "E<.UE>"
948
949 #. type: TH
950 #: build/C/man2/get_robust_list.2:29
951 #, no-wrap
952 msgid "GET_ROBUST_LIST"
953 msgstr "GET_ROBUST_LIST"
954
955 #. type: TH
956 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
957 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
958 #, no-wrap
959 msgid "2012-07-13"
960 msgstr "2012-07-13"
961
962 #. type: TH
963 #: build/C/man2/get_robust_list.2:29
964 #, no-wrap
965 msgid "Linux System Calls"
966 msgstr ""
967
968 #. type: Plain text
969 #: build/C/man2/get_robust_list.2:32
970 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
971 msgstr ""
972
973 #. type: Plain text
974 #: build/C/man2/get_robust_list.2:36
975 #, no-wrap
976 msgid ""
977 "B<#include E<lt>linux/futex.hE<gt>>\n"
978 "B<#include E<lt>syscall.hE<gt>>\n"
979 msgstr ""
980 "B<#include E<lt>linux/futex.hE<gt>>\n"
981 "B<#include E<lt>syscall.hE<gt>>\n"
982
983 #. type: Plain text
984 #: build/C/man2/get_robust_list.2:40
985 #, no-wrap
986 msgid ""
987 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
988 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
989 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
990 msgstr ""
991
992 #. type: Plain text
993 #: build/C/man2/get_robust_list.2:44
994 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
995 msgstr ""
996 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
997 "の節を参照。"
998
999 #. type: Plain text
1000 #: build/C/man2/get_robust_list.2:49
1001 msgid ""
1002 "The robust futex implementation needs to maintain per-thread lists of robust "
1003 "futexes which are unlocked when the thread exits.  These lists are managed "
1004 "in user space; the kernel is notified about only the location of the head of "
1005 "the list."
1006 msgstr ""
1007
1008 #. type: Plain text
1009 #: build/C/man2/get_robust_list.2:65
1010 msgid ""
1011 "The B<get_robust_list>()  system call returns the head of the robust futex "
1012 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1013 "the head of the list for the calling thread is returned.  The list head is "
1014 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1015 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1016 msgstr ""
1017
1018 #. type: Plain text
1019 #: build/C/man2/get_robust_list.2:77
1020 msgid ""
1021 "The B<set_robust_list>()  system call requests the kernel to record the head "
1022 "of the list of robust futexes owned by the calling thread.  The I<head> "
1023 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1024 "(*head)>."
1025 msgstr ""
1026
1027 #. type: Plain text
1028 #: build/C/man2/get_robust_list.2:84
1029 msgid ""
1030 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1031 "when the operation is successful, an error code otherwise."
1032 msgstr ""
1033
1034 #. type: Plain text
1035 #: build/C/man2/get_robust_list.2:88
1036 msgid ""
1037 "The B<set_robust_list>()  system call can fail with the following error:"
1038 msgstr ""
1039
1040 #. type: Plain text
1041 #: build/C/man2/get_robust_list.2:94
1042 msgid ""
1043 "I<len> does not match the size of structure B<struct robust_list_head> "
1044 "expected by kernel."
1045 msgstr ""
1046
1047 #. type: Plain text
1048 #: build/C/man2/get_robust_list.2:98
1049 msgid ""
1050 "The B<get_robust_list>()  system call can fail with the following errors:"
1051 msgstr ""
1052
1053 #. type: Plain text
1054 #: build/C/man2/get_robust_list.2:106
1055 msgid ""
1056 "The calling process does not have permission to see the robust futex list of "
1057 "the thread with the thread ID I<pid>, and does not have the "
1058 "B<CAP_SYS_PTRACE> capability."
1059 msgstr ""
1060
1061 #. type: TP
1062 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1063 #: build/C/man2/ptrace.2:1839 build/C/man2/quotactl.2:461
1064 #: build/C/man2/quotactl.2:504
1065 #, no-wrap
1066 msgid "B<ESRCH>"
1067 msgstr "B<ESRCH>"
1068
1069 #. type: Plain text
1070 #: build/C/man2/get_robust_list.2:111
1071 msgid "No thread with the thread ID I<pid> could be found."
1072 msgstr ""
1073
1074 #. type: Plain text
1075 #: build/C/man2/get_robust_list.2:115
1076 msgid ""
1077 "The head of the robust futex list can't be stored at the location I<head>."
1078 msgstr ""
1079
1080 #. type: Plain text
1081 #: build/C/man2/get_robust_list.2:119
1082 msgid ""
1083 "These system calls were added in Linux 2.6.17.  No library support is "
1084 "provided; use B<syscall>(2)."
1085 msgstr ""
1086 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1087 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1088
1089 #. type: Plain text
1090 #: build/C/man2/get_robust_list.2:124
1091 msgid ""
1092 "These system calls are not needed by normal applications.  No support for "
1093 "them is provided in glibc.  In the unlikely event that you want to call them "
1094 "directly, use B<syscall>(2)."
1095 msgstr ""
1096 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1097 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1098 "呼び出したい場合は B<syscall>(2) を使うこと。"
1099
1100 #. type: Plain text
1101 #: build/C/man2/get_robust_list.2:128
1102 msgid ""
1103 "A thread can have only one robust futex list; therefore applications that "
1104 "wish to use this functionality should use the robust mutexes provided by "
1105 "glibc."
1106 msgstr ""
1107
1108 #.  .BR pthread_mutexattr_setrobust_np (3)
1109 #. type: Plain text
1110 #: build/C/man2/get_robust_list.2:131
1111 msgid "B<futex>(2)"
1112 msgstr "B<futex>(2)"
1113
1114 #.  http://lwn.net/Articles/172149/
1115 #. type: Plain text
1116 #: build/C/man2/get_robust_list.2:137
1117 msgid ""
1118 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1119 "txt> in the Linux kernel source tree"
1120 msgstr ""
1121
1122 #. type: TH
1123 #: build/C/man2/getunwind.2:27
1124 #, no-wrap
1125 msgid "GETUNWIND"
1126 msgstr ""
1127
1128 #. type: TH
1129 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1130 #, no-wrap
1131 msgid "2013-02-13"
1132 msgstr "2013-02-13"
1133
1134 #. type: Plain text
1135 #: build/C/man2/getunwind.2:30
1136 msgid "getunwind - copy the unwind data to caller's buffer"
1137 msgstr ""
1138
1139 #. type: Plain text
1140 #: build/C/man2/getunwind.2:34
1141 #, no-wrap
1142 msgid ""
1143 "B<#include E<lt>syscall.hE<gt>>\n"
1144 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1145 msgstr ""
1146 "B<#include E<lt>syscall.hE<gt>>\n"
1147 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1148
1149 #. type: Plain text
1150 #: build/C/man2/getunwind.2:36
1151 #, no-wrap
1152 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1153 msgstr ""
1154
1155 #. type: Plain text
1156 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1157 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1158 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1159 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1160 msgstr ""
1161 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
1162 "を参照。"
1163
1164 #. type: Plain text
1165 #: build/C/man2/getunwind.2:42
1166 msgid "I<Note: this function is obsolete.>"
1167 msgstr ""
1168
1169 #. type: Plain text
1170 #: build/C/man2/getunwind.2:52
1171 msgid ""
1172 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1173 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1174 "of the unwind data; this data describes the gate page (kernel code that is "
1175 "mapped into user space)."
1176 msgstr ""
1177
1178 #. type: Plain text
1179 #: build/C/man2/getunwind.2:64
1180 msgid ""
1181 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1182 "copied only if I<buf_size> is greater than or equal to the size of the "
1183 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1184 "call succeeds, returning the size that would be needed to store the unwind "
1185 "data."
1186 msgstr ""
1187
1188 #. type: Plain text
1189 #: build/C/man2/getunwind.2:68
1190 msgid ""
1191 "The first part of the unwind data contains an unwind table.  The rest "
1192 "contains the associated unwind information, in no particular order.  The "
1193 "unwind table contains entries of the following form:"
1194 msgstr ""
1195
1196 #. type: Plain text
1197 #: build/C/man2/getunwind.2:73
1198 #, no-wrap
1199 msgid ""
1200 "\tu64 start;      (64-bit address of start of function)\n"
1201 "\tu64 end;        (64-bit address of end of function)\n"
1202 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1203 msgstr ""
1204
1205 #. type: Plain text
1206 #: build/C/man2/getunwind.2:81
1207 msgid ""
1208 "An entry whose I<start> value is zero indicates the end of the table.  For "
1209 "more information about the format, see the I<IA-64 Software Conventions and "
1210 "Runtime Architecture> manual."
1211 msgstr ""
1212
1213 #. type: Plain text
1214 #: build/C/man2/getunwind.2:88
1215 msgid ""
1216 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1217 "is returned and I<errno> is set to indicate the error."
1218 msgstr ""
1219
1220 #. type: Plain text
1221 #: build/C/man2/getunwind.2:94
1222 msgid ""
1223 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1224 "stored in the space specified by I<buf>."
1225 msgstr ""
1226
1227 #. type: Plain text
1228 #: build/C/man2/getunwind.2:96
1229 msgid "This system call is available since Linux 2.4."
1230 msgstr ""
1231
1232 #. type: Plain text
1233 #: build/C/man2/getunwind.2:99
1234 msgid ""
1235 "This system call is Linux specific, and is available only on the IA-64 "
1236 "architecture."
1237 msgstr ""
1238
1239 #. type: Plain text
1240 #: build/C/man2/getunwind.2:107
1241 msgid ""
1242 "This system call has been deprecated.  The modern way to obtain the kernel's "
1243 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1244 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1245 msgstr ""
1246
1247 #. type: Plain text
1248 #: build/C/man2/getunwind.2:111
1249 msgid ""
1250 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1251 "that you want to call it, use B<syscall>(2)."
1252 msgstr ""
1253 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1254 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1255
1256 #. type: Plain text
1257 #: build/C/man2/getunwind.2:113
1258 msgid "B<getauxval>(3)"
1259 msgstr "B<getauxval>(3)"
1260
1261 #. type: TH
1262 #: build/C/man2/kexec_load.2:26
1263 #, no-wrap
1264 msgid "KEXEC_LOAD"
1265 msgstr "KEXEC_LOAD"
1266
1267 #. type: Plain text
1268 #: build/C/man2/kexec_load.2:29
1269 msgid "kexec_load - load a new kernel for later execution"
1270 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1271
1272 #. type: Plain text
1273 #: build/C/man2/kexec_load.2:31
1274 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1275 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1276
1277 #. type: Plain text
1278 #: build/C/man2/kexec_load.2:33
1279 msgid ""
1280 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1281 ">"
1282 msgstr ""
1283 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1284 ">"
1285
1286 #. type: Plain text
1287 #: build/C/man2/kexec_load.2:36
1288 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1289 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1290
1291 #. type: Plain text
1292 #: build/C/man2/kexec_load.2:44
1293 msgid ""
1294 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1295 "later by B<reboot>(2)."
1296 msgstr ""
1297 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1298 "その後の B<reboot>(2) で実行できるようにする。"
1299
1300 #. type: Plain text
1301 #: build/C/man2/kexec_load.2:50
1302 msgid ""
1303 "The I<flags> argument is a mask whose high-order bits control the operation "
1304 "of the call.  The following values can be specified in I<flags>:"
1305 msgstr ""
1306 "I<flags> 引き数はマスクビットで、\n"
1307 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1308 "I<flags> には以下の値を指定できる。"
1309
1310 #. type: TP
1311 #: build/C/man2/kexec_load.2:50
1312 #, no-wrap
1313 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1314 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1315
1316 #.  FIXME figure out how this is really used
1317 #. type: Plain text
1318 #: build/C/man2/kexec_load.2:54
1319 msgid "Execute the new kernel automatically on a system crash."
1320 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1321
1322 #. type: TP
1323 #: build/C/man2/kexec_load.2:54
1324 #, no-wrap
1325 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1326 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1327
1328 #. type: Plain text
1329 #: build/C/man2/kexec_load.2:64
1330 msgid ""
1331 "Preserve the system hardware and software states before executing the new "
1332 "kernel.  This could be used for system suspend.  This flag is available only "
1333 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1334 "only if I<nr_segments> is greater than 0."
1335 msgstr ""
1336 "新しいカーネルを実行する前に、\n"
1337 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1338 "システムの中断時 (suspend) などで使用できる。\n"
1339 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1340 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1341
1342 #. type: Plain text
1343 #: build/C/man2/kexec_load.2:84
1344 msgid ""
1345 "The low-order bits of I<flags> contain the architecture of the to-be-"
1346 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1347 "current architecture, or one of the following architecture constants "
1348 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1349 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1350 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1351 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1352 "the system."
1353 msgstr ""
1354 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1355 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1356 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1357 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1358 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1359 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1360 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1361 "システムの CPU で実行可能なものでなければならない。"
1362
1363 #. type: Plain text
1364 #: build/C/man2/kexec_load.2:98
1365 msgid ""
1366 "The I<entry> argument is the physical entry address in the kernel image.  "
1367 "The I<nr_segments> argument is the number of segments pointed to by the "
1368 "I<segments> pointer.  The I<segments> argument is an array of "
1369 "I<kexec_segment> structures which define the kernel layout:"
1370 msgstr ""
1371 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1372 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1373 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1374 "この構造体によりカーネルの配置が定義される。"
1375
1376 #. type: Plain text
1377 #: build/C/man2/kexec_load.2:107
1378 #, no-wrap
1379 msgid ""
1380 "struct kexec_segment {\n"
1381 "    void   *buf;        /* Buffer in user space */\n"
1382 "    size_t  bufsz;      /* Buffer length in user space */\n"
1383 "    void   *mem;        /* Physical address of kernel */\n"
1384 "    size_t  memsz;      /* Physical address length */\n"
1385 "};\n"
1386 msgstr ""
1387 "struct kexec_segment {\n"
1388 "    void   *buf;        /* Buffer in user space */\n"
1389 "    size_t  bufsz;      /* Buffer length in user space */\n"
1390 "    void   *mem;        /* Physical address of kernel */\n"
1391 "    size_t  memsz;      /* Physical address length */\n"
1392 "};\n"
1393
1394 #.  FIXME elaborate on the following:
1395 #. type: Plain text
1396 #: build/C/man2/kexec_load.2:114
1397 msgid ""
1398 "The kernel image defined by I<segments> is copied from the calling process "
1399 "into previously reserved memory."
1400 msgstr ""
1401 "I<segments> で定義されたカーネルイメージは、\n"
1402 "呼び出したプロセスから予約済みメモリにコピーされる。"
1403
1404 #. type: Plain text
1405 #: build/C/man2/kexec_load.2:121
1406 msgid ""
1407 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1408 "I<errno> is set to indicate the error."
1409 msgstr ""
1410 "成功すると、 B<kexec_load> は 0 を返す。\n"
1411 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1412
1413 #. type: TP
1414 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1415 #: build/C/man2/ptrace.2:1802 build/C/man2/quotactl.2:495
1416 #, no-wrap
1417 msgid "B<EBUSY>"
1418 msgstr "B<EBUSY>"
1419
1420 #. type: Plain text
1421 #: build/C/man2/kexec_load.2:126
1422 msgid ""
1423 "Another crash kernel is already being loaded or a crash kernel is already in "
1424 "use."
1425 msgstr ""
1426 "別のクラッシュカーネルがすでにロードされているか、\n"
1427 "クラッシュカーネルがすでに使用されている。"
1428
1429 #.  KEXEC_SEGMENT_MAX == 16
1430 #. type: Plain text
1431 #: build/C/man2/kexec_load.2:133
1432 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1433 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1434
1435 #. type: Plain text
1436 #: build/C/man2/kexec_load.2:138
1437 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1438 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1439
1440 #. type: Plain text
1441 #: build/C/man2/kexec_load.2:142
1442 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1443 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1444
1445 #. type: Plain text
1446 #: build/C/man2/kexec_load.2:149
1447 msgid ""
1448 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1449 "B<syscall>(2)."
1450 msgstr ""
1451 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1452 "B<syscall>(2) を使って呼び出すこと。"
1453
1454 #.  FIXME Andi submitted a patch for this.
1455 #.  Check if it got accepted later.
1456 #. type: Plain text
1457 #: build/C/man2/kexec_load.2:156
1458 msgid ""
1459 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1460 "which is not currently exported to glibc.  Therefore, these constants must "
1461 "be defined manually."
1462 msgstr ""
1463 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されてい"
1464 "る\n"
1465 "が、現在のところ glibc には公開されていない。\n"
1466 "そのため、これらの定数は手動で定義しなければならない。"
1467
1468 #. type: Plain text
1469 #: build/C/man2/kexec_load.2:159
1470 msgid ""
1471 "This system call is available only if the kernel was configured with "
1472 "B<CONFIG_KEXEC>."
1473 msgstr ""
1474 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1475 "いる場合にのみ利用できる。"
1476
1477 #. type: Plain text
1478 #: build/C/man2/kexec_load.2:162
1479 msgid "B<reboot>(2), B<syscall>(2)"
1480 msgstr "B<reboot>(2), B<syscall>(2)"
1481
1482 #. type: TH
1483 #: build/C/man2/lookup_dcookie.2:27
1484 #, no-wrap
1485 msgid "LOOKUP_DCOOKIE"
1486 msgstr "LOOKUP_DCOOKIE"
1487
1488 #. type: TH
1489 #: build/C/man2/lookup_dcookie.2:27
1490 #, no-wrap
1491 msgid "2004-06-17"
1492 msgstr "2004-06-17"
1493
1494 #. type: Plain text
1495 #: build/C/man2/lookup_dcookie.2:30
1496 msgid "lookup_dcookie - return a directory entry's path"
1497 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1498
1499 #. type: Plain text
1500 #: build/C/man2/lookup_dcookie.2:32
1501 msgid ""
1502 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1503 ">"
1504 msgstr ""
1505 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1506 ">"
1507
1508 #. type: Plain text
1509 #: build/C/man2/lookup_dcookie.2:38
1510 msgid ""
1511 "Look up the full path of the directory entry specified by the value "
1512 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1513 "particular directory entry.  The buffer given is filled in with the full "
1514 "path of the directory entry."
1515 msgstr ""
1516 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1517 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1518 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1519 "ルパス名が格納される。"
1520
1521 #. type: Plain text
1522 #: build/C/man2/lookup_dcookie.2:43
1523 msgid ""
1524 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1525 "a cookie reference to the directory entry."
1526 msgstr ""
1527 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1528 "リへの cookie 参照を 保持していなければならない。"
1529
1530 #. type: Plain text
1531 #: build/C/man2/lookup_dcookie.2:50
1532 msgid ""
1533 "On success, B<lookup_dcookie>()  returns the length of the path string "
1534 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1535 "appropriately."
1536 msgstr ""
1537 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1538 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1539
1540 #. type: Plain text
1541 #: build/C/man2/lookup_dcookie.2:54
1542 msgid "The buffer was not valid."
1543 msgstr "バッファが有効でなかった。"
1544
1545 #. type: Plain text
1546 #: build/C/man2/lookup_dcookie.2:58
1547 msgid ""
1548 "The kernel has no registered cookie/directory entry mappings at the time of "
1549 "lookup, or the cookie does not refer to a valid directory entry."
1550 msgstr ""
1551 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1552 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1553 "いない。"
1554
1555 #. type: TP
1556 #: build/C/man2/lookup_dcookie.2:58
1557 #, no-wrap
1558 msgid "B<ENAMETOOLONG>"
1559 msgstr "B<ENAMETOOLONG>"
1560
1561 #. type: Plain text
1562 #: build/C/man2/lookup_dcookie.2:61
1563 msgid "The name could not fit in the buffer."
1564 msgstr "名前がバッファに入り切らなかった。"
1565
1566 #. type: TP
1567 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1568 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1569 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1570 #, no-wrap
1571 msgid "B<ENOMEM>"
1572 msgstr "B<ENOMEM>"
1573
1574 #. type: Plain text
1575 #: build/C/man2/lookup_dcookie.2:65
1576 msgid ""
1577 "The kernel could not allocate memory for the temporary buffer holding the "
1578 "path."
1579 msgstr ""
1580 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1581 "かった。"
1582
1583 #. type: Plain text
1584 #: build/C/man2/lookup_dcookie.2:70
1585 msgid ""
1586 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1587 "up cookie values."
1588 msgstr ""
1589 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1590 "持っていない。"
1591
1592 #. type: TP
1593 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1594 #, no-wrap
1595 msgid "B<ERANGE>"
1596 msgstr "B<ERANGE>"
1597
1598 #. type: Plain text
1599 #: build/C/man2/lookup_dcookie.2:73
1600 msgid ""
1601 "The buffer was not large enough to hold the path of the directory entry."
1602 msgstr ""
1603 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1604 "かった。"
1605
1606 #. type: Plain text
1607 #: build/C/man2/lookup_dcookie.2:78
1608 msgid ""
1609 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1610 "2.5.70."
1611 msgstr ""
1612 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1613 "追加された。"
1614
1615 #. type: Plain text
1616 #: build/C/man2/lookup_dcookie.2:81
1617 msgid "B<lookup_dcookie>()  is Linux-specific."
1618 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1619
1620 #. type: Plain text
1621 #: build/C/man2/lookup_dcookie.2:85
1622 msgid ""
1623 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1624 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1625 "for directory entries."
1626 msgstr ""
1627 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1628 "oprofile profiler で 使われているだけである。"
1629
1630 #. type: Plain text
1631 #: build/C/man2/lookup_dcookie.2:88
1632 msgid ""
1633 "The path returned may be suffixed by the string \" (deleted)\" if the "
1634 "directory entry has been removed."
1635 msgstr ""
1636 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1637 "\" (deleted)\" という文字列が付加されることがある。"
1638
1639 #. type: TH
1640 #: build/C/man2/modify_ldt.2:24
1641 #, no-wrap
1642 msgid "MODIFY_LDT"
1643 msgstr "MODIFY_LDT"
1644
1645 #. type: Plain text
1646 #: build/C/man2/modify_ldt.2:27
1647 msgid "modify_ldt - get or set ldt"
1648 msgstr "modify_ldt - ldt を設定または取得する"
1649
1650 #. type: Plain text
1651 #: build/C/man2/modify_ldt.2:30
1652 #, no-wrap
1653 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1654 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1655
1656 #. type: Plain text
1657 #: build/C/man2/modify_ldt.2:32
1658 #, no-wrap
1659 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1660 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1661
1662 #. type: Plain text
1663 #: build/C/man2/modify_ldt.2:41
1664 msgid ""
1665 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1666 "process.  The ldt is a per-process memory management table used by the i386 "
1667 "processor.  For more information on this table, see an Intel 386 processor "
1668 "handbook."
1669 msgstr ""
1670 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1671 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1672 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1673 "は Intel 386 processor handbook を 参照すること。"
1674
1675 #. type: Plain text
1676 #: build/C/man2/modify_ldt.2:51
1677 msgid ""
1678 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1679 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1680 "actual size of the ldt."
1681 msgstr ""
1682 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1683 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1684 "である。"
1685
1686 #.  FIXME ? say something about func == 2 and func == 0x11?
1687 #.  In Linux 2.4, func == 2 returned "the default ldt"
1688 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1689 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1690 #. type: Plain text
1691 #: build/C/man2/modify_ldt.2:69
1692 msgid ""
1693 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1694 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1695 "structure."
1696 msgstr ""
1697 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1698 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1699 "くなければならない。"
1700
1701 #. type: Plain text
1702 #: build/C/man2/modify_ldt.2:73
1703 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1704 msgstr ""
1705 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1706
1707 #. type: Plain text
1708 #: build/C/man2/modify_ldt.2:87
1709 #, no-wrap
1710 msgid ""
1711 "struct user_desc {\n"
1712 "    unsigned int  entry_number;\n"
1713 "    unsigned long base_addr;\n"
1714 "    unsigned int  limit;\n"
1715 "    unsigned int  seg_32bit:1;\n"
1716 "    unsigned int  contents:2;\n"
1717 "    unsigned int  read_exec_only:1;\n"
1718 "    unsigned int  limit_in_pages:1;\n"
1719 "    unsigned int  seg_not_present:1;\n"
1720 "    unsigned int  useable:1;\n"
1721 "};\n"
1722 msgstr ""
1723 "struct user_desc {\n"
1724 "    unsigned int  entry_number;\n"
1725 "    unsigned long base_addr;\n"
1726 "    unsigned int  limit;\n"
1727 "    unsigned int  seg_32bit:1;\n"
1728 "    unsigned int  contents:2;\n"
1729 "    unsigned int  read_exec_only:1;\n"
1730 "    unsigned int  limit_in_pages:1;\n"
1731 "    unsigned int  seg_not_present:1;\n"
1732 "    unsigned int  useable:1;\n"
1733 "};\n"
1734
1735 #.  .PP
1736 #.  The ldt is specific for the calling process. Any attempts to change
1737 #.  the ldt to include the address space of another process or the kernel
1738 #.  will result in a segmentation violation when trying to access the memory
1739 #.  outside of the process address space. The memory protection is enforced
1740 #.  at the paging layer.
1741 #. type: Plain text
1742 #: build/C/man2/modify_ldt.2:98
1743 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1744 msgstr ""
1745 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1746
1747 #. type: Plain text
1748 #: build/C/man2/modify_ldt.2:108
1749 msgid ""
1750 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1751 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1752 "and sets I<errno> to indicate the error."
1753 msgstr ""
1754 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1755 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1756 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1757
1758 #. type: Plain text
1759 #: build/C/man2/modify_ldt.2:113
1760 msgid "I<ptr> points outside the address space."
1761 msgstr "I<ptr> がアドレス空間の外を指している。"
1762
1763 #. type: Plain text
1764 #: build/C/man2/modify_ldt.2:126
1765 msgid ""
1766 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1767 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1768 "invalid values."
1769 msgstr ""
1770 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1771 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1772 "エントリが無効な値である。"
1773
1774 #. type: Plain text
1775 #: build/C/man2/modify_ldt.2:130
1776 msgid "I<func> is neither 0 nor 1."
1777 msgstr "I<func> が 0 でも 1 でもない。"
1778
1779 #. type: Plain text
1780 #: build/C/man2/modify_ldt.2:133
1781 msgid ""
1782 "This call is Linux-specific and should not be used in programs intended to "
1783 "be portable."
1784 msgstr ""
1785 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1786 "い。"
1787
1788 #. type: Plain text
1789 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1790 #: build/C/man2/pivot_root.2:134
1791 msgid ""
1792 "Glibc does not provide a wrapper for this system call; call it using "
1793 "B<syscall>(2)."
1794 msgstr ""
1795 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1796 "(2)  を使って呼び出すこと。"
1797
1798 #. type: Plain text
1799 #: build/C/man2/modify_ldt.2:138
1800 msgid "B<vm86>(2)"
1801 msgstr "B<vm86>(2)"
1802
1803 #. type: TH
1804 #: build/C/man2/nfsservctl.2:8
1805 #, no-wrap
1806 msgid "NFSSERVCTL"
1807 msgstr "NFSSERVCTL"
1808
1809 #. type: TH
1810 #: build/C/man2/nfsservctl.2:8
1811 #, no-wrap
1812 msgid "2012-03-05"
1813 msgstr "2012-03-05"
1814
1815 #. type: Plain text
1816 #: build/C/man2/nfsservctl.2:11
1817 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1818 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1819
1820 #. type: Plain text
1821 #: build/C/man2/nfsservctl.2:14
1822 #, no-wrap
1823 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1824 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1825
1826 #. type: Plain text
1827 #: build/C/man2/nfsservctl.2:17
1828 #, no-wrap
1829 msgid ""
1830 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1831 "B<                union nfsctl_res *>I<resp>B<);>\n"
1832 msgstr ""
1833 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1834 "B<                union nfsctl_res *>I<resp>B<);>\n"
1835
1836 #. type: Plain text
1837 #: build/C/man2/nfsservctl.2:21
1838 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1839 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1840
1841 #. type: Plain text
1842 #: build/C/man2/nfsservctl.2:33
1843 #, no-wrap
1844 msgid ""
1845 "/*\n"
1846 " * These are the commands understood by nfsctl().\n"
1847 " */\n"
1848 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1849 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1850 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1851 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1852 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1853 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1854 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1855 msgstr ""
1856 "/*\n"
1857 " * nfsctl() によって理解されるコマンド\n"
1858 " */\n"
1859 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1860 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1861 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1862 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1863 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1864 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1865 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1866
1867 #. type: Plain text
1868 #: build/C/man2/nfsservctl.2:45
1869 #, no-wrap
1870 msgid ""
1871 "struct nfsctl_arg {\n"
1872 "    int                       ca_version;     /* safeguard */\n"
1873 "    union {\n"
1874 "        struct nfsctl_svc     u_svc;\n"
1875 "        struct nfsctl_client  u_client;\n"
1876 "        struct nfsctl_export  u_export;\n"
1877 "        struct nfsctl_uidmap  u_umap;\n"
1878 "        struct nfsctl_fhparm  u_getfh;\n"
1879 "        unsigned int          u_debug;\n"
1880 "    } u;\n"
1881 "}\n"
1882 msgstr ""
1883 "struct nfsctl_arg {\n"
1884 "    int                       ca_version;     /* safeguard */\n"
1885 "    union {\n"
1886 "        struct nfsctl_svc     u_svc;\n"
1887 "        struct nfsctl_client  u_client;\n"
1888 "        struct nfsctl_export  u_export;\n"
1889 "        struct nfsctl_uidmap  u_umap;\n"
1890 "        struct nfsctl_fhparm  u_getfh;\n"
1891 "        unsigned int          u_debug;\n"
1892 "    } u;\n"
1893 "}\n"
1894
1895 #. type: Plain text
1896 #: build/C/man2/nfsservctl.2:50
1897 #, no-wrap
1898 msgid ""
1899 "union nfsctl_res {\n"
1900 "        struct knfs_fh          cr_getfh;\n"
1901 "        unsigned int            cr_debug;\n"
1902 "};\n"
1903 msgstr ""
1904 "union nfsctl_res {\n"
1905 "        struct knfs_fh          cr_getfh;\n"
1906 "        unsigned int            cr_debug;\n"
1907 "};\n"
1908
1909 #. type: Plain text
1910 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1911 #: build/C/man2/vm86.2:59
1912 msgid ""
1913 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1914 "appropriately."
1915 msgstr ""
1916 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1917 "定される。"
1918
1919 #. type: Plain text
1920 #: build/C/man2/nfsservctl.2:58
1921 msgid "This call is Linux-specific."
1922 msgstr "このコールは Linux 特有である。"
1923
1924 #. type: TH
1925 #: build/C/man2/outb.2:26
1926 #, no-wrap
1927 msgid "OUTB"
1928 msgstr "OUTB"
1929
1930 #. type: TH
1931 #: build/C/man2/outb.2:26
1932 #, no-wrap
1933 msgid "2012-12-31"
1934 msgstr "2012-12-31"
1935
1936 #. type: Plain text
1937 #: build/C/man2/outb.2:31
1938 msgid ""
1939 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1940 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1941 msgstr ""
1942 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1943 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1944
1945 #. type: Plain text
1946 #: build/C/man2/outb.2:34
1947 #, no-wrap
1948 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1949 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1950
1951 #. type: Plain text
1952 #: build/C/man2/outb.2:41
1953 #, no-wrap
1954 msgid ""
1955 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1956 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1957 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1958 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1959 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1960 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1961 msgstr ""
1962 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1963 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1964 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1965 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1966 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1967 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1968
1969 #. type: Plain text
1970 #: build/C/man2/outb.2:48
1971 #, no-wrap
1972 msgid ""
1973 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1974 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1975 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1976 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1977 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1978 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1979 msgstr ""
1980 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1981 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1982 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1983 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1984 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1985 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1986
1987 #. type: Plain text
1988 #: build/C/man2/outb.2:61
1989 #, no-wrap
1990 msgid ""
1991 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1992 "B<           unsigned long int >I<count>B<);>\n"
1993 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1994 "B<           unsigned long int >I<count>B<);>\n"
1995 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1996 "B<           unsigned long int >I<count>B<);>\n"
1997 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1998 "B<           unsigned long int >I<count>B<);>\n"
1999 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2000 "B<           unsigned long int >I<count>B<);>\n"
2001 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2002 "B<           unsigned long int >I<count>B<);>\n"
2003 msgstr ""
2004 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2005 "B<           unsigned long int >I<count>B<);>\n"
2006 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2007 "B<           unsigned long int >I<count>B<);>\n"
2008 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2009 "B<           unsigned long int >I<count>B<);>\n"
2010 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2011 "B<           unsigned long int >I<count>B<);>\n"
2012 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2013 "B<           unsigned long int >I<count>B<);>\n"
2014 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2015 "B<           unsigned long int >I<count>B<);>\n"
2016
2017 #. type: Plain text
2018 #: build/C/man2/outb.2:67
2019 msgid ""
2020 "This family of functions is used to do low-level port input and output.  The "
2021 "out* functions do port output, the in* functions do port input; the b-suffix "
2022 "functions are byte-width and the w-suffix functions word-width; the _p-"
2023 "suffix functions pause until the I/O completes."
2024 msgstr ""
2025 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2026 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2027 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2028 "待つ。"
2029
2030 #.  , given the following information
2031 #.  in addition to that given in
2032 #.  .BR outb (9).
2033 #. type: Plain text
2034 #: build/C/man2/outb.2:73
2035 msgid ""
2036 "They are primarily designed for internal kernel use, but can be used from "
2037 "user space."
2038 msgstr ""
2039 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2040 "ザー空間からでも使用できる。"
2041
2042 #. type: Plain text
2043 #: build/C/man2/outb.2:78
2044 msgid ""
2045 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2046 "as inline macros, and will not be substituted in without optimization "
2047 "enabled, causing unresolved references at link time."
2048 msgstr ""
2049 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2050 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2051 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2052
2053 #. type: Plain text
2054 #: build/C/man2/outb.2:87
2055 msgid ""
2056 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2057 "allow the user space application to access the I/O ports in question.  "
2058 "Failure to do this will cause the application to receive a segmentation "
2059 "fault."
2060 msgstr ""
2061 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2062 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2063 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2064 "になる。"
2065
2066 #. type: Plain text
2067 #: build/C/man2/outb.2:96
2068 msgid ""
2069 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2070 "passed first and the I<port> argument is passed second, which is the "
2071 "opposite order from most DOS implementations."
2072 msgstr ""
2073 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2074 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2075 "である。"
2076
2077 #. type: Plain text
2078 #: build/C/man2/outb.2:99
2079 msgid "B<ioperm>(2), B<iopl>(2)"
2080 msgstr "B<ioperm>(2), B<iopl>(2)"
2081
2082 #. type: TH
2083 #: build/C/man2/pciconfig_read.2:8
2084 #, no-wrap
2085 msgid "PCICONFIG_READ"
2086 msgstr "PCICONFIG_READ"
2087
2088 #. type: TH
2089 #: build/C/man2/pciconfig_read.2:8
2090 #, no-wrap
2091 msgid "2003-07-14"
2092 msgstr "2003-07-14"
2093
2094 #. type: Plain text
2095 #: build/C/man2/pciconfig_read.2:11
2096 msgid ""
2097 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2098 "handling"
2099 msgstr ""
2100 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2101
2102 #. type: Plain text
2103 #: build/C/man2/pciconfig_read.2:14
2104 #, no-wrap
2105 msgid "B<#include E<lt>pci.hE<gt>>\n"
2106 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2107
2108 #. type: Plain text
2109 #: build/C/man2/pciconfig_read.2:21
2110 #, no-wrap
2111 msgid ""
2112 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2113 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2114 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2115 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2116 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2117 "B<          unsigned long >I<devfn>B<);>\n"
2118 msgstr ""
2119 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2120 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2121 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2122 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2123 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2124 "B<          unsigned long >I<devfn>B<);>\n"
2125
2126 #. type: Plain text
2127 #: build/C/man2/pciconfig_read.2:27
2128 msgid ""
2129 "Most of the interaction with PCI devices is already handled by the kernel "
2130 "PCI layer, and thus these calls should not normally need to be accessed from "
2131 "user space."
2132 msgstr ""
2133 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2134 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2135
2136 #. type: TP
2137 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2138 #, no-wrap
2139 msgid "B<pciconfig_read>()"
2140 msgstr "B<pciconfig_read>()"
2141
2142 #. type: Plain text
2143 #: build/C/man2/pciconfig_read.2:36
2144 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2145 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2146
2147 #. type: TP
2148 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2149 #, no-wrap
2150 msgid "B<pciconfig_write>()"
2151 msgstr "B<pciconfig_write>()"
2152
2153 #. type: Plain text
2154 #: build/C/man2/pciconfig_read.2:45
2155 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2156 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2157
2158 #. type: TP
2159 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2160 #, no-wrap
2161 msgid "B<pciconfig_iobase>()"
2162 msgstr "B<pciconfig_iobase>()"
2163
2164 #. type: Plain text
2165 #: build/C/man2/pciconfig_read.2:50
2166 msgid ""
2167 "You pass it a bus/devfn pair and get a physical address for either the "
2168 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2169 "PIO cycles, or the ISA holes if any."
2170 msgstr ""
2171 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2172 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2173 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2174
2175 #. type: Plain text
2176 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2177 msgid ""
2178 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2179 "appropriately."
2180 msgstr ""
2181 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2182 "定される。"
2183
2184 #. type: Plain text
2185 #: build/C/man2/pciconfig_read.2:77
2186 msgid ""
2187 "Returns information on locations of various I/O regions in physical memory "
2188 "according to the I<which> value.  Values for I<which> are: "
2189 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2190 "B<IOBASE_ISA_MEM>."
2191 msgstr ""
2192 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2193 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2194 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2195
2196 #. type: Plain text
2197 #: build/C/man2/pciconfig_read.2:84
2198 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2199 msgstr ""
2200 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2201 "い。"
2202
2203 #. type: TP
2204 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1819
2205 #: build/C/man2/sendfile.2:134
2206 #, no-wrap
2207 msgid "B<EIO>"
2208 msgstr "B<EIO>"
2209
2210 #. type: Plain text
2211 #: build/C/man2/pciconfig_read.2:87
2212 msgid "I/O error."
2213 msgstr "I/O エラー。"
2214
2215 #. type: TP
2216 #: build/C/man2/pciconfig_read.2:87
2217 #, no-wrap
2218 msgid "B<ENODEV>"
2219 msgstr "B<ENODEV>"
2220
2221 #. type: Plain text
2222 #: build/C/man2/pciconfig_read.2:93
2223 msgid ""
2224 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2225 "could not find a slot."
2226 msgstr ""
2227 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2228 "出しの場合、スロット (slot) が見つからない。"
2229
2230 #. type: Plain text
2231 #: build/C/man2/pciconfig_read.2:98
2232 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2233 msgstr ""
2234 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2235 "いない)。"
2236
2237 #. type: TP
2238 #: build/C/man2/pciconfig_read.2:98
2239 #, no-wrap
2240 msgid "B<EOPNOTSUPP>"
2241 msgstr "B<EOPNOTSUPP>"
2242
2243 #. type: Plain text
2244 #: build/C/man2/pciconfig_read.2:105
2245 msgid ""
2246 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2247 "if the value for I<which> is invalid."
2248 msgstr ""
2249 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2250 "の値が無効であるときに返される。"
2251
2252 #. type: Plain text
2253 #: build/C/man2/pciconfig_read.2:112
2254 msgid ""
2255 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2256 "B<pciconfig_iobase>()."
2257 msgstr ""
2258 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2259 "B<pciconfig_iobase>()  には適用されない。"
2260
2261 #. type: Plain text
2262 #: build/C/man2/pciconfig_read.2:114
2263 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2264 msgstr ""
2265 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2266 "である。"
2267
2268 #. type: Plain text
2269 #: build/C/man2/pciconfig_read.2:116
2270 msgid "B<capabilities>(7)"
2271 msgstr "B<capabilities>(7)"
2272
2273 #. type: TH
2274 #: build/C/man2/perf_event_open.2:27
2275 #, no-wrap
2276 msgid "PERF_EVENT_OPEN"
2277 msgstr "PERF_EVENT_OPEN"
2278
2279 #. type: TH
2280 #: build/C/man2/perf_event_open.2:27
2281 #, fuzzy, no-wrap
2282 #| msgid "2013-02-16"
2283 msgid "2013-07-16"
2284 msgstr "2013-02-16"
2285
2286 #. type: Plain text
2287 #: build/C/man2/perf_event_open.2:30
2288 msgid "perf_event_open - set up performance monitoring"
2289 msgstr ""
2290
2291 #. type: Plain text
2292 #: build/C/man2/perf_event_open.2:34
2293 #, no-wrap
2294 msgid ""
2295 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2296 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2297 msgstr ""
2298 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2299 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2300
2301 #. type: Plain text
2302 #: build/C/man2/perf_event_open.2:38
2303 #, no-wrap
2304 msgid ""
2305 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2306 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2307 "B<                    unsigned long >I<flags>B<);>\n"
2308 msgstr ""
2309 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2310 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2311 "B<                    unsigned long >I<flags>B<);>\n"
2312
2313 #. type: Plain text
2314 #: build/C/man2/perf_event_open.2:47
2315 msgid ""
2316 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2317 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2318 "B<fcntl>(2), etc.)."
2319 msgstr ""
2320
2321 #. type: Plain text
2322 #: build/C/man2/perf_event_open.2:55
2323 msgid ""
2324 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2325 "measuring performance information.  Each file descriptor corresponds to one "
2326 "event that is measured; these can be grouped together to measure multiple "
2327 "events simultaneously."
2328 msgstr ""
2329
2330 #. type: Plain text
2331 #: build/C/man2/perf_event_open.2:62
2332 msgid ""
2333 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2334 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2335 "overflows but does continue to exist and maintain its count value."
2336 msgstr ""
2337
2338 #. type: Plain text
2339 #: build/C/man2/perf_event_open.2:76
2340 msgid ""
2341 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2342 "one that is used for counting the aggregate number of events that occur.  In "
2343 "general, counting event results are gathered with a B<read>(2)  call.  A "
2344 "I<sampling> event periodically writes measurements to a buffer that can then "
2345 "be accessed via B<mmap>(2)B<.>"
2346 msgstr ""
2347
2348 #. type: SS
2349 #: build/C/man2/perf_event_open.2:76
2350 #, no-wrap
2351 msgid "Arguments"
2352 msgstr ""
2353
2354 #. type: Plain text
2355 #: build/C/man2/perf_event_open.2:90
2356 msgid ""
2357 "The argument I<pid> allows events to be attached to processes in various "
2358 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2359 "is greater than 0, the process indicated by I<pid> is measured, and if "
2360 "I<pid> is -1, all processes are counted."
2361 msgstr ""
2362
2363 #. type: Plain text
2364 #: build/C/man2/perf_event_open.2:101
2365 msgid ""
2366 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2367 "is greater than or equal to 0, measurements are restricted to the specified "
2368 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2369 msgstr ""
2370
2371 #. type: Plain text
2372 #: build/C/man2/perf_event_open.2:107
2373 msgid ""
2374 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2375 msgstr ""
2376
2377 #. type: Plain text
2378 #: build/C/man2/perf_event_open.2:115
2379 msgid ""
2380 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2381 "that process to whatever CPU the process gets scheduled to.  Per-process "
2382 "events can be created by any user."
2383 msgstr ""
2384
2385 #. type: Plain text
2386 #: build/C/man2/perf_event_open.2:126
2387 msgid ""
2388 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2389 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2390 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2391 msgstr ""
2392
2393 #. type: Plain text
2394 #: build/C/man2/perf_event_open.2:148
2395 msgid ""
2396 "The I<group_fd> argument allows event groups to be created.  An event group "
2397 "has one event which is the group leader.  The leader is created first, with "
2398 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2399 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2400 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2401 "and is considered to be a group with only 1 member.)  An event group is "
2402 "scheduled onto the CPU as a unit: it will be put onto the CPU only if all of "
2403 "the events in the group can be put onto the CPU.  This means that the values "
2404 "of the member events can be meaningfully compared, added, divided (to get "
2405 "ratios), etc., with each other, since they have counted events for the same "
2406 "set of executed instructions."
2407 msgstr ""
2408
2409 #. type: Plain text
2410 #: build/C/man2/perf_event_open.2:152
2411 #, fuzzy
2412 #| msgid ""
2413 #| "The I<flags> argument is a bit mask that is composed by ORing together "
2414 #| "zero or more of the following values:"
2415 msgid ""
2416 "The I<flags> argument is formed by ORing together zero or more of the "
2417 "following values:"
2418 msgstr ""
2419 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2420
2421 #. type: TP
2422 #: build/C/man2/perf_event_open.2:152
2423 #, no-wrap
2424 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2425 msgstr ""
2426
2427 #.  FIXME The following sentence is unclear
2428 #.  FIXME So, why is it useful?
2429 #. type: Plain text
2430 #: build/C/man2/perf_event_open.2:159
2431 msgid ""
2432 "This flag allows creating an event as part of an event group but having no "
2433 "group leader.  It is unclear why this is useful."
2434 msgstr ""
2435
2436 #. type: TP
2437 #: build/C/man2/perf_event_open.2:159
2438 #, no-wrap
2439 msgid "B<PERF_FLAG_FD_OUTPUT>"
2440 msgstr ""
2441
2442 #. type: Plain text
2443 #: build/C/man2/perf_event_open.2:162
2444 msgid "This flag re-routes the output from an event to the group leader."
2445 msgstr ""
2446
2447 #. type: TP
2448 #: build/C/man2/perf_event_open.2:162
2449 #, fuzzy, no-wrap
2450 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2451 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2452 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2453
2454 #. type: Plain text
2455 #: build/C/man2/perf_event_open.2:185
2456 msgid ""
2457 "This flag activates per-container system-wide monitoring.  A container is an "
2458 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2459 "memory, etc...).  In this mode, the event is measured only if the thread "
2460 "running on the monitored CPU belongs to the designated container (cgroup).  "
2461 "The cgroup is identified by passing a file descriptor opened on its "
2462 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2463 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2464 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2465 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2466 "events and may therefore require extra permissions."
2467 msgstr ""
2468
2469 #. type: Plain text
2470 #: build/C/man2/perf_event_open.2:190
2471 msgid ""
2472 "The I<perf_event_attr> structure provides detailed configuration information "
2473 "for the event being created."
2474 msgstr ""
2475
2476 #. type: Plain text
2477 #: build/C/man2/perf_event_open.2:197
2478 #, no-wrap
2479 msgid ""
2480 "struct perf_event_attr {\n"
2481 "    __u32     type;         /* Type of event */\n"
2482 "    __u32     size;         /* Size of attribute structure */\n"
2483 "    __u64     config;       /* Type-specific configuration */\n"
2484 msgstr ""
2485
2486 #. type: Plain text
2487 #: build/C/man2/perf_event_open.2:202
2488 #, no-wrap
2489 msgid ""
2490 "    union {\n"
2491 "        __u64 sample_period;    /* Period of sampling */\n"
2492 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2493 "    };\n"
2494 msgstr ""
2495
2496 #. type: Plain text
2497 #: build/C/man2/perf_event_open.2:205
2498 #, no-wrap
2499 msgid ""
2500 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2501 "    __u64     read_format;  /* Specifies values returned in read */\n"
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man2/perf_event_open.2:231
2506 #, no-wrap
2507 msgid ""
2508 "    __u64     disabled       : 1,   /* off by default */\n"
2509 "              inherit        : 1,   /* children inherit it */\n"
2510 "              pinned         : 1,   /* must always be on PMU */\n"
2511 "              exclusive      : 1,   /* only group on PMU */\n"
2512 "              exclude_user   : 1,   /* don't count user */\n"
2513 "              exclude_kernel : 1,   /* don't count kernel */\n"
2514 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2515 "              exclude_idle   : 1,   /* don't count when idle */\n"
2516 "              mmap           : 1,   /* include mmap data */\n"
2517 "              comm           : 1,   /* include comm data */\n"
2518 "              freq           : 1,   /* use freq, not period */\n"
2519 "              inherit_stat   : 1,   /* per task counts */\n"
2520 "              enable_on_exec : 1,   /* next exec enables */\n"
2521 "              task           : 1,   /* trace fork/exit */\n"
2522 "              watermark      : 1,   /* wakeup_watermark */\n"
2523 "              precise_ip     : 2,   /* skid constraint */\n"
2524 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2525 "              sample_id_all  : 1,   /* sample_type all events */\n"
2526 "              exclude_host   : 1,   /* don't count in host */\n"
2527 "              exclude_guest  : 1,   /* don't count in guest */\n"
2528 "              exclude_callchain_kernel : 1,\n"
2529 "                                    /* exclude kernel callchains */\n"
2530 "              exclude_callchain_user   : 1,\n"
2531 "\t                            /* exclude user callchains */\n"
2532 "              __reserved_1   : 41;\n"
2533 msgstr ""
2534
2535 #. type: Plain text
2536 #: build/C/man2/perf_event_open.2:236
2537 #, no-wrap
2538 msgid ""
2539 "    union {\n"
2540 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2541 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2542 "    };\n"
2543 msgstr ""
2544
2545 #. type: Plain text
2546 #: build/C/man2/perf_event_open.2:238
2547 #, no-wrap
2548 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2549 msgstr ""
2550
2551 #. type: Plain text
2552 #: build/C/man2/perf_event_open.2:243
2553 #, no-wrap
2554 msgid ""
2555 "    union {\n"
2556 "        __u64 bp_addr;          /* breakpoint address */\n"
2557 "        __u64 config1;          /* extension of config */\n"
2558 "    };\n"
2559 msgstr ""
2560
2561 #. type: Plain text
2562 #: build/C/man2/perf_event_open.2:253
2563 #, no-wrap
2564 msgid ""
2565 "    union {\n"
2566 "        __u64 bp_len;           /* breakpoint length */\n"
2567 "        __u64 config2;          /* extension of config1 */\n"
2568 "    };\n"
2569 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2570 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2571 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2572 "                                   samples */\n"
2573 "    __u32   __reserved_2;       /* Align to u64 */\n"
2574 msgstr ""
2575
2576 #. type: Plain text
2577 #: build/C/man2/perf_event_open.2:255
2578 #, no-wrap
2579 msgid "};\n"
2580 msgstr ""
2581
2582 #. type: Plain text
2583 #: build/C/man2/perf_event_open.2:261
2584 msgid ""
2585 "The fields of the I<perf_event_attr> structure are described in more detail "
2586 "below:"
2587 msgstr ""
2588
2589 #. type: TP
2590 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1311
2591 #, no-wrap
2592 msgid "I<type>"
2593 msgstr ""
2594
2595 #. type: Plain text
2596 #: build/C/man2/perf_event_open.2:265
2597 msgid ""
2598 "This field specifies the overall event type.  It has one of the following "
2599 "values:"
2600 msgstr ""
2601
2602 #. type: TP
2603 #: build/C/man2/perf_event_open.2:266
2604 #, no-wrap
2605 msgid "B<PERF_TYPE_HARDWARE>"
2606 msgstr ""
2607
2608 #. type: Plain text
2609 #: build/C/man2/perf_event_open.2:273
2610 msgid ""
2611 "This indicates one of the \"generalized\" hardware events provided by the "
2612 "kernel.  See the I<config> field definition for more details."
2613 msgstr ""
2614
2615 #. type: TP
2616 #: build/C/man2/perf_event_open.2:273
2617 #, no-wrap
2618 msgid "B<PERF_TYPE_SOFTWARE>"
2619 msgstr ""
2620
2621 #. type: Plain text
2622 #: build/C/man2/perf_event_open.2:277
2623 msgid ""
2624 "This indicates one of the software-defined events provided by the kernel "
2625 "(even if no hardware support is available)."
2626 msgstr ""
2627
2628 #. type: TP
2629 #: build/C/man2/perf_event_open.2:277
2630 #, no-wrap
2631 msgid "B<PERF_TYPE_TRACEPOINT>"
2632 msgstr "B<PERF_TYPE_TRACEPOINT>"
2633
2634 #. type: Plain text
2635 #: build/C/man2/perf_event_open.2:281
2636 msgid ""
2637 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2638 msgstr ""
2639
2640 #. type: TP
2641 #: build/C/man2/perf_event_open.2:281
2642 #, no-wrap
2643 msgid "B<PERF_TYPE_HW_CACHE>"
2644 msgstr ""
2645
2646 #. type: Plain text
2647 #: build/C/man2/perf_event_open.2:287
2648 msgid ""
2649 "This indicates a hardware cache event.  This has a special encoding, "
2650 "described in the I<config> field definition."
2651 msgstr ""
2652
2653 #. type: TP
2654 #: build/C/man2/perf_event_open.2:287
2655 #, no-wrap
2656 msgid "B<PERF_TYPE_RAW>"
2657 msgstr ""
2658
2659 #. type: Plain text
2660 #: build/C/man2/perf_event_open.2:291
2661 msgid ""
2662 "This indicates a \"raw\" implementation-specific event in the I<config> "
2663 "field."
2664 msgstr ""
2665
2666 #. type: TP
2667 #: build/C/man2/perf_event_open.2:291
2668 #, fuzzy, no-wrap
2669 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2670 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2671 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2672
2673 #. type: Plain text
2674 #: build/C/man2/perf_event_open.2:296
2675 msgid ""
2676 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2677 "can be read/write accesses to an address as well as execution of an "
2678 "instruction address."
2679 msgstr ""
2680
2681 #. type: TP
2682 #: build/C/man2/perf_event_open.2:296
2683 #, no-wrap
2684 msgid "dynamic PMU"
2685 msgstr ""
2686
2687 #. type: Plain text
2688 #: build/C/man2/perf_event_open.2:315
2689 msgid ""
2690 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2691 "enable this, a value exported by the kernel can be used in the I<type> field "
2692 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2693 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2694 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2695 "content is an integer that can be used in the I<type> field.  For instance, "
2696 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2697 "CPU PMU, which is usually 4."
2698 msgstr ""
2699
2700 #. type: TP
2701 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1770
2702 #, no-wrap
2703 msgid "I<size>"
2704 msgstr ""
2705
2706 #. type: Plain text
2707 #: build/C/man2/perf_event_open.2:325
2708 msgid ""
2709 "The size of the I<perf_event_attr> structure for forward/backward "
2710 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2711 "the kernel to see the struct size at the time of compilation."
2712 msgstr ""
2713
2714 #. type: Plain text
2715 #: build/C/man2/perf_event_open.2:340
2716 msgid ""
2717 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2718 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2719 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2720 "corresponding to the addition of branch sampling in Linux 3.4.  "
2721 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2722 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2723 msgstr ""
2724
2725 #. type: TP
2726 #: build/C/man2/perf_event_open.2:340
2727 #, no-wrap
2728 msgid "I<config>"
2729 msgstr ""
2730
2731 #. type: Plain text
2732 #: build/C/man2/perf_event_open.2:351
2733 msgid ""
2734 "This specifies which event you want, in conjunction with the I<type> field.  "
2735 "The I<config1> and I<config2> fields are also taken into account in cases "
2736 "where 64 bits is not enough to fully specify the event.  The encoding of "
2737 "these fields are event dependent."
2738 msgstr ""
2739
2740 #. type: Plain text
2741 #: build/C/man2/perf_event_open.2:357
2742 msgid ""
2743 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2744 "counter configuration data; if the most significant bit is unset, the next 7 "
2745 "bits are an event type and the rest of the bits are the event identifier."
2746 msgstr ""
2747
2748 #. type: Plain text
2749 #: build/C/man2/perf_event_open.2:368
2750 msgid ""
2751 "There are various ways to set the I<config> field that are dependent on the "
2752 "value of the previously described I<type> field.  What follows are various "
2753 "possible settings for I<config> separated out by I<type>."
2754 msgstr ""
2755
2756 #. type: Plain text
2757 #: build/C/man2/perf_event_open.2:378
2758 msgid ""
2759 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2760 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2761 "I<config> to one of the following:"
2762 msgstr ""
2763
2764 #. type: TP
2765 #: build/C/man2/perf_event_open.2:379
2766 #, no-wrap
2767 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2768 msgstr ""
2769
2770 #. type: Plain text
2771 #: build/C/man2/perf_event_open.2:383
2772 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2773 msgstr ""
2774
2775 #. type: TP
2776 #: build/C/man2/perf_event_open.2:383
2777 #, no-wrap
2778 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2779 msgstr ""
2780
2781 #. type: Plain text
2782 #: build/C/man2/perf_event_open.2:388
2783 msgid ""
2784 "Retired instructions.  Be careful, these can be affected by various issues, "
2785 "most notably hardware interrupt counts"
2786 msgstr ""
2787
2788 #. type: TP
2789 #: build/C/man2/perf_event_open.2:388
2790 #, no-wrap
2791 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2792 msgstr ""
2793
2794 #. type: Plain text
2795 #: build/C/man2/perf_event_open.2:395
2796 msgid ""
2797 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2798 "may vary depending on your CPU.  This may include prefetches and coherency "
2799 "messages; again this depends on the design of your CPU."
2800 msgstr ""
2801
2802 #. type: TP
2803 #: build/C/man2/perf_event_open.2:395
2804 #, no-wrap
2805 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2806 msgstr ""
2807
2808 #. type: Plain text
2809 #: build/C/man2/perf_event_open.2:402
2810 msgid ""
2811 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2812 "intended to be used in conjunction with the "
2813 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2814 msgstr ""
2815
2816 #. type: TP
2817 #: build/C/man2/perf_event_open.2:402
2818 #, no-wrap
2819 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2820 msgstr ""
2821
2822 #. type: Plain text
2823 #: build/C/man2/perf_event_open.2:407
2824 msgid ""
2825 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2826 "event on AMD processors."
2827 msgstr ""
2828
2829 #. type: TP
2830 #: build/C/man2/perf_event_open.2:407
2831 #, no-wrap
2832 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2833 msgstr ""
2834
2835 #. type: Plain text
2836 #: build/C/man2/perf_event_open.2:410
2837 msgid "Mispredicted branch instructions."
2838 msgstr ""
2839
2840 #. type: TP
2841 #: build/C/man2/perf_event_open.2:410
2842 #, no-wrap
2843 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2844 msgstr ""
2845
2846 #. type: Plain text
2847 #: build/C/man2/perf_event_open.2:413
2848 msgid "Bus cycles, which can be different from total cycles."
2849 msgstr ""
2850
2851 #. type: TP
2852 #: build/C/man2/perf_event_open.2:413
2853 #, fuzzy, no-wrap
2854 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2855 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2856 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2857
2858 #. type: Plain text
2859 #: build/C/man2/perf_event_open.2:416
2860 msgid "Stalled cycles during issue."
2861 msgstr ""
2862
2863 #. type: TP
2864 #: build/C/man2/perf_event_open.2:416
2865 #, no-wrap
2866 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2867 msgstr ""
2868
2869 #. type: Plain text
2870 #: build/C/man2/perf_event_open.2:419
2871 msgid "Stalled cycles during retirement."
2872 msgstr ""
2873
2874 #. type: TP
2875 #: build/C/man2/perf_event_open.2:419
2876 #, fuzzy, no-wrap
2877 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2878 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2879 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2880
2881 #. type: Plain text
2882 #: build/C/man2/perf_event_open.2:422
2883 msgid "Total cycles; not affected by CPU frequency scaling."
2884 msgstr ""
2885
2886 #. type: Plain text
2887 #: build/C/man2/perf_event_open.2:432
2888 msgid ""
2889 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2890 "provided by the kernel.  Set I<config> to one of the following:"
2891 msgstr ""
2892
2893 #. type: TP
2894 #: build/C/man2/perf_event_open.2:433
2895 #, no-wrap
2896 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2897 msgstr ""
2898
2899 #. type: Plain text
2900 #: build/C/man2/perf_event_open.2:436
2901 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2902 msgstr ""
2903
2904 #. type: TP
2905 #: build/C/man2/perf_event_open.2:436
2906 #, no-wrap
2907 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2908 msgstr ""
2909
2910 #. type: Plain text
2911 #: build/C/man2/perf_event_open.2:439
2912 msgid "This reports a clock count specific to the task that is running."
2913 msgstr ""
2914
2915 #. type: TP
2916 #: build/C/man2/perf_event_open.2:439
2917 #, no-wrap
2918 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2919 msgstr ""
2920
2921 #. type: Plain text
2922 #: build/C/man2/perf_event_open.2:442
2923 msgid "This reports the number of page faults."
2924 msgstr ""
2925
2926 #. type: TP
2927 #: build/C/man2/perf_event_open.2:442
2928 #, no-wrap
2929 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2930 msgstr ""
2931
2932 #. type: Plain text
2933 #: build/C/man2/perf_event_open.2:447
2934 msgid ""
2935 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2936 "as user-space events, after that they are reported as happening in the "
2937 "kernel."
2938 msgstr ""
2939
2940 #. type: TP
2941 #: build/C/man2/perf_event_open.2:447
2942 #, no-wrap
2943 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2944 msgstr ""
2945
2946 #. type: Plain text
2947 #: build/C/man2/perf_event_open.2:451
2948 msgid "This reports the number of times the process has migrated to a new CPU."
2949 msgstr ""
2950
2951 #. type: TP
2952 #: build/C/man2/perf_event_open.2:451
2953 #, no-wrap
2954 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2955 msgstr ""
2956
2957 #. type: Plain text
2958 #: build/C/man2/perf_event_open.2:455
2959 msgid ""
2960 "This counts the number of minor page faults.  These did not require disk I/O "
2961 "to handle."
2962 msgstr ""
2963
2964 #. type: TP
2965 #: build/C/man2/perf_event_open.2:455
2966 #, no-wrap
2967 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2968 msgstr ""
2969
2970 #. type: Plain text
2971 #: build/C/man2/perf_event_open.2:459
2972 msgid ""
2973 "This counts the number of major page faults.  These required disk I/O to "
2974 "handle."
2975 msgstr ""
2976
2977 #. type: TP
2978 #: build/C/man2/perf_event_open.2:459
2979 #, fuzzy, no-wrap
2980 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2981 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2982 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2983
2984 #. type: Plain text
2985 #: build/C/man2/perf_event_open.2:465
2986 msgid ""
2987 "This counts the number of alignment faults.  These happen when unaligned "
2988 "memory accesses happen; the kernel can handle these but it reduces "
2989 "performance.  This happens only on some architectures (never on x86)."
2990 msgstr ""
2991
2992 #. type: TP
2993 #: build/C/man2/perf_event_open.2:465
2994 #, fuzzy, no-wrap
2995 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2996 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
2997 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2998
2999 #. type: Plain text
3000 #: build/C/man2/perf_event_open.2:471
3001 msgid ""
3002 "This counts the number of emulation faults.  The kernel sometimes traps on "
3003 "unimplemented instructions and emulates them for user space.  This can "
3004 "negatively impact performance."
3005 msgstr ""
3006
3007 #. type: Plain text
3008 #: build/C/man2/perf_event_open.2:484
3009 msgid ""
3010 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3011 "tracepoints.  The value to use in I<config> can be obtained from under "
3012 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3013 msgstr ""
3014
3015 #. type: Plain text
3016 #: build/C/man2/perf_event_open.2:495
3017 msgid ""
3018 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3019 "cache event.  To calculate the appropriate I<config> value use the following "
3020 "equation:"
3021 msgstr ""
3022
3023 #. type: Plain text
3024 #: build/C/man2/perf_event_open.2:500
3025 #, no-wrap
3026 msgid ""
3027 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3028 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3029 msgstr ""
3030
3031 #. type: Plain text
3032 #: build/C/man2/perf_event_open.2:505
3033 msgid "where I<perf_hw_cache_id> is one of:"
3034 msgstr ""
3035
3036 #. type: TP
3037 #: build/C/man2/perf_event_open.2:506
3038 #, no-wrap
3039 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3040 msgstr ""
3041
3042 #. type: Plain text
3043 #: build/C/man2/perf_event_open.2:509
3044 msgid "for measuring Level 1 Data Cache"
3045 msgstr ""
3046
3047 #. type: TP
3048 #: build/C/man2/perf_event_open.2:509
3049 #, no-wrap
3050 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3051 msgstr ""
3052
3053 #. type: Plain text
3054 #: build/C/man2/perf_event_open.2:512
3055 msgid "for measuring Level 1 Instruction Cache"
3056 msgstr ""
3057
3058 #. type: TP
3059 #: build/C/man2/perf_event_open.2:512
3060 #, no-wrap
3061 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3062 msgstr ""
3063
3064 #. type: Plain text
3065 #: build/C/man2/perf_event_open.2:515
3066 msgid "for measuring Last-Level Cache"
3067 msgstr ""
3068
3069 #. type: TP
3070 #: build/C/man2/perf_event_open.2:515
3071 #, no-wrap
3072 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3073 msgstr ""
3074
3075 #. type: Plain text
3076 #: build/C/man2/perf_event_open.2:518
3077 msgid "for measuring the Data TLB"
3078 msgstr ""
3079
3080 #. type: TP
3081 #: build/C/man2/perf_event_open.2:518
3082 #, no-wrap
3083 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3084 msgstr ""
3085
3086 #. type: Plain text
3087 #: build/C/man2/perf_event_open.2:521
3088 msgid "for measuring the Instruction TLB"
3089 msgstr ""
3090
3091 #. type: TP
3092 #: build/C/man2/perf_event_open.2:521
3093 #, no-wrap
3094 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3095 msgstr ""
3096
3097 #. type: Plain text
3098 #: build/C/man2/perf_event_open.2:524
3099 msgid "for measuring the branch prediction unit"
3100 msgstr ""
3101
3102 #. type: TP
3103 #: build/C/man2/perf_event_open.2:524
3104 #, fuzzy, no-wrap
3105 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3106 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3107 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3108
3109 #. type: Plain text
3110 #: build/C/man2/perf_event_open.2:527
3111 msgid "for measuring local memory accesses"
3112 msgstr ""
3113
3114 #. type: Plain text
3115 #: build/C/man2/perf_event_open.2:532
3116 msgid "and I<perf_hw_cache_op_id> is one of"
3117 msgstr ""
3118
3119 #. type: TP
3120 #: build/C/man2/perf_event_open.2:533
3121 #, no-wrap
3122 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3123 msgstr ""
3124
3125 #. type: Plain text
3126 #: build/C/man2/perf_event_open.2:536
3127 msgid "for read accesses"
3128 msgstr ""
3129
3130 #. type: TP
3131 #: build/C/man2/perf_event_open.2:536
3132 #, no-wrap
3133 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3134 msgstr ""
3135
3136 #. type: Plain text
3137 #: build/C/man2/perf_event_open.2:539
3138 msgid "for write accesses"
3139 msgstr ""
3140
3141 #. type: TP
3142 #: build/C/man2/perf_event_open.2:539
3143 #, no-wrap
3144 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3145 msgstr ""
3146
3147 #. type: Plain text
3148 #: build/C/man2/perf_event_open.2:542
3149 msgid "for prefetch accesses"
3150 msgstr ""
3151
3152 #. type: Plain text
3153 #: build/C/man2/perf_event_open.2:547
3154 msgid "and I<perf_hw_cache_op_result_id> is one of"
3155 msgstr ""
3156
3157 #. type: TP
3158 #: build/C/man2/perf_event_open.2:548
3159 #, no-wrap
3160 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3161 msgstr ""
3162
3163 #. type: Plain text
3164 #: build/C/man2/perf_event_open.2:551
3165 msgid "to measure accesses"
3166 msgstr ""
3167
3168 #. type: TP
3169 #: build/C/man2/perf_event_open.2:551
3170 #, no-wrap
3171 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3172 msgstr ""
3173
3174 #. type: Plain text
3175 #: build/C/man2/perf_event_open.2:554
3176 msgid "to measure misses"
3177 msgstr ""
3178
3179 #. type: Plain text
3180 #: build/C/man2/perf_event_open.2:572
3181 msgid ""
3182 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3183 "needed.  Most CPUs support events that are not covered by the \"generalized"
3184 "\" events.  These are implementation defined; see your CPU manual (for "
3185 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3186 "Developer Guide).  The libpfm4 library can be used to translate from the "
3187 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3188 "expects in this field."
3189 msgstr ""
3190
3191 #. type: Plain text
3192 #: build/C/man2/perf_event_open.2:581
3193 msgid ""
3194 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3195 "Its parameters are set in other places."
3196 msgstr ""
3197
3198 #. type: TP
3199 #: build/C/man2/perf_event_open.2:582
3200 #, no-wrap
3201 msgid "I<sample_period>, I<sample_freq>"
3202 msgstr ""
3203
3204 #. type: Plain text
3205 #: build/C/man2/perf_event_open.2:594
3206 msgid ""
3207 "A \"sampling\" counter is one that generates an interrupt every N events, "
3208 "where N is given by I<sample_period>.  A sampling counter has "
3209 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3210 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3211 "is recorded on each interrupt."
3212 msgstr ""
3213
3214 #. type: Plain text
3215 #: build/C/man2/perf_event_open.2:604
3216 msgid ""
3217 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3218 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3219 "period to try and achieve the desired rate.  The rate of adjustment is a "
3220 "timer tick."
3221 msgstr ""
3222
3223 #. type: TP
3224 #: build/C/man2/perf_event_open.2:604
3225 #, no-wrap
3226 msgid "I<sample_type>"
3227 msgstr ""
3228
3229 #. type: Plain text
3230 #: build/C/man2/perf_event_open.2:616
3231 msgid ""
3232 "The various bits in this field specify which values to include in the "
3233 "sample.  They will be recorded in a ring-buffer, which is available to user "
3234 "space using B<mmap>(2).  The order in which the values are saved in the "
3235 "sample are documented in the MMAP Layout subsection below; it is not the "
3236 "I<enum perf_event_sample_format> order."
3237 msgstr ""
3238
3239 #. type: TP
3240 #: build/C/man2/perf_event_open.2:617
3241 #, no-wrap
3242 msgid "B<PERF_SAMPLE_IP>"
3243 msgstr ""
3244
3245 #. type: Plain text
3246 #: build/C/man2/perf_event_open.2:620
3247 msgid "Records instruction pointer."
3248 msgstr ""
3249
3250 #. type: TP
3251 #: build/C/man2/perf_event_open.2:620
3252 #, no-wrap
3253 msgid "B<PERF_SAMPLE_TID>"
3254 msgstr ""
3255
3256 #. type: Plain text
3257 #: build/C/man2/perf_event_open.2:623
3258 msgid "Records the process and thread IDs."
3259 msgstr ""
3260
3261 #. type: TP
3262 #: build/C/man2/perf_event_open.2:623
3263 #, no-wrap
3264 msgid "B<PERF_SAMPLE_TIME>"
3265 msgstr ""
3266
3267 #. type: Plain text
3268 #: build/C/man2/perf_event_open.2:626
3269 msgid "Records a timestamp."
3270 msgstr ""
3271
3272 #. type: TP
3273 #: build/C/man2/perf_event_open.2:626
3274 #, no-wrap
3275 msgid "B<PERF_SAMPLE_ADDR>"
3276 msgstr ""
3277
3278 #. type: Plain text
3279 #: build/C/man2/perf_event_open.2:629
3280 msgid "Records an address, if applicable."
3281 msgstr ""
3282
3283 #. type: TP
3284 #: build/C/man2/perf_event_open.2:629
3285 #, no-wrap
3286 msgid "B<PERF_SAMPLE_READ>"
3287 msgstr ""
3288
3289 #. type: Plain text
3290 #: build/C/man2/perf_event_open.2:632
3291 msgid ""
3292 "Record counter values for all events in a group, not just the group leader."
3293 msgstr ""
3294
3295 #. type: TP
3296 #: build/C/man2/perf_event_open.2:632
3297 #, no-wrap
3298 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3299 msgstr ""
3300
3301 #. type: Plain text
3302 #: build/C/man2/perf_event_open.2:635
3303 msgid "Records the callchain (stack backtrace)."
3304 msgstr ""
3305
3306 #. type: TP
3307 #: build/C/man2/perf_event_open.2:635
3308 #, no-wrap
3309 msgid "B<PERF_SAMPLE_ID>"
3310 msgstr ""
3311
3312 #. type: Plain text
3313 #: build/C/man2/perf_event_open.2:638
3314 msgid "Records a unique ID for the opened event's group leader."
3315 msgstr ""
3316
3317 #. type: TP
3318 #: build/C/man2/perf_event_open.2:638
3319 #, no-wrap
3320 msgid "B<PERF_SAMPLE_CPU>"
3321 msgstr ""
3322
3323 #. type: Plain text
3324 #: build/C/man2/perf_event_open.2:641
3325 msgid "Records CPU number."
3326 msgstr ""
3327
3328 #. type: TP
3329 #: build/C/man2/perf_event_open.2:641
3330 #, no-wrap
3331 msgid "B<PERF_SAMPLE_PERIOD>"
3332 msgstr ""
3333
3334 #. type: Plain text
3335 #: build/C/man2/perf_event_open.2:644
3336 msgid "Records the current sampling period."
3337 msgstr ""
3338
3339 #. type: TP
3340 #: build/C/man2/perf_event_open.2:644
3341 #, no-wrap
3342 msgid "B<PERF_SAMPLE_STREAM_ID>"
3343 msgstr ""
3344
3345 #. type: Plain text
3346 #: build/C/man2/perf_event_open.2:651
3347 msgid ""
3348 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3349 "actual ID is returned, not the group leader.  This ID is the same as the one "
3350 "returned by PERF_FORMAT_ID."
3351 msgstr ""
3352
3353 #. type: TP
3354 #: build/C/man2/perf_event_open.2:651
3355 #, no-wrap
3356 msgid "B<PERF_SAMPLE_RAW>"
3357 msgstr ""
3358
3359 #. type: Plain text
3360 #: build/C/man2/perf_event_open.2:655
3361 msgid ""
3362 "Records additional data, if applicable.  Usually returned by tracepoint "
3363 "events."
3364 msgstr ""
3365
3366 #. type: TP
3367 #: build/C/man2/perf_event_open.2:655
3368 #, fuzzy, no-wrap
3369 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3370 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3371 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3372
3373 #. type: Plain text
3374 #: build/C/man2/perf_event_open.2:660
3375 msgid ""
3376 "This provides a record of recent branches, as provided by CPU branch "
3377 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3378 "supports this feature."
3379 msgstr ""
3380
3381 #. type: Plain text
3382 #: build/C/man2/perf_event_open.2:664
3383 msgid ""
3384 "See the I<branch_sample_type> field for how to filter which branches are "
3385 "reported."
3386 msgstr ""
3387
3388 #. type: TP
3389 #: build/C/man2/perf_event_open.2:664
3390 #, fuzzy, no-wrap
3391 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3392 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3393 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3394
3395 #. type: Plain text
3396 #: build/C/man2/perf_event_open.2:668
3397 msgid ""
3398 "Records the current user-level CPU register state (the values in the process "
3399 "before the kernel was called)."
3400 msgstr ""
3401
3402 #. type: TP
3403 #: build/C/man2/perf_event_open.2:668
3404 #, fuzzy, no-wrap
3405 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3406 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3407 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3408
3409 #. type: Plain text
3410 #: build/C/man2/perf_event_open.2:671
3411 msgid "Records the user level stack, allowing stack unwinding."
3412 msgstr ""
3413
3414 #. type: TP
3415 #: build/C/man2/perf_event_open.2:671
3416 #, fuzzy, no-wrap
3417 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3418 msgid "B<PERF_SAMPLE_WEIGHT> (Since Linux 3.10)"
3419 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3420
3421 #. type: Plain text
3422 #: build/C/man2/perf_event_open.2:677
3423 msgid ""
3424 "Records a hardware provided weight value that expresses how costly the "
3425 "sampled event was.  This allows the hardware to highlight expensive events "
3426 "in a profile."
3427 msgstr ""
3428
3429 #. type: TP
3430 #: build/C/man2/perf_event_open.2:677
3431 #, fuzzy, no-wrap
3432 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3433 msgid "B<PERF_SAMPLE_DATA_SRC> (Since Linux 3.10)"
3434 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3435
3436 #. type: Plain text
3437 #: build/C/man2/perf_event_open.2:683
3438 msgid ""
3439 "Records the data source: where in the memory hierarchy the data associated "
3440 "with the sampled instruction came from.  This is only available if the "
3441 "underlying hardware supports this feature."
3442 msgstr ""
3443
3444 #. type: TP
3445 #: build/C/man2/perf_event_open.2:684
3446 #, no-wrap
3447 msgid "I<read_format>"
3448 msgstr ""
3449
3450 #. type: Plain text
3451 #: build/C/man2/perf_event_open.2:691
3452 msgid ""
3453 "This field specifies the format of the data returned by B<read>(2)  on a "
3454 "B<perf_event_open>()  file descriptor."
3455 msgstr ""
3456
3457 #. type: TP
3458 #: build/C/man2/perf_event_open.2:692
3459 #, no-wrap
3460 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3461 msgstr ""
3462
3463 #. type: Plain text
3464 #: build/C/man2/perf_event_open.2:699
3465 msgid ""
3466 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3467 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3468 msgstr ""
3469
3470 #. type: TP
3471 #: build/C/man2/perf_event_open.2:699
3472 #, no-wrap
3473 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3474 msgstr ""
3475
3476 #. type: Plain text
3477 #: build/C/man2/perf_event_open.2:706
3478 msgid ""
3479 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3480 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3481 msgstr ""
3482
3483 #. type: TP
3484 #: build/C/man2/perf_event_open.2:706
3485 #, no-wrap
3486 msgid "B<PERF_FORMAT_ID>"
3487 msgstr ""
3488
3489 #. type: Plain text
3490 #: build/C/man2/perf_event_open.2:709
3491 msgid "Adds a 64-bit unique value that corresponds to the event group."
3492 msgstr ""
3493
3494 #. type: TP
3495 #: build/C/man2/perf_event_open.2:709
3496 #, no-wrap
3497 msgid "B<PERF_FORMAT_GROUP>"
3498 msgstr ""
3499
3500 #. type: Plain text
3501 #: build/C/man2/perf_event_open.2:712
3502 msgid "Allows all counter values in an event group to be read with one read."
3503 msgstr ""
3504
3505 #. type: TP
3506 #: build/C/man2/perf_event_open.2:713
3507 #, no-wrap
3508 msgid "I<disabled>"
3509 msgstr ""
3510
3511 #. type: Plain text
3512 #: build/C/man2/perf_event_open.2:723
3513 msgid ""
3514 "The I<disabled> bit specifies whether the counter starts out disabled or "
3515 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3516 "B<prctl>(2), or I<enable_on_exec>."
3517 msgstr ""
3518
3519 #. type: TP
3520 #: build/C/man2/perf_event_open.2:723
3521 #, no-wrap
3522 msgid "I<inherit>"
3523 msgstr ""
3524
3525 #. type: Plain text
3526 #: build/C/man2/perf_event_open.2:732
3527 msgid ""
3528 "The I<inherit> bit specifies that this counter should count events of child "
3529 "tasks as well as the task specified.  This applies only to new children, not "
3530 "to any existing children at the time the counter is created (nor to any new "
3531 "children of existing children)."
3532 msgstr ""
3533
3534 #. type: Plain text
3535 #: build/C/man2/perf_event_open.2:737
3536 msgid ""
3537 "Inherit does not work for some combinations of I<read_format>s, such as "
3538 "B<PERF_FORMAT_GROUP>."
3539 msgstr ""
3540
3541 #. type: TP
3542 #: build/C/man2/perf_event_open.2:737
3543 #, no-wrap
3544 msgid "I<pinned>"
3545 msgstr ""
3546
3547 #. type: Plain text
3548 #: build/C/man2/perf_event_open.2:750
3549 msgid ""
3550 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3551 "at all possible.  It applies only to hardware counters and only to group "
3552 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3553 "there are not enough hardware counters or because of a conflict with some "
3554 "other event), then the counter goes into an 'error' state, where reads "
3555 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3556 "subsequently enabled or disabled."
3557 msgstr ""
3558
3559 #. type: TP
3560 #: build/C/man2/perf_event_open.2:750
3561 #, no-wrap
3562 msgid "I<exclusive>"
3563 msgstr ""
3564
3565 #. type: Plain text
3566 #: build/C/man2/perf_event_open.2:759
3567 msgid ""
3568 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3569 "it should be the only group using the CPU's counters.  In the future this "
3570 "may allow monitoring programs to support PMU features that need to run alone "
3571 "so that they do not disrupt other hardware counters."
3572 msgstr ""
3573
3574 #. type: TP
3575 #: build/C/man2/perf_event_open.2:759
3576 #, no-wrap
3577 msgid "I<exclude_user>"
3578 msgstr ""
3579
3580 #. type: Plain text
3581 #: build/C/man2/perf_event_open.2:762
3582 msgid ""
3583 "If this bit is set, the count excludes events that happen in user space."
3584 msgstr ""
3585
3586 #. type: TP
3587 #: build/C/man2/perf_event_open.2:762
3588 #, no-wrap
3589 msgid "I<exclude_kernel>"
3590 msgstr ""
3591
3592 #. type: Plain text
3593 #: build/C/man2/perf_event_open.2:765
3594 msgid ""
3595 "If this bit is set, the count excludes events that happen in kernel-space."
3596 msgstr ""
3597
3598 #. type: TP
3599 #: build/C/man2/perf_event_open.2:765
3600 #, no-wrap
3601 msgid "I<exclude_hv>"
3602 msgstr ""
3603
3604 #. type: Plain text
3605 #: build/C/man2/perf_event_open.2:773
3606 msgid ""
3607 "If this bit is set, the count excludes events that happen in the "
3608 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3609 "this (such as POWER).  Extra support is needed for handling hypervisor "
3610 "measurements on most machines."
3611 msgstr ""
3612
3613 #. type: TP
3614 #: build/C/man2/perf_event_open.2:773
3615 #, no-wrap
3616 msgid "I<exclude_idle>"
3617 msgstr ""
3618
3619 #. type: Plain text
3620 #: build/C/man2/perf_event_open.2:776
3621 msgid "If set, don't count when the CPU is idle."
3622 msgstr ""
3623
3624 #. type: TP
3625 #: build/C/man2/perf_event_open.2:776
3626 #, no-wrap
3627 msgid "I<mmap>"
3628 msgstr ""
3629
3630 #. type: Plain text
3631 #: build/C/man2/perf_event_open.2:781
3632 msgid "The I<mmap> bit enables recording of exec mmap events."
3633 msgstr ""
3634
3635 #. type: TP
3636 #: build/C/man2/perf_event_open.2:781
3637 #, no-wrap
3638 msgid "I<comm>"
3639 msgstr ""
3640
3641 #. type: Plain text
3642 #: build/C/man2/perf_event_open.2:792
3643 msgid ""
3644 "The I<comm> bit enables tracking of process command name as modified by the "
3645 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3646 "tools, there is no way to distinguish one system call versus the other."
3647 msgstr ""
3648
3649 #. type: TP
3650 #: build/C/man2/perf_event_open.2:792
3651 #, no-wrap
3652 msgid "I<freq>"
3653 msgstr ""
3654
3655 #. type: Plain text
3656 #: build/C/man2/perf_event_open.2:799
3657 msgid ""
3658 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3659 "when setting up the sampling interval."
3660 msgstr ""
3661
3662 #. type: TP
3663 #: build/C/man2/perf_event_open.2:799
3664 #, no-wrap
3665 msgid "I<inherit_stat>"
3666 msgstr ""
3667
3668 #. type: Plain text
3669 #: build/C/man2/perf_event_open.2:806
3670 msgid ""
3671 "This bit enables saving of event counts on context switch for inherited "
3672 "tasks.  This is meaningful only if the I<inherit> field is set."
3673 msgstr ""
3674
3675 #. type: TP
3676 #: build/C/man2/perf_event_open.2:806
3677 #, no-wrap
3678 msgid "I<enable_on_exec>"
3679 msgstr ""
3680
3681 #. type: Plain text
3682 #: build/C/man2/perf_event_open.2:811
3683 msgid ""
3684 "If this bit is set, a counter is automatically enabled after a call to "
3685 "B<exec>(2)."
3686 msgstr ""
3687
3688 #. type: TP
3689 #: build/C/man2/perf_event_open.2:811
3690 #, no-wrap
3691 msgid "I<task>"
3692 msgstr ""
3693
3694 #. type: Plain text
3695 #: build/C/man2/perf_event_open.2:815
3696 msgid ""
3697 "If this bit is set, then fork/exit notifications are included in the ring "
3698 "buffer."
3699 msgstr ""
3700
3701 #. type: TP
3702 #: build/C/man2/perf_event_open.2:815
3703 #, no-wrap
3704 msgid "I<watermark>"
3705 msgstr ""
3706
3707 #. type: Plain text
3708 #: build/C/man2/perf_event_open.2:823
3709 msgid ""
3710 "If set, have a sampling interrupt happen when we cross the "
3711 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3712 "I<wakeup_events> samples."
3713 msgstr ""
3714
3715 #. type: TP
3716 #: build/C/man2/perf_event_open.2:823
3717 #, fuzzy, no-wrap
3718 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3719 msgid "I<precise_ip> (Since Linux 2.6.35)"
3720 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3721
3722 #. type: Plain text
3723 #: build/C/man2/perf_event_open.2:833
3724 msgid ""
3725 "This controls the amount of skid.  Skid is how many instructions execute "
3726 "between an event of interest happening and the kernel being able to stop and "
3727 "record the event.  Smaller skid is better and allows more accurate reporting "
3728 "of which events correspond to which instructions, but hardware is often "
3729 "limited with how small this can be."
3730 msgstr ""
3731
3732 #. type: Plain text
3733 #: build/C/man2/perf_event_open.2:835
3734 #, fuzzy
3735 #| msgid "The I<subcmd> value is one of the following:"
3736 msgid "The values of this are the following:"
3737 msgstr "I<subcmd> の値は以下のいずれかである"
3738
3739 #. type: TP
3740 #: build/C/man2/perf_event_open.2:836
3741 #, no-wrap
3742 msgid "0 -"
3743 msgstr ""
3744
3745 #. type: Plain text
3746 #: build/C/man2/perf_event_open.2:840
3747 msgid "B<SAMPLE_IP> can have arbitrary skid"
3748 msgstr ""
3749
3750 #. type: TP
3751 #: build/C/man2/perf_event_open.2:840
3752 #, no-wrap
3753 msgid "1 -"
3754 msgstr ""
3755
3756 #. type: Plain text
3757 #: build/C/man2/perf_event_open.2:844
3758 msgid "B<SAMPLE_IP> must have constant skid"
3759 msgstr ""
3760
3761 #. type: TP
3762 #: build/C/man2/perf_event_open.2:844
3763 #, no-wrap
3764 msgid "2 -"
3765 msgstr ""
3766
3767 #. type: Plain text
3768 #: build/C/man2/perf_event_open.2:848
3769 msgid "B<SAMPLE_IP> requested to have 0 skid"
3770 msgstr ""
3771
3772 #. type: TP
3773 #: build/C/man2/perf_event_open.2:848
3774 #, no-wrap
3775 msgid "3 -"
3776 msgstr ""
3777
3778 #. type: Plain text
3779 #: build/C/man2/perf_event_open.2:854
3780 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3781 msgstr ""
3782
3783 #. type: TP
3784 #: build/C/man2/perf_event_open.2:855
3785 #, fuzzy, no-wrap
3786 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3787 msgid "I<mmap_data> (Since Linux 2.6.36)"
3788 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3789
3790 #. type: Plain text
3791 #: build/C/man2/perf_event_open.2:861
3792 msgid ""
3793 "The counterpart of the I<mmap> field, but enables including data mmap events "
3794 "in the ring-buffer."
3795 msgstr ""
3796
3797 #. type: TP
3798 #: build/C/man2/perf_event_open.2:861
3799 #, fuzzy, no-wrap
3800 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3801 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3802 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3803
3804 #. type: Plain text
3805 #: build/C/man2/perf_event_open.2:869
3806 msgid ""
3807 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3808 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3809 "selected."
3810 msgstr ""
3811
3812 #. type: TP
3813 #: build/C/man2/perf_event_open.2:869
3814 #, no-wrap
3815 msgid "I<exclude_host> (Since Linux 3.2)"
3816 msgstr ""
3817
3818 #. type: Plain text
3819 #: build/C/man2/perf_event_open.2:872
3820 msgid "Do not measure time spent in VM host"
3821 msgstr ""
3822
3823 #. type: TP
3824 #: build/C/man2/perf_event_open.2:872
3825 #, no-wrap
3826 msgid "I<exclude_guest> (Since Linux 3.2)"
3827 msgstr ""
3828
3829 #. type: Plain text
3830 #: build/C/man2/perf_event_open.2:875
3831 msgid "Do not measure time spent in VM guest"
3832 msgstr ""
3833
3834 #. type: TP
3835 #: build/C/man2/perf_event_open.2:875
3836 #, no-wrap
3837 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3838 msgstr ""
3839
3840 #. type: Plain text
3841 #: build/C/man2/perf_event_open.2:878
3842 msgid "Do not include kernel callchains."
3843 msgstr ""
3844
3845 #. type: TP
3846 #: build/C/man2/perf_event_open.2:878
3847 #, no-wrap
3848 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3849 msgstr ""
3850
3851 #. type: Plain text
3852 #: build/C/man2/perf_event_open.2:881
3853 msgid "Do not include user callchains."
3854 msgstr ""
3855
3856 #. type: TP
3857 #: build/C/man2/perf_event_open.2:881
3858 #, no-wrap
3859 msgid "I<wakeup_events>, I<wakeup_watermark>"
3860 msgstr ""
3861
3862 #. type: Plain text
3863 #: build/C/man2/perf_event_open.2:891
3864 msgid ""
3865 "This union sets how many samples (I<wakeup_events>)  or bytes "
3866 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3867 "is used is selected by the I<watermark> bitflag."
3868 msgstr ""
3869
3870 #. type: Plain text
3871 #: build/C/man2/perf_event_open.2:901
3872 msgid ""
3873 "I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types.  To receive "
3874 "a signal for every incoming B<PERF_RECORD> type set I<wakeup_watermark> to 1."
3875 msgstr ""
3876
3877 #. type: TP
3878 #: build/C/man2/perf_event_open.2:901
3879 #, fuzzy, no-wrap
3880 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3881 msgid "I<bp_type> (Since Linux 2.6.33)"
3882 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3883
3884 #. type: Plain text
3885 #: build/C/man2/perf_event_open.2:905
3886 msgid "This chooses the breakpoint type.  It is one of:"
3887 msgstr ""
3888
3889 #. type: TP
3890 #: build/C/man2/perf_event_open.2:906
3891 #, no-wrap
3892 msgid "B<HW_BREAKPOINT_EMPTY>"
3893 msgstr ""
3894
3895 #. type: Plain text
3896 #: build/C/man2/perf_event_open.2:909
3897 msgid "no breakpoint"
3898 msgstr ""
3899
3900 #. type: TP
3901 #: build/C/man2/perf_event_open.2:909
3902 #, no-wrap
3903 msgid "B<HW_BREAKPOINT_R>"
3904 msgstr ""
3905
3906 #. type: Plain text
3907 #: build/C/man2/perf_event_open.2:912
3908 msgid "count when we read the memory location"
3909 msgstr ""
3910
3911 #. type: TP
3912 #: build/C/man2/perf_event_open.2:912
3913 #, no-wrap
3914 msgid "B<HW_BREAKPOINT_W>"
3915 msgstr ""
3916
3917 #. type: Plain text
3918 #: build/C/man2/perf_event_open.2:915
3919 msgid "count when we write the memory location"
3920 msgstr ""
3921
3922 #. type: TP
3923 #: build/C/man2/perf_event_open.2:915
3924 #, no-wrap
3925 msgid "B<HW_BREAKPOINT_RW>"
3926 msgstr ""
3927
3928 #. type: Plain text
3929 #: build/C/man2/perf_event_open.2:918
3930 msgid "count when we read or write the memory location"
3931 msgstr ""
3932
3933 #. type: TP
3934 #: build/C/man2/perf_event_open.2:918
3935 #, no-wrap
3936 msgid "B<HW_BREAKPOINT_X>"
3937 msgstr ""
3938
3939 #. type: Plain text
3940 #: build/C/man2/perf_event_open.2:921
3941 msgid "count when we execute code at the memory location"
3942 msgstr ""
3943
3944 #. type: Plain text
3945 #: build/C/man2/perf_event_open.2:930
3946 msgid ""
3947 "The values can be combined via a bitwise or, but the combination of "
3948 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3949 "allowed."
3950 msgstr ""
3951
3952 #. type: TP
3953 #: build/C/man2/perf_event_open.2:931
3954 #, fuzzy, no-wrap
3955 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3956 msgid "I<bp_addr> (Since Linux 2.6.33)"
3957 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3958
3959 #. type: Plain text
3960 #: build/C/man2/perf_event_open.2:938
3961 msgid ""
3962 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3963 "memory address of the instruction of interest; for read and write "
3964 "breakpoints it is the memory address of the memory location of interest."
3965 msgstr ""
3966
3967 #. type: TP
3968 #: build/C/man2/perf_event_open.2:938
3969 #, fuzzy, no-wrap
3970 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3971 msgid "I<config1> (Since Linux 2.6.39)"
3972 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3973
3974 #. type: Plain text
3975 #: build/C/man2/perf_event_open.2:945
3976 msgid ""
3977 "I<config1> is used for setting events that need an extra register or "
3978 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3979 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3980 msgstr ""
3981
3982 #. type: TP
3983 #: build/C/man2/perf_event_open.2:945
3984 #, fuzzy, no-wrap
3985 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3986 msgid "I<bp_len> (Since Linux 2.6.33)"
3987 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3988
3989 #. type: Plain text
3990 #: build/C/man2/perf_event_open.2:959
3991 msgid ""
3992 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3993 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3994 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3995 "an execution breakpoint, set this to I<sizeof(long)>."
3996 msgstr ""
3997
3998 #. type: TP
3999 #: build/C/man2/perf_event_open.2:959
4000 #, fuzzy, no-wrap
4001 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
4002 msgid "I<config2> (Since Linux 2.6.39)"
4003 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
4004
4005 #. type: Plain text
4006 #: build/C/man2/perf_event_open.2:966
4007 msgid "I<config2> is a further extension of the I<config1> field."
4008 msgstr ""
4009
4010 #. type: TP
4011 #: build/C/man2/perf_event_open.2:966
4012 #, no-wrap
4013 msgid "I<branch_sample_type> (Since Linux 3.4)"
4014 msgstr ""
4015
4016 #. type: Plain text
4017 #: build/C/man2/perf_event_open.2:979
4018 msgid ""
4019 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
4020 "to include in the branch record.  If the user does not set privilege level "
4021 "explicitly, the kernel will use the event's privilege level.  Event and "
4022 "branch privilege levels do not have to match.  The value is formed by ORing "
4023 "together zero or more of the following values, although "
4024 "B<PERF_SAMPLE_BRANCH_ANY> covers all branch types."
4025 msgstr ""
4026
4027 #. type: TP
4028 #: build/C/man2/perf_event_open.2:980
4029 #, no-wrap
4030 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4031 msgstr ""
4032
4033 #. type: Plain text
4034 #: build/C/man2/perf_event_open.2:983
4035 msgid "Branch target is in user space"
4036 msgstr ""
4037
4038 #. type: TP
4039 #: build/C/man2/perf_event_open.2:983
4040 #, no-wrap
4041 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4042 msgstr ""
4043
4044 #. type: Plain text
4045 #: build/C/man2/perf_event_open.2:986
4046 msgid "Branch target is in kernel space"
4047 msgstr ""
4048
4049 #. type: TP
4050 #: build/C/man2/perf_event_open.2:986
4051 #, no-wrap
4052 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4053 msgstr ""
4054
4055 #. type: Plain text
4056 #: build/C/man2/perf_event_open.2:989
4057 msgid "Branch target is in hypervisor"
4058 msgstr ""
4059
4060 #. type: TP
4061 #: build/C/man2/perf_event_open.2:989
4062 #, no-wrap
4063 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4064 msgstr ""
4065
4066 #. type: Plain text
4067 #: build/C/man2/perf_event_open.2:992
4068 msgid "Any branch type."
4069 msgstr ""
4070
4071 #. type: TP
4072 #: build/C/man2/perf_event_open.2:992
4073 #, no-wrap
4074 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4075 msgstr ""
4076
4077 #. type: Plain text
4078 #: build/C/man2/perf_event_open.2:995
4079 msgid "Any call branch"
4080 msgstr ""
4081
4082 #. type: TP
4083 #: build/C/man2/perf_event_open.2:995
4084 #, no-wrap
4085 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4086 msgstr ""
4087
4088 #. type: Plain text
4089 #: build/C/man2/perf_event_open.2:998
4090 msgid "Any return branch"
4091 msgstr ""
4092
4093 #. type: TP
4094 #: build/C/man2/perf_event_open.2:998
4095 #, no-wrap
4096 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4097 msgstr ""
4098
4099 #. type: Plain text
4100 #: build/C/man2/perf_event_open.2:1001
4101 msgid "Indirect calls"
4102 msgstr ""
4103
4104 #. type: TP
4105 #: build/C/man2/perf_event_open.2:1001
4106 #, no-wrap
4107 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4108 msgstr ""
4109
4110 #. type: Plain text
4111 #: build/C/man2/perf_event_open.2:1004
4112 msgid "User, kernel, and hv"
4113 msgstr ""
4114
4115 #. type: TP
4116 #: build/C/man2/perf_event_open.2:1005
4117 #, no-wrap
4118 msgid "I<sample_regs_user> (Since Linux 3.7)"
4119 msgstr ""
4120
4121 #. type: Plain text
4122 #: build/C/man2/perf_event_open.2:1011
4123 msgid ""
4124 "This bitmask defines the set of user CPU registers to dump on samples.  The "
4125 "layout of the register mask is architecture specific and described in the "
4126 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4127 msgstr ""
4128
4129 #. type: TP
4130 #: build/C/man2/perf_event_open.2:1011
4131 #, no-wrap
4132 msgid "I<sample_stack_user> (Since Linux 3.7)"
4133 msgstr ""
4134
4135 #. type: Plain text
4136 #: build/C/man2/perf_event_open.2:1016
4137 msgid ""
4138 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4139 "is specified."
4140 msgstr ""
4141
4142 #. type: SS
4143 #: build/C/man2/perf_event_open.2:1016
4144 #, no-wrap
4145 msgid "Reading results"
4146 msgstr ""
4147
4148 #. type: Plain text
4149 #: build/C/man2/perf_event_open.2:1026
4150 msgid ""
4151 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4152 "the events can be read from the file descriptor.  The values that are there "
4153 "are specified by the I<read_format> field in the I<attr> structure at open "
4154 "time."
4155 msgstr ""
4156
4157 #. type: Plain text
4158 #: build/C/man2/perf_event_open.2:1031
4159 msgid ""
4160 "If you attempt to read into a buffer that is not big enough to hold the data "
4161 "B<ENOSPC> is returned"
4162 msgstr ""
4163
4164 #. type: Plain text
4165 #: build/C/man2/perf_event_open.2:1033
4166 msgid "Here is the layout of the data returned by a read:"
4167 msgstr ""
4168
4169 #. type: IP
4170 #: build/C/man2/perf_event_open.2:1033 build/C/man2/perf_event_open.2:1051
4171 #: build/C/man2/ptrace.2:1619 build/C/man2/ptrace.2:1629
4172 #: build/C/man2/ptrace.2:1637 build/C/man2/ptrace.2:1643
4173 #: build/C/man2/ptrace.2:1772
4174 #, no-wrap
4175 msgid "*"
4176 msgstr ""
4177
4178 #. type: Plain text
4179 #: build/C/man2/perf_event_open.2:1037
4180 msgid ""
4181 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4182 "at once:"
4183 msgstr ""
4184
4185 #. type: Plain text
4186 #: build/C/man2/perf_event_open.2:1049
4187 #, no-wrap
4188 msgid ""
4189 "struct read_format {\n"
4190 "    u64 nr;            /* The number of events */\n"
4191 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4192 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4193 "    struct\n"
4194 "        u64 value;     /* The value of the event */\n"
4195 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4196 "    } values[nr];\n"
4197 "};\n"
4198 msgstr ""
4199
4200 #. type: Plain text
4201 #: build/C/man2/perf_event_open.2:1057
4202 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4203 msgstr ""
4204
4205 #. type: Plain text
4206 #: build/C/man2/perf_event_open.2:1066
4207 #, no-wrap
4208 msgid ""
4209 "struct read_format {\n"
4210 "    u64 value;         /* The value of the event */\n"
4211 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4212 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4213 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4214 "};\n"
4215 msgstr ""
4216
4217 #. type: Plain text
4218 #: build/C/man2/perf_event_open.2:1070
4219 msgid "The values read are as follows:"
4220 msgstr ""
4221
4222 #. type: TP
4223 #: build/C/man2/perf_event_open.2:1070
4224 #, no-wrap
4225 msgid "I<nr>"
4226 msgstr ""
4227
4228 #. type: Plain text
4229 #: build/C/man2/perf_event_open.2:1076
4230 msgid ""
4231 "The number of events in this file descriptor.  Only available if "
4232 "B<PERF_FORMAT_GROUP> was specified."
4233 msgstr ""
4234
4235 #. type: TP
4236 #: build/C/man2/perf_event_open.2:1076
4237 #, no-wrap
4238 msgid "I<time_enabled>, I<time_running>"
4239 msgstr ""
4240
4241 #. type: Plain text
4242 #: build/C/man2/perf_event_open.2:1088
4243 msgid ""
4244 "Total time the event was enabled and running.  Normally these are the same.  "
4245 "If more events are started than available counter slots on the PMU, then "
4246 "multiplexing happens and events run only part of the time.  In that case the "
4247 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4248 "value for the count."
4249 msgstr ""
4250
4251 #. type: TP
4252 #: build/C/man2/perf_event_open.2:1088
4253 #, no-wrap
4254 msgid "I<value>"
4255 msgstr ""
4256
4257 #. type: Plain text
4258 #: build/C/man2/perf_event_open.2:1091
4259 msgid "An unsigned 64-bit value containing the counter result."
4260 msgstr ""
4261
4262 #. type: TP
4263 #: build/C/man2/perf_event_open.2:1091 build/C/man2/perf_event_open.2:1355
4264 #: build/C/man2/perf_event_open.2:1492
4265 #, no-wrap
4266 msgid "I<id>"
4267 msgstr ""
4268
4269 #. type: Plain text
4270 #: build/C/man2/perf_event_open.2:1097
4271 msgid ""
4272 "A globally unique value for this particular event, only there if "
4273 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4274 msgstr ""
4275
4276 #. type: SS
4277 #: build/C/man2/perf_event_open.2:1097
4278 #, no-wrap
4279 msgid "MMAP layout"
4280 msgstr ""
4281
4282 #. type: Plain text
4283 #: build/C/man2/perf_event_open.2:1107
4284 msgid ""
4285 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4286 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4287 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4288 msgstr ""
4289
4290 #. type: Plain text
4291 #: build/C/man2/perf_event_open.2:1113
4292 msgid ""
4293 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4294 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4295 "such as where the ring-buffer head is."
4296 msgstr ""
4297
4298 #. type: Plain text
4299 #: build/C/man2/perf_event_open.2:1116
4300 msgid ""
4301 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4302 "ring buffer when sampling even if you do not plan to access it."
4303 msgstr ""
4304
4305 #. type: Plain text
4306 #: build/C/man2/perf_event_open.2:1118
4307 msgid "The structure of the first metadata mmap page is as follows:"
4308 msgstr ""
4309
4310 #. type: Plain text
4311 #: build/C/man2/perf_event_open.2:1142
4312 #, no-wrap
4313 msgid ""
4314 "struct perf_event_mmap_page {\n"
4315 "    __u32 version;          /* version number of this structure */\n"
4316 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4317 "    __u32 lock;             /* seqlock for synchronization */\n"
4318 "    __u32 index;            /* hardware counter identifier */\n"
4319 "    __s64 offset;           /* add to hardware counter value */\n"
4320 "    __u64 time_enabled;     /* time event active */\n"
4321 "    __u64 time_running;     /* time event on CPU */\n"
4322 "    union {\n"
4323 "        __u64   capabilities;\n"
4324 "        __u64   cap_usr_time  : 1,\n"
4325 "                cap_usr_rdpmc : 1,\n"
4326 "    };\n"
4327 "    __u16   pmc_width;\n"
4328 "    __u16   time_shift;\n"
4329 "    __u32   time_mult;\n"
4330 "    __u64   time_offset;\n"
4331 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4332 "    __u64   data_head;         /* head in the data section */\n"
4333 "    __u64   data_tail;         /* user-space written tail */\n"
4334 "}\n"
4335 msgstr ""
4336
4337 #. type: Plain text
4338 #: build/C/man2/perf_event_open.2:1148
4339 msgid ""
4340 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4341 "in more detail:"
4342 msgstr ""
4343
4344 #. type: TP
4345 #: build/C/man2/perf_event_open.2:1148
4346 #, no-wrap
4347 msgid "I<version>"
4348 msgstr ""
4349
4350 #. type: Plain text
4351 #: build/C/man2/perf_event_open.2:1151
4352 msgid "Version number of this structure."
4353 msgstr ""
4354
4355 #. type: TP
4356 #: build/C/man2/perf_event_open.2:1151
4357 #, no-wrap
4358 msgid "I<compat_version>"
4359 msgstr ""
4360
4361 #. type: Plain text
4362 #: build/C/man2/perf_event_open.2:1154
4363 msgid "The lowest version this is compatible with."
4364 msgstr ""
4365
4366 #. type: TP
4367 #: build/C/man2/perf_event_open.2:1154
4368 #, no-wrap
4369 msgid "I<lock>"
4370 msgstr ""
4371
4372 #. type: Plain text
4373 #: build/C/man2/perf_event_open.2:1157
4374 msgid "A seqlock for synchronization."
4375 msgstr ""
4376
4377 #. type: TP
4378 #: build/C/man2/perf_event_open.2:1157
4379 #, no-wrap
4380 msgid "I<index>"
4381 msgstr ""
4382
4383 #. type: Plain text
4384 #: build/C/man2/perf_event_open.2:1160
4385 msgid "A unique hardware counter identifier."
4386 msgstr ""
4387
4388 #. type: TP
4389 #: build/C/man2/perf_event_open.2:1160
4390 #, no-wrap
4391 msgid "I<offset>"
4392 msgstr ""
4393
4394 #.  FIXME clarify
4395 #. type: Plain text
4396 #: build/C/man2/perf_event_open.2:1164
4397 msgid "Add this to hardware counter value??"
4398 msgstr ""
4399
4400 #. type: TP
4401 #: build/C/man2/perf_event_open.2:1164
4402 #, no-wrap
4403 msgid "I<time_enabled>"
4404 msgstr ""
4405
4406 #. type: Plain text
4407 #: build/C/man2/perf_event_open.2:1167
4408 msgid "Time the event was active."
4409 msgstr ""
4410
4411 #. type: TP
4412 #: build/C/man2/perf_event_open.2:1167
4413 #, no-wrap
4414 msgid "I<time_running>"
4415 msgstr ""
4416
4417 #. type: Plain text
4418 #: build/C/man2/perf_event_open.2:1170
4419 msgid "Time the event was running."
4420 msgstr ""
4421
4422 #. type: TP
4423 #: build/C/man2/perf_event_open.2:1170
4424 #, no-wrap
4425 msgid "I<cap_usr_time>"
4426 msgstr ""
4427
4428 #. type: Plain text
4429 #: build/C/man2/perf_event_open.2:1173
4430 msgid "User time capability"
4431 msgstr ""
4432
4433 #. type: TP
4434 #: build/C/man2/perf_event_open.2:1173
4435 #, no-wrap
4436 msgid "I<cap_usr_rdpmc>"
4437 msgstr ""
4438
4439 #. type: Plain text
4440 #: build/C/man2/perf_event_open.2:1178
4441 msgid ""
4442 "If the hardware supports user-space read of performance counters without "
4443 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4444 "can be used to do a read:"
4445 msgstr ""
4446
4447 #. type: Plain text
4448 #: build/C/man2/perf_event_open.2:1185
4449 #, no-wrap
4450 msgid ""
4451 "u32 seq, time_mult, time_shift, idx, width;\n"
4452 "u64 count, enabled, running;\n"
4453 "u64 cyc, time_offset;\n"
4454 "s64 pmc = 0;\n"
4455 msgstr ""
4456
4457 #. type: Plain text
4458 #: build/C/man2/perf_event_open.2:1191
4459 #, no-wrap
4460 msgid ""
4461 "do {\n"
4462 "    seq = pc-E<gt>lock;\n"
4463 "    barrier();\n"
4464 "    enabled = pc-E<gt>time_enabled;\n"
4465 "    running = pc-E<gt>time_running;\n"
4466 msgstr ""
4467
4468 #. type: Plain text
4469 #: build/C/man2/perf_event_open.2:1198
4470 #, no-wrap
4471 msgid ""
4472 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4473 "        cyc = rdtsc();\n"
4474 "        time_offset = pc-E<gt>time_offset;\n"
4475 "        time_mult   = pc-E<gt>time_mult;\n"
4476 "        time_shift  = pc-E<gt>time_shift;\n"
4477 "    }\n"
4478 msgstr ""
4479
4480 #. type: Plain text
4481 #: build/C/man2/perf_event_open.2:1201
4482 #, no-wrap
4483 msgid ""
4484 "    idx = pc-E<gt>index;\n"
4485 "    count = pc-E<gt>offset;\n"
4486 msgstr ""
4487
4488 #. type: Plain text
4489 #: build/C/man2/perf_event_open.2:1206
4490 #, no-wrap
4491 msgid ""
4492 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4493 "        width = pc-E<gt>pmc_width;\n"
4494 "        pmc = rdpmc(idx - 1);\n"
4495 "    }\n"
4496 msgstr ""
4497
4498 #. type: Plain text
4499 #: build/C/man2/perf_event_open.2:1209
4500 #, no-wrap
4501 msgid ""
4502 "    barrier();\n"
4503 "} while (pc-E<gt>lock != seq);\n"
4504 msgstr ""
4505
4506 #. type: TP
4507 #: build/C/man2/perf_event_open.2:1211
4508 #, no-wrap
4509 msgid "I<pmc_width>"
4510 msgstr ""
4511
4512 #. type: Plain text
4513 #: build/C/man2/perf_event_open.2:1218
4514 msgid ""
4515 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4516 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4517 "the result like:"
4518 msgstr ""
4519
4520 #. type: Plain text
4521 #: build/C/man2/perf_event_open.2:1224
4522 #, no-wrap
4523 msgid ""
4524 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4525 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4526 "count += pmc;\n"
4527 msgstr ""
4528
4529 #. type: TP
4530 #: build/C/man2/perf_event_open.2:1226
4531 #, no-wrap
4532 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4533 msgstr ""
4534
4535 #. type: Plain text
4536 #: build/C/man2/perf_event_open.2:1233
4537 msgid ""
4538 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4539 "time_enabled (in nanoseconds) using rdtsc or similar."
4540 msgstr ""
4541
4542 #. type: Plain text
4543 #: build/C/man2/perf_event_open.2:1241
4544 #, no-wrap
4545 msgid ""
4546 "    u64 quot, rem;\n"
4547 "    u64 delta;\n"
4548 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4549 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4550 "    delta = time_offset + quot * time_mult +\n"
4551 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4552 msgstr ""
4553
4554 #. type: Plain text
4555 #: build/C/man2/perf_event_open.2:1253
4556 msgid ""
4557 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4558 "the seqcount loop described above.  This delta can then be added to enabled "
4559 "and possible running (if idx), improving the scaling:"
4560 msgstr ""
4561
4562 #. type: Plain text
4563 #: build/C/man2/perf_event_open.2:1261
4564 #, no-wrap
4565 msgid ""
4566 "    enabled += delta;\n"
4567 "    if (idx)\n"
4568 "        running += delta;\n"
4569 "    quot = count / running;\n"
4570 "    rem  = count % running;\n"
4571 "    count = quot * enabled + (rem * enabled) / running;\n"
4572 msgstr ""
4573
4574 #. type: TP
4575 #: build/C/man2/perf_event_open.2:1262
4576 #, no-wrap
4577 msgid "I<data_head>"
4578 msgstr ""
4579
4580 #. type: Plain text
4581 #: build/C/man2/perf_event_open.2:1268
4582 msgid ""
4583 "This points to the head of the data section.  The value continuously "
4584 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4585 "size of the mmap buffer before accessing the samples."
4586 msgstr ""
4587
4588 #. type: Plain text
4589 #: build/C/man2/perf_event_open.2:1271
4590 msgid ""
4591 "On SMP-capable platforms, after reading the data_head value, user space "
4592 "should issue an rmb()."
4593 msgstr ""
4594
4595 #. type: TP
4596 #: build/C/man2/perf_event_open.2:1271
4597 #, no-wrap
4598 msgid "I<data_tail;>"
4599 msgstr ""
4600
4601 #. type: Plain text
4602 #: build/C/man2/perf_event_open.2:1279
4603 msgid ""
4604 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4605 "by user space to reflect the last read data.  In this case the kernel will "
4606 "not over-write unread data."
4607 msgstr ""
4608
4609 #. type: Plain text
4610 #: build/C/man2/perf_event_open.2:1281
4611 msgid "The following 2^n ring-buffer pages have the layout described below."
4612 msgstr ""
4613
4614 #. type: Plain text
4615 #: build/C/man2/perf_event_open.2:1295
4616 msgid ""
4617 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4618 "the sample_type selected fields related to where/when (identity)  an event "
4619 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4620 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4621 "I<perf_event_header> and the fields already present for the existing fields, "
4622 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4623 "supported by older perf tools, with these new optional fields being ignored."
4624 msgstr ""
4625
4626 #. type: Plain text
4627 #: build/C/man2/perf_event_open.2:1297
4628 msgid "The mmap values start with a header:"
4629 msgstr ""
4630
4631 #. type: Plain text
4632 #: build/C/man2/perf_event_open.2:1305
4633 #, no-wrap
4634 msgid ""
4635 "struct perf_event_header {\n"
4636 "    __u32   type;\n"
4637 "    __u16   misc;\n"
4638 "    __u16   size;\n"
4639 "};\n"
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man2/perf_event_open.2:1311
4644 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4645 msgstr ""
4646
4647 #. type: Plain text
4648 #: build/C/man2/perf_event_open.2:1320
4649 msgid ""
4650 "The I<type> value is one of the below.  The values in the corresponding "
4651 "record (that follows the header)  depend on the I<type> selected as shown."
4652 msgstr ""
4653
4654 #. type: TP
4655 #: build/C/man2/perf_event_open.2:1321
4656 #, no-wrap
4657 msgid "B<PERF_RECORD_MMAP>"
4658 msgstr ""
4659
4660 #. type: Plain text
4661 #: build/C/man2/perf_event_open.2:1328
4662 msgid ""
4663 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4664 "user-space IPs to code.  They have the following structure:"
4665 msgstr ""
4666
4667 #. type: Plain text
4668 #: build/C/man2/perf_event_open.2:1339
4669 #, no-wrap
4670 msgid ""
4671 "struct {\n"
4672 "    struct perf_event_header header;\n"
4673 "    u32    pid, tid;\n"
4674 "    u64    addr;\n"
4675 "    u64    len;\n"
4676 "    u64    pgoff;\n"
4677 "    char   filename[];\n"
4678 "};\n"
4679 msgstr ""
4680
4681 #. type: TP
4682 #: build/C/man2/perf_event_open.2:1341
4683 #, no-wrap
4684 msgid "B<PERF_RECORD_LOST>"
4685 msgstr ""
4686
4687 #. type: Plain text
4688 #: build/C/man2/perf_event_open.2:1344
4689 msgid "This record indicates when events are lost."
4690 msgstr ""
4691
4692 #. type: Plain text
4693 #: build/C/man2/perf_event_open.2:1352
4694 #, no-wrap
4695 msgid ""
4696 "struct {\n"
4697 "    struct perf_event_header header;\n"
4698 "    u64 id;\n"
4699 "    u64 lost;\n"
4700 "};\n"
4701 msgstr ""
4702
4703 #. type: Plain text
4704 #: build/C/man2/perf_event_open.2:1358
4705 msgid "is the unique event ID for the samples that were lost."
4706 msgstr ""
4707
4708 #. type: TP
4709 #: build/C/man2/perf_event_open.2:1358
4710 #, no-wrap
4711 msgid "I<lost>"
4712 msgstr ""
4713
4714 #. type: Plain text
4715 #: build/C/man2/perf_event_open.2:1361
4716 #, fuzzy
4717 #| msgid "Returns the number of processes woken up."
4718 msgid "is the number of events that were lost."
4719 msgstr "wake したプロセスの数を返す。"
4720
4721 #. type: TP
4722 #: build/C/man2/perf_event_open.2:1362
4723 #, no-wrap
4724 msgid "B<PERF_RECORD_COMM>"
4725 msgstr ""
4726
4727 #. type: Plain text
4728 #: build/C/man2/perf_event_open.2:1365
4729 msgid "This record indicates a change in the process name."
4730 msgstr ""
4731
4732 #. type: Plain text
4733 #: build/C/man2/perf_event_open.2:1373
4734 #, no-wrap
4735 msgid ""
4736 "struct {\n"
4737 "    struct perf_event_header header;\n"
4738 "    u32 pid, tid;\n"
4739 "    char comm[];\n"
4740 "};\n"
4741 msgstr ""
4742
4743 #. type: TP
4744 #: build/C/man2/perf_event_open.2:1375
4745 #, no-wrap
4746 msgid "B<PERF_RECORD_EXIT>"
4747 msgstr "B<PERF_RECORD_EXIT>"
4748
4749 #. type: Plain text
4750 #: build/C/man2/perf_event_open.2:1378
4751 msgid "This record indicates a process exit event."
4752 msgstr ""
4753
4754 #. type: Plain text
4755 #: build/C/man2/perf_event_open.2:1387 build/C/man2/perf_event_open.2:1415
4756 #, no-wrap
4757 msgid ""
4758 "struct {\n"
4759 "    struct perf_event_header header;\n"
4760 "    u32 pid, ppid;\n"
4761 "    u32 tid, ptid;\n"
4762 "    u64 time;\n"
4763 "};\n"
4764 msgstr ""
4765
4766 #. type: TP
4767 #: build/C/man2/perf_event_open.2:1389
4768 #, no-wrap
4769 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4770 msgstr ""
4771
4772 #. type: Plain text
4773 #: build/C/man2/perf_event_open.2:1392
4774 msgid "This record indicates a throttle/unthrottle event."
4775 msgstr ""
4776
4777 #. type: Plain text
4778 #: build/C/man2/perf_event_open.2:1401
4779 #, no-wrap
4780 msgid ""
4781 "struct {\n"
4782 "    struct perf_event_header header;\n"
4783 "    u64 time;\n"
4784 "    u64 id;\n"
4785 "    u64 stream_id;\n"
4786 "};\n"
4787 msgstr ""
4788
4789 #. type: TP
4790 #: build/C/man2/perf_event_open.2:1403
4791 #, fuzzy, no-wrap
4792 #| msgid "B<PTRACE_EVENT_FORK>"
4793 msgid "B<PERF_RECORD_FORK>"
4794 msgstr "B<PTRACE_EVENT_FORK>"
4795
4796 #. type: Plain text
4797 #: build/C/man2/perf_event_open.2:1406
4798 msgid "This record indicates a fork event."
4799 msgstr ""
4800
4801 #. type: TP
4802 #: build/C/man2/perf_event_open.2:1417
4803 #, no-wrap
4804 msgid "B<PERF_RECORD_READ>"
4805 msgstr ""
4806
4807 #. type: Plain text
4808 #: build/C/man2/perf_event_open.2:1420
4809 msgid "This record indicates a read event."
4810 msgstr ""
4811
4812 #. type: Plain text
4813 #: build/C/man2/perf_event_open.2:1428
4814 #, no-wrap
4815 msgid ""
4816 "struct {\n"
4817 "    struct perf_event_header header;\n"
4818 "    u32 pid, tid;\n"
4819 "    struct read_format values;\n"
4820 "};\n"
4821 msgstr ""
4822
4823 #. type: TP
4824 #: build/C/man2/perf_event_open.2:1430
4825 #, no-wrap
4826 msgid "B<PERF_RECORD_SAMPLE>"
4827 msgstr ""
4828
4829 #. type: Plain text
4830 #: build/C/man2/perf_event_open.2:1433
4831 msgid "This record indicates a sample."
4832 msgstr ""
4833
4834 #. type: Plain text
4835 #: build/C/man2/perf_event_open.2:1463
4836 #, no-wrap
4837 msgid ""
4838 "struct {\n"
4839 "    struct perf_event_header header;\n"
4840 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4841 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4842 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4843 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4844 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4845 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4846 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4847 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4848 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4849 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4850 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4851 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4852 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4853 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4854 "    struct perf_branch_entry lbr[bnr];\n"
4855 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4856 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4857 "    u64   regs[weight(mask)];\n"
4858 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4859 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4860 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4861 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4862 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
4863 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
4864 "};\n"
4865 msgstr ""
4866
4867 #. type: TP
4868 #: build/C/man2/perf_event_open.2:1465
4869 #, no-wrap
4870 msgid "I<ip>"
4871 msgstr ""
4872
4873 #. type: Plain text
4874 #: build/C/man2/perf_event_open.2:1471
4875 msgid ""
4876 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4877 "included."
4878 msgstr ""
4879
4880 #. type: TP
4881 #: build/C/man2/perf_event_open.2:1471
4882 #, no-wrap
4883 msgid "I<pid>, I<tid>"
4884 msgstr ""
4885
4886 #. type: Plain text
4887 #: build/C/man2/perf_event_open.2:1477
4888 msgid ""
4889 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4890 "ID are included."
4891 msgstr ""
4892
4893 #. type: TP
4894 #: build/C/man2/perf_event_open.2:1477
4895 #, no-wrap
4896 msgid "I<time>"
4897 msgstr ""
4898
4899 #. type: Plain text
4900 #: build/C/man2/perf_event_open.2:1485
4901 msgid ""
4902 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4903 "This is obtained via local_clock() which is a hardware timestamp if "
4904 "available and the jiffies value if not."
4905 msgstr ""
4906
4907 #. type: TP
4908 #: build/C/man2/perf_event_open.2:1485
4909 #, no-wrap
4910 msgid "I<addr>"
4911 msgstr ""
4912
4913 #. type: Plain text
4914 #: build/C/man2/perf_event_open.2:1492
4915 msgid ""
4916 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4917 "is usually the address of a tracepoint, breakpoint, or software event; "
4918 "otherwise the value is 0."
4919 msgstr ""
4920
4921 #. type: Plain text
4922 #: build/C/man2/perf_event_open.2:1500
4923 msgid ""
4924 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4925 "event is a member of an event group, the group leader ID is returned.  This "
4926 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4927 msgstr ""
4928
4929 #. type: TP
4930 #: build/C/man2/perf_event_open.2:1500
4931 #, no-wrap
4932 msgid "I<stream_id>"
4933 msgstr ""
4934
4935 #. type: Plain text
4936 #: build/C/man2/perf_event_open.2:1510
4937 msgid ""
4938 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4939 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4940 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4941 msgstr ""
4942
4943 #. type: TP
4944 #: build/C/man2/perf_event_open.2:1510
4945 #, no-wrap
4946 msgid "I<cpu>, I<res>"
4947 msgstr ""
4948
4949 #. type: Plain text
4950 #: build/C/man2/perf_event_open.2:1517
4951 msgid ""
4952 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4953 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4954 msgstr ""
4955
4956 #. type: TP
4957 #: build/C/man2/perf_event_open.2:1517
4958 #, no-wrap
4959 msgid "I<period>"
4960 msgstr ""
4961
4962 #. type: Plain text
4963 #: build/C/man2/perf_event_open.2:1523
4964 msgid ""
4965 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4966 "sampling period is written."
4967 msgstr ""
4968
4969 #. type: TP
4970 #: build/C/man2/perf_event_open.2:1523
4971 #, no-wrap
4972 msgid "I<v>"
4973 msgstr ""
4974
4975 #. type: Plain text
4976 #: build/C/man2/perf_event_open.2:1534
4977 msgid ""
4978 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4979 "included which has values for all events in the event group.  The values "
4980 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4981 "time."
4982 msgstr ""
4983
4984 #. type: TP
4985 #: build/C/man2/perf_event_open.2:1534
4986 #, no-wrap
4987 msgid "I<nr>, I<ips[nr]>"
4988 msgstr ""
4989
4990 #. type: Plain text
4991 #: build/C/man2/perf_event_open.2:1542
4992 msgid ""
4993 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4994 "which indicates how many following 64-bit instruction pointers will follow.  "
4995 "This is the current callchain."
4996 msgstr ""
4997
4998 #. type: TP
4999 #: build/C/man2/perf_event_open.2:1542
5000 #, no-wrap
5001 msgid "I<size>, I<data[size]>"
5002 msgstr ""
5003
5004 #. type: Plain text
5005 #: build/C/man2/perf_event_open.2:1549
5006 msgid ""
5007 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
5008 "included followed by an array of 8-bit values of length size.  The values "
5009 "are padded with 0 to have 64-bit alignment."
5010 msgstr ""
5011
5012 #. type: Plain text
5013 #: build/C/man2/perf_event_open.2:1554
5014 msgid ""
5015 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
5016 "make any promises with respect to the stability of its content, it may vary "
5017 "depending on event, hardware, and kernel version."
5018 msgstr ""
5019
5020 #. type: TP
5021 #: build/C/man2/perf_event_open.2:1554
5022 #, no-wrap
5023 msgid "I<bnr>, I<lbr[bnr]>"
5024 msgstr ""
5025
5026 #. type: Plain text
5027 #: build/C/man2/perf_event_open.2:1563
5028 msgid ""
5029 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5030 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5031 "structures which each include the fields:"
5032 msgstr ""
5033
5034 #. type: TP
5035 #: build/C/man2/perf_event_open.2:1564
5036 #, no-wrap
5037 msgid "I<from>"
5038 msgstr ""
5039
5040 #. type: Plain text
5041 #: build/C/man2/perf_event_open.2:1567
5042 msgid "indicating the source instruction (may not be a branch)"
5043 msgstr ""
5044
5045 #. type: TP
5046 #: build/C/man2/perf_event_open.2:1567
5047 #, no-wrap
5048 msgid "I<to>"
5049 msgstr ""
5050
5051 #. type: Plain text
5052 #: build/C/man2/perf_event_open.2:1570
5053 msgid "the branch target"
5054 msgstr ""
5055
5056 #. type: TP
5057 #: build/C/man2/perf_event_open.2:1570
5058 #, no-wrap
5059 msgid "I<mispred>"
5060 msgstr ""
5061
5062 #. type: Plain text
5063 #: build/C/man2/perf_event_open.2:1573
5064 msgid "the branch target was mispredicted"
5065 msgstr ""
5066
5067 #. type: TP
5068 #: build/C/man2/perf_event_open.2:1573
5069 #, no-wrap
5070 msgid "I<predicted>"
5071 msgstr ""
5072
5073 #. type: Plain text
5074 #: build/C/man2/perf_event_open.2:1576
5075 msgid "the branch target was predicted."
5076 msgstr ""
5077
5078 #. type: Plain text
5079 #: build/C/man2/perf_event_open.2:1579
5080 msgid ""
5081 "The entries are from most to least recent, so the first entry has the most "
5082 "recent branch."
5083 msgstr ""
5084
5085 #. type: Plain text
5086 #: build/C/man2/perf_event_open.2:1586
5087 msgid ""
5088 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
5089 "values will be 0."
5090 msgstr ""
5091
5092 #. type: TP
5093 #: build/C/man2/perf_event_open.2:1587
5094 #, no-wrap
5095 msgid "I<abi>, I<regs[weight(mask)]>"
5096 msgstr ""
5097
5098 #. type: Plain text
5099 #: build/C/man2/perf_event_open.2:1592
5100 msgid ""
5101 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
5102 "recorded."
5103 msgstr ""
5104
5105 #. type: Plain text
5106 #: build/C/man2/perf_event_open.2:1598
5107 msgid ""
5108 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5109 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5110 msgstr ""
5111
5112 #. type: Plain text
5113 #: build/C/man2/perf_event_open.2:1608
5114 msgid ""
5115 "The I<regs> field is an array of the CPU registers that were specified by "
5116 "the I<sample_regs_user> attr field.  The number of values is the number of "
5117 "bits set in the I<sample_regs_user> bitmask."
5118 msgstr ""
5119
5120 #. type: TP
5121 #: build/C/man2/perf_event_open.2:1608
5122 #, no-wrap
5123 msgid "I<size>, I<data[size]>, I<dyn_size>"
5124 msgstr ""
5125
5126 #. type: Plain text
5127 #: build/C/man2/perf_event_open.2:1622
5128 msgid ""
5129 "If B<PERF_SAMPLE_STACK_USER> is enabled, then record the user stack to "
5130 "enable backtracing.  I<size> is the size requested by the user in "
5131 "I<stack_user_size> or else the maximum record size.  I<data> is the stack "
5132 "data.  I<dyn_size> is the amount of data actually dumped (can be less than "
5133 "I<size>)."
5134 msgstr ""
5135
5136 #. type: TP
5137 #: build/C/man2/perf_event_open.2:1622
5138 #, no-wrap
5139 msgid "I<weight>"
5140 msgstr ""
5141
5142 #. type: Plain text
5143 #: build/C/man2/perf_event_open.2:1630
5144 msgid ""
5145 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64 bit value provided by the "
5146 "hardware is recorded that indicates how costly the event was.  This allows "
5147 "expensive events to stand out more clearly in profiles."
5148 msgstr ""
5149
5150 #. type: TP
5151 #: build/C/man2/perf_event_open.2:1630
5152 #, no-wrap
5153 msgid "I<data_src>"
5154 msgstr ""
5155
5156 #. type: Plain text
5157 #: build/C/man2/perf_event_open.2:1636
5158 msgid ""
5159 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64 bit value is recorded that "
5160 "is made up of the following fields:"
5161 msgstr ""
5162
5163 #. type: TP
5164 #: build/C/man2/perf_event_open.2:1637
5165 #, no-wrap
5166 msgid "I<mem_op>"
5167 msgstr ""
5168
5169 #. type: Plain text
5170 #: build/C/man2/perf_event_open.2:1650
5171 msgid ""
5172 "type of opcode, a bitwise combination of B<PERF_MEM_OP_NA> (not available), "
5173 "B<PERF_MEM_OP_LOAD> (load instruction), B<PERF_MEM_OP_STORE> (store "
5174 "instruction), B<PERF_MEM_OP_PFETCH> (prefetch), and B<PERF_MEM_OP_EXEC> "
5175 "(executable code)."
5176 msgstr ""
5177
5178 #. type: TP
5179 #: build/C/man2/perf_event_open.2:1650
5180 #, no-wrap
5181 msgid "I<mem_lvl>"
5182 msgstr ""
5183
5184 #. type: Plain text
5185 #: build/C/man2/perf_event_open.2:1681
5186 msgid ""
5187 "memory hierarchy level hit or miss, a bitwise combination of "
5188 "B<PERF_MEM_LVL_NA> (not available), B<PERF_MEM_LVL_HIT> (hit), "
5189 "B<PERF_MEM_LVL_MISS> (miss), B<PERF_MEM_LVL_L1> (level 1 cache), "
5190 "B<PERF_MEM_LVL_LFB> (line fill buffer), B<PERF_MEM_LVL_L2> (level 2 cache), "
5191 "B<PERF_MEM_LVL_L3> (level 3 cache), B<PERF_MEM_LVL_LOC_RAM> (local DRAM), "
5192 "B<PERF_MEM_LVL_REM_RAM1> (remote DRAM 1 hop), B<PERF_MEM_LVL_REM_RAM2> "
5193 "(remote DRAM 2 hops), B<PERF_MEM_LVL_REM_CCE1> (remote cache 1 hop), "
5194 "B<PERF_MEM_LVL_REM_CCE2> (remote cache 2 hops), B<PERF_MEM_LVL_IO> (I/O "
5195 "memory), and B<PERF_MEM_LVL_UNC> (uncached memory)."
5196 msgstr ""
5197
5198 #. type: TP
5199 #: build/C/man2/perf_event_open.2:1681
5200 #, no-wrap
5201 msgid "I<mem_snoop>"
5202 msgstr ""
5203
5204 #. type: Plain text
5205 #: build/C/man2/perf_event_open.2:1694
5206 msgid ""
5207 "snoop mode, a bitwise combination of B<PERF_MEM_SNOOP_NA> (not available), "
5208 "B<PERF_MEM_SNOOP_NONE> (no snoop), B<PERF_MEM_SNOOP_HIT> (snoop hit), "
5209 "B<PERF_MEM_SNOOP_MISS> (snoop miss), and B<PERF_MEM_SNOOP_HITM> (snoop hit "
5210 "modified)."
5211 msgstr ""
5212
5213 #. type: TP
5214 #: build/C/man2/perf_event_open.2:1694
5215 #, no-wrap
5216 msgid "I<mem_lock>"
5217 msgstr ""
5218
5219 #. type: Plain text
5220 #: build/C/man2/perf_event_open.2:1701
5221 msgid ""
5222 "lock instruction, a bitwise combination of B<PERF_MEM_LOCK_NA> (not "
5223 "available) and B<PERF_MEM_LOCK_LOCKED> (locked transaction)."
5224 msgstr ""
5225
5226 #. type: TP
5227 #: build/C/man2/perf_event_open.2:1701
5228 #, no-wrap
5229 msgid "I<mem_dtlb>"
5230 msgstr ""
5231
5232 #. type: Plain text
5233 #: build/C/man2/perf_event_open.2:1718
5234 msgid ""
5235 "tlb access hit or miss, a bitwise combination of B<PERF_MEM_TLB_NA> (not "
5236 "available), B<PERF_MEM_TLB_HIT> (hit), B<PERF_MEM_TLB_MISS> (miss), "
5237 "B<PERF_MEM_TLB_L1> (level 1 TLB), B<PERF_MEM_TLB_L2> (level 2 TLB), "
5238 "B<PERF_MEM_TLB_WK> (hardware walker), and B<PERF_MEM_TLB_OS> (OS fault "
5239 "handler)."
5240 msgstr ""
5241
5242 #. type: TP
5243 #: build/C/man2/perf_event_open.2:1721
5244 #, no-wrap
5245 msgid "I<misc>"
5246 msgstr ""
5247
5248 #. type: Plain text
5249 #: build/C/man2/perf_event_open.2:1726
5250 msgid "The I<misc> field contains additional information about the sample."
5251 msgstr ""
5252
5253 #. type: Plain text
5254 #: build/C/man2/perf_event_open.2:1731
5255 msgid ""
5256 "The CPU mode can be determined from this value by masking with "
5257 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5258 "these are not bit masks, only one can be set at a time):"
5259 msgstr ""
5260
5261 #. type: TP
5262 #: build/C/man2/perf_event_open.2:1732
5263 #, no-wrap
5264 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5265 msgstr ""
5266
5267 #. type: Plain text
5268 #: build/C/man2/perf_event_open.2:1735
5269 msgid "Unknown CPU mode."
5270 msgstr ""
5271
5272 #. type: TP
5273 #: build/C/man2/perf_event_open.2:1735
5274 #, no-wrap
5275 msgid "B<PERF_RECORD_MISC_KERNEL>"
5276 msgstr ""
5277
5278 #. type: Plain text
5279 #: build/C/man2/perf_event_open.2:1738
5280 msgid "Sample happened in the kernel."
5281 msgstr ""
5282
5283 #. type: TP
5284 #: build/C/man2/perf_event_open.2:1738
5285 #, no-wrap
5286 msgid "B<PERF_RECORD_MISC_USER>"
5287 msgstr ""
5288
5289 #. type: Plain text
5290 #: build/C/man2/perf_event_open.2:1741
5291 msgid "Sample happened in user code."
5292 msgstr ""
5293
5294 #. type: TP
5295 #: build/C/man2/perf_event_open.2:1741
5296 #, no-wrap
5297 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5298 msgstr ""
5299
5300 #. type: Plain text
5301 #: build/C/man2/perf_event_open.2:1744
5302 msgid "Sample happened in the hypervisor."
5303 msgstr ""
5304
5305 #. type: TP
5306 #: build/C/man2/perf_event_open.2:1744
5307 #, no-wrap
5308 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5309 msgstr ""
5310
5311 #. type: Plain text
5312 #: build/C/man2/perf_event_open.2:1747
5313 msgid "Sample happened in the guest kernel."
5314 msgstr ""
5315
5316 #. type: TP
5317 #: build/C/man2/perf_event_open.2:1747
5318 #, no-wrap
5319 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5320 msgstr ""
5321
5322 #. type: Plain text
5323 #: build/C/man2/perf_event_open.2:1750
5324 msgid "Sample happened in guest user code."
5325 msgstr ""
5326
5327 #. type: Plain text
5328 #: build/C/man2/perf_event_open.2:1754
5329 msgid "In addition, one of the following bits can be set:"
5330 msgstr ""
5331
5332 #. type: TP
5333 #: build/C/man2/perf_event_open.2:1754
5334 #, fuzzy, no-wrap
5335 #| msgid "B<PERF_RECORD_EXIT>"
5336 msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
5337 msgstr "B<PERF_RECORD_EXIT>"
5338
5339 #. type: Plain text
5340 #: build/C/man2/perf_event_open.2:1758
5341 msgid ""
5342 "This is set when the mapping is not executable; otherwise the mapping is "
5343 "executable."
5344 msgstr ""
5345
5346 #. type: TP
5347 #: build/C/man2/perf_event_open.2:1758
5348 #, no-wrap
5349 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5350 msgstr ""
5351
5352 #. type: Plain text
5353 #: build/C/man2/perf_event_open.2:1766
5354 msgid ""
5355 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5356 "instruction that triggered the event.  See also I<perf_event_attr."
5357 "precise_ip>."
5358 msgstr ""
5359
5360 #. type: TP
5361 #: build/C/man2/perf_event_open.2:1766
5362 #, no-wrap
5363 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5364 msgstr ""
5365
5366 #. type: Plain text
5367 #: build/C/man2/perf_event_open.2:1769
5368 msgid "This indicates there is extended data available (currently not used)."
5369 msgstr ""
5370
5371 #. type: Plain text
5372 #: build/C/man2/perf_event_open.2:1773
5373 msgid "This indicates the size of the record."
5374 msgstr ""
5375
5376 #. type: SS
5377 #: build/C/man2/perf_event_open.2:1774
5378 #, no-wrap
5379 msgid "Signal overflow"
5380 msgstr ""
5381
5382 #. type: Plain text
5383 #: build/C/man2/perf_event_open.2:1783
5384 msgid ""
5385 "Events can be set to deliver a signal when a threshold is crossed.  The "
5386 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5387 "and B<fcntl>(2), system calls."
5388 msgstr ""
5389
5390 #. type: Plain text
5391 #: build/C/man2/perf_event_open.2:1787
5392 msgid ""
5393 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5394 "non-zero value)."
5395 msgstr ""
5396
5397 #. type: Plain text
5398 #: build/C/man2/perf_event_open.2:1789
5399 msgid "There are two ways to generate signals."
5400 msgstr ""
5401
5402 #. type: Plain text
5403 #: build/C/man2/perf_event_open.2:1799
5404 msgid ""
5405 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5406 "will generate a signal if a certain number of samples or bytes have been "
5407 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5408 "is sent."
5409 msgstr ""
5410
5411 #. type: Plain text
5412 #: build/C/man2/perf_event_open.2:1811
5413 msgid ""
5414 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5415 "adds to a counter that decrements each time the event overflows.  When non-"
5416 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5417 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5418 msgstr ""
5419
5420 #.  FIXME(Vince) : Find out when this was introduced
5421 #. type: Plain text
5422 #: build/C/man2/perf_event_open.2:1817
5423 msgid ""
5424 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5425 "for every overflow, even if I<wakeup_events> is not set."
5426 msgstr ""
5427
5428 #. type: SS
5429 #: build/C/man2/perf_event_open.2:1817
5430 #, no-wrap
5431 msgid "rdpmc instruction"
5432 msgstr ""
5433
5434 #. type: Plain text
5435 #: build/C/man2/perf_event_open.2:1824
5436 msgid ""
5437 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5438 "low-latency reads without having to enter the kernel.  Note that using "
5439 "I<rdpmc> is not necessarily faster than other methods for reading event "
5440 "values."
5441 msgstr ""
5442
5443 #. type: Plain text
5444 #: build/C/man2/perf_event_open.2:1829
5445 msgid ""
5446 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5447 "page; documentation on how to calculate event values can be found in that "
5448 "section."
5449 msgstr ""
5450
5451 #. type: SS
5452 #: build/C/man2/perf_event_open.2:1829
5453 #, no-wrap
5454 msgid "perf_event ioctl calls"
5455 msgstr ""
5456
5457 #. type: Plain text
5458 #: build/C/man2/perf_event_open.2:1834
5459 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5460 msgstr ""
5461
5462 #. type: TP
5463 #: build/C/man2/perf_event_open.2:1834
5464 #, fuzzy, no-wrap
5465 #| msgid "B<PTRACE_EVENT_CLONE>"
5466 msgid "B<PERF_EVENT_IOC_ENABLE>"
5467 msgstr "B<PTRACE_EVENT_CLONE>"
5468
5469 #. type: Plain text
5470 #: build/C/man2/perf_event_open.2:1838
5471 msgid ""
5472 "Enables the individual event or event group specified by the file descriptor "
5473 "argument."
5474 msgstr ""
5475
5476 #. type: Plain text
5477 #: build/C/man2/perf_event_open.2:1844
5478 msgid ""
5479 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5480 "events in a group are enabled, even if the event specified is not the group "
5481 "leader (but see BUGS)."
5482 msgstr ""
5483
5484 #. type: TP
5485 #: build/C/man2/perf_event_open.2:1844
5486 #, fuzzy, no-wrap
5487 #| msgid "B<PTRACE_EVENT_CLONE>"
5488 msgid "B<PERF_EVENT_IOC_DISABLE>"
5489 msgstr "B<PTRACE_EVENT_CLONE>"
5490
5491 #. type: Plain text
5492 #: build/C/man2/perf_event_open.2:1848
5493 msgid ""
5494 "Disables the individual counter or event group specified by the file "
5495 "descriptor argument."
5496 msgstr ""
5497
5498 #. type: Plain text
5499 #: build/C/man2/perf_event_open.2:1855
5500 msgid ""
5501 "Enabling or disabling the leader of a group enables or disables the entire "
5502 "group; that is, while the group leader is disabled, none of the counters in "
5503 "the group will count.  Enabling or disabling a member of a group other than "
5504 "the leader affects only that counter; disabling a non-leader stops that "
5505 "counter from counting but doesn't affect any other counter."
5506 msgstr ""
5507
5508 #. type: Plain text
5509 #: build/C/man2/perf_event_open.2:1861
5510 msgid ""
5511 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5512 "events in a group are disabled, even if the event specified is not the group "
5513 "leader (but see BUGS)."
5514 msgstr ""
5515
5516 #. type: TP
5517 #: build/C/man2/perf_event_open.2:1861
5518 #, fuzzy, no-wrap
5519 #| msgid "B<PTRACE_EVENT_FORK>"
5520 msgid "B<PERF_EVENT_IOC_REFRESH>"
5521 msgstr "B<PTRACE_EVENT_FORK>"
5522
5523 #. type: Plain text
5524 #: build/C/man2/perf_event_open.2:1875
5525 msgid ""
5526 "Non-inherited overflow counters can use this to enable a counter for a "
5527 "number of overflows specified by the argument, after which it is disabled.  "
5528 "Subsequent calls of this ioctl add the argument value to the current count.  "
5529 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5530 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5531 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5532 msgstr ""
5533
5534 #. type: TP
5535 #: build/C/man2/perf_event_open.2:1875
5536 #, fuzzy, no-wrap
5537 #| msgid "B<PTRACE_EVENT_FORK>"
5538 msgid "B<PERF_EVENT_IOC_RESET>"
5539 msgstr "B<PTRACE_EVENT_FORK>"
5540
5541 #. type: Plain text
5542 #: build/C/man2/perf_event_open.2:1885
5543 msgid ""
5544 "Reset the event count specified by the file descriptor argument to zero.  "
5545 "This resets only the counts; there is no way to reset the multiplexing "
5546 "I<time_enabled> or I<time_running> values."
5547 msgstr ""
5548
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1891
5551 msgid ""
5552 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5553 "events in a group are reset, even if the event specified is not the group "
5554 "leader (but see BUGS)."
5555 msgstr ""
5556
5557 #. type: TP
5558 #: build/C/man2/perf_event_open.2:1891
5559 #, fuzzy, no-wrap
5560 #| msgid "B<PTRACE_EVENT_FORK>"
5561 msgid "B<PERF_EVENT_IOC_PERIOD>"
5562 msgstr "B<PTRACE_EVENT_FORK>"
5563
5564 #. type: Plain text
5565 #: build/C/man2/perf_event_open.2:1895
5566 msgid ""
5567 "IOC_PERIOD is the command to update the period; it does not update the "
5568 "current period but instead defers until next."
5569 msgstr ""
5570
5571 #. type: Plain text
5572 #: build/C/man2/perf_event_open.2:1898
5573 msgid ""
5574 "The argument is a pointer to a 64-bit value containing the desired new "
5575 "period."
5576 msgstr ""
5577
5578 #. type: TP
5579 #: build/C/man2/perf_event_open.2:1898
5580 #, no-wrap
5581 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5582 msgstr ""
5583
5584 #. type: Plain text
5585 #: build/C/man2/perf_event_open.2:1903
5586 msgid ""
5587 "This tells the kernel to report event notifications to the specified file "
5588 "descriptor rather than the default one.  The file descriptors must all be on "
5589 "the same CPU."
5590 msgstr ""
5591
5592 #. type: Plain text
5593 #: build/C/man2/perf_event_open.2:1906
5594 msgid ""
5595 "The argument specifies the desired file descriptor, or -1 if output should "
5596 "be ignored."
5597 msgstr ""
5598
5599 #. type: TP
5600 #: build/C/man2/perf_event_open.2:1906
5601 #, fuzzy, no-wrap
5602 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5603 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5604 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5605
5606 #. type: Plain text
5607 #: build/C/man2/perf_event_open.2:1909
5608 msgid "This adds an ftrace filter to this event."
5609 msgstr ""
5610
5611 #. type: Plain text
5612 #: build/C/man2/perf_event_open.2:1911
5613 msgid "The argument is a pointer to the desired ftrace filter."
5614 msgstr ""
5615
5616 #. type: SS
5617 #: build/C/man2/perf_event_open.2:1911
5618 #, no-wrap
5619 msgid "Using prctl"
5620 msgstr ""
5621
5622 #. type: Plain text
5623 #: build/C/man2/perf_event_open.2:1924
5624 msgid ""
5625 "A process can enable or disable all the event groups that are attached to it "
5626 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5627 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5628 "the current process, whether created by this process or by another, and does "
5629 "not affect any counters that this process has created on other processes.  "
5630 "It enables or disables only the group leaders, not any other members in the "
5631 "groups."
5632 msgstr ""
5633
5634 #. type: SS
5635 #: build/C/man2/perf_event_open.2:1924
5636 #, no-wrap
5637 msgid "perf_event related configuration files"
5638 msgstr ""
5639
5640 #. type: Plain text
5641 #: build/C/man2/perf_event_open.2:1927
5642 msgid "Files in I</proc/sys/kernel/>"
5643 msgstr ""
5644
5645 #. type: TP
5646 #: build/C/man2/perf_event_open.2:1928
5647 #, no-wrap
5648 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5649 msgstr ""
5650
5651 #. type: Plain text
5652 #: build/C/man2/perf_event_open.2:1934
5653 msgid ""
5654 "The I<perf_event_paranoid> file can be set to restrict access to the "
5655 "performance counters."
5656 msgstr ""
5657
5658 #. type: Plain text
5659 #: build/C/man2/perf_event_open.2:1936
5660 msgid "2 - only allow user-space measurements"
5661 msgstr ""
5662
5663 #. type: Plain text
5664 #: build/C/man2/perf_event_open.2:1938
5665 msgid "1 - (default) allow both kernel and user measurements"
5666 msgstr ""
5667
5668 #. type: Plain text
5669 #: build/C/man2/perf_event_open.2:1940
5670 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5671 msgstr ""
5672
5673 #. type: Plain text
5674 #: build/C/man2/perf_event_open.2:1942
5675 msgid "-1 - no restrictions"
5676 msgstr ""
5677
5678 #. type: Plain text
5679 #: build/C/man2/perf_event_open.2:1947
5680 msgid ""
5681 "The existence of the I<perf_event_paranoid> file is the official method for "
5682 "determining if a kernel supports B<perf_event_open>()."
5683 msgstr ""
5684
5685 #. type: TP
5686 #: build/C/man2/perf_event_open.2:1947
5687 #, no-wrap
5688 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5689 msgstr ""
5690
5691 #. type: Plain text
5692 #: build/C/man2/perf_event_open.2:1956
5693 msgid ""
5694 "This sets the maximum sample rate.  Setting this too high can allow users to "
5695 "sample at a rate that impacts overall machine performance and potentially "
5696 "lock up the machine.  The default value is 100000 (samples per second)."
5697 msgstr ""
5698
5699 #. type: TP
5700 #: build/C/man2/perf_event_open.2:1956
5701 #, no-wrap
5702 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5703 msgstr ""
5704
5705 #. type: Plain text
5706 #: build/C/man2/perf_event_open.2:1961
5707 msgid ""
5708 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5709 "516 (kB)."
5710 msgstr ""
5711
5712 #. type: Plain text
5713 #: build/C/man2/perf_event_open.2:1965
5714 msgid "Files in I</sys/bus/event_source/devices/>"
5715 msgstr ""
5716
5717 #. type: Plain text
5718 #: build/C/man2/perf_event_open.2:1971
5719 msgid ""
5720 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5721 "monitoring.  Information on how to program these PMUs can be found under I</"
5722 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5723 "different PMU."
5724 msgstr ""
5725
5726 #. type: TP
5727 #: build/C/man2/perf_event_open.2:1971
5728 #, fuzzy, no-wrap
5729 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5730 msgid "I</sys/bus/event_source/devices/*/type> (Since Linux 2.6.38)"
5731 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5732
5733 #. type: Plain text
5734 #: build/C/man2/perf_event_open.2:1976
5735 msgid ""
5736 "This contains an integer that can be used in the I<type> field of "
5737 "perf_event_attr to indicate you wish to use this PMU."
5738 msgstr ""
5739
5740 #. type: TP
5741 #: build/C/man2/perf_event_open.2:1976
5742 #, no-wrap
5743 msgid "I</sys/bus/event_source/devices/*/rdpmc> (Since Linux 3.4)"
5744 msgstr ""
5745
5746 #. type: Plain text
5747 #: build/C/man2/perf_event_open.2:1981
5748 msgid ""
5749 "If this file is 1, then direct user-space access to the performance counter "
5750 "registers is allowed via the rdpmc instruction.  This can be disabled by "
5751 "echoing 0 to the file."
5752 msgstr ""
5753
5754 #. type: TP
5755 #: build/C/man2/perf_event_open.2:1981
5756 #, no-wrap
5757 msgid "I</sys/bus/event_source/devices/*/format/> (Since Linux 3.4)"
5758 msgstr ""
5759
5760 #. type: Plain text
5761 #: build/C/man2/perf_event_open.2:1987
5762 msgid ""
5763 "This sub-directory contains information on the architecture-specific sub-"
5764 "fields available for programming the various I<config> fields in the "
5765 "perf_event_attr struct."
5766 msgstr ""
5767
5768 #. type: Plain text
5769 #: build/C/man2/perf_event_open.2:1997
5770 msgid ""
5771 "The content of each file is the name of the config field, followed by a "
5772 "colon, followed by a series of integer bit ranges separated by commas.  For "
5773 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
5774 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
5775 "perf_event_attr::config1."
5776 msgstr ""
5777
5778 #. type: TP
5779 #: build/C/man2/perf_event_open.2:1997
5780 #, no-wrap
5781 msgid "I</sys/bus/event_source/devices/*/events/> (Since Linux 3.4)"
5782 msgstr ""
5783
5784 #. type: Plain text
5785 #: build/C/man2/perf_event_open.2:2006
5786 msgid ""
5787 "This sub-directory contains files with pre-defined events.  The contents are "
5788 "strings describing the event settings expressed in terms of the fields found "
5789 "in the previously mentioned I<./format/> directory.  These are not "
5790 "necessarily complete lists of all events supported by a PMU, but usually a "
5791 "subset of events deemed useful or interesting."
5792 msgstr ""
5793
5794 #. type: Plain text
5795 #: build/C/man2/perf_event_open.2:2014
5796 msgid ""
5797 "The content of each file is a list of attribute names separated by commas.  "
5798 "Each entry has an optional value (either hex or decimal).  If no value is "
5799 "specified than it is assumed to be a single-bit field with a value of 1.  An "
5800 "example entry may look like this: I<event=0x2,inv,ldlat=3>"
5801 msgstr ""
5802
5803 #. type: TP
5804 #: build/C/man2/perf_event_open.2:2014
5805 #, no-wrap
5806 msgid "I</sys/bus/event_source/devices/*/uevent>"
5807 msgstr ""
5808
5809 #. type: Plain text
5810 #: build/C/man2/perf_event_open.2:2018
5811 msgid ""
5812 "This file is the standard kernel device interface for injecting hotplug "
5813 "events."
5814 msgstr ""
5815
5816 #. type: TP
5817 #: build/C/man2/perf_event_open.2:2018
5818 #, no-wrap
5819 msgid "I</sys/bus/event_source/devices/*/cpumask> (Since Linux 3.7)"
5820 msgstr ""
5821
5822 #. type: Plain text
5823 #: build/C/man2/perf_event_open.2:2025
5824 msgid ""
5825 "The cpumask file contains a comma-separated list of integers that indicate a "
5826 "representative cpu number for each socket (package)  on the motherboard.  "
5827 "This is needed when setting up uncore or northbridge events, as those PMUs "
5828 "present socket-wide events."
5829 msgstr ""
5830
5831 #. type: Plain text
5832 #: build/C/man2/perf_event_open.2:2032
5833 msgid ""
5834 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5835 "occurred (in which case, I<errno> is set appropriately)."
5836 msgstr ""
5837
5838 #. type: Plain text
5839 #: build/C/man2/perf_event_open.2:2036
5840 msgid "Returned if the specified event is not available."
5841 msgstr ""
5842
5843 #. type: TP
5844 #: build/C/man2/perf_event_open.2:2036
5845 #, no-wrap
5846 msgid "B<ENOSPC>"
5847 msgstr "B<ENOSPC>"
5848
5849 #. type: Plain text
5850 #: build/C/man2/perf_event_open.2:2046
5851 msgid ""
5852 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5853 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5854 "B<ENOSPC> is still returned if you try to read results into too small of a "
5855 "buffer."
5856 msgstr ""
5857
5858 #. type: SH
5859 #: build/C/man2/perf_event_open.2:2046
5860 #, no-wrap
5861 msgid "VERSION"
5862 msgstr "バージョン"
5863
5864 #. type: Plain text
5865 #: build/C/man2/perf_event_open.2:2051
5866 msgid ""
5867 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5868 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5869 msgstr ""
5870
5871 #. type: Plain text
5872 #: build/C/man2/perf_event_open.2:2056
5873 #, fuzzy
5874 #| msgid ""
5875 #| "B<personality>()  is Linux-specific and should not be used in programs "
5876 #| "intended to be portable."
5877 msgid ""
5878 "This B<perf_event_open>()  system call Linux- specific and should not be "
5879 "used in programs intended to be portable."
5880 msgstr ""
5881 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5882 "はない。"
5883
5884 #. type: Plain text
5885 #: build/C/man2/perf_event_open.2:2060
5886 #, fuzzy
5887 #| msgid ""
5888 #| "Glibc does not provide a wrapper for this system call; call it using "
5889 #| "B<syscall>(2)."
5890 msgid ""
5891 "Glibc does not provide a wrapper for this system call; call it using "
5892 "B<syscall>(2).  See the example below."
5893 msgstr ""
5894 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5895 "(2)  を使って呼び出すこと。"
5896
5897 #. type: Plain text
5898 #: build/C/man2/perf_event_open.2:2066
5899 msgid ""
5900 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5901 "checking for the existence of the file I</proc/sys/kernel/"
5902 "perf_event_paranoid>."
5903 msgstr ""
5904
5905 #. type: SH
5906 #: build/C/man2/perf_event_open.2:2066 build/C/man2/pivot_root.2:134
5907 #: build/C/man2/ptrace.2:1884
5908 #, no-wrap
5909 msgid "BUGS"
5910 msgstr "バグ"
5911
5912 #. type: Plain text
5913 #: build/C/man2/perf_event_open.2:2073
5914 msgid ""
5915 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5916 "signals in threads.  This was introduced in Linux 2.6.32."
5917 msgstr ""
5918
5919 #. type: Plain text
5920 #: build/C/man2/perf_event_open.2:2081
5921 msgid ""
5922 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5923 "could be scheduled together until read time.  The same happens on all known "
5924 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5925 "events works you have to B<perf_event_open>(), start, then read before you "
5926 "know for sure you can get valid measurements."
5927 msgstr ""
5928
5929 #. type: Plain text
5930 #: build/C/man2/perf_event_open.2:2085
5931 msgid ""
5932 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5933 "that case, some events would silently return \"0\" if the kernel scheduled "
5934 "them in an improper counter slot."
5935 msgstr ""
5936
5937 #. type: Plain text
5938 #: build/C/man2/perf_event_open.2:2088
5939 msgid ""
5940 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5941 "results could be returned."
5942 msgstr ""
5943
5944 #. type: Plain text
5945 #: build/C/man2/perf_event_open.2:2091
5946 msgid ""
5947 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5948 "\"inherit\" is enabled and many threads are started."
5949 msgstr ""
5950
5951 #. type: Plain text
5952 #: build/C/man2/perf_event_open.2:2095
5953 msgid ""
5954 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5955 "processes."
5956 msgstr ""
5957
5958 #. type: Plain text
5959 #: build/C/man2/perf_event_open.2:2100
5960 msgid ""
5961 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5962 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5963 "This behavior is unsupported and should not be relied on."
5964 msgstr ""
5965
5966 #. type: Plain text
5967 #: build/C/man2/perf_event_open.2:2106
5968 msgid ""
5969 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5970 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5971 "the union has a non-zero value in it."
5972 msgstr ""
5973
5974 #. type: Plain text
5975 #: build/C/man2/perf_event_open.2:2112
5976 msgid ""
5977 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
5978 "was broken and would repeatedly operate on the event specified rather than "
5979 "iterating across all sibling events in a group."
5980 msgstr ""
5981
5982 #. type: Plain text
5983 #: build/C/man2/perf_event_open.2:2117
5984 msgid ""
5985 "Always double-check your results! Various generalized events have had wrong "
5986 "values.  For example, retired branches measured the wrong thing on AMD "
5987 "machines until Linux 2.6.35."
5988 msgstr ""
5989
5990 #. type: SH
5991 #: build/C/man2/perf_event_open.2:2117 build/C/man2/process_vm_readv.2:295
5992 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5993 #, no-wrap
5994 msgid "EXAMPLE"
5995 msgstr "例"
5996
5997 #. type: Plain text
5998 #: build/C/man2/perf_event_open.2:2121
5999 msgid ""
6000 "The following is a short example that measures the total instruction count "
6001 "of a call to B<printf>(3)."
6002 msgstr ""
6003
6004 #. type: Plain text
6005 #: build/C/man2/perf_event_open.2:2130
6006 #, no-wrap
6007 msgid ""
6008 "#include E<lt>stdlib.hE<gt>\n"
6009 "#include E<lt>stdio.hE<gt>\n"
6010 "#include E<lt>unistd.hE<gt>\n"
6011 "#include E<lt>string.hE<gt>\n"
6012 "#include E<lt>sys/ioctl.hE<gt>\n"
6013 "#include E<lt>linux/perf_event.hE<gt>\n"
6014 "#include E<lt>asm/unistd.hE<gt>\n"
6015 msgstr ""
6016 "#include E<lt>stdlib.hE<gt>\n"
6017 "#include E<lt>stdio.hE<gt>\n"
6018 "#include E<lt>unistd.hE<gt>\n"
6019 "#include E<lt>string.hE<gt>\n"
6020 "#include E<lt>sys/ioctl.hE<gt>\n"
6021 "#include E<lt>linux/perf_event.hE<gt>\n"
6022 "#include E<lt>asm/unistd.hE<gt>\n"
6023
6024 #. type: Plain text
6025 #: build/C/man2/perf_event_open.2:2136
6026 #, no-wrap
6027 msgid ""
6028 "long\n"
6029 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
6030 "                int cpu, int group_fd, unsigned long flags)\n"
6031 "{\n"
6032 "    int ret;\n"
6033 msgstr ""
6034
6035 #. type: Plain text
6036 #: build/C/man2/perf_event_open.2:2141
6037 #, no-wrap
6038 msgid ""
6039 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
6040 "                   group_fd, flags);\n"
6041 "    return ret;\n"
6042 "}\n"
6043 msgstr ""
6044
6045 #. type: Plain text
6046 #: build/C/man2/perf_event_open.2:2148
6047 #, no-wrap
6048 msgid ""
6049 "int\n"
6050 "main(int argc, char **argv)\n"
6051 "{\n"
6052 "    struct perf_event_attr pe;\n"
6053 "    long long count;\n"
6054 "    int fd;\n"
6055 msgstr ""
6056 "int\n"
6057 "main(int argc, char **argv)\n"
6058 "{\n"
6059 "    struct perf_event_attr pe;\n"
6060 "    long long count;\n"
6061 "    int fd;\n"
6062
6063 #. type: Plain text
6064 #: build/C/man2/perf_event_open.2:2156
6065 #, no-wrap
6066 msgid ""
6067 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
6068 "    pe.type = PERF_TYPE_HARDWARE;\n"
6069 "    pe.size = sizeof(struct perf_event_attr);\n"
6070 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
6071 "    pe.disabled = 1;\n"
6072 "    pe.exclude_kernel = 1;\n"
6073 "    pe.exclude_hv = 1;\n"
6074 msgstr ""
6075
6076 #. type: Plain text
6077 #: build/C/man2/perf_event_open.2:2162
6078 #, no-wrap
6079 msgid ""
6080 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6081 "    if (fd == -1) {\n"
6082 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6083 "       exit(EXIT_FAILURE);\n"
6084 "    }\n"
6085 msgstr ""
6086 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6087 "    if (fd == -1) {\n"
6088 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6089 "       exit(EXIT_FAILURE);\n"
6090 "    }\n"
6091
6092 #. type: Plain text
6093 #: build/C/man2/perf_event_open.2:2165
6094 #, no-wrap
6095 msgid ""
6096 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
6097 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
6098 msgstr ""
6099
6100 #. type: Plain text
6101 #: build/C/man2/perf_event_open.2:2167
6102 #, no-wrap
6103 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
6104 msgstr ""
6105
6106 #. type: Plain text
6107 #: build/C/man2/perf_event_open.2:2170
6108 #, no-wrap
6109 msgid ""
6110 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
6111 "    read(fd, &count, sizeof(long long));\n"
6112 msgstr ""
6113
6114 #. type: Plain text
6115 #: build/C/man2/perf_event_open.2:2172
6116 #, no-wrap
6117 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
6118 msgstr ""
6119
6120 #. type: Plain text
6121 #: build/C/man2/perf_event_open.2:2175
6122 #, no-wrap
6123 msgid ""
6124 "    close(fd);\n"
6125 "}\n"
6126 msgstr ""
6127
6128 #. type: Plain text
6129 #: build/C/man2/perf_event_open.2:2182
6130 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6131 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6132
6133 #. type: TH
6134 #: build/C/man2/perfmonctl.2:27
6135 #, no-wrap
6136 msgid "PERFMONCTL"
6137 msgstr ""
6138
6139 #. type: Plain text
6140 #: build/C/man2/perfmonctl.2:30
6141 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
6142 msgstr ""
6143
6144 #. type: Plain text
6145 #: build/C/man2/perfmonctl.2:34
6146 #, no-wrap
6147 msgid ""
6148 "B<#include E<lt>syscall.hE<gt>>\n"
6149 "B<#include E<lt>perfmon.hE<gt>>\n"
6150 msgstr ""
6151 "B<#include E<lt>syscall.hE<gt>>\n"
6152 "B<#include E<lt>perfmon.hE<gt>>\n"
6153
6154 #. type: Plain text
6155 #: build/C/man2/perfmonctl.2:36
6156 #, no-wrap
6157 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6158 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6159
6160 #. type: Plain text
6161 #: build/C/man2/perfmonctl.2:47
6162 msgid ""
6163 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
6164 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
6165 "monitoring data) registers and PMC (performance monitoring control) "
6166 "registers, which gather hardware statistics."
6167 msgstr ""
6168
6169 #. type: Plain text
6170 #: build/C/man2/perfmonctl.2:57
6171 msgid ""
6172 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
6173 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
6174 "I<fd> argument specifies the perfmon context to operate on."
6175 msgstr ""
6176
6177 #. type: Plain text
6178 #: build/C/man2/perfmonctl.2:61
6179 msgid "Supported values for I<cmd> are:"
6180 msgstr ""
6181
6182 #. type: TP
6183 #: build/C/man2/perfmonctl.2:61
6184 #, no-wrap
6185 msgid "B<PFM_CREATE_CONTEXT>"
6186 msgstr "B<PFM_CREATE_CONTEXT>"
6187
6188 #. type: Plain text
6189 #: build/C/man2/perfmonctl.2:65
6190 #, no-wrap
6191 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
6192 msgstr ""
6193
6194 #. type: Plain text
6195 #: build/C/man2/perfmonctl.2:67
6196 msgid "Set up a context."
6197 msgstr ""
6198
6199 #. type: Plain text
6200 #: build/C/man2/perfmonctl.2:74
6201 msgid ""
6202 "The I<fd> parameter is ignored.  A new perfmon context is created as "
6203 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
6204 "E<gt>ctx_fd>."
6205 msgstr ""
6206
6207 #. type: Plain text
6208 #: build/C/man2/perfmonctl.2:86
6209 msgid ""
6210 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
6211 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
6212 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
6213 "B<epoll>(7)."
6214 msgstr ""
6215
6216 #. type: Plain text
6217 #: build/C/man2/perfmonctl.2:90
6218 msgid ""
6219 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
6220 msgstr ""
6221
6222 #. type: TP
6223 #: build/C/man2/perfmonctl.2:90
6224 #, no-wrap
6225 msgid "B<PFM_WRITE_PMCS>"
6226 msgstr ""
6227
6228 #. type: Plain text
6229 #: build/C/man2/perfmonctl.2:95
6230 #, no-wrap
6231 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
6232 msgstr ""
6233
6234 #. type: Plain text
6235 #: build/C/man2/perfmonctl.2:97
6236 msgid "Set PMC registers."
6237 msgstr ""
6238
6239 #. type: TP
6240 #: build/C/man2/perfmonctl.2:97
6241 #, no-wrap
6242 msgid "B<PFM_WRITE_PMDS>"
6243 msgstr ""
6244
6245 #. type: Plain text
6246 #: build/C/man2/perfmonctl.2:101
6247 #, no-wrap
6248 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6249 msgstr ""
6250
6251 #.  pfm_write_pmds()
6252 #. type: Plain text
6253 #: build/C/man2/perfmonctl.2:104
6254 msgid "Set PMD registers."
6255 msgstr ""
6256
6257 #. type: TP
6258 #: build/C/man2/perfmonctl.2:104
6259 #, no-wrap
6260 msgid "B<PFM_READ_PMDS>"
6261 msgstr ""
6262
6263 #. type: Plain text
6264 #: build/C/man2/perfmonctl.2:109
6265 #, no-wrap
6266 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6267 msgstr ""
6268
6269 #. type: Plain text
6270 #: build/C/man2/perfmonctl.2:111
6271 msgid "Read PMD registers."
6272 msgstr ""
6273
6274 #. type: TP
6275 #: build/C/man2/perfmonctl.2:111
6276 #, no-wrap
6277 msgid "B<PFM_START>"
6278 msgstr ""
6279
6280 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6281 #. type: Plain text
6282 #: build/C/man2/perfmonctl.2:117
6283 #, no-wrap
6284 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6285 msgstr ""
6286
6287 #. type: Plain text
6288 #: build/C/man2/perfmonctl.2:119
6289 msgid "Start monitoring."
6290 msgstr ""
6291
6292 #. type: TP
6293 #: build/C/man2/perfmonctl.2:119
6294 #, no-wrap
6295 msgid "B<PFM_STOP>"
6296 msgstr ""
6297
6298 #. type: Plain text
6299 #: build/C/man2/perfmonctl.2:124
6300 #, no-wrap
6301 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6302 msgstr ""
6303
6304 #. type: Plain text
6305 #: build/C/man2/perfmonctl.2:126
6306 msgid "Stop monitoring."
6307 msgstr ""
6308
6309 #. type: TP
6310 #: build/C/man2/perfmonctl.2:126
6311 #, no-wrap
6312 msgid "B<PFM_LOAD_CONTEXT>"
6313 msgstr "B<PFM_LOAD_CONTEXT>"
6314
6315 #. type: Plain text
6316 #: build/C/man2/perfmonctl.2:131
6317 #, no-wrap
6318 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6319 msgstr ""
6320
6321 #. type: Plain text
6322 #: build/C/man2/perfmonctl.2:133
6323 msgid "Attach the context to a thread."
6324 msgstr ""
6325
6326 #. type: TP
6327 #: build/C/man2/perfmonctl.2:133
6328 #, no-wrap
6329 msgid "B<PFM_UNLOAD_CONTEXT>"
6330 msgstr ""
6331
6332 #. type: Plain text
6333 #: build/C/man2/perfmonctl.2:138
6334 #, no-wrap
6335 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6336 msgstr ""
6337
6338 #. type: Plain text
6339 #: build/C/man2/perfmonctl.2:140
6340 msgid "Detach the context from a thread."
6341 msgstr ""
6342
6343 #. type: TP
6344 #: build/C/man2/perfmonctl.2:140
6345 #, no-wrap
6346 msgid "B<PFM_RESTART>"
6347 msgstr ""
6348
6349 #. type: Plain text
6350 #: build/C/man2/perfmonctl.2:145
6351 #, no-wrap
6352 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6353 msgstr ""
6354
6355 #. type: Plain text
6356 #: build/C/man2/perfmonctl.2:147
6357 msgid "Restart monitoring after receiving an overflow notification."
6358 msgstr ""
6359
6360 #. type: TP
6361 #: build/C/man2/perfmonctl.2:147
6362 #, no-wrap
6363 msgid "B<PFM_GET_FEATURES>"
6364 msgstr "B<PFM_GET_FEATURES>"
6365
6366 #. type: Plain text
6367 #: build/C/man2/perfmonctl.2:152
6368 #, no-wrap
6369 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6370 msgstr ""
6371
6372 #. type: TP
6373 #: build/C/man2/perfmonctl.2:153
6374 #, no-wrap
6375 msgid "B<PFM_DEBUG>"
6376 msgstr ""
6377
6378 #. type: Plain text
6379 #: build/C/man2/perfmonctl.2:158
6380 #, no-wrap
6381 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6382 msgstr ""
6383
6384 #. type: Plain text
6385 #: build/C/man2/perfmonctl.2:162
6386 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6387 msgstr ""
6388
6389 #. type: TP
6390 #: build/C/man2/perfmonctl.2:162
6391 #, no-wrap
6392 msgid "B<PFM_GET_PMC_RESET_VAL>"
6393 msgstr ""
6394
6395 #. type: Plain text
6396 #: build/C/man2/perfmonctl.2:167
6397 #, no-wrap
6398 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6399 msgstr ""
6400
6401 #
6402 #
6403 #
6404 #.  .TP
6405 #.  .B PFM_CREATE_EVTSETS
6406 #.  create or modify event sets
6407 #.  .nf
6408 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6409 #.  .fi
6410 #.  .TP
6411 #.  .B PFM_DELETE_EVTSETS
6412 #.  delete event sets
6413 #.  .nf
6414 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6415 #.  .fi
6416 #.  .TP
6417 #.  .B PFM_GETINFO_EVTSETS
6418 #.  get information about event sets
6419 #.  .nf
6420 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6421 #.  .fi
6422 #. type: Plain text
6423 #: build/C/man2/perfmonctl.2:190
6424 msgid "Reset PMC registers to default values."
6425 msgstr ""
6426
6427 #. type: Plain text
6428 #: build/C/man2/perfmonctl.2:196
6429 #, fuzzy
6430 #| msgid ""
6431 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6432 #| "I<errno> is set to indicate the error."
6433 msgid ""
6434 "B<performctl>()  returns zero when the operation is successful.  On error, "
6435 "-1 is returned and I<errno> is set to indicate the cause of the error."
6436 msgstr ""
6437 "成功すると、 B<kexec_load> は 0 を返す。\n"
6438 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6439
6440 #. type: Plain text
6441 #: build/C/man2/perfmonctl.2:199
6442 #, fuzzy
6443 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6444 msgid "B<perfmonctl>()  is available since Linux 2.4."
6445 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6446
6447 #. type: Plain text
6448 #: build/C/man2/perfmonctl.2:202
6449 msgid ""
6450 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6451 "architecture."
6452 msgstr ""
6453
6454 #. type: Plain text
6455 #: build/C/man2/perfmonctl.2:207
6456 msgid "B<gprof>(1)"
6457 msgstr ""
6458
6459 #. type: Plain text
6460 #: build/C/man2/perfmonctl.2:209
6461 msgid "The perfmon2 interface specification"
6462 msgstr ""
6463
6464 #. type: TH
6465 #: build/C/man2/personality.2:32
6466 #, no-wrap
6467 msgid "PERSONALITY"
6468 msgstr "PERSONALITY"
6469
6470 #. type: TH
6471 #: build/C/man2/personality.2:32
6472 #, no-wrap
6473 msgid "2003-01-01"
6474 msgstr "2003-01-01"
6475
6476 #. type: Plain text
6477 #: build/C/man2/personality.2:35
6478 msgid "personality - set the process execution domain"
6479 msgstr "personality - プロセスを実行するドメインを設定する"
6480
6481 #. type: Plain text
6482 #: build/C/man2/personality.2:37
6483 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6484 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6485
6486 #. type: Plain text
6487 #: build/C/man2/personality.2:39
6488 msgid "B<int personality(unsigned long >I<persona>B<);>"
6489 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6490
6491 #. type: Plain text
6492 #: build/C/man2/personality.2:47
6493 msgid ""
6494 "Linux supports different execution domains, or personalities, for each "
6495 "process.  Among other things, execution domains tell Linux how to map signal "
6496 "numbers into signal actions.  The execution domain system allows Linux to "
6497 "provide limited support for binaries compiled under other UNIX-like "
6498 "operating systems."
6499 msgstr ""
6500 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6501 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6502 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6503 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6504 "対する限定的なサポートを提供している。"
6505
6506 #. type: Plain text
6507 #: build/C/man2/personality.2:57
6508 msgid ""
6509 "This function will return the current B<personality>()  when I<persona> "
6510 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6511 "by I<persona> the new execution domain of the calling process."
6512 msgstr ""
6513 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6514 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6515 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6516
6517 #. type: Plain text
6518 #: build/C/man2/personality.2:64
6519 msgid ""
6520 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6521 "and I<errno> is set appropriately."
6522 msgstr ""
6523 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6524 "I<errno> が適切に設定される。"
6525
6526 #. type: Plain text
6527 #: build/C/man2/personality.2:68
6528 msgid "The kernel was unable to change the personality."
6529 msgstr "カーネルがパーソナリティを変更できなかった。"
6530
6531 #. type: Plain text
6532 #: build/C/man2/personality.2:72
6533 msgid ""
6534 "B<personality>()  is Linux-specific and should not be used in programs "
6535 "intended to be portable."
6536 msgstr ""
6537 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6538 "はない。"
6539
6540 #. type: TH
6541 #: build/C/man2/pivot_root.2:10
6542 #, no-wrap
6543 msgid "PIVOT_ROOT"
6544 msgstr "PIVOT_ROOT"
6545
6546 #. type: Plain text
6547 #: build/C/man2/pivot_root.2:13
6548 msgid "pivot_root - change the root file system"
6549 msgstr "pivot_root - root ファイルシステムを変更する"
6550
6551 #. type: Plain text
6552 #: build/C/man2/pivot_root.2:15
6553 msgid ""
6554 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6555 msgstr ""
6556 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6557
6558 #.  The
6559 #.  .B CAP_SYS_ADMIN
6560 #.  capability is required.
6561 #. type: Plain text
6562 #: build/C/man2/pivot_root.2:27
6563 msgid ""
6564 "B<pivot_root>()  moves the root file system of the calling process to the "
6565 "directory I<put_old> and makes I<new_root> the new root file system of the "
6566 "calling process."
6567 msgstr ""
6568 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6569 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6570 "ルシステムにする。"
6571
6572 #. type: Plain text
6573 #: build/C/man2/pivot_root.2:34
6574 msgid ""
6575 "The typical use of B<pivot_root>()  is during system startup, when the "
6576 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6577 "the real root file system, and eventually turns the latter into the current "
6578 "root of all relevant processes or threads."
6579 msgstr ""
6580 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6581 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6582 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6583 "レント root に変更するような場合である。"
6584
6585 #. type: Plain text
6586 #: build/C/man2/pivot_root.2:46
6587 msgid ""
6588 "B<pivot_root>()  may or may not change the current root and the current "
6589 "working directory of any processes or threads which use the old root "
6590 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6591 "root or current working directory at the old root operate correctly in "
6592 "either case.  An easy way to ensure this is to change their root and current "
6593 "working directory to I<new_root> before invoking B<pivot_root>()."
6594 msgstr ""
6595 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6596 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6597 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6598 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6599 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6600 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6601 "更しておくことである。"
6602
6603 #. type: Plain text
6604 #: build/C/man2/pivot_root.2:64
6605 msgid ""
6606 "The paragraph above is intentionally vague because the implementation of "
6607 "B<pivot_root>()  may change in the future.  At the time of writing, "
6608 "B<pivot_root>()  changes root and current working directory of each process "
6609 "or thread to I<new_root> if they point to the old root directory.  This is "
6610 "necessary in order to prevent kernel threads from keeping the old root "
6611 "directory busy with their root and current working directory, even if they "
6612 "never access the file system in any way.  In the future, there may be a "
6613 "mechanism for kernel threads to explicitly relinquish any access to the file "
6614 "system, such that this fairly intrusive mechanism can be removed from "
6615 "B<pivot_root>()."
6616 msgstr ""
6617 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6618 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6619 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6620 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6621 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6622 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6623 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6624 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6625 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6626 "除されるかもしれない。"
6627
6628 #. type: Plain text
6629 #: build/C/man2/pivot_root.2:72
6630 msgid ""
6631 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6632 "may not affect its current working directory.  It is therefore recommended "
6633 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6634 msgstr ""
6635 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6636 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6637 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6638
6639 #. type: Plain text
6640 #: build/C/man2/pivot_root.2:74
6641 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6642 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6643
6644 #. type: IP
6645 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6646 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6647 #, no-wrap
6648 msgid "-"
6649 msgstr "-"
6650
6651 #. type: Plain text
6652 #: build/C/man2/pivot_root.2:76
6653 msgid "They must be directories."
6654 msgstr "ディレクトリでなければならない。"
6655
6656 #. type: Plain text
6657 #: build/C/man2/pivot_root.2:79
6658 msgid ""
6659 "I<new_root> and I<put_old> must not be on the same file system as the "
6660 "current root."
6661 msgstr ""
6662 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6663 "ない。"
6664
6665 #. type: Plain text
6666 #: build/C/man2/pivot_root.2:83
6667 msgid ""
6668 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6669 "of I</..> to the string pointed to by I<put_old> must yield the same "
6670 "directory as I<new_root>."
6671 msgstr ""
6672 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6673 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6674 "リが得られなければならない。"
6675
6676 #. type: Plain text
6677 #: build/C/man2/pivot_root.2:85
6678 msgid "No other file system may be mounted on I<put_old>."
6679 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6680
6681 #. type: Plain text
6682 #: build/C/man2/pivot_root.2:89
6683 msgid "See also B<pivot_root>(8)  for additional usage examples."
6684 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6685
6686 #. type: Plain text
6687 #: build/C/man2/pivot_root.2:96
6688 msgid ""
6689 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6690 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6691 "point of that file system is mounted on I<put_old>."
6692 msgstr ""
6693 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6694 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6695 "テムのマウントポイントが I<put_old> にマウントされる。"
6696
6697 #. type: Plain text
6698 #: build/C/man2/pivot_root.2:101
6699 msgid ""
6700 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6701 "mounts> will show the mount point of the file system containing I<new_root> "
6702 "as root (I</>)."
6703 msgstr ""
6704 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6705 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6706 "る。"
6707
6708 #. type: Plain text
6709 #: build/C/man2/pivot_root.2:110
6710 msgid ""
6711 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6712 "B<stat>(2).  Additionally, it may return:"
6713 msgstr ""
6714 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6715 "性がある。さらに以下を返すことがある:"
6716
6717 #. type: Plain text
6718 #: build/C/man2/pivot_root.2:114
6719 msgid ""
6720 "I<new_root> or I<put_old> are on the current root file system, or a file "
6721 "system is already mounted on I<put_old>."
6722 msgstr ""
6723 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6724 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6725
6726 #. type: Plain text
6727 #: build/C/man2/pivot_root.2:117
6728 msgid "I<put_old> is not underneath I<new_root>."
6729 msgstr "I<put_old> が I<new_root> の下層にない。"
6730
6731 #. type: TP
6732 #: build/C/man2/pivot_root.2:117
6733 #, no-wrap
6734 msgid "B<ENOTDIR>"
6735 msgstr "B<ENOTDIR>"
6736
6737 #. type: Plain text
6738 #: build/C/man2/pivot_root.2:120
6739 msgid "I<new_root> or I<put_old> is not a directory."
6740 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6741
6742 #. type: Plain text
6743 #: build/C/man2/pivot_root.2:125
6744 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6745 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6746
6747 #. type: Plain text
6748 #: build/C/man2/pivot_root.2:128
6749 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6750 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6751
6752 #. type: Plain text
6753 #: build/C/man2/pivot_root.2:131
6754 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6755 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6756
6757 #. type: Plain text
6758 #: build/C/man2/pivot_root.2:138
6759 msgid ""
6760 "B<pivot_root>()  should not have to change root and current working "
6761 "directory of all other processes in the system."
6762 msgstr ""
6763 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6764 "ディレクトリとを変更しなくてもよいはずである。"
6765
6766 #. type: Plain text
6767 #: build/C/man2/pivot_root.2:143
6768 msgid ""
6769 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6770 "insanity."
6771 msgstr ""
6772 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6773 "からない状態になってしまうだろう"
6774
6775 #. type: Plain text
6776 #: build/C/man2/pivot_root.2:149
6777 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6778 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6779
6780 #. type: TH
6781 #: build/C/man2/process_vm_readv.2:29
6782 #, no-wrap
6783 msgid "PROCESS_VM_READV"
6784 msgstr ""
6785
6786 #. type: TH
6787 #: build/C/man2/process_vm_readv.2:29
6788 #, no-wrap
6789 msgid "2012-04-25"
6790 msgstr "2012-04-25"
6791
6792 #. type: Plain text
6793 #: build/C/man2/process_vm_readv.2:32
6794 msgid ""
6795 "process_vm_readv, process_vm_writev - transfer data between process address "
6796 "spaces"
6797 msgstr ""
6798
6799 #. type: Plain text
6800 #: build/C/man2/process_vm_readv.2:35
6801 #, no-wrap
6802 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6803 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6804
6805 #. type: Plain text
6806 #: build/C/man2/process_vm_readv.2:42
6807 #, no-wrap
6808 msgid ""
6809 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6810 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6811 "B<                         unsigned long >I<liovcnt>B<,>\n"
6812 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6813 "B<                         unsigned long >I<riovcnt>B<,>\n"
6814 "B<                         unsigned long >I<flags>B<);>\n"
6815 msgstr ""
6816
6817 #. type: Plain text
6818 #: build/C/man2/process_vm_readv.2:49
6819 #, no-wrap
6820 msgid ""
6821 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6822 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6823 "B<                          unsigned long >I<liovcnt>B<,>\n"
6824 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6825 "B<                          unsigned long >I<riovcnt>B<,>\n"
6826 "B<                          unsigned long >I<flags>B<);>\n"
6827 msgstr ""
6828
6829 #. type: Plain text
6830 #: build/C/man2/process_vm_readv.2:57
6831 msgid ""
6832 "These system calls transfer data between the address space of the calling "
6833 "process (\"the local process\") and the process identified by I<pid> (\"the "
6834 "remote process\").  The data moves directly between the address spaces of "
6835 "the two processes, without passing through kernel space."
6836 msgstr ""
6837
6838 #. type: Plain text
6839 #: build/C/man2/process_vm_readv.2:82
6840 msgid ""
6841 "The B<process_vm_readv>()  system call transfers data from the remote "
6842 "process to the local process.  The data to be transferred is identified by "
6843 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6844 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6845 "the number of elements in I<remote_iov>.  The data is transferred to the "
6846 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6847 "pointer to an array describing address ranges in the calling process, and "
6848 "I<liovcnt> specifies the number of elements in I<local_iov>."
6849 msgstr ""
6850
6851 #. type: Plain text
6852 #: build/C/man2/process_vm_readv.2:96
6853 msgid ""
6854 "The B<process_vm_writev>()  system call is the converse of "
6855 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6856 "remote process.  Other than the direction of the transfer, the arguments "
6857 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6858 "meaning as for B<process_vm_readv>()."
6859 msgstr ""
6860
6861 #. type: Plain text
6862 #: build/C/man2/process_vm_readv.2:106
6863 msgid ""
6864 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6865 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6866 msgstr ""
6867 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6868 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6869 "されている:"
6870
6871 #. type: Plain text
6872 #: build/C/man2/process_vm_readv.2:113
6873 #, no-wrap
6874 msgid ""
6875 "struct iovec {\n"
6876 "    void  *iov_base;    /* Starting address */\n"
6877 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6878 "};\n"
6879 msgstr ""
6880 "struct iovec {\n"
6881 "    void  *iov_base;    /* Starting address */\n"
6882 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6883 "};\n"
6884
6885 #. type: Plain text
6886 #: build/C/man2/process_vm_readv.2:129
6887 msgid ""
6888 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6889 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6890 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6891 "to I<remote_iov[1]>, and so on."
6892 msgstr ""
6893 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6894 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6895 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6896 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6897 "以降も同様である。"
6898
6899 #. type: Plain text
6900 #: build/C/man2/process_vm_readv.2:140
6901 msgid ""
6902 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6903 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6904 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6905 msgstr ""
6906
6907 #. type: Plain text
6908 #: build/C/man2/process_vm_readv.2:148
6909 msgid ""
6910 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6911 "have to be the same.  Thus, it is possible to split a single local buffer "
6912 "into multiple remote buffers, or vice versa."
6913 msgstr ""
6914
6915 #. type: Plain text
6916 #: build/C/man2/process_vm_readv.2:152
6917 msgid "The I<flags> argument is currently unused and must be set to 0."
6918 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6919
6920 #.  In time, glibc might provide a wrapper that works around this limit,
6921 #.  as is done for readv()/writev()
6922 #. type: Plain text
6923 #: build/C/man2/process_vm_readv.2:165
6924 msgid ""
6925 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6926 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6927 "via the call I<sysconf(_SC_IOV_MAX)>)."
6928 msgstr ""
6929
6930 #. type: Plain text
6931 #: build/C/man2/process_vm_readv.2:175
6932 msgid ""
6933 "The count arguments and I<local_iov> are checked before doing any "
6934 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6935 "addresses refer to regions that are inaccessible to the local process, none "
6936 "of the vectors will be processed and an error will be returned immediately."
6937 msgstr ""
6938
6939 #. type: Plain text
6940 #: build/C/man2/process_vm_readv.2:195
6941 msgid ""
6942 "Note, however, that these system calls do not check the memory regions in "
6943 "the remote process until just before doing the read/write.  Consequently, a "
6944 "partial read/write (see RETURN VALUE)  may result if one of the "
6945 "I<remote_iov> elements points to an invalid memory region in the remote "
6946 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6947 "this in mind when attempting to read data of unknown length (such as C "
6948 "strings that are null-terminated) from a remote process, by avoiding "
6949 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6950 "(Instead, split the remote read into two I<remote_iov> elements and have "
6951 "them merge back into a single write I<local_iov> entry.  The first read "
6952 "entry goes up to the page boundary, while the second starts on the next page "
6953 "boundary.)"
6954 msgstr ""
6955
6956 #. type: Plain text
6957 #: build/C/man2/process_vm_readv.2:209
6958 msgid ""
6959 "In order to read from or write to another process, either the caller must "
6960 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6961 "ID, and saved set-user-ID of the remote process must match the real user ID "
6962 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6963 "group-ID of the remote process must match the real group ID of the caller.  "
6964 "(The permission required is exactly the same as that required to perform a "
6965 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6966 msgstr ""
6967
6968 #. type: Plain text
6969 #: build/C/man2/process_vm_readv.2:225
6970 msgid ""
6971 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6972 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6973 "value may be less than the total number of requested bytes, if a partial "
6974 "read/write occurred.  (Partial transfers apply at the granularity of "
6975 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6976 "splits a single I<iovec> element.)  The caller should check the return value "
6977 "to determine whether a partial read/write occurred."
6978 msgstr ""
6979
6980 #. type: Plain text
6981 #: build/C/man2/process_vm_readv.2:229
6982 msgid "On error, -1 is returned and I<errno> is set appropriately."
6983 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6984
6985 #. type: Plain text
6986 #: build/C/man2/process_vm_readv.2:241
6987 msgid ""
6988 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6989 "overflows a I<ssize_t> value."
6990 msgstr ""
6991
6992 #. type: Plain text
6993 #: build/C/man2/process_vm_readv.2:245
6994 msgid "I<flags> is not 0."
6995 msgstr "I<flags> が 0 でない。"
6996
6997 #. type: Plain text
6998 #: build/C/man2/process_vm_readv.2:251
6999 msgid "I<liovcnt> or I<riovcnt> is too large."
7000 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
7001
7002 #. type: Plain text
7003 #: build/C/man2/process_vm_readv.2:256
7004 msgid ""
7005 "The memory described by I<local_iov> is outside the caller's accessible "
7006 "address space."
7007 msgstr ""
7008 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
7009 "アドレス空間の外にある。"
7010
7011 #. type: Plain text
7012 #: build/C/man2/process_vm_readv.2:262
7013 msgid ""
7014 "The memory described by I<remote_iov> is outside the accessible address "
7015 "space of the process I<pid>."
7016 msgstr ""
7017
7018 #. type: Plain text
7019 #: build/C/man2/process_vm_readv.2:267
7020 msgid ""
7021 "Could not allocate memory for internal copies of the I<iovec> structures."
7022 msgstr ""
7023
7024 #. type: Plain text
7025 #: build/C/man2/process_vm_readv.2:271
7026 msgid ""
7027 "The caller does not have permission to access the address space of the "
7028 "process I<pid>."
7029 msgstr ""
7030 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
7031 "持っていない。"
7032
7033 #. type: Plain text
7034 #: build/C/man2/process_vm_readv.2:276
7035 msgid "No process with ID I<pid> exists."
7036 msgstr "ID が I<pid> のプロセスが存在しない。"
7037
7038 #. type: Plain text
7039 #: build/C/man2/process_vm_readv.2:279
7040 msgid ""
7041 "These system calls were added in Linux 3.2.  Support is provided in glibc "
7042 "since version 2.15."
7043 msgstr ""
7044 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
7045 "サポートは glibc バージョン 2.15 以降で提供されている。"
7046
7047 #. type: Plain text
7048 #: build/C/man2/process_vm_readv.2:281
7049 msgid "These system calls are nonstandard Linux extensions."
7050 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
7051
7052 #. type: Plain text
7053 #: build/C/man2/process_vm_readv.2:287
7054 msgid ""
7055 "The data transfers performed by B<process_vm_readv>()  and "
7056 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
7057 msgstr ""
7058
7059 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
7060 #.  See also some benchmarks at http://lwn.net/Articles/405284/
7061 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
7062 #. type: Plain text
7063 #: build/C/man2/process_vm_readv.2:295
7064 msgid ""
7065 "These system calls were designed to permit fast message passing by allowing "
7066 "messages to be exchanged with a single copy operation (rather than the "
7067 "double copy that would be required when using, for example, shared memory or "
7068 "pipes)."
7069 msgstr ""
7070
7071 #. type: Plain text
7072 #: build/C/man2/process_vm_readv.2:303
7073 msgid ""
7074 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
7075 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
7076 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
7077 msgstr ""
7078
7079 #. type: Plain text
7080 #: build/C/man2/process_vm_readv.2:306
7081 #, no-wrap
7082 msgid "#include E<lt>sys/uio.hE<gt>\n"
7083 msgstr "#include E<lt>sys/uio.hE<gt>\n"
7084
7085 #. type: Plain text
7086 #: build/C/man2/process_vm_readv.2:316
7087 #, no-wrap
7088 msgid ""
7089 "int\n"
7090 "main(void)\n"
7091 "{\n"
7092 "    struct iovec local[2];\n"
7093 "    struct iovec remote[1];\n"
7094 "    char buf1[10];\n"
7095 "    char buf2[10];\n"
7096 "    ssize_t nread;\n"
7097 "    pid_t pid = 10;             /* PID of remote process */\n"
7098 msgstr ""
7099 "int\n"
7100 "main(void)\n"
7101 "{\n"
7102 "    struct iovec local[2];\n"
7103 "    struct iovec remote[1];\n"
7104 "    char buf1[10];\n"
7105 "    char buf2[10];\n"
7106 "    ssize_t nread;\n"
7107 "    pid_t pid = 10;             /* PID of remote process */\n"
7108
7109 #. type: Plain text
7110 #: build/C/man2/process_vm_readv.2:323
7111 #, no-wrap
7112 msgid ""
7113 "    local[0].iov_base = buf1;\n"
7114 "    local[0].iov_len = 10;\n"
7115 "    local[1].iov_base = buf2;\n"
7116 "    local[1].iov_len = 10;\n"
7117 "    remote[0].iov_base = (void *) 0x10000;\n"
7118 "    remote[1].iov_len = 20;\n"
7119 msgstr ""
7120 "    local[0].iov_base = buf1;\n"
7121 "    local[0].iov_len = 10;\n"
7122 "    local[1].iov_base = buf2;\n"
7123 "    local[1].iov_len = 10;\n"
7124 "    remote[0].iov_base = (void *) 0x10000;\n"
7125 "    remote[1].iov_len = 20;\n"
7126
7127 #. type: Plain text
7128 #: build/C/man2/process_vm_readv.2:330
7129 #, no-wrap
7130 msgid ""
7131 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7132 "    if (nread != 20)\n"
7133 "        return 1;\n"
7134 "    else\n"
7135 "        return 0;\n"
7136 "}\n"
7137 msgstr ""
7138 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7139 "    if (nread != 20)\n"
7140 "        return 1;\n"
7141 "    else\n"
7142 "        return 0;\n"
7143 "}\n"
7144
7145 #. type: Plain text
7146 #: build/C/man2/process_vm_readv.2:334
7147 msgid "B<readv>(2), B<writev>(2)"
7148 msgstr "B<readv>(2), B<writev>(2)"
7149
7150 #. type: TH
7151 #: build/C/man2/ptrace.2:44
7152 #, no-wrap
7153 msgid "PTRACE"
7154 msgstr "PTRACE"
7155
7156 #. type: TH
7157 #: build/C/man2/ptrace.2:44
7158 #, fuzzy, no-wrap
7159 #| msgid "2013-07-02"
7160 msgid "2013-07-11"
7161 msgstr "2013-07-02"
7162
7163 #. type: Plain text
7164 #: build/C/man2/ptrace.2:47
7165 msgid "ptrace - process trace"
7166 msgstr "ptrace - プロセスのトレース"
7167
7168 #. type: Plain text
7169 #: build/C/man2/ptrace.2:50
7170 #, no-wrap
7171 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7172 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7173
7174 #. type: Plain text
7175 #: build/C/man2/ptrace.2:53
7176 #, no-wrap
7177 msgid ""
7178 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7179 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7180 msgstr ""
7181 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7182 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7183
7184 #. type: Plain text
7185 #: build/C/man2/ptrace.2:62
7186 #, fuzzy
7187 #| msgid ""
7188 #| "The B<ptrace>()  system call provides a means by which a parent process "
7189 #| "may observe and control the execution of another process, and examine and "
7190 #| "change its core image and registers.  It is primarily used to implement "
7191 #| "breakpoint debugging and system call tracing."
7192 msgid ""
7193 "The B<ptrace>()  system call provides a means by which one process (the "
7194 "\"tracer\")  may observe and control the execution of another process (the "
7195 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
7196 "is primarily used to implement breakpoint debugging and system call tracing."
7197 msgstr ""
7198 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
7199 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
7200 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
7201 "コールのトレースを 実装するのに用いられる。"
7202
7203 #. type: Plain text
7204 #: build/C/man2/ptrace.2:73
7205 msgid ""
7206 "A tracee first needs to be attached to the tracer.  Attachment and "
7207 "subsequent commands are per thread: in a multithreaded process, every thread "
7208 "can be individually attached to a (potentially different) tracer, or left "
7209 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
7210 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
7211 "commands are always sent to a specific tracee using a call of the form"
7212 msgstr ""
7213
7214 #. type: Plain text
7215 #: build/C/man2/ptrace.2:75
7216 #, no-wrap
7217 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
7218 msgstr ""
7219
7220 #. type: Plain text
7221 #: build/C/man2/ptrace.2:79
7222 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
7223 msgstr ""
7224
7225 #. type: Plain text
7226 #: build/C/man2/ptrace.2:85
7227 msgid ""
7228 "(Note that in this page, a \"multithreaded process\" means a thread group "
7229 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
7230 msgstr ""
7231
7232 #. type: Plain text
7233 #: build/C/man2/ptrace.2:96
7234 #, fuzzy
7235 #| msgid ""
7236 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
7237 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
7238 #| "(3).  Alternatively, the parent may commence trace of an existing process "
7239 #| "using B<PTRACE_ATTACH>."
7240 msgid ""
7241 "A process can initiate a trace by calling B<fork>(2)  and having the "
7242 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
7243 "(2).  Alternatively, one process may commence tracing another process using "
7244 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
7245 msgstr ""
7246 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
7247 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
7248 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
7249 "を使用し、トレースを開始する。"
7250
7251 #. type: Plain text
7252 #: build/C/man2/ptrace.2:113
7253 #, fuzzy
7254 #| msgid ""
7255 #| "While being traced, the child will stop each time a signal is delivered, "
7256 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
7257 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
7258 #| "(2)  and may inspect and modify the child process while it is stopped.  "
7259 #| "The parent then causes the child to continue, optionally ignoring the "
7260 #| "delivered signal (or even delivering a different signal instead)."
7261 msgid ""
7262 "While being traced, the tracee will stop each time a signal is delivered, "
7263 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
7264 "its usual effect.)  The tracer will be notified at its next call to "
7265 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
7266 "return a I<status> value containing information that indicates the cause of "
7267 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
7268 "various ptrace requests to inspect and modify the tracee.  The tracer then "
7269 "causes the tracee to continue, optionally ignoring the delivered signal (or "
7270 "even delivering a different signal instead)."
7271 msgstr ""
7272 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7273 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7274 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7275 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7276 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7277 "シグナルを 配送することもできる) 。"
7278
7279 #. type: Plain text
7280 #: build/C/man2/ptrace.2:123
7281 msgid ""
7282 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7283 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7284 "signal, giving the parent a chance to gain control before the new program "
7285 "begins execution."
7286 msgstr ""
7287
7288 #. type: Plain text
7289 #: build/C/man2/ptrace.2:127
7290 #, fuzzy
7291 #| msgid ""
7292 #| "When the parent is finished tracing, it can terminate the child with "
7293 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7294 #| "mode via B<PTRACE_DETACH>."
7295 msgid ""
7296 "When the tracer is finished tracing, it can cause the tracee to continue "
7297 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7298 msgstr ""
7299 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7300 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7301 "ドにして、 実行を継続させることもできる。"
7302
7303 #. type: Plain text
7304 #: build/C/man2/ptrace.2:131
7305 msgid "The value of I<request> determines the action to be performed:"
7306 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7307
7308 #. type: TP
7309 #: build/C/man2/ptrace.2:131
7310 #, no-wrap
7311 msgid "B<PTRACE_TRACEME>"
7312 msgstr "B<PTRACE_TRACEME>"
7313
7314 #. type: Plain text
7315 #: build/C/man2/ptrace.2:141
7316 msgid ""
7317 "Indicate that this process is to be traced by its parent.  A process "
7318 "probably shouldn't make this request if its parent isn't expecting to trace "
7319 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7320 msgstr ""
7321 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
7322 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
7323 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
7324
7325 #. type: Plain text
7326 #: build/C/man2/ptrace.2:156
7327 #, fuzzy
7328 #| msgid ""
7329 #| "The above request is used only by the child process; the rest are used "
7330 #| "only by the parent.  In the following requests, I<pid> specifies the "
7331 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7332 #| "the child process must be stopped."
7333 msgid ""
7334 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7335 "requests are used only by the tracer.  In the following requests, I<pid> "
7336 "specifies the thread ID of the tracee to be acted on.  For requests other "
7337 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7338 "B<PTRACE_KILL>, the tracee must be stopped."
7339 msgstr ""
7340 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7341 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7342 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7343 "らない。"
7344
7345 #. type: TP
7346 #: build/C/man2/ptrace.2:156
7347 #, no-wrap
7348 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7349 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7350
7351 #. type: Plain text
7352 #: build/C/man2/ptrace.2:167
7353 #, fuzzy
7354 #| msgid ""
7355 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7356 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7357 #| "separate text and data address spaces, so the two requests are currently "
7358 #| "equivalent.  (The argument I<data> is ignored.)"
7359 msgid ""
7360 "Read a word at the address I<addr> in the tracee's memory, returning the "
7361 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7362 "text and data address spaces, so these two requests are currently "
7363 "equivalent.  (I<data> is ignored.)"
7364 msgstr ""
7365 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7366 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7367 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7368 "ものである。 (引き数 I<data> は無視される。)"
7369
7370 #. type: TP
7371 #: build/C/man2/ptrace.2:167
7372 #, no-wrap
7373 msgid "B<PTRACE_PEEKUSER>"
7374 msgstr "B<PTRACE_PEEKUSER>"
7375
7376 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7377 #.  and that is the name that seems common on other systems.
7378 #. type: Plain text
7379 #: build/C/man2/ptrace.2:185
7380 #, fuzzy
7381 #| msgid ""
7382 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7383 #| "registers and other information about the process (see I<E<lt>sys/user."
7384 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7385 #| "Typically the offset must be word-aligned, though this might vary by "
7386 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7387 msgid ""
7388 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7389 "registers and other information about the process (see I<E<lt>sys/user."
7390 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7391 "Typically, the offset must be word-aligned, though this might vary by "
7392 "architecture.  See NOTES.  (I<data> is ignored.)"
7393 msgstr ""
7394 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7395 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7396 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7397 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7398 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7399 "される。 )"
7400
7401 #. type: TP
7402 #: build/C/man2/ptrace.2:185
7403 #, no-wrap
7404 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7405 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7406
7407 #. type: Plain text
7408 #: build/C/man2/ptrace.2:197
7409 #, fuzzy
7410 #| msgid ""
7411 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7412 #| "above, the two requests are currently equivalent."
7413 msgid ""
7414 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7415 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7416 "equivalent."
7417 msgstr ""
7418 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7419 "に、現在のところ二つの 要求は同じものである。"
7420
7421 #. type: TP
7422 #: build/C/man2/ptrace.2:197
7423 #, no-wrap
7424 msgid "B<PTRACE_POKEUSER>"
7425 msgstr "B<PTRACE_POKEUSER>"
7426
7427 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7428 #.  and that is the name that seems common on other systems.
7429 #.  FIXME In the preceding sentence, which modifications are disallowed,
7430 #.  and when they are disallowed, how does user space discover that fact?
7431 #. type: Plain text
7432 #: build/C/man2/ptrace.2:213
7433 #, fuzzy
7434 #| msgid ""
7435 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7436 #| "above, the offset must typically be word-aligned.  In order to maintain "
7437 #| "the integrity of the kernel, some modifications to the USER area are "
7438 #| "disallowed."
7439 msgid ""
7440 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7441 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7442 "maintain the integrity of the kernel, some modifications to the USER area "
7443 "are disallowed."
7444 msgstr ""
7445 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7446 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7447 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7448 "されている。"
7449
7450 #. type: TP
7451 #: build/C/man2/ptrace.2:213
7452 #, no-wrap
7453 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7454 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7455
7456 #. type: Plain text
7457 #: build/C/man2/ptrace.2:236
7458 #, fuzzy
7459 #| msgid ""
7460 #| "Copies the child's general purpose or floating-point registers, "
7461 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7462 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7463 msgid ""
7464 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7465 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7466 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7467 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7468 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7469 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7470 "architectures."
7471 msgstr ""
7472 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7473 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7474 "すること。(I<addr> は無視される。)"
7475
7476 #. type: TP
7477 #: build/C/man2/ptrace.2:236
7478 #, fuzzy, no-wrap
7479 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7480 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7481 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7482
7483 #. type: Plain text
7484 #: build/C/man2/ptrace.2:257
7485 msgid ""
7486 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7487 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7488 "numerical value 1)  usually results in reading of general-purpose "
7489 "registers.  If the CPU has, for example, floating-point and/or vector "
7490 "registers, they can be retrieved by setting I<addr> to the corresponding "
7491 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7492 "the destination buffer's location and length.  On return, the kernel "
7493 "modifies B<iov.len> to indicate the actual number of bytes returned."
7494 msgstr ""
7495
7496 #. type: TP
7497 #: build/C/man2/ptrace.2:257
7498 #, no-wrap
7499 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7500 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7501
7502 #.  FIXME In the preceding sentence, which modifications are disallowed,
7503 #.  and when they are disallowed, how does user space discover that fact?
7504 #. type: Plain text
7505 #: build/C/man2/ptrace.2:282
7506 #, fuzzy
7507 #| msgid ""
7508 #| "Copies the child's general purpose or floating-point registers, "
7509 #| "respectively, from location I<data> in the parent.  As for "
7510 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7511 #| "disallowed.  (I<addr> is ignored.)"
7512 msgid ""
7513 "Modify the tracee's general-purpose or floating-point registers, "
7514 "respectively, from the address I<data> in the tracer.  As for "
7515 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7516 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7517 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7518 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7519 "B<PTRACE_SETFPREGS> are not present on all architectures."
7520 msgstr ""
7521 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7522 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7523 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7524
7525 #. type: TP
7526 #: build/C/man2/ptrace.2:282
7527 #, fuzzy, no-wrap
7528 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7529 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7530 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7531
7532 #. type: Plain text
7533 #: build/C/man2/ptrace.2:291
7534 msgid ""
7535 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7536 "analogous to B<PTRACE_GETREGSET>."
7537 msgstr ""
7538
7539 #. type: TP
7540 #: build/C/man2/ptrace.2:291
7541 #, no-wrap
7542 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7543 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7544
7545 #. type: Plain text
7546 #: build/C/man2/ptrace.2:303
7547 #, fuzzy
7548 #| msgid ""
7549 #| "Retrieve information about the signal that caused the stop.  Copies a "
7550 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7551 #| "I<data> in the parent.  (I<addr> is ignored.)"
7552 msgid ""
7553 "Retrieve information about the signal that caused the stop.  Copy a "
7554 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7555 "I<data> in the tracer.  (I<addr> is ignored.)"
7556 msgstr ""
7557 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7558 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7559 "る。 (I<addr> は無視される。)"
7560
7561 #. type: TP
7562 #: build/C/man2/ptrace.2:303
7563 #, no-wrap
7564 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7565 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7566
7567 #. type: Plain text
7568 #: build/C/man2/ptrace.2:319
7569 #, fuzzy
7570 #| msgid ""
7571 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7572 #| "I<data> in the parent to the child.  This will only affect signals that "
7573 #| "would normally be delivered to the child and were caught by the tracer.  "
7574 #| "It may be difficult to tell these normal signals from synthetic signals "
7575 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7576 msgid ""
7577 "Set signal information: copy a I<siginfo_t> structure from the address "
7578 "I<data> in the tracer to the tracee.  This will affect only signals that "
7579 "would normally be delivered to the tracee and were caught by the tracer.  It "
7580 "may be difficult to tell these normal signals from synthetic signals "
7581 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7582 msgstr ""
7583 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7584 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7585 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7586 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7587 "かもしれない。 (I<addr> は無視される。)"
7588
7589 #. type: TP
7590 #: build/C/man2/ptrace.2:319
7591 #, no-wrap
7592 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7593 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7594
7595 #. type: Plain text
7596 #: build/C/man2/ptrace.2:328
7597 #, fuzzy
7598 #| msgid ""
7599 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7600 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7601 #| "the following flags:"
7602 msgid ""
7603 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7604 "interpreted as a bit mask of options, which are specified by the following "
7605 "flags:"
7606 msgstr ""
7607 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7608 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7609 "下のフラグを指定できる:"
7610
7611 #. type: TP
7612 #: build/C/man2/ptrace.2:329
7613 #, fuzzy, no-wrap
7614 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7615 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7616 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7617
7618 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7619 #. type: Plain text
7620 #: build/C/man2/ptrace.2:337
7621 msgid ""
7622 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7623 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7624 "ensure that tracees can never escape the tracer's control."
7625 msgstr ""
7626
7627 #. type: TP
7628 #: build/C/man2/ptrace.2:337
7629 #, no-wrap
7630 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7631 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7632
7633 #. type: Plain text
7634 #: build/C/man2/ptrace.2:354
7635 #, fuzzy
7636 #| msgid ""
7637 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7638 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7639 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7640 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7641 msgid ""
7642 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7643 "newly cloned process, which will start with a B<SIGSTOP>, or "
7644 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7645 "tracer will return a I<status> value such that"
7646 msgstr ""
7647 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7648 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7649 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7650 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7651
7652 #. type: Plain text
7653 #: build/C/man2/ptrace.2:357
7654 #, no-wrap
7655 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7656 msgstr ""
7657
7658 #. type: Plain text
7659 #: build/C/man2/ptrace.2:361 build/C/man2/ptrace.2:447
7660 #: build/C/man2/ptrace.2:480
7661 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7662 msgstr ""
7663
7664 #. type: Plain text
7665 #: build/C/man2/ptrace.2:382
7666 #, fuzzy
7667 #| msgid ""
7668 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7669 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7670 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7671 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7672 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7673 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7674 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7675 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7676 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7677 msgid ""
7678 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7679 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7680 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7681 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7682 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7683 msgstr ""
7684 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7685 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7686 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7687 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7688 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7689 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7690 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7691 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7692 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7693
7694 #. type: TP
7695 #: build/C/man2/ptrace.2:382
7696 #, no-wrap
7697 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7698 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7699
7700 #. type: Plain text
7701 #: build/C/man2/ptrace.2:391
7702 msgid ""
7703 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7704 "will return a I<status> value such that"
7705 msgstr ""
7706
7707 #. type: Plain text
7708 #: build/C/man2/ptrace.2:394
7709 #, no-wrap
7710 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7711 msgstr ""
7712
7713 #. type: Plain text
7714 #: build/C/man2/ptrace.2:400
7715 msgid ""
7716 "If the execing thread is not a thread group leader, the thread ID is reset "
7717 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7718 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7719 msgstr ""
7720
7721 #. type: TP
7722 #: build/C/man2/ptrace.2:400
7723 #, no-wrap
7724 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7725 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7726
7727 #. type: Plain text
7728 #: build/C/man2/ptrace.2:408
7729 msgid ""
7730 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7731 "I<status> value such that"
7732 msgstr ""
7733
7734 #. type: Plain text
7735 #: build/C/man2/ptrace.2:411
7736 #, no-wrap
7737 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7738 msgstr ""
7739
7740 #. type: Plain text
7741 #: build/C/man2/ptrace.2:415
7742 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7743 msgstr ""
7744
7745 #. type: Plain text
7746 #: build/C/man2/ptrace.2:423
7747 #, fuzzy
7748 #| msgid ""
7749 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7750 #| "8>.  The child's exit status can be retrieved with "
7751 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7752 #| "when registers are still available, allowing the tracer to see where the "
7753 #| "exit occurred, whereas the normal exit notification is done after the "
7754 #| "process is finished exiting.  Even though context is available, the "
7755 #| "tracer cannot prevent the exit from happening at this point."
7756 msgid ""
7757 "The tracee is stopped early during process exit, when registers are still "
7758 "available, allowing the tracer to see where the exit occurred, whereas the "
7759 "normal exit notification is done after the process is finished exiting.  "
7760 "Even though context is available, the tracer cannot prevent the exit from "
7761 "happening at this point."
7762 msgstr ""
7763 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7764 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7765 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7766 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7767 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7768 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7769 "できない。"
7770
7771 #. type: TP
7772 #: build/C/man2/ptrace.2:423
7773 #, no-wrap
7774 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7775 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7776
7777 #. type: Plain text
7778 #: build/C/man2/ptrace.2:440
7779 #, fuzzy
7780 #| msgid ""
7781 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7782 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7783 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7784 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7785 msgid ""
7786 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7787 "newly forked process, which will start with a B<SIGSTOP>, or "
7788 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7789 "tracer will return a I<status> value such that"
7790 msgstr ""
7791 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7792 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7793 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7794 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7795
7796 #. type: Plain text
7797 #: build/C/man2/ptrace.2:443
7798 #, no-wrap
7799 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7800 msgstr ""
7801
7802 #. type: TP
7803 #: build/C/man2/ptrace.2:447
7804 #, no-wrap
7805 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7806 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7807
7808 #. type: Plain text
7809 #: build/C/man2/ptrace.2:456
7810 #, fuzzy
7811 #| msgid ""
7812 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7813 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7814 #| "the difference between normal traps and those caused by a syscall.  "
7815 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7816 msgid ""
7817 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7818 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7819 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7820 "may not work on all architectures.)"
7821 msgstr ""
7822 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7823 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7824 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7825 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7826
7827 #. type: TP
7828 #: build/C/man2/ptrace.2:456
7829 #, no-wrap
7830 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7831 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7832
7833 #. type: Plain text
7834 #: build/C/man2/ptrace.2:473
7835 #, fuzzy
7836 #| msgid ""
7837 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7838 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7839 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7840 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7841 msgid ""
7842 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7843 "newly vforked process, which will start with a B<SIGSTOP>, or "
7844 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7845 "tracer will return a I<status> value such that"
7846 msgstr ""
7847 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7848 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7849 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7850 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7851
7852 #. type: Plain text
7853 #: build/C/man2/ptrace.2:476
7854 #, no-wrap
7855 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7856 msgstr ""
7857
7858 #. type: TP
7859 #: build/C/man2/ptrace.2:480
7860 #, no-wrap
7861 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7862 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7863
7864 #. type: Plain text
7865 #: build/C/man2/ptrace.2:489
7866 msgid ""
7867 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7868 "by the tracer will return a I<status> value such that"
7869 msgstr ""
7870
7871 #. type: Plain text
7872 #: build/C/man2/ptrace.2:492
7873 #, no-wrap
7874 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7875 msgstr ""
7876
7877 #. type: Plain text
7878 #: build/C/man2/ptrace.2:496
7879 msgid ""
7880 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7881 "B<PTRACE_GETEVENTMSG>."
7882 msgstr ""
7883
7884 #. type: TP
7885 #: build/C/man2/ptrace.2:497
7886 #, no-wrap
7887 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7888 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7889
7890 #. type: Plain text
7891 #: build/C/man2/ptrace.2:517
7892 #, fuzzy
7893 #| msgid ""
7894 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7895 #| "just happened, placing it in the location I<data> in the parent.  For "
7896 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7897 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7898 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7899 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7900 #| "is ignored.)"
7901 msgid ""
7902 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7903 "just happened, placing it at the address I<data> in the tracer.  For "
7904 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7905 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7906 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7907 "ignored.)"
7908 msgstr ""
7909 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7910 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7911 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7912 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7913 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7914 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7915
7916 #. type: TP
7917 #: build/C/man2/ptrace.2:517
7918 #, no-wrap
7919 msgid "B<PTRACE_CONT>"
7920 msgstr "B<PTRACE_CONT>"
7921
7922 #. type: Plain text
7923 #: build/C/man2/ptrace.2:529
7924 #, fuzzy
7925 #| msgid ""
7926 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7927 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7928 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7929 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7930 #| "is ignored.)"
7931 msgid ""
7932 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7933 "interpreted as the number of a signal to be delivered to the tracee; "
7934 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7935 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7936 "is ignored.)"
7937 msgstr ""
7938 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7939 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7940 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7941 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7942 "は無視される。)"
7943
7944 #. type: TP
7945 #: build/C/man2/ptrace.2:529
7946 #, no-wrap
7947 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7948 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7949
7950 #. type: Plain text
7951 #: build/C/man2/ptrace.2:553
7952 #, fuzzy
7953 #| msgid ""
7954 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7955 #| "child to be stopped at the next entry to or exit from a system call, or "
7956 #| "after execution of a single instruction, respectively.  (The child will "
7957 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7958 #| "perspective, the child will appear to have been stopped by receipt of a "
7959 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7960 #| "inspect the arguments to the system call at the first stop, then do "
7961 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7962 #| "at the second stop.  The I<data> argument is treated as for "
7963 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7964 msgid ""
7965 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7966 "to be stopped at the next entry to or exit from a system call, or after "
7967 "execution of a single instruction, respectively.  (The tracee will also, as "
7968 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7969 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7970 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7971 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7972 "inspect the return value of the system call at the second stop.  The I<data> "
7973 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7974 msgstr ""
7975 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7976 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7977 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7978 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7979 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7980 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7981 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7982 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7983 "同じ様に解釈される。 (I<addr> は無視される。)"
7984
7985 #. type: TP
7986 #: build/C/man2/ptrace.2:553
7987 #, no-wrap
7988 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7989 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7990
7991 #.  As at 3.7
7992 #. type: Plain text
7993 #: build/C/man2/ptrace.2:574
7994 #, fuzzy
7995 #| msgid ""
7996 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7997 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7998 #| "but also singlestep if not a syscall.  This call is used by programs like "
7999 #| "User Mode Linux that want to emulate all the child's system calls.  The "
8000 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
8001 #| "not supported on all architectures.)"
8002 msgid ""
8003 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
8004 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
8005 "but also singlestep if not a system call.  This call is used by programs "
8006 "like User Mode Linux that want to emulate all the tracee's system calls.  "
8007 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
8008 "is ignored.  These requests are currently supported only on x86."
8009 msgstr ""
8010 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
8011 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
8012 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
8013 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
8014 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
8015 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
8016 "ポートされているわけではない。)"
8017
8018 #. type: TP
8019 #: build/C/man2/ptrace.2:574
8020 #, fuzzy, no-wrap
8021 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
8022 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
8023 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
8024
8025 #. type: Plain text
8026 #: build/C/man2/ptrace.2:585
8027 msgid ""
8028 "Restart the stopped tracee, but prevent it from executing.  The resulting "
8029 "state of the tracee is similar to a process which has been stopped by a "
8030 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
8031 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
8032 "by B<PTRACE_SEIZE>."
8033 msgstr ""
8034
8035 #. type: TP
8036 #: build/C/man2/ptrace.2:585
8037 #, no-wrap
8038 msgid "B<PTRACE_KILL>"
8039 msgstr "B<PTRACE_KILL>"
8040
8041 #. type: Plain text
8042 #: build/C/man2/ptrace.2:594
8043 #, fuzzy
8044 #| msgid ""
8045 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8046 #| "ignored.)"
8047 msgid ""
8048 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8049 "ignored.)"
8050 msgstr ""
8051 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
8052
8053 #.  [Note from Denys Vlasenko:
8054 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
8055 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
8056 #. type: Plain text
8057 #: build/C/man2/ptrace.2:613
8058 msgid ""
8059 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
8060 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
8061 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
8062 "may not work (i.e., may complete successfully but won't kill the tracee).  "
8063 "By contrast, sending a B<SIGKILL> directly has no such limitation."
8064 msgstr ""
8065
8066 #. type: TP
8067 #: build/C/man2/ptrace.2:613
8068 #, fuzzy, no-wrap
8069 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
8070 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
8071 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
8072
8073 #. type: Plain text
8074 #: build/C/man2/ptrace.2:641
8075 msgid ""
8076 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
8077 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
8078 "exit-stop is reported.  (The interrupted system call is restarted when the "
8079 "tracee is restarted.)  If the tracee was already stopped by a signal and "
8080 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
8081 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
8082 "is generated at the same time (for example, if a signal is sent to the "
8083 "tracee), this ptrace-stop happens.  If none of the above applies (for "
8084 "example, if the tracee is running in userspace), it stops with "
8085 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
8086 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
8087 msgstr ""
8088
8089 #. type: TP
8090 #: build/C/man2/ptrace.2:641
8091 #, no-wrap
8092 msgid "B<PTRACE_ATTACH>"
8093 msgstr "B<PTRACE_ATTACH>"
8094
8095 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
8096 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
8097 #.          Basically, it's not true for any Linux in practical use.
8098 #.  ; the behavior of the tracee is as if it had done a
8099 #.  .BR PTRACE_TRACEME .
8100 #.  The calling process actually becomes the parent of the tracee
8101 #.  process for most purposes (e.g., it will receive
8102 #.  notification of tracee events and appears in
8103 #.  .BR ps (1)
8104 #.  output as the tracee's parent), but a
8105 #.  .BR getppid (2)
8106 #.  by the tracee will still return the PID of the original parent.
8107 #. type: Plain text
8108 #: build/C/man2/ptrace.2:669
8109 msgid ""
8110 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8111 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
8112 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
8113 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
8114 "additional information.  (I<addr> and I<data> are ignored.)"
8115 msgstr ""
8116
8117 #. type: TP
8118 #: build/C/man2/ptrace.2:669
8119 #, fuzzy, no-wrap
8120 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
8121 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
8122 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
8123
8124 #. type: Plain text
8125 #: build/C/man2/ptrace.2:689
8126 msgid ""
8127 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8128 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
8129 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
8130 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
8131 "mask of ptrace options to activate immediately."
8132 msgstr ""
8133
8134 #. type: TP
8135 #: build/C/man2/ptrace.2:689
8136 #, no-wrap
8137 msgid "B<PTRACE_DETACH>"
8138 msgstr "B<PTRACE_DETACH>"
8139
8140 #. type: Plain text
8141 #: build/C/man2/ptrace.2:698
8142 #, fuzzy
8143 #| msgid ""
8144 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
8145 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
8146 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
8147 #| "a traced child can be detached in this way regardless of which method was "
8148 #| "used to initiate tracing.  (I<addr> is ignored.)"
8149 msgid ""
8150 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
8151 "Under Linux, a tracee can be detached in this way regardless of which method "
8152 "was used to initiate tracing.  (I<addr> is ignored.)"
8153 msgstr ""
8154 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
8155 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
8156 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
8157 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
8158 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
8159
8160 #. type: SS
8161 #: build/C/man2/ptrace.2:698
8162 #, no-wrap
8163 msgid "Death under ptrace"
8164 msgstr ""
8165
8166 #. type: Plain text
8167 #: build/C/man2/ptrace.2:707
8168 msgid ""
8169 "When a (possibly multithreaded) process receives a killing signal (one whose "
8170 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
8171 "process), all threads exit.  Tracees report their death to their tracer(s).  "
8172 "Notification of this event is delivered via B<waitpid>(2)."
8173 msgstr ""
8174
8175 #. type: Plain text
8176 #: build/C/man2/ptrace.2:716
8177 msgid ""
8178 "Note that the killing signal will first cause signal-delivery-stop (on one "
8179 "tracee only), and only after it is injected by the tracer (or after it was "
8180 "dispatched to a thread which isn't traced), will death from the signal "
8181 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
8182 "delivery-stop\" is explained below.)"
8183 msgstr ""
8184
8185 #. type: Plain text
8186 #: build/C/man2/ptrace.2:728
8187 msgid ""
8188 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
8189 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
8190 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
8191 "B<SIGKILL> always kills the process (all its threads), even if some threads "
8192 "of the process are ptraced."
8193 msgstr ""
8194
8195 #. type: Plain text
8196 #: build/C/man2/ptrace.2:733
8197 msgid ""
8198 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
8199 "Other threads are not affected."
8200 msgstr ""
8201
8202 #. type: Plain text
8203 #: build/C/man2/ptrace.2:737
8204 msgid ""
8205 "When any thread executes B<exit_group>(2), every tracee in its thread group "
8206 "reports its death to its tracer."
8207 msgstr ""
8208
8209 #. type: Plain text
8210 #: build/C/man2/ptrace.2:751
8211 msgid ""
8212 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
8213 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
8214 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
8215 "on B<execve>(2)  in a multithreaded process."
8216 msgstr ""
8217
8218 #. type: Plain text
8219 #: build/C/man2/ptrace.2:776
8220 msgid ""
8221 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
8222 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
8223 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
8224 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
8225 "exists but is not ptrace-stopped (for commands which require a stopped "
8226 "tracee), or if it is not traced by the process which issued the ptrace "
8227 "call.  The tracer needs to keep track of the stopped/running state of the "
8228 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
8229 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
8230 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
8231 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
8232 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
8233 "yet fully dead\", but already refusing ptrace requests."
8234 msgstr ""
8235
8236 #. type: Plain text
8237 #: build/C/man2/ptrace.2:790
8238 msgid ""
8239 "The tracer can't assume that the tracee I<always> ends its life by reporting "
8240 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
8241 "does not occur.  For example, if a thread other than thread group leader "
8242 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
8243 "any subsequent ptrace stops will be reported under the thread group leader's "
8244 "PID."
8245 msgstr ""
8246
8247 #. type: SS
8248 #: build/C/man2/ptrace.2:790
8249 #, no-wrap
8250 msgid "Stopped states"
8251 msgstr ""
8252
8253 #. type: Plain text
8254 #: build/C/man2/ptrace.2:812
8255 msgid ""
8256 "A tracee can be in two states: running or stopped.  For the purposes of "
8257 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
8258 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
8259 "tracee is blocked for a long time.  The state of the tracee after "
8260 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
8261 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
8262 "notifications), but it also may be considered \"stopped\" because it is not "
8263 "executing instructions (is not scheduled), and if it was in group-stop "
8264 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
8265 "received."
8266 msgstr ""
8267
8268 #. type: Plain text
8269 #: build/C/man2/ptrace.2:816
8270 msgid ""
8271 "There are many kinds of states when the tracee is stopped, and in ptrace "
8272 "discussions they are often conflated.  Therefore, it is important to use "
8273 "precise terms."
8274 msgstr ""
8275
8276 #. type: Plain text
8277 #: build/C/man2/ptrace.2:827
8278 msgid ""
8279 "In this manual page, any stopped state in which the tracee is ready to "
8280 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
8281 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
8282 "I<syscall-stop>, and so on.  These stopped states are described in detail "
8283 "below."
8284 msgstr ""
8285
8286 #. type: Plain text
8287 #: build/C/man2/ptrace.2:832
8288 msgid ""
8289 "When the running tracee enters ptrace-stop, it notifies its tracer using "
8290 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
8291 "manual page assumes that the tracer waits with:"
8292 msgstr ""
8293
8294 #. type: Plain text
8295 #: build/C/man2/ptrace.2:834
8296 #, no-wrap
8297 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8298 msgstr ""
8299
8300 #.  Denys Vlasenko:
8301 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8302 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8303 #.      rules different if user wants to use waitid? Will waitid require
8304 #.      WEXITED?
8305 #. type: Plain text
8306 #: build/C/man2/ptrace.2:846
8307 msgid ""
8308 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8309 "and I<WIFSTOPPED(status)> true."
8310 msgstr ""
8311
8312 #. type: Plain text
8313 #: build/C/man2/ptrace.2:854
8314 msgid ""
8315 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8316 "but implies their functionality."
8317 msgstr ""
8318
8319 #. type: Plain text
8320 #: build/C/man2/ptrace.2:861
8321 msgid ""
8322 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8323 "recommended: the \"continued\" state is per-process and consuming it can "
8324 "confuse the real parent of the tracee."
8325 msgstr ""
8326
8327 #. type: Plain text
8328 #: build/C/man2/ptrace.2:869
8329 msgid ""
8330 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8331 "results available yet\")  even if the tracer knows there should be a "
8332 "notification.  Example:"
8333 msgstr ""
8334
8335 #. type: Plain text
8336 #: build/C/man2/ptrace.2:878
8337 #, no-wrap
8338 msgid ""
8339 "    errno = 0;\n"
8340 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8341 "    if (errno == ESRCH) {\n"
8342 "        /* tracee is dead */\n"
8343 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8344 "        /* r can still be 0 here! */\n"
8345 "    }\n"
8346 msgstr ""
8347
8348 #. type: Plain text
8349 #: build/C/man2/ptrace.2:901
8350 msgid ""
8351 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8352 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8353 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8354 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8355 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8356 "> macro can't be used to perform this examination, because it returns the "
8357 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8358 msgstr ""
8359
8360 #. type: SS
8361 #: build/C/man2/ptrace.2:901
8362 #, no-wrap
8363 msgid "Signal-delivery-stop"
8364 msgstr ""
8365
8366 #. type: Plain text
8367 #: build/C/man2/ptrace.2:921
8368 msgid ""
8369 "When a (possibly multithreaded) process receives any signal except "
8370 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8371 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8372 "can be explicitly selected by the caller.)  If the selected thread is "
8373 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8374 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8375 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8376 "the next ptrace restart request.  This second step of signal delivery is "
8377 "called I<signal injection> in this manual page.  Note that if the signal is "
8378 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8379 "with the usual exception that B<SIGSTOP> can't be blocked."
8380 msgstr ""
8381
8382 #. type: Plain text
8383 #: build/C/man2/ptrace.2:935
8384 msgid ""
8385 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8386 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8387 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8388 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8389 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8390 "group-stop; see below."
8391 msgstr ""
8392
8393 #. type: SS
8394 #: build/C/man2/ptrace.2:935
8395 #, no-wrap
8396 msgid "Signal injection and suppression"
8397 msgstr ""
8398
8399 #. type: Plain text
8400 #: build/C/man2/ptrace.2:938
8401 msgid ""
8402 "After signal-delivery-stop is observed by the tracer, the tracer should "
8403 "restart the tracee with the call"
8404 msgstr ""
8405
8406 #. type: Plain text
8407 #: build/C/man2/ptrace.2:940
8408 #, no-wrap
8409 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8410 msgstr ""
8411
8412 #. type: Plain text
8413 #: build/C/man2/ptrace.2:953
8414 msgid ""
8415 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8416 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8417 "delivered.  This operation is called I<signal injection> in this manual "
8418 "page, to distinguish it from signal-delivery-stop."
8419 msgstr ""
8420
8421 #. type: Plain text
8422 #: build/C/man2/ptrace.2:959
8423 msgid ""
8424 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8425 "tracer can cause a different signal to be injected."
8426 msgstr ""
8427
8428 #. type: Plain text
8429 #: build/C/man2/ptrace.2:975
8430 msgid ""
8431 "Note that a suppressed signal still causes system calls to return "
8432 "prematurely.  In this case system calls will be restarted: the tracer will "
8433 "observe the tracee to reexecute the interrupted system call (or "
8434 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8435 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8436 "calls (such as B<poll>(2))  which are not restartable after signal are "
8437 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8438 "some syscalls to fail with B<EINTR> even though no observable signal is "
8439 "injected to the tracee."
8440 msgstr ""
8441
8442 #. type: Plain text
8443 #: build/C/man2/ptrace.2:986
8444 msgid ""
8445 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8446 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8447 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8448 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8449 "instead."
8450 msgstr ""
8451
8452 #. type: Plain text
8453 #: build/C/man2/ptrace.2:993
8454 msgid ""
8455 "The fact that signal injection requests may be ignored when restarting the "
8456 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8457 "confusion among ptrace users.  One typical scenario is that the tracer "
8458 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8459 "tracee with"
8460 msgstr ""
8461
8462 #. type: Plain text
8463 #: build/C/man2/ptrace.2:995
8464 #, no-wrap
8465 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8466 msgstr ""
8467
8468 #. type: Plain text
8469 #: build/C/man2/ptrace.2:1001
8470 msgid ""
8471 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8472 "the tracee continues to run."
8473 msgstr ""
8474
8475 #. type: Plain text
8476 #: build/C/man2/ptrace.2:1021
8477 msgid ""
8478 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8479 "group-stopped process.  This side effect happens before signal-delivery-"
8480 "stop.  The tracer can't suppress this side effect (it can only suppress "
8481 "signal injection, which only causes the B<SIGCONT> handler to not be "
8482 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8483 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8484 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8485 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8486 "by the tracee after it was sent."
8487 msgstr ""
8488
8489 #. type: Plain text
8490 #: build/C/man2/ptrace.2:1025
8491 msgid ""
8492 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8493 "side effect happens after signal injection, and therefore can be suppressed "
8494 "by the tracer."
8495 msgstr ""
8496
8497 #
8498 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8499 #.  there is:
8500 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8501 #.              if (signr == SIGSTOP)
8502 #.                      continue;
8503 #. type: Plain text
8504 #: build/C/man2/ptrace.2:1035
8505 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8506 msgstr ""
8507
8508 #. type: Plain text
8509 #: build/C/man2/ptrace.2:1052
8510 msgid ""
8511 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8512 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8513 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8514 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8515 "match, otherwise the result is undefined."
8516 msgstr ""
8517
8518 #. type: SS
8519 #: build/C/man2/ptrace.2:1052
8520 #, no-wrap
8521 msgid "Group-stop"
8522 msgstr ""
8523
8524 #. type: Plain text
8525 #: build/C/man2/ptrace.2:1064
8526 msgid ""
8527 "When a (possibly multithreaded) process receives a stopping signal, all "
8528 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8529 "that the stopping signal will first cause signal-delivery-stop (on one "
8530 "tracee only), and only after it is injected by the tracer (or after it was "
8531 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8532 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8533 "reports its group-stop separately to the corresponding tracer."
8534 msgstr ""
8535
8536 #. type: Plain text
8537 #: build/C/man2/ptrace.2:1073
8538 msgid ""
8539 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8540 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8541 "(status)>.  The same result is returned by some other classes of ptrace-"
8542 "stops, therefore the recommended practice is to perform the call"
8543 msgstr ""
8544
8545 #. type: Plain text
8546 #: build/C/man2/ptrace.2:1075
8547 #, no-wrap
8548 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8549 msgstr ""
8550
8551 #. type: Plain text
8552 #: build/C/man2/ptrace.2:1096
8553 msgid ""
8554 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8555 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8556 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8557 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8558 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8559 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8560 "the tracee.)"
8561 msgstr ""
8562
8563 #. type: Plain text
8564 #: build/C/man2/ptrace.2:1106
8565 msgid ""
8566 "If tracee was attached using I<PTRACE_SEIZE>, group-stop is indicated by "
8567 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
8568 "allows detection of group-stops without requiring an extra "
8569 "B<PTRACE_GETSIGINFO> call."
8570 msgstr ""
8571
8572 #. type: Plain text
8573 #: build/C/man2/ptrace.2:1115
8574 msgid ""
8575 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8576 "it restarts or kills it, the tracee will not run, and will not send "
8577 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8578 "enters into another B<waitpid>(2)  call."
8579 msgstr ""
8580
8581 #. type: Plain text
8582 #: build/C/man2/ptrace.2:1129
8583 msgid ""
8584 "The kernel behavior described in the previous paragraph causes a problem "
8585 "with transparent handling of stopping signals.  If the tracer restarts the "
8586 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8587 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8588 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8589 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8590 "signals to have no effect on the tracee."
8591 msgstr ""
8592
8593 #. type: Plain text
8594 #: build/C/man2/ptrace.2:1140
8595 msgid ""
8596 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8597 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8598 "in a way where it does not execute, but waits for a new event which it can "
8599 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8600 msgstr ""
8601
8602 #. type: SS
8603 #: build/C/man2/ptrace.2:1140
8604 #, no-wrap
8605 msgid "PTRACE_EVENT stops"
8606 msgstr ""
8607
8608 #. type: Plain text
8609 #: build/C/man2/ptrace.2:1146
8610 msgid ""
8611 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8612 "stops called B<PTRACE_EVENT> stops."
8613 msgstr ""
8614
8615 #. type: Plain text
8616 #: build/C/man2/ptrace.2:1160
8617 msgid ""
8618 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8619 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8620 "additional bit is set in the higher byte of the status word: the value "
8621 "I<statusE<gt>E<gt>8> will be"
8622 msgstr ""
8623
8624 #. type: Plain text
8625 #: build/C/man2/ptrace.2:1162
8626 #, no-wrap
8627 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8628 msgstr ""
8629
8630 #. type: Plain text
8631 #: build/C/man2/ptrace.2:1164
8632 msgid "The following events exist:"
8633 msgstr ""
8634
8635 #. type: TP
8636 #: build/C/man2/ptrace.2:1164
8637 #, no-wrap
8638 msgid "B<PTRACE_EVENT_VFORK>"
8639 msgstr "B<PTRACE_EVENT_VFORK>"
8640
8641 #. type: Plain text
8642 #: build/C/man2/ptrace.2:1177
8643 msgid ""
8644 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8645 "flag.  When the tracee is continued after this stop, it will wait for child "
8646 "to exit/exec before continuing its execution (in other words, the usual "
8647 "behavior on B<vfork>(2))."
8648 msgstr ""
8649
8650 #. type: TP
8651 #: build/C/man2/ptrace.2:1177
8652 #, no-wrap
8653 msgid "B<PTRACE_EVENT_FORK>"
8654 msgstr "B<PTRACE_EVENT_FORK>"
8655
8656 #. type: Plain text
8657 #: build/C/man2/ptrace.2:1185
8658 msgid ""
8659 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8660 "to B<SIGCHLD>."
8661 msgstr ""
8662
8663 #. type: TP
8664 #: build/C/man2/ptrace.2:1185
8665 #, no-wrap
8666 msgid "B<PTRACE_EVENT_CLONE>"
8667 msgstr "B<PTRACE_EVENT_CLONE>"
8668
8669 #. type: Plain text
8670 #: build/C/man2/ptrace.2:1189
8671 msgid "Stop before return from B<clone>(2)."
8672 msgstr ""
8673
8674 #. type: TP
8675 #: build/C/man2/ptrace.2:1189
8676 #, no-wrap
8677 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8678 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8679
8680 #. type: Plain text
8681 #: build/C/man2/ptrace.2:1199
8682 msgid ""
8683 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8684 "flag, but after the child unblocked this tracee by exiting or execing."
8685 msgstr ""
8686
8687 #. type: Plain text
8688 #: build/C/man2/ptrace.2:1205
8689 msgid ""
8690 "For all four stops described above, the stop occurs in the parent (i.e., the "
8691 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8692 "to retrieve the new thread's ID."
8693 msgstr ""
8694
8695 #. type: TP
8696 #: build/C/man2/ptrace.2:1205
8697 #, no-wrap
8698 msgid "B<PTRACE_EVENT_EXEC>"
8699 msgstr "B<PTRACE_EVENT_EXEC>"
8700
8701 #. type: Plain text
8702 #: build/C/man2/ptrace.2:1212
8703 msgid ""
8704 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8705 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8706 msgstr ""
8707
8708 #. type: TP
8709 #: build/C/man2/ptrace.2:1212
8710 #, no-wrap
8711 msgid "B<PTRACE_EVENT_EXIT>"
8712 msgstr "B<PTRACE_EVENT_EXIT>"
8713
8714 #. type: Plain text
8715 #: build/C/man2/ptrace.2:1228
8716 msgid ""
8717 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8718 "exit caused by B<execve>(2)  in a multithreaded process.  "
8719 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8720 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8721 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8722 msgstr ""
8723
8724 #. type: TP
8725 #: build/C/man2/ptrace.2:1228
8726 #, fuzzy, no-wrap
8727 #| msgid "B<PTRACE_EVENT_FORK>"
8728 msgid "B<PTRACE_EVENT_STOP>"
8729 msgstr "B<PTRACE_EVENT_FORK>"
8730
8731 #. type: Plain text
8732 #: build/C/man2/ptrace.2:1240
8733 msgid ""
8734 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
8735 "ptrace-stop when a new child is attached (only if attached using "
8736 "B<PTRACE_SEIZE>).  or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
8737 msgstr ""
8738
8739 #. type: Plain text
8740 #: build/C/man2/ptrace.2:1252
8741 msgid ""
8742 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8743 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8744 msgstr ""
8745
8746 #. type: SS
8747 #: build/C/man2/ptrace.2:1252
8748 #, no-wrap
8749 msgid "Syscall-stops"
8750 msgstr ""
8751
8752 #. type: Plain text
8753 #: build/C/man2/ptrace.2:1265
8754 msgid ""
8755 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8756 "enter-stop just prior to entering any system call.  If the tracer restarts "
8757 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8758 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8759 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8760 "exit-stop; it happens I<after> syscall-exit-stop.)"
8761 msgstr ""
8762
8763 #. type: Plain text
8764 #: build/C/man2/ptrace.2:1279
8765 msgid ""
8766 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8767 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8768 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8769 "(2)  happened in another thread, and that thread is not traced by the same "
8770 "tracer; this situation is discussed later)."
8771 msgstr ""
8772
8773 #. type: Plain text
8774 #: build/C/man2/ptrace.2:1294
8775 msgid ""
8776 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8777 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8778 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8779 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8780 "0x80)>."
8781 msgstr ""
8782
8783 #. type: Plain text
8784 #: build/C/man2/ptrace.2:1300
8785 msgid ""
8786 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8787 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8788 msgstr ""
8789
8790 #. type: TP
8791 #: build/C/man2/ptrace.2:1300
8792 #, no-wrap
8793 msgid "I<si_code> E<lt>= 0"
8794 msgstr ""
8795
8796 #. type: Plain text
8797 #: build/C/man2/ptrace.2:1312
8798 msgid ""
8799 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8800 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8801 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8802 "asynchronous I/O request."
8803 msgstr ""
8804
8805 #. type: TP
8806 #: build/C/man2/ptrace.2:1312
8807 #, no-wrap
8808 msgid "I<si_code> == SI_KERNEL (0x80)"
8809 msgstr ""
8810
8811 #. type: Plain text
8812 #: build/C/man2/ptrace.2:1316
8813 msgid "B<SIGTRAP> was sent by the kernel."
8814 msgstr ""
8815
8816 #. type: TP
8817 #: build/C/man2/ptrace.2:1316
8818 #, no-wrap
8819 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8820 msgstr ""
8821
8822 #. type: Plain text
8823 #: build/C/man2/ptrace.2:1319
8824 msgid "This is a syscall-stop."
8825 msgstr ""
8826
8827 #. type: Plain text
8828 #: build/C/man2/ptrace.2:1324
8829 msgid ""
8830 "However, syscall-stops happen very often (twice per system call), and "
8831 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8832 "expensive."
8833 msgstr ""
8834
8835 #. type: Plain text
8836 #: build/C/man2/ptrace.2:1347
8837 msgid ""
8838 "Some architectures allow the cases to be distinguished by examining "
8839 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8840 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8841 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8842 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8843 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8844 "and can be detected this way.  But such detection is fragile and is best "
8845 "avoided."
8846 msgstr ""
8847
8848 #. type: Plain text
8849 #: build/C/man2/ptrace.2:1353
8850 msgid ""
8851 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8852 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8853 "reliable and does not incur a performance penalty."
8854 msgstr ""
8855
8856 #. type: Plain text
8857 #: build/C/man2/ptrace.2:1364
8858 msgid ""
8859 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8860 "other by the tracer.  The tracer needs to keep track of the sequence of "
8861 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8862 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8863 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8864 "kinds of ptrace-stop can occur in between."
8865 msgstr ""
8866
8867 #. type: Plain text
8868 #: build/C/man2/ptrace.2:1369
8869 msgid ""
8870 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8871 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8872 msgstr ""
8873
8874 #. type: Plain text
8875 #: build/C/man2/ptrace.2:1381
8876 msgid ""
8877 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8878 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8879 msgstr ""
8880
8881 #. type: SS
8882 #: build/C/man2/ptrace.2:1381
8883 #, no-wrap
8884 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8885 msgstr ""
8886
8887 #
8888 #.  FIXME
8889 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8890 #.  PTRACE_SYSEMU_SINGLESTEP
8891 #. type: Plain text
8892 #: build/C/man2/ptrace.2:1387
8893 msgid "[Details of these kinds of stops are yet to be documented.]"
8894 msgstr ""
8895
8896 #. type: SS
8897 #: build/C/man2/ptrace.2:1387
8898 #, no-wrap
8899 msgid "Informational and restarting ptrace commands"
8900 msgstr ""
8901
8902 #. type: Plain text
8903 #: build/C/man2/ptrace.2:1397
8904 msgid ""
8905 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8906 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8907 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8908 msgstr ""
8909
8910 #. type: Plain text
8911 #: build/C/man2/ptrace.2:1402
8912 msgid ""
8913 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8914 "tracee using informational commands.  These commands leave the tracee in "
8915 "ptrace-stopped state:"
8916 msgstr ""
8917
8918 #. type: Plain text
8919 #: build/C/man2/ptrace.2:1414
8920 #, no-wrap
8921 msgid ""
8922 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8923 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8924 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8925 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8926 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8927 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8928 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8929 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8930 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8931 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8932 msgstr ""
8933
8934 #. type: Plain text
8935 #: build/C/man2/ptrace.2:1426
8936 msgid ""
8937 "Note that some errors are not reported.  For example, setting signal "
8938 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8939 "call may succeed (return 0 and not set I<errno>); querying "
8940 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8941 "ptrace-stop is not documented as returning a meaningful event message."
8942 msgstr ""
8943
8944 #. type: Plain text
8945 #: build/C/man2/ptrace.2:1428
8946 msgid "The call"
8947 msgstr ""
8948
8949 #. type: Plain text
8950 #: build/C/man2/ptrace.2:1430
8951 #, no-wrap
8952 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8953 msgstr ""
8954
8955 #. type: Plain text
8956 #: build/C/man2/ptrace.2:1439
8957 msgid ""
8958 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8959 "inherited by new tracees created and \"auto-attached\" via active "
8960 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8961 "options."
8962 msgstr ""
8963
8964 #. type: Plain text
8965 #: build/C/man2/ptrace.2:1442
8966 msgid ""
8967 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8968 "the form:"
8969 msgstr ""
8970
8971 #. type: Plain text
8972 #: build/C/man2/ptrace.2:1444
8973 #, no-wrap
8974 msgid "    ptrace(cmd, pid, 0, sig);\n"
8975 msgstr ""
8976
8977 #. type: Plain text
8978 #: build/C/man2/ptrace.2:1465
8979 msgid ""
8980 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8981 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8982 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8983 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8984 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8985 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8986 msgstr ""
8987
8988 #. type: SS
8989 #: build/C/man2/ptrace.2:1465
8990 #, no-wrap
8991 msgid "Attaching and detaching"
8992 msgstr ""
8993
8994 #. type: Plain text
8995 #: build/C/man2/ptrace.2:1467
8996 msgid "A thread can be attached to the tracer using the call"
8997 msgstr ""
8998
8999 #. type: Plain text
9000 #: build/C/man2/ptrace.2:1469
9001 #, no-wrap
9002 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
9003 msgstr ""
9004
9005 #. type: Plain text
9006 #: build/C/man2/ptrace.2:1471 build/C/man2/ptrace.2:1968
9007 msgid "or"
9008 msgstr ""
9009
9010 #. type: Plain text
9011 #: build/C/man2/ptrace.2:1473
9012 #, no-wrap
9013 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
9014 msgstr ""
9015
9016 #
9017 #.  FIXME: Describe how to attach to a thread which is already
9018 #.         group-stopped.
9019 #. type: Plain text
9020 #: build/C/man2/ptrace.2:1498
9021 msgid ""
9022 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
9023 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
9024 "signals are concurrently sent to this thread during attach, the tracer may "
9025 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
9026 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
9027 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
9028 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
9029 "B<SIGSTOP> may be lost."
9030 msgstr ""
9031
9032 #. type: Plain text
9033 #: build/C/man2/ptrace.2:1505
9034 msgid ""
9035 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
9036 "may cause a stray B<EINTR> return from the currently executing system call "
9037 "in the tracee, as described in the \"Signal injection and suppression\" "
9038 "section."
9039 msgstr ""
9040
9041 #. type: Plain text
9042 #: build/C/man2/ptrace.2:1517
9043 msgid ""
9044 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
9045 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
9046 "after attach (or at any other time) without sending it any signals, use "
9047 "B<PTRACE_INTERRUPT> command."
9048 msgstr ""
9049
9050 #. type: Plain text
9051 #: build/C/man2/ptrace.2:1519
9052 msgid "The request"
9053 msgstr ""
9054
9055 #. type: Plain text
9056 #: build/C/man2/ptrace.2:1521
9057 #, no-wrap
9058 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
9059 msgstr ""
9060
9061 #. type: Plain text
9062 #: build/C/man2/ptrace.2:1527
9063 msgid ""
9064 "turns the calling thread into a tracee.  The thread continues to run "
9065 "(doesn't enter ptrace-stop).  A common practice is to follow the "
9066 "B<PTRACE_TRACEME> with"
9067 msgstr ""
9068
9069 #. type: Plain text
9070 #: build/C/man2/ptrace.2:1529
9071 #, no-wrap
9072 msgid "    raise(SIGSTOP);\n"
9073 msgstr ""
9074
9075 #. type: Plain text
9076 #: build/C/man2/ptrace.2:1532
9077 msgid ""
9078 "and allow the parent (which is our tracer now) to observe our signal-"
9079 "delivery-stop."
9080 msgstr ""
9081
9082 #. type: Plain text
9083 #: build/C/man2/ptrace.2:1556
9084 msgid ""
9085 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
9086 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
9087 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
9088 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
9089 "other kinds of B<clone>(2), are automatically attached to the same tracer "
9090 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
9091 "them to enter signal-delivery-stop after they exit the system call which "
9092 "created them."
9093 msgstr ""
9094
9095 #. type: Plain text
9096 #: build/C/man2/ptrace.2:1558
9097 msgid "Detaching of the tracee is performed by:"
9098 msgstr ""
9099
9100 #. type: Plain text
9101 #: build/C/man2/ptrace.2:1560
9102 #, no-wrap
9103 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
9104 msgstr ""
9105
9106 #. type: Plain text
9107 #: build/C/man2/ptrace.2:1568
9108 msgid ""
9109 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
9110 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
9111 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
9112 msgstr ""
9113
9114 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
9115 #.         doesn't run, but continues to wait for SIGCONT.
9116 #. type: Plain text
9117 #: build/C/man2/ptrace.2:1592
9118 msgid ""
9119 "If the tracee is running when the tracer wants to detach it, the usual "
9120 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
9121 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
9122 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
9123 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
9124 "is that the tracee may enter other ptrace-stops and needs to be restarted "
9125 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
9126 "to be sure that the tracee is not already ptrace-stopped, because no signal "
9127 "delivery happens while it is\\(emnot even B<SIGSTOP>."
9128 msgstr ""
9129
9130 #. type: Plain text
9131 #: build/C/man2/ptrace.2:1600
9132 msgid ""
9133 "If the tracer dies, all tracees are automatically detached and restarted, "
9134 "unless they were in group-stop.  Handling of restart from group-stop is "
9135 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
9136 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
9137 "stop, the pending signal is injected."
9138 msgstr ""
9139
9140 #. type: SS
9141 #: build/C/man2/ptrace.2:1600
9142 #, no-wrap
9143 msgid "execve(2) under ptrace"
9144 msgstr ""
9145
9146 #
9147 #.  clone(2) CLONE_THREAD says:
9148 #.      If  any  of the threads in a thread group performs an execve(2),
9149 #.      then all threads other than the thread group leader are terminated,
9150 #.      and the new program is executed in the thread group leader.
9151 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
9152 #. type: Plain text
9153 #: build/C/man2/ptrace.2:1619
9154 msgid ""
9155 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
9156 "destroys all other threads in the process, and resets the thread ID of the "
9157 "execing thread to the thread group ID (process ID).  (Or, to put things "
9158 "another way, when a multithreaded process does an B<execve>(2), at "
9159 "completion of the call, it appears as though the B<execve>(2)  occurred in "
9160 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
9161 "This resetting of the thread ID looks very confusing to tracers:"
9162 msgstr ""
9163
9164 #. type: Plain text
9165 #: build/C/man2/ptrace.2:1629
9166 msgid ""
9167 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
9168 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
9169 "the thread group leader report death as if they exited via B<_exit>(2)  with "
9170 "exit code 0."
9171 msgstr ""
9172
9173 #. type: Plain text
9174 #: build/C/man2/ptrace.2:1637
9175 msgid ""
9176 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
9177 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
9178 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
9179 "ID is reset to be the same as its process ID, which is the same as the "
9180 "thread group leader's thread ID."
9181 msgstr ""
9182
9183 #. type: Plain text
9184 #: build/C/man2/ptrace.2:1643
9185 msgid ""
9186 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
9187 "option was turned on."
9188 msgstr ""
9189
9190 #. type: Plain text
9191 #: build/C/man2/ptrace.2:1664
9192 msgid ""
9193 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
9194 "this time, it appears to the tracer that the dead thread leader \"reappears "
9195 "from nowhere\".  (Note: the thread group leader does not report death via "
9196 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
9197 "eliminates the possibility that the tracer will see it dying and then "
9198 "reappearing.)  If the thread group leader was still alive, for the tracer "
9199 "this may look as if thread group leader returns from a different system call "
9200 "than it entered, or even \"returned from a system call even though it was "
9201 "not in any system call\".  If the thread group leader was not traced (or was "
9202 "traced by a different tracer), then during B<execve>(2)  it will appear as "
9203 "if it has become a tracee of the tracer of the execing tracee."
9204 msgstr ""
9205
9206 #. type: Plain text
9207 #: build/C/man2/ptrace.2:1667
9208 msgid ""
9209 "All of the above effects are the artifacts of the thread ID change in the "
9210 "tracee."
9211 msgstr ""
9212
9213 #. type: Plain text
9214 #: build/C/man2/ptrace.2:1687
9215 msgid ""
9216 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
9217 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
9218 "before B<execve>(2)  returns.  In this stop, the tracer can use "
9219 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
9220 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
9221 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
9222 msgstr ""
9223
9224 #. type: Plain text
9225 #: build/C/man2/ptrace.2:1693
9226 msgid ""
9227 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
9228 "guaranteed that except this tracee and the thread group leader, no other "
9229 "threads from the process are alive."
9230 msgstr ""
9231
9232 #. type: Plain text
9233 #: build/C/man2/ptrace.2:1701
9234 msgid ""
9235 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
9236 "clean up all its internal data structures describing the threads of this "
9237 "process, and retain only one data structure\\(emone which describes the "
9238 "single still running tracee, with"
9239 msgstr ""
9240
9241 #. type: Plain text
9242 #: build/C/man2/ptrace.2:1703
9243 #, no-wrap
9244 msgid "    thread ID == thread group ID == process ID.\n"
9245 msgstr ""
9246
9247 #. type: Plain text
9248 #: build/C/man2/ptrace.2:1707
9249 msgid "Example: two threads call B<execve>(2)  at the same time:"
9250 msgstr ""
9251
9252 #. type: Plain text
9253 #: build/C/man2/ptrace.2:1718
9254 #, no-wrap
9255 msgid ""
9256 "*** we get syscall-enter-stop in thread 1: **\n"
9257 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
9258 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
9259 "*** we get syscall-enter-stop in thread 2: **\n"
9260 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
9261 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
9262 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
9263 "*** we get syscall-exit-stop for PID0: **\n"
9264 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
9265 msgstr ""
9266
9267 #. type: Plain text
9268 #: build/C/man2/ptrace.2:1741
9269 msgid ""
9270 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
9271 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
9272 "(2)  returns.  This is an ordinary signal (similar to one which can be "
9273 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
9274 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
9275 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
9276 "delivered (much) later."
9277 msgstr ""
9278
9279 #. type: Plain text
9280 #: build/C/man2/ptrace.2:1760
9281 msgid ""
9282 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
9283 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
9284 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
9285 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
9286 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
9287 "B<SIGTRAP> is the recommended approach."
9288 msgstr ""
9289
9290 #. type: SS
9291 #: build/C/man2/ptrace.2:1760
9292 #, no-wrap
9293 msgid "Real parent"
9294 msgstr ""
9295
9296 #. type: Plain text
9297 #: build/C/man2/ptrace.2:1767
9298 msgid ""
9299 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
9300 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
9301 "receiving several kinds of B<waitpid>(2)  notifications when the child "
9302 "process is traced by some other process."
9303 msgstr ""
9304
9305 #. type: Plain text
9306 #: build/C/man2/ptrace.2:1770
9307 msgid ""
9308 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9309 "exist; see BUGS below."
9310 msgstr ""
9311
9312 #. type: Plain text
9313 #: build/C/man2/ptrace.2:1772
9314 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9315 msgstr ""
9316
9317 #. type: Plain text
9318 #: build/C/man2/ptrace.2:1780
9319 msgid ""
9320 "exit/death by signal is reported first to the tracer, then, when the tracer "
9321 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9322 "only when the whole multithreaded process exits).  If the tracer and the "
9323 "real parent are the same process, the report is sent only once."
9324 msgstr ""
9325
9326 #. type: Plain text
9327 #: build/C/man2/ptrace.2:1791
9328 #, fuzzy
9329 #| msgid ""
9330 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9331 #| "other requests return zero.  On error, all requests return -1, and "
9332 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9333 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9334 #| "such requests to determine whether or not an error occurred."
9335 msgid ""
9336 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9337 "requests return zero.  (On Linux, this is done in the libc wrapper around "
9338 "ptrace system call.  On the system call level, B<PTRACE_PEEK*> requests have "
9339 "a different API: they store the result at the address specified by I<data> "
9340 "parameter, and return value is the error flag.)"
9341 msgstr ""
9342 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9343 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9344 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9345 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9346 "なければならない。"
9347
9348 #. type: Plain text
9349 #: build/C/man2/ptrace.2:1801
9350 #, fuzzy
9351 #| msgid ""
9352 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9353 #| "other requests return zero.  On error, all requests return -1, and "
9354 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9355 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9356 #| "such requests to determine whether or not an error occurred."
9357 msgid ""
9358 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
9359 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
9360 "caller must clear I<errno> before the call, and then check it afterward to "
9361 "determine whether or not an error occurred."
9362 msgstr ""
9363 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9364 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9365 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9366 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9367 "なければならない。"
9368
9369 #. type: Plain text
9370 #: build/C/man2/ptrace.2:1805
9371 msgid ""
9372 "(i386 only) There was an error with allocating or freeing a debug register."
9373 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9374
9375 #. type: Plain text
9376 #: build/C/man2/ptrace.2:1816
9377 #, fuzzy
9378 #| msgid ""
9379 #| "There was an attempt to read from or write to an invalid area in the "
9380 #| "parent's or child's memory, probably because the area wasn't mapped or "
9381 #| "accessible.  Unfortunately, under Linux, different variations of this "
9382 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9383 msgid ""
9384 "There was an attempt to read from or write to an invalid area in the "
9385 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9386 "accessible.  Unfortunately, under Linux, different variations of this fault "
9387 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9388 msgstr ""
9389 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9390 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9391 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9392 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9393
9394 #. type: Plain text
9395 #: build/C/man2/ptrace.2:1819
9396 msgid "An attempt was made to set an invalid option."
9397 msgstr "不正なオプションを設定しようとした。"
9398
9399 #. type: Plain text
9400 #: build/C/man2/ptrace.2:1826
9401 #, fuzzy
9402 #| msgid ""
9403 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9404 #| "invalid area in the parent's or child's memory, or there was a word-"
9405 #| "alignment violation, or an invalid signal was specified during a restart "
9406 #| "request."
9407 msgid ""
9408 "I<request> is invalid, or an attempt was made to read from or write to an "
9409 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9410 "alignment violation, or an invalid signal was specified during a restart "
9411 "request."
9412 msgstr ""
9413 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9414 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9415 "開の要求で不正なシグナルを指定した。"
9416
9417 #. type: Plain text
9418 #: build/C/man2/ptrace.2:1839
9419 #, fuzzy
9420 #| msgid ""
9421 #| "The specified process cannot be traced.  This could be because the parent "
9422 #| "has insufficient privileges (the required capability is "
9423 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9424 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9425 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9426 #| "being traced, or be B<init>(8)  (PID 1)."
9427 msgid ""
9428 "The specified process cannot be traced.  This could be because the tracer "
9429 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9430 "unprivileged processes cannot trace processes that they cannot send signals "
9431 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9432 "Alternatively, the process may already be being traced, or (on kernels "
9433 "before 2.6.26) be B<init>(8)  (PID 1)."
9434 msgstr ""
9435 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9436 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9437 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9438 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9439 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9440 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9441
9442 #. type: Plain text
9443 #: build/C/man2/ptrace.2:1844
9444 #, fuzzy
9445 #| msgid ""
9446 #| "The specified process does not exist, or is not currently being traced by "
9447 #| "the caller, or is not stopped (for requests that require that)."
9448 msgid ""
9449 "The specified process does not exist, or is not currently being traced by "
9450 "the caller, or is not stopped (for requests that require a stopped tracee)."
9451 msgstr ""
9452 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9453 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9454 "ない (停止していることが必要な要求の場合)。"
9455
9456 #. type: Plain text
9457 #: build/C/man2/ptrace.2:1846
9458 msgid "SVr4, 4.3BSD."
9459 msgstr "SVr4, 4.3BSD."
9460
9461 #. type: Plain text
9462 #: build/C/man2/ptrace.2:1861
9463 #, fuzzy
9464 #| msgid ""
9465 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9466 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9467 #| "function with only the I<request> argument fixed.  This means that "
9468 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9469 #| "undocumented B<gcc>(1)  behavior."
9470 msgid ""
9471 "Although arguments to B<ptrace>()  are interpreted according to the "
9472 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9473 "function with only the I<request> argument fixed.  It is recommended to "
9474 "always supply four arguments, even if the requested operation does not use "
9475 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9476 msgstr ""
9477 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9478 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9479 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9480 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9481 "になる。"
9482
9483 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9484 #. type: Plain text
9485 #: build/C/man2/ptrace.2:1866
9486 #, fuzzy
9487 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9488 msgid ""
9489 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9490 "be traced."
9491 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9492
9493 #.  See http://lkml.org/lkml/2008/5/8/375
9494 #. type: Plain text
9495 #: build/C/man2/ptrace.2:1873
9496 #, fuzzy
9497 #| msgid ""
9498 #| "The layout of the contents of memory and the USER area are quite OS- and "
9499 #| "architecture-specific.  The offset supplied, and the data returned, might "
9500 #| "not entirely match with the definition of I<struct user>."
9501 msgid ""
9502 "The layout of the contents of memory and the USER area are quite operating-"
9503 "system- and architecture-specific.  The offset supplied, and the data "
9504 "returned, might not entirely match with the definition of I<struct user>."
9505 msgstr ""
9506 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9507 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9508 "に一致しないこともありえる。"
9509
9510 #. type: Plain text
9511 #: build/C/man2/ptrace.2:1876
9512 #, fuzzy
9513 #| msgid ""
9514 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9515 #| "Linux it is 32 bits, etc.)."
9516 msgid ""
9517 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9518 "for 32-bit Linux it is 32 bits)."
9519 msgstr ""
9520 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9521 "では 32 ビットである、など。)"
9522
9523 #. type: Plain text
9524 #: build/C/man2/ptrace.2:1884
9525 #, fuzzy
9526 #| msgid ""
9527 #| "This page documents the way the B<ptrace>()  call works currently in "
9528 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9529 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9530 msgid ""
9531 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9532 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9533 "of B<ptrace>()  is highly specific to the operating system and architecture."
9534 msgstr ""
9535 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9536 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9537 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9538
9539 #. type: Plain text
9540 #: build/C/man2/ptrace.2:1895
9541 #, fuzzy
9542 #| msgid ""
9543 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9544 #| "different value than the one for 2.4.  This leads to applications "
9545 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9546 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9547 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9548 msgid ""
9549 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9550 "different value than the one for 2.4.  This leads to applications compiled "
9551 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9552 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9553 "that is defined."
9554 msgstr ""
9555 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9556 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9557 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9558 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9559 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9560
9561 #. type: Plain text
9562 #: build/C/man2/ptrace.2:1898
9563 msgid ""
9564 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9565 "Last confirmed on 2.6.38.6."
9566 msgstr ""
9567
9568 #.  Note from Denys Vlasenko:
9569 #.      Here "exits" means any kind of death - _exit, exit_group,
9570 #.      signal death. Signal death and exit_group cases are trivial,
9571 #.      though: since signal death and exit_group kill all other threads
9572 #.      too, "until all other threads exit" thing happens rather soon
9573 #.      in these cases. Therefore, only _exit presents observably
9574 #.      puzzling behavior to ptrace users: thread leader _exit's,
9575 #.      but WIFEXITED isn't reported! We are trying to explain here
9576 #.      why it is so.
9577 #.   FIXME: ^^^ need to test/verify this scenario
9578 #. type: Plain text
9579 #: build/C/man2/ptrace.2:1929
9580 msgid ""
9581 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9582 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9583 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9584 "threads exit.  As explained above, if one of other threads calls B<execve>"
9585 "(2), the death of the thread group leader will I<never> be reported.  If the "
9586 "execed thread is not traced by this tracer, the tracer will never know that "
9587 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9588 "thread group leader instead of restarting it in this case.  Last confirmed "
9589 "on 2.6.38.6."
9590 msgstr ""
9591
9592 #. type: Plain text
9593 #: build/C/man2/ptrace.2:1939
9594 msgid ""
9595 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9596 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9597 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9598 "2.6.38.6."
9599 msgstr ""
9600
9601 #. type: Plain text
9602 #: build/C/man2/ptrace.2:1957
9603 msgid ""
9604 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9605 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9606 "is usually done by debuggers on every attach, in order to not introduce a "
9607 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9608 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9609 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9610 "that when you attach to a quiescent process with the command"
9611 msgstr ""
9612
9613 #. type: Plain text
9614 #: build/C/man2/ptrace.2:1959
9615 #, no-wrap
9616 msgid "    strace -p E<lt>process-IDE<gt>\n"
9617 msgstr ""
9618
9619 #. type: Plain text
9620 #: build/C/man2/ptrace.2:1962
9621 msgid "then, instead of the usual and expected one-line output such as"
9622 msgstr ""
9623
9624 #. type: Plain text
9625 #: build/C/man2/ptrace.2:1965
9626 #, no-wrap
9627 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9628 msgstr ""
9629
9630 #. type: Plain text
9631 #: build/C/man2/ptrace.2:1971
9632 #, no-wrap
9633 msgid "    select(6, [5], NULL, [5], NULL_\n"
9634 msgstr ""
9635
9636 #. type: Plain text
9637 #: build/C/man2/ptrace.2:1975
9638 msgid ""
9639 "('_' denotes the cursor position), you observe more than one line.  For "
9640 "example:"
9641 msgstr ""
9642
9643 #. type: Plain text
9644 #: build/C/man2/ptrace.2:1979
9645 #, no-wrap
9646 msgid ""
9647 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9648 "    epoll_wait(4,_\n"
9649 msgstr ""
9650
9651 #. type: Plain text
9652 #: build/C/man2/ptrace.2:2000
9653 msgid ""
9654 "What is not visible here is that the process was blocked in B<epoll_wait>"
9655 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9656 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9657 "case, the program reacted to B<EINTR> by checking the current time, and then "
9658 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9659 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9660 "(1)  attach.)"
9661 msgstr ""
9662
9663 #. type: Plain text
9664 #: build/C/man2/ptrace.2:2014
9665 msgid ""
9666 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9667 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9668 "B<capabilities>(7), B<signal>(7)"
9669 msgstr ""
9670 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9671 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9672 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9673
9674 #. type: TH
9675 #: build/C/man2/quotactl.2:27
9676 #, no-wrap
9677 msgid "QUOTACTL"
9678 msgstr "QUOTACTL"
9679
9680 #. type: TH
9681 #: build/C/man2/quotactl.2:27
9682 #, no-wrap
9683 msgid "2010-06-16"
9684 msgstr "2010-06-16"
9685
9686 #. type: Plain text
9687 #: build/C/man2/quotactl.2:30
9688 msgid "quotactl - manipulate disk quotas"
9689 msgstr "quotactl - ディスク quota を操作する"
9690
9691 #. type: Plain text
9692 #: build/C/man2/quotactl.2:34
9693 #, no-wrap
9694 msgid ""
9695 "B<#include E<lt>sys/quota.hE<gt>>\n"
9696 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9697 msgstr ""
9698 "B<#include E<lt>sys/quota.hE<gt>>\n"
9699 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9700
9701 #. type: Plain text
9702 #: build/C/man2/quotactl.2:37
9703 #, no-wrap
9704 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9705 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9706
9707 #. type: Plain text
9708 #: build/C/man2/quotactl.2:49
9709 #, fuzzy
9710 #| msgid ""
9711 #| "The quota system defines for each user and/or group a soft limit and a "
9712 #| "hard limit bounding the amount of disk space that can be used on a given "
9713 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9714 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9715 #| "soft limit for more than one week (by default)  at a time: after this "
9716 #| "week the soft limit counts as hard limit."
9717 msgid ""
9718 "The quota system can be used to set per-user and per-group limits on the "
9719 "amount of disk space used on a file system.  For each user and/or group, a "
9720 "soft limit and a hard limit can be set for each file system.  The hard limit "
9721 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9722 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9723 "week (by default) at a time; after this time, the soft limit counts as a "
9724 "hard limit."
9725 msgstr ""
9726 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9727 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9728 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9729 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9730 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9731 "過した後はハード・リミットを超過したと みなされる。"
9732
9733 #. type: Plain text
9734 #: build/C/man2/quotactl.2:74
9735 #, fuzzy
9736 #| msgid ""
9737 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9738 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9739 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9740 #| "respectively), and I<subcmd> is described below."
9741 msgid ""
9742 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9743 "indicates a command to be applied to the user or group ID specified in "
9744 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9745 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9746 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9747 msgstr ""
9748 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9749 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9750 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9751 "を指定する。 I<subcmd> は以下で説明する。"
9752
9753 #. type: Plain text
9754 #: build/C/man2/quotactl.2:79
9755 msgid ""
9756 "The I<special> argument is a pointer to a null-terminated string containing "
9757 "the pathname of the (mounted) block special device for the file system being "
9758 "manipulated."
9759 msgstr ""
9760
9761 #. type: Plain text
9762 #: build/C/man2/quotactl.2:87
9763 msgid ""
9764 "The I<addr> argument is the address of an optional, command-specific, data "
9765 "structure that is copied in or out of the system.  The interpretation of "
9766 "I<addr> is given with each command below."
9767 msgstr ""
9768
9769 #. type: Plain text
9770 #: build/C/man2/quotactl.2:91
9771 msgid "The I<subcmd> value is one of the following:"
9772 msgstr "I<subcmd> の値は以下のいずれかである"
9773
9774 #. type: TP
9775 #: build/C/man2/quotactl.2:91
9776 #, no-wrap
9777 msgid "B<Q_QUOTAON>"
9778 msgstr "B<Q_QUOTAON>"
9779
9780 #. type: Plain text
9781 #: build/C/man2/quotactl.2:98
9782 msgid ""
9783 "Turn on quotas for a file system.  The I<id> argument is the identification "
9784 "number of the quota format to be used.  Currently, there are three supported "
9785 "quota formats:"
9786 msgstr ""
9787
9788 #. type: TP
9789 #: build/C/man2/quotactl.2:99
9790 #, no-wrap
9791 msgid "B<QFMT_VFS_OLD>"
9792 msgstr ""
9793
9794 #. type: Plain text
9795 #: build/C/man2/quotactl.2:102
9796 msgid "The original quota format."
9797 msgstr ""
9798
9799 #. type: TP
9800 #: build/C/man2/quotactl.2:102
9801 #, no-wrap
9802 msgid "B<QFMT_VFS_V0>"
9803 msgstr ""
9804
9805 #. type: Plain text
9806 #: build/C/man2/quotactl.2:106
9807 msgid ""
9808 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9809 "quota limits up to 2^42 bytes and 2^32 inodes."
9810 msgstr ""
9811
9812 #. type: TP
9813 #: build/C/man2/quotactl.2:106
9814 #, no-wrap
9815 msgid "B<QFMT_VFS_V1>"
9816 msgstr ""
9817
9818 #. type: Plain text
9819 #: build/C/man2/quotactl.2:110
9820 msgid ""
9821 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9822 "bytes and 2^64 inodes."
9823 msgstr ""
9824
9825 #. type: Plain text
9826 #: build/C/man2/quotactl.2:121
9827 msgid ""
9828 "The I<addr> argument points to the pathname of a file containing the quotas "
9829 "for the file system.  The quota file must exist; it is normally created with "
9830 "the B<quotacheck>(8)  program.  This operation requires privilege "
9831 "(B<CAP_SYS_ADMIN>)."
9832 msgstr ""
9833
9834 #. type: TP
9835 #: build/C/man2/quotactl.2:121
9836 #, no-wrap
9837 msgid "B<Q_QUOTAOFF>"
9838 msgstr "B<Q_QUOTAOFF>"
9839
9840 #. type: Plain text
9841 #: build/C/man2/quotactl.2:131
9842 msgid ""
9843 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9844 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9845 msgstr ""
9846
9847 #. type: TP
9848 #: build/C/man2/quotactl.2:131
9849 #, no-wrap
9850 msgid "B<Q_GETQUOTA>"
9851 msgstr "B<Q_GETQUOTA>"
9852
9853 #. type: Plain text
9854 #: build/C/man2/quotactl.2:142
9855 #, fuzzy
9856 #| msgid ""
9857 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9858 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9859 msgid ""
9860 "Get disk quota limits and current usage for user or group I<id>.  The "
9861 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9862 "quota.hE<gt>> as follows:"
9863 msgstr ""
9864 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9865 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9866
9867 #. type: Plain text
9868 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9869 #, no-wrap
9870 msgid ""
9871 "/* uint64_t is an unsigned 64-bit integer;\n"
9872 "   uint32_t is an unsigned 32-bit integer */\n"
9873 msgstr ""
9874
9875 #. type: Plain text
9876 #: build/C/man2/quotactl.2:167
9877 #, no-wrap
9878 msgid ""
9879 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9880 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9881 "                                  quota blocks alloc */\n"
9882 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9883 "                                  disk quota blocks */\n"
9884 "    uint64_t dqb_curspace;     /* current quota block\n"
9885 "                                  count */\n"
9886 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9887 "                                  allocated inodes */\n"
9888 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9889 "    uint64_t dqb_curinodes;    /* current number of\n"
9890 "                                  allocated inodes */\n"
9891 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9892 "                                  disk use */\n"
9893 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9894 "                                  files */\n"
9895 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9896 "                                  constants */\n"
9897 "};\n"
9898 msgstr ""
9899
9900 #. type: Plain text
9901 #: build/C/man2/quotactl.2:170
9902 #, no-wrap
9903 msgid ""
9904 "/* Flags in dqb_valid that indicate which fields in\n"
9905 "   dqblk structure are valid. */\n"
9906 msgstr ""
9907
9908 #. type: Plain text
9909 #: build/C/man2/quotactl.2:181
9910 #, no-wrap
9911 msgid ""
9912 "#define QIF_BLIMITS   1\n"
9913 "#define QIF_SPACE     2\n"
9914 "#define QIF_ILIMITS   4\n"
9915 "#define QIF_INODES    8\n"
9916 "#define QIF_BTIME     16\n"
9917 "#define QIF_ITIME     32\n"
9918 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9919 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9920 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9921 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9922 msgstr ""
9923
9924 #. type: Plain text
9925 #: build/C/man2/quotactl.2:198
9926 msgid ""
9927 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9928 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9929 "entries of the I<dqblk> structure and marks them as valid in the "
9930 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9931 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9932 msgstr ""
9933
9934 #. type: TP
9935 #: build/C/man2/quotactl.2:198
9936 #, no-wrap
9937 msgid "B<Q_SETQUOTA>"
9938 msgstr "B<Q_SETQUOTA>"
9939
9940 #. type: Plain text
9941 #: build/C/man2/quotactl.2:218
9942 msgid ""
9943 "Set quota information for user or group I<id>, using the information "
9944 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9945 "field of the I<dqblk> structure indicates which entries in the structure "
9946 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9947 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9948 "requires privilege (B<CAP_SYS_ADMIN>)."
9949 msgstr ""
9950
9951 #. type: TP
9952 #: build/C/man2/quotactl.2:218
9953 #, no-wrap
9954 msgid "B<Q_GETINFO>"
9955 msgstr "B<Q_GETINFO>"
9956
9957 #. type: Plain text
9958 #: build/C/man2/quotactl.2:229
9959 #, fuzzy
9960 #| msgid ""
9961 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9962 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9963 msgid ""
9964 "Get information (like grace times) about quotafile.  The I<addr> argument "
9965 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9966 "I<E<lt>sys/quota.hE<gt>> as follows:"
9967 msgstr ""
9968 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9969 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9970
9971 #. type: Plain text
9972 #: build/C/man2/quotactl.2:238
9973 #, no-wrap
9974 msgid ""
9975 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9976 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9977 "                               becomes hard limit */\n"
9978 msgstr ""
9979
9980 #. type: Plain text
9981 #: build/C/man2/quotactl.2:245
9982 #, no-wrap
9983 msgid ""
9984 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9985 "                               becomes hard limit */\n"
9986 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9987 "                               (DQF_*) */\n"
9988 "    uint32_t dqi_valid;\n"
9989 "};\n"
9990 msgstr ""
9991
9992 #. type: Plain text
9993 #: build/C/man2/quotactl.2:247
9994 #, no-wrap
9995 msgid "/* Bits for dqi_flags */\n"
9996 msgstr ""
9997
9998 #. type: Plain text
9999 #: build/C/man2/quotactl.2:249
10000 #, no-wrap
10001 msgid "/* Quota format QFMT_VFS_OLD */\n"
10002 msgstr ""
10003
10004 #. type: Plain text
10005 #: build/C/man2/quotactl.2:251
10006 #, no-wrap
10007 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
10008 msgstr ""
10009
10010 #. type: Plain text
10011 #: build/C/man2/quotactl.2:253
10012 #, no-wrap
10013 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
10014 msgstr ""
10015
10016 #. type: Plain text
10017 #: build/C/man2/quotactl.2:256
10018 #, no-wrap
10019 msgid ""
10020 "/* Flags in dqi_valid that indicate which fields in\n"
10021 "   dqinfo structure are valid. */\n"
10022 msgstr ""
10023
10024 #. type: Plain text
10025 #: build/C/man2/quotactl.2:261
10026 #, no-wrap
10027 msgid ""
10028 "# define IIF_BGRACE\t1\n"
10029 "# define IIF_IGRACE\t2\n"
10030 "# define IIF_FLAGS\t4\n"
10031 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
10032 msgstr ""
10033
10034 #. type: Plain text
10035 #: build/C/man2/quotactl.2:277
10036 msgid ""
10037 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
10038 "the structure that are valid.  Currently, the kernel fills in all entries of "
10039 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
10040 "field.  The I<id> argument is ignored."
10041 msgstr ""
10042
10043 #. type: TP
10044 #: build/C/man2/quotactl.2:277
10045 #, no-wrap
10046 msgid "B<Q_SETINFO>"
10047 msgstr "B<Q_SETINFO>"
10048
10049 #. type: Plain text
10050 #: build/C/man2/quotactl.2:301
10051 msgid ""
10052 "Set information about quotafile.  The I<addr> argument should be a pointer "
10053 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
10054 "indicates the entries in the structure that have been set by the caller.  "
10055 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
10056 "the previous quota interfaces.  The I<id> argument is ignored.  This "
10057 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10058 msgstr ""
10059
10060 #. type: TP
10061 #: build/C/man2/quotactl.2:301
10062 #, no-wrap
10063 msgid "B<Q_GETFMT>"
10064 msgstr "B<Q_GETFMT>"
10065
10066 #. type: Plain text
10067 #: build/C/man2/quotactl.2:308
10068 msgid ""
10069 "Get quota format used on the specified file system.  The I<addr> argument "
10070 "should be a pointer to a 4-byte buffer where the format number will be "
10071 "stored."
10072 msgstr ""
10073
10074 #. type: TP
10075 #: build/C/man2/quotactl.2:308
10076 #, no-wrap
10077 msgid "B<Q_SYNC>"
10078 msgstr "B<Q_SYNC>"
10079
10080 #. type: Plain text
10081 #: build/C/man2/quotactl.2:319
10082 msgid ""
10083 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
10084 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
10085 "I<id> arguments are ignored."
10086 msgstr ""
10087
10088 #. type: TP
10089 #: build/C/man2/quotactl.2:319
10090 #, no-wrap
10091 msgid "B<Q_GETSTATS>"
10092 msgstr "B<Q_GETSTATS>"
10093
10094 #.  Q_GETSTATS was removed in kernel 2.4.22.
10095 #. type: Plain text
10096 #: build/C/man2/quotactl.2:339
10097 msgid ""
10098 "Get statistics and other generic information about the quota subsystem.  The "
10099 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
10100 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
10101 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
10102 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
10103 "the information instead."
10104 msgstr ""
10105
10106 #. type: Plain text
10107 #: build/C/man2/quotactl.2:342
10108 msgid ""
10109 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
10110 "commands are bypassed and the following commands are used:"
10111 msgstr ""
10112
10113 #. type: TP
10114 #: build/C/man2/quotactl.2:342
10115 #, no-wrap
10116 msgid "B<Q_XQUOTAON>"
10117 msgstr "B<Q_XQUOTAON>"
10118
10119 #. type: Plain text
10120 #: build/C/man2/quotactl.2:363
10121 msgid ""
10122 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
10123 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
10124 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
10125 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
10126 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
10127 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
10128 "(B<CAP_SYS_ADMIN>)."
10129 msgstr ""
10130
10131 #. type: TP
10132 #: build/C/man2/quotactl.2:363
10133 #, no-wrap
10134 msgid "B<Q_XQUOTAOFF>"
10135 msgstr "B<Q_XQUOTAOFF>"
10136
10137 #. type: Plain text
10138 #: build/C/man2/quotactl.2:374
10139 msgid ""
10140 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
10141 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
10142 "accounting and/or limit enforcement need to be turned off.  This operation "
10143 "requires privilege (B<CAP_SYS_ADMIN>)."
10144 msgstr ""
10145
10146 #. type: TP
10147 #: build/C/man2/quotactl.2:374
10148 #, no-wrap
10149 msgid "B<Q_XGETQUOTA>"
10150 msgstr "B<Q_XGETQUOTA>"
10151
10152 #. type: Plain text
10153 #: build/C/man2/quotactl.2:388
10154 msgid ""
10155 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
10156 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
10157 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
10158 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
10159 "user."
10160 msgstr ""
10161
10162 #. type: TP
10163 #: build/C/man2/quotactl.2:388
10164 #, no-wrap
10165 msgid "B<Q_XSETQLIM>"
10166 msgstr "B<Q_XSETQLIM>"
10167
10168 #. type: Plain text
10169 #: build/C/man2/quotactl.2:400
10170 msgid ""
10171 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
10172 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
10173 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10174 msgstr ""
10175
10176 #. type: TP
10177 #: build/C/man2/quotactl.2:400
10178 #, no-wrap
10179 msgid "B<Q_XGETQSTAT>"
10180 msgstr "B<Q_XGETQSTAT>"
10181
10182 #. type: Plain text
10183 #: build/C/man2/quotactl.2:408
10184 msgid ""
10185 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
10186 "quota information.  This is useful for finding out how much space is used to "
10187 "store quota information, and also to get quotaon/off status of a given local "
10188 "XFS file system."
10189 msgstr ""
10190
10191 #. type: TP
10192 #: build/C/man2/quotactl.2:408
10193 #, no-wrap
10194 msgid "B<Q_XQUOTARM>"
10195 msgstr "B<Q_XQUOTARM>"
10196
10197 #. type: Plain text
10198 #: build/C/man2/quotactl.2:412
10199 msgid ""
10200 "Free the disk space taken by disk quotas.  Quotas must have already been "
10201 "turned off."
10202 msgstr ""
10203
10204 #. type: Plain text
10205 #: build/C/man2/quotactl.2:419
10206 msgid ""
10207 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
10208 "quota information to disk (in addition to the other file system metadata "
10209 "that it writes out)."
10210 msgstr ""
10211
10212 #. type: Plain text
10213 #: build/C/man2/quotactl.2:427
10214 msgid ""
10215 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
10216 "is set to indicate the error."
10217 msgstr ""
10218 "成功すると、 B<quotactl>()  は 0 を返す。\n"
10219 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
10220
10221 #. type: Plain text
10222 #: build/C/man2/quotactl.2:434
10223 msgid "I<addr> or I<special> is invalid."
10224 msgstr ""
10225
10226 #. type: Plain text
10227 #: build/C/man2/quotactl.2:440
10228 msgid "I<cmd> or I<type> is invalid."
10229 msgstr ""
10230
10231 #. type: TP
10232 #: build/C/man2/quotactl.2:440
10233 #, no-wrap
10234 msgid "B<ENOENT>"
10235 msgstr "B<ENOENT>"
10236
10237 #. type: Plain text
10238 #: build/C/man2/quotactl.2:447
10239 msgid "The file specified by I<special> or I<addr> does not exist."
10240 msgstr ""
10241
10242 #. type: Plain text
10243 #: build/C/man2/quotactl.2:452
10244 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
10245 msgstr ""
10246
10247 #. type: TP
10248 #: build/C/man2/quotactl.2:452
10249 #, no-wrap
10250 msgid "B<ENOTBLK>"
10251 msgstr "B<ENOTBLK>"
10252
10253 #. type: Plain text
10254 #: build/C/man2/quotactl.2:456
10255 msgid "I<special> is not a block device."
10256 msgstr "I<special> がブロックデバイスではない。"
10257
10258 #. type: Plain text
10259 #: build/C/man2/quotactl.2:461
10260 msgid ""
10261 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
10262 "specified operation."
10263 msgstr ""
10264
10265 #. type: Plain text
10266 #: build/C/man2/quotactl.2:465
10267 msgid ""
10268 "No disk quota is found for the indicated user.  Quotas have not been turned "
10269 "on for this file system."
10270 msgstr ""
10271
10272 #. type: Plain text
10273 #: build/C/man2/quotactl.2:474
10274 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
10275 msgstr ""
10276
10277 #. type: Plain text
10278 #: build/C/man2/quotactl.2:477
10279 msgid "Specified limits are out of range allowed by quota format."
10280 msgstr ""
10281
10282 #. type: Plain text
10283 #: build/C/man2/quotactl.2:486
10284 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
10285 msgstr ""
10286
10287 #. type: Plain text
10288 #: build/C/man2/quotactl.2:495
10289 msgid ""
10290 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
10291 "the quota file pointed to by I<addr> exists, but is not on the file system "
10292 "pointed to by I<special>."
10293 msgstr ""
10294
10295 #. type: Plain text
10296 #: build/C/man2/quotactl.2:501
10297 msgid ""
10298 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
10299 msgstr ""
10300
10301 #. type: Plain text
10302 #: build/C/man2/quotactl.2:504
10303 msgid "The quota file is corrupted."
10304 msgstr "quota ファイルが壊れている。"
10305
10306 #. type: Plain text
10307 #: build/C/man2/quotactl.2:507
10308 msgid "Specified quota format was not found."
10309 msgstr ""
10310
10311 #. type: Plain text
10312 #: build/C/man2/quotactl.2:512
10313 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10314 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10315
10316 #. type: TH
10317 #: build/C/man2/sendfile.2:19
10318 #, no-wrap
10319 msgid "SENDFILE"
10320 msgstr "SENDFILE"
10321
10322 #. type: TH
10323 #: build/C/man2/sendfile.2:19
10324 #, no-wrap
10325 msgid "2011-09-14"
10326 msgstr "2011-09-14"
10327
10328 #. type: Plain text
10329 #: build/C/man2/sendfile.2:22
10330 msgid "sendfile - transfer data between file descriptors"
10331 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10332
10333 #. type: Plain text
10334 #: build/C/man2/sendfile.2:24
10335 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10336 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10337
10338 #.  The below is too ugly. Comments about glibc versions belong
10339 #.  in the notes, not in the header.
10340 #.  .B #include <features.h>
10341 #.  .br
10342 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10343 #.  .br
10344 #.  .B #include <sys/sendfile.h>
10345 #.  .br
10346 #.  #else
10347 #.  .br
10348 #.  .B #include <sys/types.h>
10349 #.  .br
10350 #.  .B /* No system prototype before glibc 2.1. */
10351 #.  .br
10352 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10353 #.  .br
10354 #.  .B #endif
10355 #. type: Plain text
10356 #: build/C/man2/sendfile.2:47
10357 msgid ""
10358 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10359 "size_t>I< count>B<);>"
10360 msgstr ""
10361 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10362 "size_t>I< count>B<);>"
10363
10364 #. type: Plain text
10365 #: build/C/man2/sendfile.2:57
10366 msgid ""
10367 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10368 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10369 "than the combination of B<read>(2)  and B<write>(2), which would require "
10370 "transferring data to and from user space."
10371 msgstr ""
10372 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10373 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10374 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10375 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10376 "るからである。"
10377
10378 #. type: Plain text
10379 #: build/C/man2/sendfile.2:62
10380 msgid ""
10381 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10382 "be a descriptor opened for writing."
10383 msgstr ""
10384 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10385 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10386
10387 #. type: Plain text
10388 #: build/C/man2/sendfile.2:83
10389 msgid ""
10390 "If I<offset> is not NULL, then it points to a variable holding the file "
10391 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10392 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10393 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10394 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10395 "otherwise the current file offset is adjusted to reflect the number of bytes "
10396 "read from I<in_fd>."
10397 msgstr ""
10398 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10399 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10400 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10401 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10402 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10403 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10404 "整する。"
10405
10406 #. type: Plain text
10407 #: build/C/man2/sendfile.2:90
10408 msgid ""
10409 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10410 "current file offset, and the file offset will be updated by the call."
10411 msgstr ""
10412 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10413 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10414
10415 #. type: Plain text
10416 #: build/C/man2/sendfile.2:93
10417 msgid "I<count> is the number of bytes to copy between the file descriptors."
10418 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10419
10420 #. type: Plain text
10421 #: build/C/man2/sendfile.2:100
10422 msgid ""
10423 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10424 "like operations (i.e., it cannot be a socket)."
10425 msgstr ""
10426 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10427 "な\n"
10428 "い (ソケットを指定することはできない)。"
10429
10430 #. type: Plain text
10431 #: build/C/man2/sendfile.2:108
10432 msgid ""
10433 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10434 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10435 "()  changes the file offset appropriately."
10436 msgstr ""
10437 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10438 "な\n"
10439 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10440 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10441
10442 #. type: Plain text
10443 #: build/C/man2/sendfile.2:115
10444 msgid ""
10445 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10446 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10447 msgstr ""
10448 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10449 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10450
10451 #. type: Plain text
10452 #: build/C/man2/sendfile.2:121
10453 msgid ""
10454 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10455 "block."
10456 msgstr ""
10457 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10458 "た。"
10459
10460 #. type: TP
10461 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10462 #: build/C/man2/vmsplice.2:123
10463 #, no-wrap
10464 msgid "B<EBADF>"
10465 msgstr "B<EBADF>"
10466
10467 #. type: Plain text
10468 #: build/C/man2/sendfile.2:125
10469 msgid ""
10470 "The input file was not opened for reading or the output file was not opened "
10471 "for writing."
10472 msgstr ""
10473 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10474 "のためにオープンされていない。"
10475
10476 #. type: Plain text
10477 #: build/C/man2/sendfile.2:128
10478 msgid "Bad address."
10479 msgstr "アドレスがおかしい。"
10480
10481 #. type: Plain text
10482 #: build/C/man2/sendfile.2:134
10483 msgid ""
10484 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10485 "available for I<in_fd>."
10486 msgstr ""
10487 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10488 "が I<in_fd> では利用できない。"
10489
10490 #. type: Plain text
10491 #: build/C/man2/sendfile.2:138
10492 msgid "Unspecified error while reading from I<in_fd>."
10493 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10494
10495 #. type: Plain text
10496 #: build/C/man2/sendfile.2:142
10497 msgid "Insufficient memory to read from I<in_fd>."
10498 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10499
10500 #. type: Plain text
10501 #: build/C/man2/sendfile.2:148
10502 msgid ""
10503 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10504 "sendfile.hE<gt>> is present since glibc 2.1."
10505 msgstr ""
10506 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10507 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10508
10509 #. type: Plain text
10510 #: build/C/man2/sendfile.2:150
10511 msgid "Not specified in POSIX.1-2001, or other standards."
10512 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10513
10514 #. type: Plain text
10515 #: build/C/man2/sendfile.2:155
10516 msgid ""
10517 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10518 "prototypes.  It should not be used in portable programs."
10519 msgstr ""
10520 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10521 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10522
10523 #. type: Plain text
10524 #: build/C/man2/sendfile.2:165
10525 msgid ""
10526 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10527 "need to send some header data in front of the file contents, you will find "
10528 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10529 "minimize the number of packets and to tune performance."
10530 msgstr ""
10531 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10532 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10533 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10534 "いいだろう。"
10535
10536 #. type: Plain text
10537 #: build/C/man2/sendfile.2:171
10538 msgid ""
10539 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10540 "B<sendfile>()  changed the current offset of that file."
10541 msgstr ""
10542 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10543 "き、\n"
10544 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10545
10546 #. type: Plain text
10547 #: build/C/man2/sendfile.2:183
10548 msgid ""
10549 "The original Linux B<sendfile>()  system call was not designed to handle "
10550 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10551 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10552 "function transparently deals with the kernel differences."
10553 msgstr ""
10554 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10555 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10556 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10557 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10558
10559 #. type: Plain text
10560 #: build/C/man2/sendfile.2:192
10561 msgid ""
10562 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10563 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10564 msgstr ""
10565 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10566 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10567
10568 #. type: Plain text
10569 #: build/C/man2/sendfile.2:197
10570 msgid ""
10571 "The Linux-specific B<splice>(2)  call supports transferring data between "
10572 "arbitrary files (e.g., a pair of sockets)."
10573 msgstr ""
10574 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10575 "ソケット同士) でのデータ転送をサポートしている。"
10576
10577 #. type: Plain text
10578 #: build/C/man2/sendfile.2:202
10579 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10580 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10581
10582 #. type: TH
10583 #: build/C/man2/set_tid_address.2:25
10584 #, no-wrap
10585 msgid "SET_TID_ADDRESS"
10586 msgstr "SET_TID_ADDRESS"
10587
10588 #. type: TH
10589 #: build/C/man2/set_tid_address.2:25
10590 #, no-wrap
10591 msgid "2012-07-19"
10592 msgstr "2012-07-19"
10593
10594 #. type: Plain text
10595 #: build/C/man2/set_tid_address.2:28
10596 msgid "set_tid_address - set pointer to thread ID"
10597 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10598
10599 #. type: Plain text
10600 #: build/C/man2/set_tid_address.2:31
10601 #, no-wrap
10602 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10603 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10604
10605 #. type: Plain text
10606 #: build/C/man2/set_tid_address.2:33
10607 #, no-wrap
10608 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10609 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10610
10611 #. type: Plain text
10612 #: build/C/man2/set_tid_address.2:40
10613 msgid ""
10614 "For each process, the kernel maintains two attributes (addresses) called "
10615 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10616 "value NULL by default."
10617 msgstr ""
10618 "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
10619 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10620
10621 #. type: TP
10622 #: build/C/man2/set_tid_address.2:40
10623 #, no-wrap
10624 msgid "I<set_child_tid>"
10625 msgstr "I<set_child_tid>"
10626
10627 #. type: Plain text
10628 #: build/C/man2/set_tid_address.2:51
10629 msgid ""
10630 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10631 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10632 "that system call."
10633 msgstr ""
10634 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10635 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
10636 "で渡された値に設定される。"
10637
10638 #. type: Plain text
10639 #: build/C/man2/set_tid_address.2:56
10640 msgid ""
10641 "When I<set_child_tid> is set, the very first thing the new process does is "
10642 "writing its PID at this address."
10643 msgstr ""
10644 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10645 "のアドレスに自身の PID を書き込むことである。"
10646
10647 #. type: TP
10648 #: build/C/man2/set_tid_address.2:56
10649 #, no-wrap
10650 msgid "I<clear_child_tid>"
10651 msgstr "I<clear_child_tid>"
10652
10653 #. type: Plain text
10654 #: build/C/man2/set_tid_address.2:67
10655 msgid ""
10656 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10657 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10658 "of that system call."
10659 msgstr ""
10660 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
10661 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
10662 "き数で渡された値に設定される。"
10663
10664 #. type: Plain text
10665 #: build/C/man2/set_tid_address.2:74
10666 msgid ""
10667 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10668 "the calling process to I<tidptr>."
10669 msgstr ""
10670 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10671 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10672
10673 #. type: Plain text
10674 #: build/C/man2/set_tid_address.2:82
10675 msgid ""
10676 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10677 "process is sharing memory with other processes or threads, then 0 is written "
10678 "at the address specified in I<clear_child_tid> and the kernel performs the "
10679 "following operation:"
10680 msgstr ""
10681 "I<clear_child_tid> が NULL でないプロセスが終了すると、そのプロセスが他のプロ"
10682 "セスまたはスレッドとメモリを共有していれば、 I<clear_child_tid> で指定された"
10683 "アドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。"
10684
10685 #. type: Plain text
10686 #: build/C/man2/set_tid_address.2:84
10687 #, no-wrap
10688 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10689 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10690
10691 #. type: Plain text
10692 #: build/C/man2/set_tid_address.2:88
10693 msgid ""
10694 "The effect of this operation is to wake a single process that is performing "
10695 "a futex wait on the memory location.  Errors from the futex wake operation "
10696 "are ignored."
10697 msgstr ""
10698 "この処理の結果、このメモリアドレスに対する futex wait を実行しているプロセス"
10699 "を一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
10700
10701 #. type: Plain text
10702 #: build/C/man2/set_tid_address.2:91
10703 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10704 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10705
10706 #. type: Plain text
10707 #: build/C/man2/set_tid_address.2:94
10708 msgid "B<set_tid_address>()  always succeeds."
10709 msgstr "B<set_tid_address>()  は常に成功する。"
10710
10711 #. type: Plain text
10712 #: build/C/man2/set_tid_address.2:97
10713 msgid ""
10714 "This call is present since Linux 2.5.48.  Details as given here are valid "
10715 "since Linux 2.5.49."
10716 msgstr ""
10717 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10718 "2.5.49 以降で有効である。"
10719
10720 #. type: Plain text
10721 #: build/C/man2/set_tid_address.2:102
10722 msgid "B<clone>(2), B<futex>(2)"
10723 msgstr "B<clone>(2), B<futex>(2)"
10724
10725 #. type: TH
10726 #: build/C/man2/splice.2:26
10727 #, no-wrap
10728 msgid "SPLICE"
10729 msgstr "SPLICE"
10730
10731 #. type: TH
10732 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10733 #, no-wrap
10734 msgid "2012-05-04"
10735 msgstr "2012-05-04"
10736
10737 #. type: Plain text
10738 #: build/C/man2/splice.2:29
10739 msgid "splice - splice data to/from a pipe"
10740 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10741
10742 #. type: Plain text
10743 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10744 #, no-wrap
10745 msgid ""
10746 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10747 "B<#include E<lt>fcntl.hE<gt>>\n"
10748 msgstr ""
10749 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10750 "B<#include E<lt>fcntl.hE<gt>>\n"
10751
10752 #.  Return type was long before glibc 2.7
10753 #. type: Plain text
10754 #: build/C/man2/splice.2:38
10755 #, no-wrap
10756 msgid ""
10757 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10758 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10759 msgstr ""
10760 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10761 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10762
10763 #. type: Plain text
10764 #: build/C/man2/splice.2:50
10765 msgid ""
10766 "B<splice>()  moves data between two file descriptors without copying between "
10767 "kernel address space and user address space.  It transfers up to I<len> "
10768 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10769 "I<fd_out>, where one of the descriptors must refer to a pipe."
10770 msgstr ""
10771 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10772 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10773 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10774 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10775 "ならない。"
10776
10777 #. type: Plain text
10778 #: build/C/man2/splice.2:80
10779 msgid ""
10780 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10781 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10782 "starting from the current file offset, and the current file offset is "
10783 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10784 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10785 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10786 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10787 "apply for I<fd_out> and I<off_out>."
10788 msgstr ""
10789 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10790 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10791 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10792 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10793 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10794 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10795 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10796 "る。"
10797
10798 #. type: Plain text
10799 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10800 msgid ""
10801 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10802 "or more of the following values:"
10803 msgstr ""
10804 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10805
10806 #. type: TP
10807 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10808 #, no-wrap
10809 msgid "B<SPLICE_F_MOVE>"
10810 msgstr "B<SPLICE_F_MOVE>"
10811
10812 #. type: Plain text
10813 #: build/C/man2/splice.2:98
10814 msgid ""
10815 "Attempt to move pages instead of copying.  This is only a hint to the "
10816 "kernel: pages may still be copied if the kernel cannot move the pages from "
10817 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10818 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10819 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10820 "correct implementation may be restored."
10821 msgstr ""
10822 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10823 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10824 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10825 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10826 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10827 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10828
10829 #. type: TP
10830 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10831 #, no-wrap
10832 msgid "B<SPLICE_F_NONBLOCK>"
10833 msgstr "B<SPLICE_F_NONBLOCK>"
10834
10835 #. type: Plain text
10836 #: build/C/man2/splice.2:107
10837 msgid ""
10838 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10839 "B<splice>()  may nevertheless block because the file descriptors that are "
10840 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10841 msgstr ""
10842 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10843 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10844 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10845 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10846 "らである。"
10847
10848 #. type: TP
10849 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10850 #, no-wrap
10851 msgid "B<SPLICE_F_MORE>"
10852 msgstr "B<SPLICE_F_MORE>"
10853
10854 #. type: Plain text
10855 #: build/C/man2/splice.2:121
10856 msgid ""
10857 "More data will be coming in a subsequent splice.  This is a helpful hint "
10858 "when the I<fd_out> refers to a socket (see also the description of "
10859 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10860 msgstr ""
10861 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10862 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10863 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10864
10865 #. type: TP
10866 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10867 #, no-wrap
10868 msgid "B<SPLICE_F_GIFT>"
10869 msgstr "B<SPLICE_F_GIFT>"
10870
10871 #. type: Plain text
10872 #: build/C/man2/splice.2:127
10873 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10874 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10875
10876 #. type: Plain text
10877 #: build/C/man2/splice.2:136
10878 msgid ""
10879 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10880 "to or from the pipe.  A return value of 0 means that there was no data to "
10881 "transfer, and it would not make sense to block, because there are no writers "
10882 "connected to the write end of the pipe referred to by I<fd_in>."
10883 msgstr ""
10884 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10885 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10886 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10887 "れている者がいないからである。"
10888
10889 #. type: Plain text
10890 #: build/C/man2/splice.2:142
10891 msgid ""
10892 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10893 msgstr ""
10894 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10895 "る。"
10896
10897 #. type: Plain text
10898 #: build/C/man2/splice.2:147
10899 msgid ""
10900 "One or both file descriptors are not valid, or do not have proper read-write "
10901 "mode."
10902 msgstr ""
10903 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10904 "write モードではない。"
10905
10906 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10907 #.  splice() in append mode was broken
10908 #. type: Plain text
10909 #: build/C/man2/splice.2:155
10910 msgid ""
10911 "Target file system doesn't support splicing; target file is opened in append "
10912 "mode; neither of the descriptors refers to a pipe; or offset given for "
10913 "nonseekable device."
10914 msgstr ""
10915 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10916 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10917 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10918
10919 #. type: Plain text
10920 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10921 #: build/C/man2/vmsplice.2:138
10922 msgid "Out of memory."
10923 msgstr "メモリ不足。"
10924
10925 #. type: TP
10926 #: build/C/man2/splice.2:158
10927 #, no-wrap
10928 msgid "B<ESPIPE>"
10929 msgstr "B<ESPIPE>"
10930
10931 #. type: Plain text
10932 #: build/C/man2/splice.2:165
10933 msgid ""
10934 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10935 "descriptor refers to a pipe."
10936 msgstr ""
10937 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10938 "クリプタが パイプを参照している。"
10939
10940 #. type: Plain text
10941 #: build/C/man2/splice.2:170
10942 msgid ""
10943 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10944 "was added to glibc in version 2.5."
10945 msgstr ""
10946 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10947 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10948
10949 #. type: Plain text
10950 #: build/C/man2/splice.2:182
10951 msgid ""
10952 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10953 "user-space programs with full control over an arbitrary kernel buffer, "
10954 "implemented within the kernel using the same type of buffer that is used for "
10955 "a pipe.  In overview, these system calls perform the following tasks:"
10956 msgstr ""
10957 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10958 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10959 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10960 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10961
10962 #. type: TP
10963 #: build/C/man2/splice.2:182
10964 #, no-wrap
10965 msgid "B<splice>()"
10966 msgstr "B<splice>()"
10967
10968 #. type: Plain text
10969 #: build/C/man2/splice.2:186
10970 msgid ""
10971 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10972 "or from one buffer to another."
10973 msgstr ""
10974 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10975 "から別のバッファへの、データ移動を行う。"
10976
10977 #. type: TP
10978 #: build/C/man2/splice.2:186
10979 #, no-wrap
10980 msgid "B<tee>(2)"
10981 msgstr "B<tee>(2)"
10982
10983 #. type: Plain text
10984 #: build/C/man2/splice.2:189
10985 msgid "\"copies\" the data from one buffer to another."
10986 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10987
10988 #. type: TP
10989 #: build/C/man2/splice.2:189
10990 #, no-wrap
10991 msgid "B<vmsplice>(2)"
10992 msgstr "B<vmsplice>(2)"
10993
10994 #. type: Plain text
10995 #: build/C/man2/splice.2:192
10996 msgid "\"copies\" data from user space into the buffer."
10997 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10998
10999 #.  Linus: Now, imagine using the above in a media server, for example.
11000 #.  Let's say that a year or two has passed, so that the video drivers
11001 #.  have been updated to be able to do the splice thing, and what can
11002 #.  you do? You can:
11003 #.  - splice from the (mpeg or whatever - let's just assume that the video
11004 #.    input is either digital or does the encoding on its own - like they
11005 #.    pretty much all do) video input into a pipe (remember: no copies - the
11006 #.    video input will just DMA directly into memory, and splice will just
11007 #.    set up the pages in the pipe buffer)
11008 #.  - tee that pipe to split it up
11009 #.  - splice one end to a file (ie "save the compressed stream to disk")
11010 #.  - splice the other end to a real-time video decoder window for your
11011 #.    real-time viewing pleasure.
11012 #.  Linus: Now, the advantage of splice()/tee() is that you can
11013 #.  do zero-copy movement of data, and unlike sendfile() you can
11014 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
11015 #.  than just sending the data to somebody else: you can duplicate
11016 #.  the data and choose to forward it to two or more different
11017 #.  users - for things like logging etc.).
11018 #. type: Plain text
11019 #: build/C/man2/splice.2:223
11020 msgid ""
11021 "Though we talk of copying, actual copies are generally avoided.  The kernel "
11022 "does this by implementing a pipe buffer as a set of reference-counted "
11023 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
11024 "in a buffer by creating new pointers (for the output buffer) referring to "
11025 "the pages, and increasing the reference counts for the pages: only pointers "
11026 "are copied, not the pages of the buffer."
11027 msgstr ""
11028 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
11029 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
11030 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
11031 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
11032 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
11033 "タだけがコピーされ、 バッファのページはコピーされない。"
11034
11035 #. type: Plain text
11036 #: build/C/man2/splice.2:226
11037 msgid "See B<tee>(2)."
11038 msgstr "B<tee>(2)  参照。"
11039
11040 #. type: Plain text
11041 #: build/C/man2/splice.2:230
11042 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
11043 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
11044
11045 #. type: TH
11046 #: build/C/man2/tee.2:26
11047 #, no-wrap
11048 msgid "TEE"
11049 msgstr "TEE"
11050
11051 #. type: Plain text
11052 #: build/C/man2/tee.2:29
11053 msgid "tee - duplicating pipe content"
11054 msgstr "tee - パイプの中身を複製する"
11055
11056 #. type: Plain text
11057 #: build/C/man2/tee.2:36
11058 #, no-wrap
11059 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"
11060 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"
11061
11062 #.  Example programs http://brick.kernel.dk/snaps
11063 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
11064 #.  (again, incrementing their reference count, not copying the data) from
11065 #.  one pipe to two other pipes.
11066 #. type: Plain text
11067 #: build/C/man2/tee.2:56
11068 msgid ""
11069 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
11070 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
11071 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
11072 "therefore, that data can be copied by a subsequent B<splice>(2)."
11073 msgstr ""
11074 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
11075 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
11076 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
11077 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
11078
11079 #. type: Plain text
11080 #: build/C/man2/tee.2:62
11081 msgid ""
11082 "I<flags> is a series of modifier flags, which share the name space with "
11083 "B<splice>(2)  and B<vmsplice>(2):"
11084 msgstr ""
11085 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
11086 "名前である。"
11087
11088 #. type: Plain text
11089 #: build/C/man2/tee.2:68
11090 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
11091 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
11092
11093 #.  Not used for vmsplice
11094 #.  May be in the future -- therefore EAGAIN
11095 #. type: Plain text
11096 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
11097 msgid "Do not block on I/O; see B<splice>(2)  for further details."
11098 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
11099
11100 #. type: Plain text
11101 #: build/C/man2/tee.2:79
11102 msgid ""
11103 "Currently has no effect for B<tee>(), but may be implemented in the future; "
11104 "see B<splice>(2)."
11105 msgstr ""
11106 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
11107 "る。 B<splice>(2)  参照。"
11108
11109 #. type: Plain text
11110 #: build/C/man2/tee.2:85
11111 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
11112 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
11113
11114 #. type: Plain text
11115 #: build/C/man2/tee.2:94
11116 msgid ""
11117 "Upon successful completion, B<tee>()  returns the number of bytes that were "
11118 "duplicated between the input and output.  A return value of 0 means that "
11119 "there was no data to transfer, and it would not make sense to block, because "
11120 "there are no writers connected to the write end of the pipe referred to by "
11121 "I<fd_in>."
11122 msgstr ""
11123 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
11124 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
11125 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
11126 "ている者がいないからである。"
11127
11128 #. type: Plain text
11129 #: build/C/man2/tee.2:100
11130 msgid ""
11131 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
11132 msgstr ""
11133 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
11134
11135 #. type: Plain text
11136 #: build/C/man2/tee.2:111
11137 msgid ""
11138 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
11139 "refer to the same pipe."
11140 msgstr ""
11141 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
11142 "と I<fd_out> が同じパイプを参照している。"
11143
11144 #. type: Plain text
11145 #: build/C/man2/tee.2:119
11146 msgid ""
11147 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
11148 "was added to glibc in version 2.5."
11149 msgstr ""
11150 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11151 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11152
11153 #. type: Plain text
11154 #: build/C/man2/tee.2:130
11155 msgid ""
11156 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
11157 "no real data copying takes place though: under the covers, B<tee>()  assigns "
11158 "data in the output by merely grabbing a reference to the input."
11159 msgstr ""
11160 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
11161 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
11162 "照だけを作成することで出力側にデータを 追加する。"
11163
11164 #. type: Plain text
11165 #: build/C/man2/tee.2:136
11166 msgid ""
11167 "The following example implements a basic B<tee>(1)  program using the B<tee>"
11168 "()  system call."
11169 msgstr ""
11170 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
11171 "ムを実装したものである。"
11172
11173 #. type: Plain text
11174 #: build/C/man2/tee.2:145
11175 #, no-wrap
11176 msgid ""
11177 "#define _GNU_SOURCE\n"
11178 "#include E<lt>fcntl.hE<gt>\n"
11179 "#include E<lt>stdio.hE<gt>\n"
11180 "#include E<lt>stdlib.hE<gt>\n"
11181 "#include E<lt>unistd.hE<gt>\n"
11182 "#include E<lt>errno.hE<gt>\n"
11183 "#include E<lt>limits.hE<gt>\n"
11184 msgstr ""
11185 "#define _GNU_SOURCE\n"
11186 "#include E<lt>fcntl.hE<gt>\n"
11187 "#include E<lt>stdio.hE<gt>\n"
11188 "#include E<lt>stdlib.hE<gt>\n"
11189 "#include E<lt>unistd.hE<gt>\n"
11190 "#include E<lt>errno.hE<gt>\n"
11191 "#include E<lt>limits.hE<gt>\n"
11192
11193 #. type: Plain text
11194 #: build/C/man2/tee.2:151
11195 #, no-wrap
11196 msgid ""
11197 "int\n"
11198 "main(int argc, char *argv[])\n"
11199 "{\n"
11200 "    int fd;\n"
11201 "    int len, slen;\n"
11202 msgstr ""
11203 "int\n"
11204 "main(int argc, char *argv[])\n"
11205 "{\n"
11206 "    int fd;\n"
11207 "    int len, slen;\n"
11208
11209 #. type: Plain text
11210 #: build/C/man2/tee.2:156
11211 #, no-wrap
11212 msgid ""
11213 "    if (argc != 2) {\n"
11214 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
11215 "        exit(EXIT_FAILURE);\n"
11216 "    }\n"
11217 msgstr ""
11218 "    if (argc != 2) {\n"
11219 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
11220 "        exit(EXIT_FAILURE);\n"
11221 "    }\n"
11222
11223 #. type: Plain text
11224 #: build/C/man2/tee.2:162
11225 #, no-wrap
11226 msgid ""
11227 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11228 "    if (fd == -1) {\n"
11229 "        perror(\"open\");\n"
11230 "        exit(EXIT_FAILURE);\n"
11231 "    }\n"
11232 msgstr ""
11233 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11234 "    if (fd == -1) {\n"
11235 "        perror(\"open\");\n"
11236 "        exit(EXIT_FAILURE);\n"
11237 "    }\n"
11238
11239 #. type: Plain text
11240 #: build/C/man2/tee.2:169
11241 #, no-wrap
11242 msgid ""
11243 "    do {\n"
11244 "        /*\n"
11245 "         * tee stdin to stdout.\n"
11246 "         */\n"
11247 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11248 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11249 msgstr ""
11250 "    do {\n"
11251 "        /*\n"
11252 "         * tee stdin to stdout.\n"
11253 "         */\n"
11254 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11255 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11256
11257 #. type: Plain text
11258 #: build/C/man2/tee.2:178
11259 #, no-wrap
11260 msgid ""
11261 "        if (len E<lt> 0) {\n"
11262 "            if (errno == EAGAIN)\n"
11263 "                continue;\n"
11264 "            perror(\"tee\");\n"
11265 "            exit(EXIT_FAILURE);\n"
11266 "        } else\n"
11267 "            if (len == 0)\n"
11268 "                break;\n"
11269 msgstr ""
11270 "        if (len E<lt> 0) {\n"
11271 "            if (errno == EAGAIN)\n"
11272 "                continue;\n"
11273 "            perror(\"tee\");\n"
11274 "            exit(EXIT_FAILURE);\n"
11275 "        } else\n"
11276 "            if (len == 0)\n"
11277 "                break;\n"
11278
11279 #. type: Plain text
11280 #: build/C/man2/tee.2:192
11281 #, no-wrap
11282 msgid ""
11283 "        /*\n"
11284 "         * Consume stdin by splicing it to a file.\n"
11285 "         */\n"
11286 "        while (len E<gt> 0) {\n"
11287 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11288 "                          len, SPLICE_F_MOVE);\n"
11289 "            if (slen E<lt> 0) {\n"
11290 "                perror(\"splice\");\n"
11291 "                break;\n"
11292 "            }\n"
11293 "            len -= slen;\n"
11294 "        }\n"
11295 "    } while (1);\n"
11296 msgstr ""
11297 "        /*\n"
11298 "         * Consume stdin by splicing it to a file.\n"
11299 "         */\n"
11300 "        while (len E<gt> 0) {\n"
11301 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11302 "                          len, SPLICE_F_MOVE);\n"
11303 "            if (slen E<lt> 0) {\n"
11304 "                perror(\"splice\");\n"
11305 "                break;\n"
11306 "            }\n"
11307 "            len -= slen;\n"
11308 "        }\n"
11309 "    } while (1);\n"
11310
11311 #. type: Plain text
11312 #: build/C/man2/tee.2:196
11313 #, no-wrap
11314 msgid ""
11315 "    close(fd);\n"
11316 "    exit(EXIT_SUCCESS);\n"
11317 "}\n"
11318 msgstr ""
11319 "    close(fd);\n"
11320 "    exit(EXIT_SUCCESS);\n"
11321 "}\n"
11322
11323 #. type: Plain text
11324 #: build/C/man2/tee.2:200
11325 msgid "B<splice>(2), B<vmsplice>(2)"
11326 msgstr "B<splice>(2), B<vmsplice>(2)"
11327
11328 #. type: TH
11329 #: build/C/man2/vm86.2:26
11330 #, no-wrap
11331 msgid "VM86"
11332 msgstr "VM86"
11333
11334 #. type: TH
11335 #: build/C/man2/vm86.2:26
11336 #, no-wrap
11337 msgid "2009-02-20"
11338 msgstr "2009-02-20"
11339
11340 #. type: Plain text
11341 #: build/C/man2/vm86.2:29
11342 msgid "vm86old, vm86 - enter virtual 8086 mode"
11343 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11344
11345 #. type: Plain text
11346 #: build/C/man2/vm86.2:31
11347 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11348 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11349
11350 #. type: Plain text
11351 #: build/C/man2/vm86.2:33
11352 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11353 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11354
11355 #. type: Plain text
11356 #: build/C/man2/vm86.2:35
11357 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11358 msgstr ""
11359 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11360
11361 #. type: Plain text
11362 #: build/C/man2/vm86.2:48
11363 msgid ""
11364 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11365 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11366 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11367 "and 1.1.9."
11368 msgstr ""
11369 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11370 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11371 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11372
11373 #. type: Plain text
11374 #: build/C/man2/vm86.2:52
11375 msgid ""
11376 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11377 "literature), and are used by B<dosemu>."
11378 msgstr ""
11379 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11380 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11381
11382 #. type: Plain text
11383 #: build/C/man2/vm86.2:54
11384 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11385 msgstr ""
11386 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11387 "ある。"
11388
11389 #. type: Plain text
11390 #: build/C/man2/vm86.2:64
11391 msgid ""
11392 "This return value is specific to i386 and indicates a problem with getting "
11393 "user-space data."
11394 msgstr ""
11395 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11396 "あったことを示す。"
11397
11398 #. type: Plain text
11399 #: build/C/man2/vm86.2:68
11400 msgid ""
11401 "This return value indicates the call is not implemented on the present "
11402 "architecture."
11403 msgstr ""
11404 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11405
11406 #. type: Plain text
11407 #: build/C/man2/vm86.2:73
11408 msgid ""
11409 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11410 "should exist only within vm86 mode itself.)"
11411 msgstr ""
11412 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11413 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11414 "い。)"
11415
11416 #. type: Plain text
11417 #: build/C/man2/vm86.2:76
11418 msgid ""
11419 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11420 "used in programs intended to be portable."
11421 msgstr ""
11422 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11423 "したプログラムでは使用すべきでない。"
11424
11425 #. type: TH
11426 #: build/C/man2/vmsplice.2:26
11427 #, no-wrap
11428 msgid "VMSPLICE"
11429 msgstr "VMSPLICE"
11430
11431 #. type: Plain text
11432 #: build/C/man2/vmsplice.2:29
11433 msgid "vmsplice - splice user pages into a pipe"
11434 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11435
11436 #. type: Plain text
11437 #: build/C/man2/vmsplice.2:34
11438 #, no-wrap
11439 msgid ""
11440 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11441 "B<#include E<lt>fcntl.hE<gt>>\n"
11442 "B<#include E<lt>sys/uio.hE<gt>>\n"
11443 msgstr ""
11444 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11445 "B<#include E<lt>fcntl.hE<gt>>\n"
11446 "B<#include E<lt>sys/uio.hE<gt>>\n"
11447
11448 #. type: Plain text
11449 #: build/C/man2/vmsplice.2:37
11450 #, no-wrap
11451 msgid ""
11452 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11453 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11454 msgstr ""
11455 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11456 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11457
11458 #.  Linus: vmsplice() system call to basically do a "write to
11459 #.  the buffer", but using the reference counting and VM traversal
11460 #.  to actually fill the buffer. This means that the user needs to
11461 #.  be careful not to reuse the user-space buffer it spliced into
11462 #.  the kernel-space one (contrast this to "write()", which copies
11463 #.  the actual data, and you can thus reuse the buffer immediately
11464 #.  after a successful write), but that is often easy to do.
11465 #. type: Plain text
11466 #: build/C/man2/vmsplice.2:57
11467 msgid ""
11468 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11469 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11470 "pipe."
11471 msgstr ""
11472 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11473 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11474 "ばならない。"
11475
11476 #. type: Plain text
11477 #: build/C/man2/vmsplice.2:64
11478 msgid ""
11479 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11480 "I<E<lt>sys/uio.hE<gt>>:"
11481 msgstr ""
11482 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11483 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11484
11485 #. type: Plain text
11486 #: build/C/man2/vmsplice.2:71
11487 #, no-wrap
11488 msgid ""
11489 "struct iovec {\n"
11490 "    void  *iov_base;            /* Starting address */\n"
11491 "    size_t iov_len;             /* Number of bytes */\n"
11492 "};\n"
11493 msgstr ""
11494 "struct iovec {\n"
11495 "    void  *iov_base;            /* 開始アドレス */\n"
11496 "    size_t iov_len;             /* バイト数 */\n"
11497 "};\n"
11498
11499 #. type: Plain text
11500 #: build/C/man2/vmsplice.2:84
11501 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11502 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11503
11504 #. type: Plain text
11505 #: build/C/man2/vmsplice.2:97
11506 msgid ""
11507 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11508 "future; see B<splice>(2)."
11509 msgstr ""
11510 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11511 "がある。 B<splice>(2)  参照。"
11512
11513 #.  FIXME Explain the following line in a little more detail:
11514 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11515 #. type: Plain text
11516 #: build/C/man2/vmsplice.2:113
11517 msgid ""
11518 "The user pages are a gift to the kernel.  The application may not modify "
11519 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11520 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11521 "successfully move the pages; if this flag is not specified, then a "
11522 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11523 "also be properly page aligned, both in memory and length."
11524 msgstr ""
11525 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11526 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11527 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11528 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11529 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11530 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11531 "なければならず、 長さもページ境界の倍数でなければならない。"
11532
11533 #. type: Plain text
11534 #: build/C/man2/vmsplice.2:122
11535 msgid ""
11536 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11537 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11538 "is set to indicate the error."
11539 msgstr ""
11540 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11541 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11542
11543 #. type: Plain text
11544 #: build/C/man2/vmsplice.2:127
11545 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11546 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11547
11548 #. type: Plain text
11549 #: build/C/man2/vmsplice.2:135
11550 msgid ""
11551 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11552 "B<SPLICE_F_GIFT> set."
11553 msgstr ""
11554 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11555 "設定されたがメモリがページ境界にあっていない。"
11556
11557 #. type: Plain text
11558 #: build/C/man2/vmsplice.2:143
11559 msgid ""
11560 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11561 "support was added to glibc in version 2.5."
11562 msgstr ""
11563 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11564 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11565
11566 #. type: Plain text
11567 #: build/C/man2/vmsplice.2:154
11568 msgid ""
11569 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11570 "it comes to limitations on number of segments being passed in.  This limit "
11571 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11572 "writing, that limit is 1024."
11573 msgstr ""
11574 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11575 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11576 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11577 "は 1024 である。"
11578
11579 #. type: Plain text
11580 #: build/C/man2/vmsplice.2:157
11581 msgid "B<splice>(2), B<tee>(2)"
11582 msgstr "B<splice>(2), B<tee>(2)"
11583
11584 #~ msgid "2013-03-15"
11585 #~ msgstr "2013-03-15"
11586
11587 #~ msgid "B<futex>(7)"
11588 #~ msgstr "B<futex>(7)"
11589
11590 #, fuzzy
11591 #~| msgid "The I<subcmd> value is one of the following:"
11592 #~ msgid "The I<flags> argument takes one of the following values:"
11593 #~ msgstr "I<subcmd> の値は以下のいずれかである"
11594
11595 #~ msgid ""
11596 #~ "Depending on which operation was executed, the returned value for a "
11597 #~ "successful call can have differing meanings."
11598 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11599
11600 #~ msgid ""
11601 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11602 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11603 #~ "was not equal to the expected value, the operation fails with the error "
11604 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11605 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11606 #~ msgstr ""
11607 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11608 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11609 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11610 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11611 #~ "敗する。"
11612
11613 #~ msgid "An operation was not defined or error in page alignment."
11614 #~ msgstr ""
11615 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11616
11617 #, fuzzy
11618 #~| msgid ""
11619 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11620 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11621 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11622 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11623 #~| "giving the parent a chance to gain control before the new program begins "
11624 #~| "execution.  A process probably shouldn't make this request if its parent "
11625 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11626 #~ msgid ""
11627 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11628 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11629 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11630 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11631 #~ "be sent to it, giving the parent a chance to gain control before the new "
11632 #~ "program begins execution.  A process probably shouldn't make this request "
11633 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11634 #~ "are ignored.)"
11635 #~ msgstr ""
11636 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11637 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11638 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11639 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11640 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11641 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11642 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11643 #~ "は無視される。)"
11644
11645 #~ msgid ""
11646 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11647 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11648 #~ msgstr ""
11649 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11650 #~ "\\ 8> で子プロセスの動作を停止させる。"
11651
11652 #~ msgid ""
11653 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11654 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11655 #~ msgstr ""
11656 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11657 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11658
11659 #~ msgid ""
11660 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11661 #~ "of the calling process; the behavior of the child is as if it had done a "
11662 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11663 #~ "the child process for most purposes (e.g., it will receive notification "
11664 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11665 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11666 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11667 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11668 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11669 #~ msgstr ""
11670 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11671 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11672 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11673 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11674 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11675 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11676 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11677 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11678 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11679
11680 #~ msgid ""
11681 #~ "Tracing causes a few subtle differences in the semantics of traced "
11682 #~ "processes.  For example, if a process is attached to with "
11683 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11684 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11685 #~ "effectively simulate this notification."
11686 #~ msgstr ""
11687 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11688 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11689 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11690 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11691
11692 #~ msgid ""
11693 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11694 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11695 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11696 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11697 #~ "child process after receiving one of these messages."
11698 #~ msgstr ""
11699 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11700 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11701 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11702 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11703 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11704 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11705
11706 #~ msgid ""
11707 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11708 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11709 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11710 #~ "and uniform way."
11711 #~ msgstr ""
11712 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11713 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11714 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11715 #~ "るものとなっている。"
11716
11717 #~ msgid ""
11718 #~ "The second argument I<special> is the block special device these quota "
11719 #~ "apply to.  It must be mounted."
11720 #~ msgstr ""
11721 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11722 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11723
11724 #~ msgid ""
11725 #~ "The third argument I<id> is the user or group ID these quota apply to "
11726 #~ "(when relevant)."
11727 #~ msgstr ""
11728 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11729 #~ "グループの ID を指定する。"
11730
11731 #~ msgid ""
11732 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11733 #~ "on the command."
11734 #~ msgstr ""
11735 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11736 #~ "指定する。"
11737
11738 #~ msgid ""
11739 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11740 #~ "containing the quota for the file system."
11741 #~ msgstr ""
11742 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11743 #~ "記録されているファイルの パス名を指定する。"
11744
11745 #~ msgid "Disable quota."
11746 #~ msgstr "quota を無効にする。"
11747
11748 #~ msgid "Set limits and current usage; I<addr> is as before."
11749 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11750
11751 #~ msgid "Set limits; I<addr> is as before."
11752 #~ msgstr "制限値を設定する; I<addr> は同上。"
11753
11754 #~ msgid "Set usage."
11755 #~ msgstr "使用量を設定する。"
11756
11757 #~ msgid "Sync disk copy of a file system's quota."
11758 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11759
11760 #~ msgid "Get collected stats."
11761 #~ msgstr "収集された統計を取得する。"
11762
11763 #~ msgid ""
11764 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11765 #~ "I<errno> is set appropriately."
11766 #~ msgstr ""
11767 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11768 #~ "I<errno> が適切な値に設定される。"
11769
11770 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11771 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11772
11773 #~ msgid "Bad I<addr> value."
11774 #~ msgstr "I<addr> の値に誤りがある。"
11775
11776 #~ msgid ""
11777 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11778 #~ msgstr ""
11779 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11780 #~ "付からなかった。"
11781
11782 #~ msgid "Cannot read or write the quota file."
11783 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11784
11785 #~ msgid "Too many open files: cannot open quota file."
11786 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11787
11788 #~ msgid "I<special> cannot be found in the mount table."
11789 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11790
11791 #~ msgid "The kernel was compiled without quota support."
11792 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11793
11794 #~ msgid ""
11795 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11796 #~ "asked for another I<id> than that of the process itself, or anything "
11797 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11798 #~ msgstr ""
11799 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11800 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11801 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11802
11803 #~ msgid ""
11804 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11805 #~ "for a file system that didn't have quota enabled."
11806 #~ msgstr ""
11807 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11808 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"