OSDN Git Service

(split) LDP: Update the version to 3.53 in PO files
[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-08-15 20:14+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 msgid ""
448 "This page is part of release 3.53 of the Linux I<man-pages> project.  A "
449 "description of the project, and information about reporting bugs, can be "
450 "found at \\%http://www.kernel.org/doc/man-pages/."
451 msgstr ""
452 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.53 の一部\n"
453 "である。プロジェクトの説明とバグ報告に関する情報は\n"
454 "http://www.kernel.org/doc/man-pages/ に書かれている。"
455
456 #. type: TH
457 #: build/C/man2/futex.2:53
458 #, no-wrap
459 msgid "FUTEX"
460 msgstr "FUTEX"
461
462 #. type: TH
463 #: build/C/man2/futex.2:53
464 #, fuzzy, no-wrap
465 #| msgid "2013-07-02"
466 msgid "2013-07-30"
467 msgstr "2013-07-02"
468
469 #. type: Plain text
470 #: build/C/man2/futex.2:56
471 msgid "futex - fast user-space locking"
472 msgstr "futex - 高速ユーザ空間ロック"
473
474 #. type: Plain text
475 #: build/C/man2/futex.2:61
476 #, no-wrap
477 msgid ""
478 "B<#include E<lt>linux/futex.hE<gt>>\n"
479 "B<#include E<lt>sys/time.hE<gt>>\n"
480 msgstr ""
481 "B<#include E<lt>linux/futex.hE<gt>>\n"
482 "B<#include E<lt>sys/time.hE<gt>>\n"
483
484 #. type: Plain text
485 #: build/C/man2/futex.2:64
486 #, no-wrap
487 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
488 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
489
490 #.  int *? void *? u32 *?
491 #. type: Plain text
492 #: build/C/man2/futex.2:67
493 #, no-wrap
494 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
495 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
496
497 #. type: Plain text
498 #: build/C/man2/futex.2:84
499 msgid ""
500 "The B<futex>()  system call provides a method for a program to wait for a "
501 "value at a given address to change, and a method to wake up anyone waiting "
502 "on a particular address (while the addresses for the same memory in separate "
503 "processes may not be equal, the kernel maps them internally so the same "
504 "memory mapped in different locations will correspond for B<futex>()  "
505 "calls).  This system call is typically used to implement the contended case "
506 "of a lock in shared memory, as described in B<futex>(7)."
507 msgstr ""
508 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
509 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
510 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
511 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
512 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
513 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
514 "る。"
515
516 #. type: Plain text
517 #: build/C/man2/futex.2:91
518 msgid ""
519 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
520 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
521 "mean putting the calling process to sleep or, conversely, waking a waiting "
522 "process."
523 msgstr ""
524 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
525 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
526 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
527 "味する。"
528
529 #. type: Plain text
530 #: build/C/man2/futex.2:98
531 msgid ""
532 "Callers of this function are expected to adhere to the semantics as set out "
533 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
534 "instructions, this in turn probably means that most users will in fact be "
535 "library authors and not general application developers."
536 msgstr ""
537 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
538 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
539 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
540 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
541 "る。"
542
543 #. type: Plain text
544 #: build/C/man2/futex.2:106
545 msgid ""
546 "The I<uaddr> argument needs to point to an aligned integer which stores the "
547 "counter.  The operation to execute is passed via the I<op> argument, along "
548 "with a value I<val>."
549 msgstr ""
550 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
551 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
552 "渡される。"
553
554 #. type: Plain text
555 #: build/C/man2/futex.2:108
556 msgid "Five operations are currently defined:"
557 msgstr "現在のところ 5 つの操作が定義されている:"
558
559 #. type: TP
560 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
561 #, no-wrap
562 msgid "B<FUTEX_WAIT>"
563 msgstr "B<FUTEX_WAIT>"
564
565 #. type: Plain text
566 #: build/C/man2/futex.2:126
567 msgid ""
568 "This operation atomically verifies that the futex address I<uaddr> still "
569 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
570 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
571 "minimum duration of the wait, which is infinite otherwise.  The arguments "
572 "I<uaddr2> and I<val3> are ignored."
573 msgstr ""
574 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
575 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
576 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
577 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
578 "I<uaddr2> と I<val3> は無視される。"
579
580 #. type: Plain text
581 #: build/C/man2/futex.2:134
582 msgid ""
583 "For B<futex>(7), this call is executed if decrementing the count gave a "
584 "negative value (indicating contention), and will sleep until another process "
585 "releases the futex and executes the B<FUTEX_WAKE> operation."
586 msgstr ""
587 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
588 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
589 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
590
591 #. type: TP
592 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
593 #, no-wrap
594 msgid "B<FUTEX_WAKE>"
595 msgstr "B<FUTEX_WAKE>"
596
597 #. type: Plain text
598 #: build/C/man2/futex.2:145
599 msgid ""
600 "This operation wakes at most I<val> processes waiting on this futex address "
601 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
602 "I<val3> are ignored."
603 msgstr ""
604 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
605 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
606 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
607
608 #. type: Plain text
609 #: build/C/man2/futex.2:151
610 msgid ""
611 "For B<futex>(7), this is executed if incrementing the count showed that "
612 "there were waiters, once the futex value has been set to 1 (indicating that "
613 "it is available)."
614 msgstr ""
615 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
616 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
617 "場合に実行される。"
618
619 #. type: TP
620 #: build/C/man2/futex.2:151
621 #, no-wrap
622 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
623 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
624
625 #.  , suitable for .BR poll (2).
626 #. type: Plain text
627 #: build/C/man2/futex.2:167
628 msgid ""
629 "To support asynchronous wakeups, this operation associates a file descriptor "
630 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
631 "receive the signal number that was passed in I<val>.  The calling process "
632 "must close the returned file descriptor after use.  The arguments "
633 "I<timeout>, I<uaddr2> and I<val3> are ignored."
634 msgstr ""
635 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
636 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
637 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
638 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
639 "I<uaddr2>, I<val3> は無視される。"
640
641 #. type: Plain text
642 #: build/C/man2/futex.2:172
643 msgid ""
644 "To prevent race conditions, the caller should test if the futex has been "
645 "upped after B<FUTEX_FD> returns."
646 msgstr ""
647 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
648 "up されたかどうかを確認しなければならない。"
649
650 #. type: Plain text
651 #: build/C/man2/futex.2:176
652 msgid ""
653 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
654 "2.6.26 onward."
655 msgstr ""
656 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
657 "ている。"
658
659 #. type: TP
660 #: build/C/man2/futex.2:176
661 #, no-wrap
662 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
663 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
664
665 #. type: Plain text
666 #: build/C/man2/futex.2:191
667 msgid ""
668 "This operation was introduced in order to avoid a \"thundering herd\" effect "
669 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
670 "another futex.  This call wakes up I<val> processes, and requeues all other "
671 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
672 "I<val3> are ignored."
673 msgstr ""
674 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
675 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
676 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
677 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
678 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
679
680 #. type: TP
681 #: build/C/man2/futex.2:191
682 #, no-wrap
683 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
684 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
685
686 #. type: Plain text
687 #: build/C/man2/futex.2:209
688 msgid ""
689 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
690 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
691 "but first checks whether the location I<uaddr> still contains the value "
692 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
693 "argument I<timeout> is ignored."
694 msgstr ""
695 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
696 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
697 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
698 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
699
700 #. type: Plain text
701 #: build/C/man2/futex.2:216
702 msgid ""
703 "In the event of an error, all operations return -1, and set I<errno> to "
704 "indicate the error.  The return value on success depends on the operation, "
705 "as described in the following list:"
706 msgstr ""
707 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
708 "される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りで"
709 "ある。"
710
711 #. type: Plain text
712 #: build/C/man2/futex.2:222
713 msgid ""
714 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
715 "the various possible error returns."
716 msgstr ""
717 "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性"
718 "があるエラーについては「エラー」の節を参照。"
719
720 #. type: Plain text
721 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
722 msgid "Returns the number of processes woken up."
723 msgstr "wake したプロセスの数を返す。"
724
725 #. type: TP
726 #: build/C/man2/futex.2:225
727 #, no-wrap
728 msgid "B<FUTEX_FD>"
729 msgstr "B<FUTEX_FD>"
730
731 #. type: Plain text
732 #: build/C/man2/futex.2:228
733 msgid "Returns the new file descriptor associated with the futex."
734 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
735
736 #. type: TP
737 #: build/C/man2/futex.2:228
738 #, no-wrap
739 msgid "B<FUTEX_REQUEUE>"
740 msgstr "B<FUTEX_REQUEUE>"
741
742 #. type: TP
743 #: build/C/man2/futex.2:231
744 #, no-wrap
745 msgid "B<FUTEX_CMP_REQUEUE>"
746 msgstr "B<FUTEX_CMP_REQUEUE>"
747
748 #. type: TP
749 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
750 #, no-wrap
751 msgid "B<EACCES>"
752 msgstr "B<EACCES>"
753
754 #. type: Plain text
755 #: build/C/man2/futex.2:238
756 msgid "No read access to futex memory."
757 msgstr "futex メモリに読み込みアクセス権がなかった。"
758
759 #. type: TP
760 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
761 #, no-wrap
762 msgid "B<EAGAIN>"
763 msgstr "B<EAGAIN>"
764
765 #. type: Plain text
766 #: build/C/man2/futex.2:249
767 msgid ""
768 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
769 "equal to the expected value I<val3>.  (This probably indicates a race; use "
770 "the safe B<FUTEX_WAKE> now.)"
771 msgstr ""
772 "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出"
773 "された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> "
774 "を使うこと。)"
775
776 #. type: Plain text
777 #: build/C/man2/futex.2:254
778 msgid "Error retrieving I<timeout> information from user space."
779 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
780
781 #. type: TP
782 #: build/C/man2/futex.2:254
783 #, no-wrap
784 msgid "B<EINTR>"
785 msgstr "B<EINTR>"
786
787 #. type: Plain text
788 #: build/C/man2/futex.2:261
789 msgid ""
790 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
791 "a spurious wakeup."
792 msgstr ""
793 "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中"
794 "断された。"
795
796 #. type: Plain text
797 #: build/C/man2/futex.2:264
798 msgid "Invalid argument."
799 msgstr "無効な引き数。"
800
801 #. type: TP
802 #: build/C/man2/futex.2:264
803 #, no-wrap
804 msgid "B<ENFILE>"
805 msgstr "B<ENFILE>"
806
807 #. type: Plain text
808 #: build/C/man2/futex.2:267
809 msgid "The system limit on the total number of open files has been reached."
810 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
811
812 #. type: TP
813 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
814 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
815 #: build/C/man2/vm86.2:64
816 #, no-wrap
817 msgid "B<ENOSYS>"
818 msgstr "B<ENOSYS>"
819
820 #. type: Plain text
821 #: build/C/man2/futex.2:271
822 msgid "Invalid operation specified in I<op>."
823 msgstr "I<op> に無効な操作が指定された。"
824
825 #. type: TP
826 #: build/C/man2/futex.2:271
827 #, no-wrap
828 msgid "B<ETIMEDOUT>"
829 msgstr "B<ETIMEDOUT>"
830
831 #. type: Plain text
832 #: build/C/man2/futex.2:276
833 msgid "Timeout during the B<FUTEX_WAIT> operation."
834 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
835
836 #. type: TP
837 #: build/C/man2/futex.2:276
838 #, no-wrap
839 msgid "B<EWOULDBLOCK>"
840 msgstr "B<EWOULDBLOCK>"
841
842 #. type: Plain text
843 #: build/C/man2/futex.2:286
844 msgid ""
845 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
846 "to the expected value I<val> at the time of the call."
847 msgstr ""
848 "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 "
849 "I<val> と異なっていた。"
850
851 #. type: SH
852 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
853 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
854 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
855 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
856 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
857 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
858 #: build/C/man2/vmsplice.2:138
859 #, no-wrap
860 msgid "VERSIONS"
861 msgstr "バージョン"
862
863 #. type: Plain text
864 #: build/C/man2/futex.2:296
865 msgid ""
866 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
867 "from what was described above.  A 4-argument system call with the semantics "
868 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
869 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
870 "especially on the s390 architecture."
871 msgstr ""
872 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
873 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
874 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
875 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
876 "上の特別のものである。"
877
878 #. type: Plain text
879 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
880 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
881 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
882 msgid "This system call is Linux-specific."
883 msgstr "このシステムコールは Linux 固有である。"
884
885 #.  .SH "AUTHORS"
886 #.  .PP
887 #.  Futexes were designed and worked on by
888 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
889 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
890 #.  and Rusty Russell (IBM Linux Technology Center).
891 #.  This page written by bert hubert.
892 #. type: Plain text
893 #: build/C/man2/futex.2:312
894 msgid ""
895 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
896 "for end-users.  (There is no wrapper function for this system call in "
897 "glibc.)  Implementors are expected to be assembly literate and to have read "
898 "the sources of the futex user-space library referenced below."
899 msgstr ""
900 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
901 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
902 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
903 "ブラリの ソースを読み終えていることが要求される。"
904
905 #. type: Plain text
906 #: build/C/man2/futex.2:315
907 #, fuzzy
908 #| msgid "B<clone>(2), B<futex>(2)"
909 msgid "B<restart_syscall>(2), B<futex>(7)"
910 msgstr "B<clone>(2), B<futex>(2)"
911
912 #. type: Plain text
913 #: build/C/man2/futex.2:318
914 msgid ""
915 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
916 "of the Ottawa Linux Symposium 2002), online at"
917 msgstr ""
918 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
919 "of the Ottawa Linux Symposium 2002), online at"
920
921 #. type: Plain text
922 #: build/C/man2/futex.2:321
923 msgid ""
924 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
925 "E<.UE>"
926 msgstr ""
927 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
928 "E<.UE>"
929
930 #. type: Plain text
931 #: build/C/man2/futex.2:323
932 msgid "Futex example library, futex-*.tar.bz2 at"
933 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
934
935 #. type: Plain text
936 #: build/C/man2/futex.2:326
937 msgid ""
938 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
939 "E<.UE>"
940 msgstr ""
941 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
942 "E<.UE>"
943
944 #. type: TH
945 #: build/C/man2/get_robust_list.2:29
946 #, no-wrap
947 msgid "GET_ROBUST_LIST"
948 msgstr "GET_ROBUST_LIST"
949
950 #. type: TH
951 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
952 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
953 #, no-wrap
954 msgid "2012-07-13"
955 msgstr "2012-07-13"
956
957 #. type: TH
958 #: build/C/man2/get_robust_list.2:29
959 #, no-wrap
960 msgid "Linux System Calls"
961 msgstr ""
962
963 #. type: Plain text
964 #: build/C/man2/get_robust_list.2:32
965 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
966 msgstr ""
967
968 #. type: Plain text
969 #: build/C/man2/get_robust_list.2:36
970 #, no-wrap
971 msgid ""
972 "B<#include E<lt>linux/futex.hE<gt>>\n"
973 "B<#include E<lt>syscall.hE<gt>>\n"
974 msgstr ""
975 "B<#include E<lt>linux/futex.hE<gt>>\n"
976 "B<#include E<lt>syscall.hE<gt>>\n"
977
978 #. type: Plain text
979 #: build/C/man2/get_robust_list.2:40
980 #, no-wrap
981 msgid ""
982 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
983 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
984 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
985 msgstr ""
986
987 #. type: Plain text
988 #: build/C/man2/get_robust_list.2:44
989 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
990 msgstr ""
991 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
992 "の節を参照。"
993
994 #. type: Plain text
995 #: build/C/man2/get_robust_list.2:49
996 msgid ""
997 "The robust futex implementation needs to maintain per-thread lists of robust "
998 "futexes which are unlocked when the thread exits.  These lists are managed "
999 "in user space; the kernel is notified about only the location of the head of "
1000 "the list."
1001 msgstr ""
1002
1003 #. type: Plain text
1004 #: build/C/man2/get_robust_list.2:65
1005 msgid ""
1006 "The B<get_robust_list>()  system call returns the head of the robust futex "
1007 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1008 "the head of the list for the calling thread is returned.  The list head is "
1009 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1010 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1011 msgstr ""
1012
1013 #. type: Plain text
1014 #: build/C/man2/get_robust_list.2:77
1015 msgid ""
1016 "The B<set_robust_list>()  system call requests the kernel to record the head "
1017 "of the list of robust futexes owned by the calling thread.  The I<head> "
1018 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1019 "(*head)>."
1020 msgstr ""
1021
1022 #. type: Plain text
1023 #: build/C/man2/get_robust_list.2:84
1024 msgid ""
1025 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1026 "when the operation is successful, an error code otherwise."
1027 msgstr ""
1028
1029 #. type: Plain text
1030 #: build/C/man2/get_robust_list.2:88
1031 msgid ""
1032 "The B<set_robust_list>()  system call can fail with the following error:"
1033 msgstr ""
1034
1035 #. type: Plain text
1036 #: build/C/man2/get_robust_list.2:94
1037 msgid ""
1038 "I<len> does not match the size of structure B<struct robust_list_head> "
1039 "expected by kernel."
1040 msgstr ""
1041
1042 #. type: Plain text
1043 #: build/C/man2/get_robust_list.2:98
1044 msgid ""
1045 "The B<get_robust_list>()  system call can fail with the following errors:"
1046 msgstr ""
1047
1048 #. type: Plain text
1049 #: build/C/man2/get_robust_list.2:106
1050 msgid ""
1051 "The calling process does not have permission to see the robust futex list of "
1052 "the thread with the thread ID I<pid>, and does not have the "
1053 "B<CAP_SYS_PTRACE> capability."
1054 msgstr ""
1055
1056 #. type: TP
1057 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1058 #: build/C/man2/ptrace.2:1839 build/C/man2/quotactl.2:461
1059 #: build/C/man2/quotactl.2:504
1060 #, no-wrap
1061 msgid "B<ESRCH>"
1062 msgstr "B<ESRCH>"
1063
1064 #. type: Plain text
1065 #: build/C/man2/get_robust_list.2:111
1066 msgid "No thread with the thread ID I<pid> could be found."
1067 msgstr ""
1068
1069 #. type: Plain text
1070 #: build/C/man2/get_robust_list.2:115
1071 msgid ""
1072 "The head of the robust futex list can't be stored at the location I<head>."
1073 msgstr ""
1074
1075 #. type: Plain text
1076 #: build/C/man2/get_robust_list.2:119
1077 msgid ""
1078 "These system calls were added in Linux 2.6.17.  No library support is "
1079 "provided; use B<syscall>(2)."
1080 msgstr ""
1081 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1082 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1083
1084 #. type: Plain text
1085 #: build/C/man2/get_robust_list.2:124
1086 msgid ""
1087 "These system calls are not needed by normal applications.  No support for "
1088 "them is provided in glibc.  In the unlikely event that you want to call them "
1089 "directly, use B<syscall>(2)."
1090 msgstr ""
1091 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1092 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1093 "呼び出したい場合は B<syscall>(2) を使うこと。"
1094
1095 #. type: Plain text
1096 #: build/C/man2/get_robust_list.2:128
1097 msgid ""
1098 "A thread can have only one robust futex list; therefore applications that "
1099 "wish to use this functionality should use the robust mutexes provided by "
1100 "glibc."
1101 msgstr ""
1102
1103 #.  .BR pthread_mutexattr_setrobust_np (3)
1104 #. type: Plain text
1105 #: build/C/man2/get_robust_list.2:131
1106 msgid "B<futex>(2)"
1107 msgstr "B<futex>(2)"
1108
1109 #.  http://lwn.net/Articles/172149/
1110 #. type: Plain text
1111 #: build/C/man2/get_robust_list.2:137
1112 msgid ""
1113 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1114 "txt> in the Linux kernel source tree"
1115 msgstr ""
1116
1117 #. type: TH
1118 #: build/C/man2/getunwind.2:27
1119 #, no-wrap
1120 msgid "GETUNWIND"
1121 msgstr ""
1122
1123 #. type: TH
1124 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1125 #, no-wrap
1126 msgid "2013-02-13"
1127 msgstr "2013-02-13"
1128
1129 #. type: Plain text
1130 #: build/C/man2/getunwind.2:30
1131 msgid "getunwind - copy the unwind data to caller's buffer"
1132 msgstr ""
1133
1134 #. type: Plain text
1135 #: build/C/man2/getunwind.2:34
1136 #, no-wrap
1137 msgid ""
1138 "B<#include E<lt>syscall.hE<gt>>\n"
1139 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1140 msgstr ""
1141 "B<#include E<lt>syscall.hE<gt>>\n"
1142 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1143
1144 #. type: Plain text
1145 #: build/C/man2/getunwind.2:36
1146 #, no-wrap
1147 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1148 msgstr ""
1149
1150 #. type: Plain text
1151 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1152 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1153 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1154 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1155 msgstr ""
1156 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
1157 "を参照。"
1158
1159 #. type: Plain text
1160 #: build/C/man2/getunwind.2:42
1161 msgid "I<Note: this function is obsolete.>"
1162 msgstr ""
1163
1164 #. type: Plain text
1165 #: build/C/man2/getunwind.2:52
1166 msgid ""
1167 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1168 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1169 "of the unwind data; this data describes the gate page (kernel code that is "
1170 "mapped into user space)."
1171 msgstr ""
1172
1173 #. type: Plain text
1174 #: build/C/man2/getunwind.2:64
1175 msgid ""
1176 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1177 "copied only if I<buf_size> is greater than or equal to the size of the "
1178 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1179 "call succeeds, returning the size that would be needed to store the unwind "
1180 "data."
1181 msgstr ""
1182
1183 #. type: Plain text
1184 #: build/C/man2/getunwind.2:68
1185 msgid ""
1186 "The first part of the unwind data contains an unwind table.  The rest "
1187 "contains the associated unwind information, in no particular order.  The "
1188 "unwind table contains entries of the following form:"
1189 msgstr ""
1190
1191 #. type: Plain text
1192 #: build/C/man2/getunwind.2:73
1193 #, no-wrap
1194 msgid ""
1195 "\tu64 start;      (64-bit address of start of function)\n"
1196 "\tu64 end;        (64-bit address of end of function)\n"
1197 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1198 msgstr ""
1199
1200 #. type: Plain text
1201 #: build/C/man2/getunwind.2:81
1202 msgid ""
1203 "An entry whose I<start> value is zero indicates the end of the table.  For "
1204 "more information about the format, see the I<IA-64 Software Conventions and "
1205 "Runtime Architecture> manual."
1206 msgstr ""
1207
1208 #. type: Plain text
1209 #: build/C/man2/getunwind.2:88
1210 msgid ""
1211 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1212 "is returned and I<errno> is set to indicate the error."
1213 msgstr ""
1214
1215 #. type: Plain text
1216 #: build/C/man2/getunwind.2:94
1217 msgid ""
1218 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1219 "stored in the space specified by I<buf>."
1220 msgstr ""
1221
1222 #. type: Plain text
1223 #: build/C/man2/getunwind.2:96
1224 msgid "This system call is available since Linux 2.4."
1225 msgstr ""
1226
1227 #. type: Plain text
1228 #: build/C/man2/getunwind.2:99
1229 msgid ""
1230 "This system call is Linux specific, and is available only on the IA-64 "
1231 "architecture."
1232 msgstr ""
1233
1234 #. type: Plain text
1235 #: build/C/man2/getunwind.2:107
1236 msgid ""
1237 "This system call has been deprecated.  The modern way to obtain the kernel's "
1238 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1239 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1240 msgstr ""
1241
1242 #. type: Plain text
1243 #: build/C/man2/getunwind.2:111
1244 msgid ""
1245 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1246 "that you want to call it, use B<syscall>(2)."
1247 msgstr ""
1248 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1249 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1250
1251 #. type: Plain text
1252 #: build/C/man2/getunwind.2:113
1253 msgid "B<getauxval>(3)"
1254 msgstr "B<getauxval>(3)"
1255
1256 #. type: TH
1257 #: build/C/man2/kexec_load.2:26
1258 #, no-wrap
1259 msgid "KEXEC_LOAD"
1260 msgstr "KEXEC_LOAD"
1261
1262 #. type: Plain text
1263 #: build/C/man2/kexec_load.2:29
1264 msgid "kexec_load - load a new kernel for later execution"
1265 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1266
1267 #. type: Plain text
1268 #: build/C/man2/kexec_load.2:31
1269 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1270 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1271
1272 #. type: Plain text
1273 #: build/C/man2/kexec_load.2:33
1274 msgid ""
1275 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1276 ">"
1277 msgstr ""
1278 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1279 ">"
1280
1281 #. type: Plain text
1282 #: build/C/man2/kexec_load.2:36
1283 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1284 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1285
1286 #. type: Plain text
1287 #: build/C/man2/kexec_load.2:44
1288 msgid ""
1289 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1290 "later by B<reboot>(2)."
1291 msgstr ""
1292 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1293 "その後の B<reboot>(2) で実行できるようにする。"
1294
1295 #. type: Plain text
1296 #: build/C/man2/kexec_load.2:50
1297 msgid ""
1298 "The I<flags> argument is a mask whose high-order bits control the operation "
1299 "of the call.  The following values can be specified in I<flags>:"
1300 msgstr ""
1301 "I<flags> 引き数はマスクビットで、\n"
1302 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1303 "I<flags> には以下の値を指定できる。"
1304
1305 #. type: TP
1306 #: build/C/man2/kexec_load.2:50
1307 #, no-wrap
1308 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1309 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1310
1311 #.  FIXME figure out how this is really used
1312 #. type: Plain text
1313 #: build/C/man2/kexec_load.2:54
1314 msgid "Execute the new kernel automatically on a system crash."
1315 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1316
1317 #. type: TP
1318 #: build/C/man2/kexec_load.2:54
1319 #, no-wrap
1320 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1321 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1322
1323 #. type: Plain text
1324 #: build/C/man2/kexec_load.2:64
1325 msgid ""
1326 "Preserve the system hardware and software states before executing the new "
1327 "kernel.  This could be used for system suspend.  This flag is available only "
1328 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1329 "only if I<nr_segments> is greater than 0."
1330 msgstr ""
1331 "新しいカーネルを実行する前に、\n"
1332 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1333 "システムの中断時 (suspend) などで使用できる。\n"
1334 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1335 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1336
1337 #. type: Plain text
1338 #: build/C/man2/kexec_load.2:84
1339 msgid ""
1340 "The low-order bits of I<flags> contain the architecture of the to-be-"
1341 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1342 "current architecture, or one of the following architecture constants "
1343 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1344 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1345 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1346 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1347 "the system."
1348 msgstr ""
1349 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1350 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1351 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1352 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1353 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1354 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1355 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1356 "システムの CPU で実行可能なものでなければならない。"
1357
1358 #. type: Plain text
1359 #: build/C/man2/kexec_load.2:98
1360 msgid ""
1361 "The I<entry> argument is the physical entry address in the kernel image.  "
1362 "The I<nr_segments> argument is the number of segments pointed to by the "
1363 "I<segments> pointer.  The I<segments> argument is an array of "
1364 "I<kexec_segment> structures which define the kernel layout:"
1365 msgstr ""
1366 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1367 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1368 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1369 "この構造体によりカーネルの配置が定義される。"
1370
1371 #. type: Plain text
1372 #: build/C/man2/kexec_load.2:107
1373 #, no-wrap
1374 msgid ""
1375 "struct kexec_segment {\n"
1376 "    void   *buf;        /* Buffer in user space */\n"
1377 "    size_t  bufsz;      /* Buffer length in user space */\n"
1378 "    void   *mem;        /* Physical address of kernel */\n"
1379 "    size_t  memsz;      /* Physical address length */\n"
1380 "};\n"
1381 msgstr ""
1382 "struct kexec_segment {\n"
1383 "    void   *buf;        /* Buffer in user space */\n"
1384 "    size_t  bufsz;      /* Buffer length in user space */\n"
1385 "    void   *mem;        /* Physical address of kernel */\n"
1386 "    size_t  memsz;      /* Physical address length */\n"
1387 "};\n"
1388
1389 #.  FIXME elaborate on the following:
1390 #. type: Plain text
1391 #: build/C/man2/kexec_load.2:114
1392 msgid ""
1393 "The kernel image defined by I<segments> is copied from the calling process "
1394 "into previously reserved memory."
1395 msgstr ""
1396 "I<segments> で定義されたカーネルイメージは、\n"
1397 "呼び出したプロセスから予約済みメモリにコピーされる。"
1398
1399 #. type: Plain text
1400 #: build/C/man2/kexec_load.2:121
1401 msgid ""
1402 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1403 "I<errno> is set to indicate the error."
1404 msgstr ""
1405 "成功すると、 B<kexec_load> は 0 を返す。\n"
1406 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1407
1408 #. type: TP
1409 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1410 #: build/C/man2/ptrace.2:1802 build/C/man2/quotactl.2:495
1411 #, no-wrap
1412 msgid "B<EBUSY>"
1413 msgstr "B<EBUSY>"
1414
1415 #. type: Plain text
1416 #: build/C/man2/kexec_load.2:126
1417 msgid ""
1418 "Another crash kernel is already being loaded or a crash kernel is already in "
1419 "use."
1420 msgstr ""
1421 "別のクラッシュカーネルがすでにロードされているか、\n"
1422 "クラッシュカーネルがすでに使用されている。"
1423
1424 #.  KEXEC_SEGMENT_MAX == 16
1425 #. type: Plain text
1426 #: build/C/man2/kexec_load.2:133
1427 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1428 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1429
1430 #. type: Plain text
1431 #: build/C/man2/kexec_load.2:138
1432 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1433 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1434
1435 #. type: Plain text
1436 #: build/C/man2/kexec_load.2:142
1437 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1438 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1439
1440 #. type: Plain text
1441 #: build/C/man2/kexec_load.2:149
1442 msgid ""
1443 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1444 "B<syscall>(2)."
1445 msgstr ""
1446 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1447 "B<syscall>(2) を使って呼び出すこと。"
1448
1449 #.  FIXME Andi submitted a patch for this.
1450 #.  Check if it got accepted later.
1451 #. type: Plain text
1452 #: build/C/man2/kexec_load.2:156
1453 msgid ""
1454 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1455 "which is not currently exported to glibc.  Therefore, these constants must "
1456 "be defined manually."
1457 msgstr ""
1458 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されてい"
1459 "る\n"
1460 "が、現在のところ glibc には公開されていない。\n"
1461 "そのため、これらの定数は手動で定義しなければならない。"
1462
1463 #. type: Plain text
1464 #: build/C/man2/kexec_load.2:159
1465 msgid ""
1466 "This system call is available only if the kernel was configured with "
1467 "B<CONFIG_KEXEC>."
1468 msgstr ""
1469 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1470 "いる場合にのみ利用できる。"
1471
1472 #. type: Plain text
1473 #: build/C/man2/kexec_load.2:162
1474 msgid "B<reboot>(2), B<syscall>(2)"
1475 msgstr "B<reboot>(2), B<syscall>(2)"
1476
1477 #. type: TH
1478 #: build/C/man2/lookup_dcookie.2:27
1479 #, no-wrap
1480 msgid "LOOKUP_DCOOKIE"
1481 msgstr "LOOKUP_DCOOKIE"
1482
1483 #. type: TH
1484 #: build/C/man2/lookup_dcookie.2:27
1485 #, no-wrap
1486 msgid "2004-06-17"
1487 msgstr "2004-06-17"
1488
1489 #. type: Plain text
1490 #: build/C/man2/lookup_dcookie.2:30
1491 msgid "lookup_dcookie - return a directory entry's path"
1492 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1493
1494 #. type: Plain text
1495 #: build/C/man2/lookup_dcookie.2:32
1496 msgid ""
1497 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1498 ">"
1499 msgstr ""
1500 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1501 ">"
1502
1503 #. type: Plain text
1504 #: build/C/man2/lookup_dcookie.2:38
1505 msgid ""
1506 "Look up the full path of the directory entry specified by the value "
1507 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1508 "particular directory entry.  The buffer given is filled in with the full "
1509 "path of the directory entry."
1510 msgstr ""
1511 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1512 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1513 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1514 "ルパス名が格納される。"
1515
1516 #. type: Plain text
1517 #: build/C/man2/lookup_dcookie.2:43
1518 msgid ""
1519 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1520 "a cookie reference to the directory entry."
1521 msgstr ""
1522 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1523 "リへの cookie 参照を 保持していなければならない。"
1524
1525 #. type: Plain text
1526 #: build/C/man2/lookup_dcookie.2:50
1527 msgid ""
1528 "On success, B<lookup_dcookie>()  returns the length of the path string "
1529 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1530 "appropriately."
1531 msgstr ""
1532 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1533 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1534
1535 #. type: Plain text
1536 #: build/C/man2/lookup_dcookie.2:54
1537 msgid "The buffer was not valid."
1538 msgstr "バッファが有効でなかった。"
1539
1540 #. type: Plain text
1541 #: build/C/man2/lookup_dcookie.2:58
1542 msgid ""
1543 "The kernel has no registered cookie/directory entry mappings at the time of "
1544 "lookup, or the cookie does not refer to a valid directory entry."
1545 msgstr ""
1546 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1547 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1548 "いない。"
1549
1550 #. type: TP
1551 #: build/C/man2/lookup_dcookie.2:58
1552 #, no-wrap
1553 msgid "B<ENAMETOOLONG>"
1554 msgstr "B<ENAMETOOLONG>"
1555
1556 #. type: Plain text
1557 #: build/C/man2/lookup_dcookie.2:61
1558 msgid "The name could not fit in the buffer."
1559 msgstr "名前がバッファに入り切らなかった。"
1560
1561 #. type: TP
1562 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1563 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1564 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1565 #, no-wrap
1566 msgid "B<ENOMEM>"
1567 msgstr "B<ENOMEM>"
1568
1569 #. type: Plain text
1570 #: build/C/man2/lookup_dcookie.2:65
1571 msgid ""
1572 "The kernel could not allocate memory for the temporary buffer holding the "
1573 "path."
1574 msgstr ""
1575 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1576 "かった。"
1577
1578 #. type: Plain text
1579 #: build/C/man2/lookup_dcookie.2:70
1580 msgid ""
1581 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1582 "up cookie values."
1583 msgstr ""
1584 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1585 "持っていない。"
1586
1587 #. type: TP
1588 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1589 #, no-wrap
1590 msgid "B<ERANGE>"
1591 msgstr "B<ERANGE>"
1592
1593 #. type: Plain text
1594 #: build/C/man2/lookup_dcookie.2:73
1595 msgid ""
1596 "The buffer was not large enough to hold the path of the directory entry."
1597 msgstr ""
1598 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1599 "かった。"
1600
1601 #. type: Plain text
1602 #: build/C/man2/lookup_dcookie.2:78
1603 msgid ""
1604 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1605 "2.5.70."
1606 msgstr ""
1607 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1608 "追加された。"
1609
1610 #. type: Plain text
1611 #: build/C/man2/lookup_dcookie.2:81
1612 msgid "B<lookup_dcookie>()  is Linux-specific."
1613 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1614
1615 #. type: Plain text
1616 #: build/C/man2/lookup_dcookie.2:85
1617 msgid ""
1618 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1619 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1620 "for directory entries."
1621 msgstr ""
1622 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1623 "oprofile profiler で 使われているだけである。"
1624
1625 #. type: Plain text
1626 #: build/C/man2/lookup_dcookie.2:88
1627 msgid ""
1628 "The path returned may be suffixed by the string \" (deleted)\" if the "
1629 "directory entry has been removed."
1630 msgstr ""
1631 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1632 "\" (deleted)\" という文字列が付加されることがある。"
1633
1634 #. type: TH
1635 #: build/C/man2/modify_ldt.2:24
1636 #, no-wrap
1637 msgid "MODIFY_LDT"
1638 msgstr "MODIFY_LDT"
1639
1640 #. type: Plain text
1641 #: build/C/man2/modify_ldt.2:27
1642 msgid "modify_ldt - get or set ldt"
1643 msgstr "modify_ldt - ldt を設定または取得する"
1644
1645 #. type: Plain text
1646 #: build/C/man2/modify_ldt.2:30
1647 #, no-wrap
1648 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1649 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1650
1651 #. type: Plain text
1652 #: build/C/man2/modify_ldt.2:32
1653 #, no-wrap
1654 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1655 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1656
1657 #. type: Plain text
1658 #: build/C/man2/modify_ldt.2:41
1659 msgid ""
1660 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1661 "process.  The ldt is a per-process memory management table used by the i386 "
1662 "processor.  For more information on this table, see an Intel 386 processor "
1663 "handbook."
1664 msgstr ""
1665 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1666 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1667 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1668 "は Intel 386 processor handbook を 参照すること。"
1669
1670 #. type: Plain text
1671 #: build/C/man2/modify_ldt.2:51
1672 msgid ""
1673 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1674 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1675 "actual size of the ldt."
1676 msgstr ""
1677 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1678 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1679 "である。"
1680
1681 #.  FIXME ? say something about func == 2 and func == 0x11?
1682 #.  In Linux 2.4, func == 2 returned "the default ldt"
1683 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1684 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1685 #. type: Plain text
1686 #: build/C/man2/modify_ldt.2:69
1687 msgid ""
1688 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1689 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1690 "structure."
1691 msgstr ""
1692 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1693 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1694 "くなければならない。"
1695
1696 #. type: Plain text
1697 #: build/C/man2/modify_ldt.2:73
1698 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1699 msgstr ""
1700 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1701
1702 #. type: Plain text
1703 #: build/C/man2/modify_ldt.2:87
1704 #, no-wrap
1705 msgid ""
1706 "struct user_desc {\n"
1707 "    unsigned int  entry_number;\n"
1708 "    unsigned long base_addr;\n"
1709 "    unsigned int  limit;\n"
1710 "    unsigned int  seg_32bit:1;\n"
1711 "    unsigned int  contents:2;\n"
1712 "    unsigned int  read_exec_only:1;\n"
1713 "    unsigned int  limit_in_pages:1;\n"
1714 "    unsigned int  seg_not_present:1;\n"
1715 "    unsigned int  useable:1;\n"
1716 "};\n"
1717 msgstr ""
1718 "struct user_desc {\n"
1719 "    unsigned int  entry_number;\n"
1720 "    unsigned long base_addr;\n"
1721 "    unsigned int  limit;\n"
1722 "    unsigned int  seg_32bit:1;\n"
1723 "    unsigned int  contents:2;\n"
1724 "    unsigned int  read_exec_only:1;\n"
1725 "    unsigned int  limit_in_pages:1;\n"
1726 "    unsigned int  seg_not_present:1;\n"
1727 "    unsigned int  useable:1;\n"
1728 "};\n"
1729
1730 #.  .PP
1731 #.  The ldt is specific for the calling process. Any attempts to change
1732 #.  the ldt to include the address space of another process or the kernel
1733 #.  will result in a segmentation violation when trying to access the memory
1734 #.  outside of the process address space. The memory protection is enforced
1735 #.  at the paging layer.
1736 #. type: Plain text
1737 #: build/C/man2/modify_ldt.2:98
1738 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1739 msgstr ""
1740 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1741
1742 #. type: Plain text
1743 #: build/C/man2/modify_ldt.2:108
1744 msgid ""
1745 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1746 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1747 "and sets I<errno> to indicate the error."
1748 msgstr ""
1749 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1750 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1751 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1752
1753 #. type: Plain text
1754 #: build/C/man2/modify_ldt.2:113
1755 msgid "I<ptr> points outside the address space."
1756 msgstr "I<ptr> がアドレス空間の外を指している。"
1757
1758 #. type: Plain text
1759 #: build/C/man2/modify_ldt.2:126
1760 msgid ""
1761 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1762 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1763 "invalid values."
1764 msgstr ""
1765 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1766 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1767 "エントリが無効な値である。"
1768
1769 #. type: Plain text
1770 #: build/C/man2/modify_ldt.2:130
1771 msgid "I<func> is neither 0 nor 1."
1772 msgstr "I<func> が 0 でも 1 でもない。"
1773
1774 #. type: Plain text
1775 #: build/C/man2/modify_ldt.2:133
1776 msgid ""
1777 "This call is Linux-specific and should not be used in programs intended to "
1778 "be portable."
1779 msgstr ""
1780 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1781 "い。"
1782
1783 #. type: Plain text
1784 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1785 #: build/C/man2/pivot_root.2:134
1786 msgid ""
1787 "Glibc does not provide a wrapper for this system call; call it using "
1788 "B<syscall>(2)."
1789 msgstr ""
1790 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1791 "(2)  を使って呼び出すこと。"
1792
1793 #. type: Plain text
1794 #: build/C/man2/modify_ldt.2:138
1795 msgid "B<vm86>(2)"
1796 msgstr "B<vm86>(2)"
1797
1798 #. type: TH
1799 #: build/C/man2/nfsservctl.2:8
1800 #, no-wrap
1801 msgid "NFSSERVCTL"
1802 msgstr "NFSSERVCTL"
1803
1804 #. type: TH
1805 #: build/C/man2/nfsservctl.2:8
1806 #, no-wrap
1807 msgid "2012-03-05"
1808 msgstr "2012-03-05"
1809
1810 #. type: Plain text
1811 #: build/C/man2/nfsservctl.2:11
1812 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1813 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1814
1815 #. type: Plain text
1816 #: build/C/man2/nfsservctl.2:14
1817 #, no-wrap
1818 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1819 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1820
1821 #. type: Plain text
1822 #: build/C/man2/nfsservctl.2:17
1823 #, no-wrap
1824 msgid ""
1825 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1826 "B<                union nfsctl_res *>I<resp>B<);>\n"
1827 msgstr ""
1828 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1829 "B<                union nfsctl_res *>I<resp>B<);>\n"
1830
1831 #. type: Plain text
1832 #: build/C/man2/nfsservctl.2:21
1833 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1834 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1835
1836 #. type: Plain text
1837 #: build/C/man2/nfsservctl.2:33
1838 #, no-wrap
1839 msgid ""
1840 "/*\n"
1841 " * These are the commands understood by nfsctl().\n"
1842 " */\n"
1843 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1844 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1845 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1846 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1847 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1848 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1849 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1850 msgstr ""
1851 "/*\n"
1852 " * nfsctl() によって理解されるコマンド\n"
1853 " */\n"
1854 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1855 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1856 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1857 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1858 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1859 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1860 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1861
1862 #. type: Plain text
1863 #: build/C/man2/nfsservctl.2:45
1864 #, no-wrap
1865 msgid ""
1866 "struct nfsctl_arg {\n"
1867 "    int                       ca_version;     /* safeguard */\n"
1868 "    union {\n"
1869 "        struct nfsctl_svc     u_svc;\n"
1870 "        struct nfsctl_client  u_client;\n"
1871 "        struct nfsctl_export  u_export;\n"
1872 "        struct nfsctl_uidmap  u_umap;\n"
1873 "        struct nfsctl_fhparm  u_getfh;\n"
1874 "        unsigned int          u_debug;\n"
1875 "    } u;\n"
1876 "}\n"
1877 msgstr ""
1878 "struct nfsctl_arg {\n"
1879 "    int                       ca_version;     /* safeguard */\n"
1880 "    union {\n"
1881 "        struct nfsctl_svc     u_svc;\n"
1882 "        struct nfsctl_client  u_client;\n"
1883 "        struct nfsctl_export  u_export;\n"
1884 "        struct nfsctl_uidmap  u_umap;\n"
1885 "        struct nfsctl_fhparm  u_getfh;\n"
1886 "        unsigned int          u_debug;\n"
1887 "    } u;\n"
1888 "}\n"
1889
1890 #. type: Plain text
1891 #: build/C/man2/nfsservctl.2:50
1892 #, no-wrap
1893 msgid ""
1894 "union nfsctl_res {\n"
1895 "        struct knfs_fh          cr_getfh;\n"
1896 "        unsigned int            cr_debug;\n"
1897 "};\n"
1898 msgstr ""
1899 "union nfsctl_res {\n"
1900 "        struct knfs_fh          cr_getfh;\n"
1901 "        unsigned int            cr_debug;\n"
1902 "};\n"
1903
1904 #. type: Plain text
1905 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1906 #: build/C/man2/vm86.2:59
1907 msgid ""
1908 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1909 "appropriately."
1910 msgstr ""
1911 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1912 "定される。"
1913
1914 #. type: Plain text
1915 #: build/C/man2/nfsservctl.2:58
1916 msgid "This call is Linux-specific."
1917 msgstr "このコールは Linux 特有である。"
1918
1919 #. type: TH
1920 #: build/C/man2/outb.2:26
1921 #, no-wrap
1922 msgid "OUTB"
1923 msgstr "OUTB"
1924
1925 #. type: TH
1926 #: build/C/man2/outb.2:26
1927 #, no-wrap
1928 msgid "2012-12-31"
1929 msgstr "2012-12-31"
1930
1931 #. type: Plain text
1932 #: build/C/man2/outb.2:31
1933 msgid ""
1934 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1935 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1936 msgstr ""
1937 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1938 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1939
1940 #. type: Plain text
1941 #: build/C/man2/outb.2:34
1942 #, no-wrap
1943 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1944 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1945
1946 #. type: Plain text
1947 #: build/C/man2/outb.2:41
1948 #, no-wrap
1949 msgid ""
1950 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1951 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1952 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1953 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1954 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1955 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1956 msgstr ""
1957 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1958 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1959 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1960 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1961 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1962 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1963
1964 #. type: Plain text
1965 #: build/C/man2/outb.2:48
1966 #, no-wrap
1967 msgid ""
1968 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1969 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1970 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1971 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1972 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1973 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1974 msgstr ""
1975 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1976 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1977 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1978 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1979 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1980 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1981
1982 #. type: Plain text
1983 #: build/C/man2/outb.2:61
1984 #, no-wrap
1985 msgid ""
1986 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1987 "B<           unsigned long int >I<count>B<);>\n"
1988 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1989 "B<           unsigned long int >I<count>B<);>\n"
1990 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1991 "B<           unsigned long int >I<count>B<);>\n"
1992 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1993 "B<           unsigned long int >I<count>B<);>\n"
1994 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1995 "B<           unsigned long int >I<count>B<);>\n"
1996 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1997 "B<           unsigned long int >I<count>B<);>\n"
1998 msgstr ""
1999 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2000 "B<           unsigned long int >I<count>B<);>\n"
2001 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2002 "B<           unsigned long int >I<count>B<);>\n"
2003 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2004 "B<           unsigned long int >I<count>B<);>\n"
2005 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2006 "B<           unsigned long int >I<count>B<);>\n"
2007 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2008 "B<           unsigned long int >I<count>B<);>\n"
2009 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2010 "B<           unsigned long int >I<count>B<);>\n"
2011
2012 #. type: Plain text
2013 #: build/C/man2/outb.2:67
2014 msgid ""
2015 "This family of functions is used to do low-level port input and output.  The "
2016 "out* functions do port output, the in* functions do port input; the b-suffix "
2017 "functions are byte-width and the w-suffix functions word-width; the _p-"
2018 "suffix functions pause until the I/O completes."
2019 msgstr ""
2020 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2021 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2022 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2023 "待つ。"
2024
2025 #.  , given the following information
2026 #.  in addition to that given in
2027 #.  .BR outb (9).
2028 #. type: Plain text
2029 #: build/C/man2/outb.2:73
2030 msgid ""
2031 "They are primarily designed for internal kernel use, but can be used from "
2032 "user space."
2033 msgstr ""
2034 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2035 "ザー空間からでも使用できる。"
2036
2037 #. type: Plain text
2038 #: build/C/man2/outb.2:78
2039 msgid ""
2040 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2041 "as inline macros, and will not be substituted in without optimization "
2042 "enabled, causing unresolved references at link time."
2043 msgstr ""
2044 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2045 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2046 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2047
2048 #. type: Plain text
2049 #: build/C/man2/outb.2:87
2050 msgid ""
2051 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2052 "allow the user space application to access the I/O ports in question.  "
2053 "Failure to do this will cause the application to receive a segmentation "
2054 "fault."
2055 msgstr ""
2056 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2057 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2058 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2059 "になる。"
2060
2061 #. type: Plain text
2062 #: build/C/man2/outb.2:96
2063 msgid ""
2064 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2065 "passed first and the I<port> argument is passed second, which is the "
2066 "opposite order from most DOS implementations."
2067 msgstr ""
2068 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2069 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2070 "である。"
2071
2072 #. type: Plain text
2073 #: build/C/man2/outb.2:99
2074 msgid "B<ioperm>(2), B<iopl>(2)"
2075 msgstr "B<ioperm>(2), B<iopl>(2)"
2076
2077 #. type: TH
2078 #: build/C/man2/pciconfig_read.2:8
2079 #, no-wrap
2080 msgid "PCICONFIG_READ"
2081 msgstr "PCICONFIG_READ"
2082
2083 #. type: TH
2084 #: build/C/man2/pciconfig_read.2:8
2085 #, no-wrap
2086 msgid "2003-07-14"
2087 msgstr "2003-07-14"
2088
2089 #. type: Plain text
2090 #: build/C/man2/pciconfig_read.2:11
2091 msgid ""
2092 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2093 "handling"
2094 msgstr ""
2095 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2096
2097 #. type: Plain text
2098 #: build/C/man2/pciconfig_read.2:14
2099 #, no-wrap
2100 msgid "B<#include E<lt>pci.hE<gt>>\n"
2101 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2102
2103 #. type: Plain text
2104 #: build/C/man2/pciconfig_read.2:21
2105 #, no-wrap
2106 msgid ""
2107 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2108 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2109 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2110 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2111 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2112 "B<          unsigned long >I<devfn>B<);>\n"
2113 msgstr ""
2114 "B<int pciconfig_read(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_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2117 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2118 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2119 "B<          unsigned long >I<devfn>B<);>\n"
2120
2121 #. type: Plain text
2122 #: build/C/man2/pciconfig_read.2:27
2123 msgid ""
2124 "Most of the interaction with PCI devices is already handled by the kernel "
2125 "PCI layer, and thus these calls should not normally need to be accessed from "
2126 "user space."
2127 msgstr ""
2128 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2129 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2130
2131 #. type: TP
2132 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2133 #, no-wrap
2134 msgid "B<pciconfig_read>()"
2135 msgstr "B<pciconfig_read>()"
2136
2137 #. type: Plain text
2138 #: build/C/man2/pciconfig_read.2:36
2139 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2140 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2141
2142 #. type: TP
2143 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2144 #, no-wrap
2145 msgid "B<pciconfig_write>()"
2146 msgstr "B<pciconfig_write>()"
2147
2148 #. type: Plain text
2149 #: build/C/man2/pciconfig_read.2:45
2150 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2151 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2152
2153 #. type: TP
2154 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2155 #, no-wrap
2156 msgid "B<pciconfig_iobase>()"
2157 msgstr "B<pciconfig_iobase>()"
2158
2159 #. type: Plain text
2160 #: build/C/man2/pciconfig_read.2:50
2161 msgid ""
2162 "You pass it a bus/devfn pair and get a physical address for either the "
2163 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2164 "PIO cycles, or the ISA holes if any."
2165 msgstr ""
2166 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2167 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2168 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2169
2170 #. type: Plain text
2171 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2172 msgid ""
2173 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2174 "appropriately."
2175 msgstr ""
2176 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2177 "定される。"
2178
2179 #. type: Plain text
2180 #: build/C/man2/pciconfig_read.2:77
2181 msgid ""
2182 "Returns information on locations of various I/O regions in physical memory "
2183 "according to the I<which> value.  Values for I<which> are: "
2184 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2185 "B<IOBASE_ISA_MEM>."
2186 msgstr ""
2187 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2188 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2189 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2190
2191 #. type: Plain text
2192 #: build/C/man2/pciconfig_read.2:84
2193 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2194 msgstr ""
2195 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2196 "い。"
2197
2198 #. type: TP
2199 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1819
2200 #: build/C/man2/sendfile.2:134
2201 #, no-wrap
2202 msgid "B<EIO>"
2203 msgstr "B<EIO>"
2204
2205 #. type: Plain text
2206 #: build/C/man2/pciconfig_read.2:87
2207 msgid "I/O error."
2208 msgstr "I/O エラー。"
2209
2210 #. type: TP
2211 #: build/C/man2/pciconfig_read.2:87
2212 #, no-wrap
2213 msgid "B<ENODEV>"
2214 msgstr "B<ENODEV>"
2215
2216 #. type: Plain text
2217 #: build/C/man2/pciconfig_read.2:93
2218 msgid ""
2219 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2220 "could not find a slot."
2221 msgstr ""
2222 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2223 "出しの場合、スロット (slot) が見つからない。"
2224
2225 #. type: Plain text
2226 #: build/C/man2/pciconfig_read.2:98
2227 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2228 msgstr ""
2229 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2230 "いない)。"
2231
2232 #. type: TP
2233 #: build/C/man2/pciconfig_read.2:98
2234 #, no-wrap
2235 msgid "B<EOPNOTSUPP>"
2236 msgstr "B<EOPNOTSUPP>"
2237
2238 #. type: Plain text
2239 #: build/C/man2/pciconfig_read.2:105
2240 msgid ""
2241 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2242 "if the value for I<which> is invalid."
2243 msgstr ""
2244 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2245 "の値が無効であるときに返される。"
2246
2247 #. type: Plain text
2248 #: build/C/man2/pciconfig_read.2:112
2249 msgid ""
2250 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2251 "B<pciconfig_iobase>()."
2252 msgstr ""
2253 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2254 "B<pciconfig_iobase>()  には適用されない。"
2255
2256 #. type: Plain text
2257 #: build/C/man2/pciconfig_read.2:114
2258 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2259 msgstr ""
2260 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2261 "である。"
2262
2263 #. type: Plain text
2264 #: build/C/man2/pciconfig_read.2:116
2265 msgid "B<capabilities>(7)"
2266 msgstr "B<capabilities>(7)"
2267
2268 #. type: TH
2269 #: build/C/man2/perf_event_open.2:27
2270 #, no-wrap
2271 msgid "PERF_EVENT_OPEN"
2272 msgstr "PERF_EVENT_OPEN"
2273
2274 #. type: TH
2275 #: build/C/man2/perf_event_open.2:27
2276 #, fuzzy, no-wrap
2277 #| msgid "2013-02-16"
2278 msgid "2013-07-16"
2279 msgstr "2013-02-16"
2280
2281 #. type: Plain text
2282 #: build/C/man2/perf_event_open.2:30
2283 msgid "perf_event_open - set up performance monitoring"
2284 msgstr ""
2285
2286 #. type: Plain text
2287 #: build/C/man2/perf_event_open.2:34
2288 #, no-wrap
2289 msgid ""
2290 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2291 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2292 msgstr ""
2293 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2294 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2295
2296 #. type: Plain text
2297 #: build/C/man2/perf_event_open.2:38
2298 #, no-wrap
2299 msgid ""
2300 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2301 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2302 "B<                    unsigned long >I<flags>B<);>\n"
2303 msgstr ""
2304 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2305 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2306 "B<                    unsigned long >I<flags>B<);>\n"
2307
2308 #. type: Plain text
2309 #: build/C/man2/perf_event_open.2:47
2310 msgid ""
2311 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2312 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2313 "B<fcntl>(2), etc.)."
2314 msgstr ""
2315
2316 #. type: Plain text
2317 #: build/C/man2/perf_event_open.2:55
2318 msgid ""
2319 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2320 "measuring performance information.  Each file descriptor corresponds to one "
2321 "event that is measured; these can be grouped together to measure multiple "
2322 "events simultaneously."
2323 msgstr ""
2324
2325 #. type: Plain text
2326 #: build/C/man2/perf_event_open.2:62
2327 msgid ""
2328 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2329 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2330 "overflows but does continue to exist and maintain its count value."
2331 msgstr ""
2332
2333 #. type: Plain text
2334 #: build/C/man2/perf_event_open.2:76
2335 msgid ""
2336 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2337 "one that is used for counting the aggregate number of events that occur.  In "
2338 "general, counting event results are gathered with a B<read>(2)  call.  A "
2339 "I<sampling> event periodically writes measurements to a buffer that can then "
2340 "be accessed via B<mmap>(2)B<.>"
2341 msgstr ""
2342
2343 #. type: SS
2344 #: build/C/man2/perf_event_open.2:76
2345 #, no-wrap
2346 msgid "Arguments"
2347 msgstr ""
2348
2349 #. type: Plain text
2350 #: build/C/man2/perf_event_open.2:90
2351 msgid ""
2352 "The argument I<pid> allows events to be attached to processes in various "
2353 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2354 "is greater than 0, the process indicated by I<pid> is measured, and if "
2355 "I<pid> is -1, all processes are counted."
2356 msgstr ""
2357
2358 #. type: Plain text
2359 #: build/C/man2/perf_event_open.2:101
2360 msgid ""
2361 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2362 "is greater than or equal to 0, measurements are restricted to the specified "
2363 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2364 msgstr ""
2365
2366 #. type: Plain text
2367 #: build/C/man2/perf_event_open.2:107
2368 msgid ""
2369 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2370 msgstr ""
2371
2372 #. type: Plain text
2373 #: build/C/man2/perf_event_open.2:115
2374 msgid ""
2375 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2376 "that process to whatever CPU the process gets scheduled to.  Per-process "
2377 "events can be created by any user."
2378 msgstr ""
2379
2380 #. type: Plain text
2381 #: build/C/man2/perf_event_open.2:126
2382 msgid ""
2383 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2384 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2385 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2386 msgstr ""
2387
2388 #. type: Plain text
2389 #: build/C/man2/perf_event_open.2:148
2390 msgid ""
2391 "The I<group_fd> argument allows event groups to be created.  An event group "
2392 "has one event which is the group leader.  The leader is created first, with "
2393 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2394 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2395 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2396 "and is considered to be a group with only 1 member.)  An event group is "
2397 "scheduled onto the CPU as a unit: it will be put onto the CPU only if all of "
2398 "the events in the group can be put onto the CPU.  This means that the values "
2399 "of the member events can be meaningfully compared, added, divided (to get "
2400 "ratios), etc., with each other, since they have counted events for the same "
2401 "set of executed instructions."
2402 msgstr ""
2403
2404 #. type: Plain text
2405 #: build/C/man2/perf_event_open.2:152
2406 #, fuzzy
2407 #| msgid ""
2408 #| "The I<flags> argument is a bit mask that is composed by ORing together "
2409 #| "zero or more of the following values:"
2410 msgid ""
2411 "The I<flags> argument is formed by ORing together zero or more of the "
2412 "following values:"
2413 msgstr ""
2414 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2415
2416 #. type: TP
2417 #: build/C/man2/perf_event_open.2:152
2418 #, no-wrap
2419 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2420 msgstr ""
2421
2422 #.  FIXME The following sentence is unclear
2423 #.  FIXME So, why is it useful?
2424 #. type: Plain text
2425 #: build/C/man2/perf_event_open.2:159
2426 msgid ""
2427 "This flag allows creating an event as part of an event group but having no "
2428 "group leader.  It is unclear why this is useful."
2429 msgstr ""
2430
2431 #. type: TP
2432 #: build/C/man2/perf_event_open.2:159
2433 #, no-wrap
2434 msgid "B<PERF_FLAG_FD_OUTPUT>"
2435 msgstr ""
2436
2437 #. type: Plain text
2438 #: build/C/man2/perf_event_open.2:162
2439 msgid "This flag re-routes the output from an event to the group leader."
2440 msgstr ""
2441
2442 #. type: TP
2443 #: build/C/man2/perf_event_open.2:162
2444 #, fuzzy, no-wrap
2445 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2446 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2447 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2448
2449 #. type: Plain text
2450 #: build/C/man2/perf_event_open.2:185
2451 msgid ""
2452 "This flag activates per-container system-wide monitoring.  A container is an "
2453 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2454 "memory, etc...).  In this mode, the event is measured only if the thread "
2455 "running on the monitored CPU belongs to the designated container (cgroup).  "
2456 "The cgroup is identified by passing a file descriptor opened on its "
2457 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2458 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2459 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2460 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2461 "events and may therefore require extra permissions."
2462 msgstr ""
2463
2464 #. type: Plain text
2465 #: build/C/man2/perf_event_open.2:190
2466 msgid ""
2467 "The I<perf_event_attr> structure provides detailed configuration information "
2468 "for the event being created."
2469 msgstr ""
2470
2471 #. type: Plain text
2472 #: build/C/man2/perf_event_open.2:197
2473 #, no-wrap
2474 msgid ""
2475 "struct perf_event_attr {\n"
2476 "    __u32     type;         /* Type of event */\n"
2477 "    __u32     size;         /* Size of attribute structure */\n"
2478 "    __u64     config;       /* Type-specific configuration */\n"
2479 msgstr ""
2480
2481 #. type: Plain text
2482 #: build/C/man2/perf_event_open.2:202
2483 #, no-wrap
2484 msgid ""
2485 "    union {\n"
2486 "        __u64 sample_period;    /* Period of sampling */\n"
2487 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2488 "    };\n"
2489 msgstr ""
2490
2491 #. type: Plain text
2492 #: build/C/man2/perf_event_open.2:205
2493 #, no-wrap
2494 msgid ""
2495 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2496 "    __u64     read_format;  /* Specifies values returned in read */\n"
2497 msgstr ""
2498
2499 #. type: Plain text
2500 #: build/C/man2/perf_event_open.2:231
2501 #, no-wrap
2502 msgid ""
2503 "    __u64     disabled       : 1,   /* off by default */\n"
2504 "              inherit        : 1,   /* children inherit it */\n"
2505 "              pinned         : 1,   /* must always be on PMU */\n"
2506 "              exclusive      : 1,   /* only group on PMU */\n"
2507 "              exclude_user   : 1,   /* don't count user */\n"
2508 "              exclude_kernel : 1,   /* don't count kernel */\n"
2509 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2510 "              exclude_idle   : 1,   /* don't count when idle */\n"
2511 "              mmap           : 1,   /* include mmap data */\n"
2512 "              comm           : 1,   /* include comm data */\n"
2513 "              freq           : 1,   /* use freq, not period */\n"
2514 "              inherit_stat   : 1,   /* per task counts */\n"
2515 "              enable_on_exec : 1,   /* next exec enables */\n"
2516 "              task           : 1,   /* trace fork/exit */\n"
2517 "              watermark      : 1,   /* wakeup_watermark */\n"
2518 "              precise_ip     : 2,   /* skid constraint */\n"
2519 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2520 "              sample_id_all  : 1,   /* sample_type all events */\n"
2521 "              exclude_host   : 1,   /* don't count in host */\n"
2522 "              exclude_guest  : 1,   /* don't count in guest */\n"
2523 "              exclude_callchain_kernel : 1,\n"
2524 "                                    /* exclude kernel callchains */\n"
2525 "              exclude_callchain_user   : 1,\n"
2526 "\t                            /* exclude user callchains */\n"
2527 "              __reserved_1   : 41;\n"
2528 msgstr ""
2529
2530 #. type: Plain text
2531 #: build/C/man2/perf_event_open.2:236
2532 #, no-wrap
2533 msgid ""
2534 "    union {\n"
2535 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2536 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2537 "    };\n"
2538 msgstr ""
2539
2540 #. type: Plain text
2541 #: build/C/man2/perf_event_open.2:238
2542 #, no-wrap
2543 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2544 msgstr ""
2545
2546 #. type: Plain text
2547 #: build/C/man2/perf_event_open.2:243
2548 #, no-wrap
2549 msgid ""
2550 "    union {\n"
2551 "        __u64 bp_addr;          /* breakpoint address */\n"
2552 "        __u64 config1;          /* extension of config */\n"
2553 "    };\n"
2554 msgstr ""
2555
2556 #. type: Plain text
2557 #: build/C/man2/perf_event_open.2:253
2558 #, no-wrap
2559 msgid ""
2560 "    union {\n"
2561 "        __u64 bp_len;           /* breakpoint length */\n"
2562 "        __u64 config2;          /* extension of config1 */\n"
2563 "    };\n"
2564 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2565 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2566 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2567 "                                   samples */\n"
2568 "    __u32   __reserved_2;       /* Align to u64 */\n"
2569 msgstr ""
2570
2571 #. type: Plain text
2572 #: build/C/man2/perf_event_open.2:255
2573 #, no-wrap
2574 msgid "};\n"
2575 msgstr ""
2576
2577 #. type: Plain text
2578 #: build/C/man2/perf_event_open.2:261
2579 msgid ""
2580 "The fields of the I<perf_event_attr> structure are described in more detail "
2581 "below:"
2582 msgstr ""
2583
2584 #. type: TP
2585 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1311
2586 #, no-wrap
2587 msgid "I<type>"
2588 msgstr ""
2589
2590 #. type: Plain text
2591 #: build/C/man2/perf_event_open.2:265
2592 msgid ""
2593 "This field specifies the overall event type.  It has one of the following "
2594 "values:"
2595 msgstr ""
2596
2597 #. type: TP
2598 #: build/C/man2/perf_event_open.2:266
2599 #, no-wrap
2600 msgid "B<PERF_TYPE_HARDWARE>"
2601 msgstr ""
2602
2603 #. type: Plain text
2604 #: build/C/man2/perf_event_open.2:273
2605 msgid ""
2606 "This indicates one of the \"generalized\" hardware events provided by the "
2607 "kernel.  See the I<config> field definition for more details."
2608 msgstr ""
2609
2610 #. type: TP
2611 #: build/C/man2/perf_event_open.2:273
2612 #, no-wrap
2613 msgid "B<PERF_TYPE_SOFTWARE>"
2614 msgstr ""
2615
2616 #. type: Plain text
2617 #: build/C/man2/perf_event_open.2:277
2618 msgid ""
2619 "This indicates one of the software-defined events provided by the kernel "
2620 "(even if no hardware support is available)."
2621 msgstr ""
2622
2623 #. type: TP
2624 #: build/C/man2/perf_event_open.2:277
2625 #, no-wrap
2626 msgid "B<PERF_TYPE_TRACEPOINT>"
2627 msgstr "B<PERF_TYPE_TRACEPOINT>"
2628
2629 #. type: Plain text
2630 #: build/C/man2/perf_event_open.2:281
2631 msgid ""
2632 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2633 msgstr ""
2634
2635 #. type: TP
2636 #: build/C/man2/perf_event_open.2:281
2637 #, no-wrap
2638 msgid "B<PERF_TYPE_HW_CACHE>"
2639 msgstr ""
2640
2641 #. type: Plain text
2642 #: build/C/man2/perf_event_open.2:287
2643 msgid ""
2644 "This indicates a hardware cache event.  This has a special encoding, "
2645 "described in the I<config> field definition."
2646 msgstr ""
2647
2648 #. type: TP
2649 #: build/C/man2/perf_event_open.2:287
2650 #, no-wrap
2651 msgid "B<PERF_TYPE_RAW>"
2652 msgstr ""
2653
2654 #. type: Plain text
2655 #: build/C/man2/perf_event_open.2:291
2656 msgid ""
2657 "This indicates a \"raw\" implementation-specific event in the I<config> "
2658 "field."
2659 msgstr ""
2660
2661 #. type: TP
2662 #: build/C/man2/perf_event_open.2:291
2663 #, fuzzy, no-wrap
2664 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2665 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2666 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2667
2668 #. type: Plain text
2669 #: build/C/man2/perf_event_open.2:296
2670 msgid ""
2671 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2672 "can be read/write accesses to an address as well as execution of an "
2673 "instruction address."
2674 msgstr ""
2675
2676 #. type: TP
2677 #: build/C/man2/perf_event_open.2:296
2678 #, no-wrap
2679 msgid "dynamic PMU"
2680 msgstr ""
2681
2682 #. type: Plain text
2683 #: build/C/man2/perf_event_open.2:315
2684 msgid ""
2685 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2686 "enable this, a value exported by the kernel can be used in the I<type> field "
2687 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2688 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2689 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2690 "content is an integer that can be used in the I<type> field.  For instance, "
2691 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2692 "CPU PMU, which is usually 4."
2693 msgstr ""
2694
2695 #. type: TP
2696 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1770
2697 #, no-wrap
2698 msgid "I<size>"
2699 msgstr ""
2700
2701 #. type: Plain text
2702 #: build/C/man2/perf_event_open.2:325
2703 msgid ""
2704 "The size of the I<perf_event_attr> structure for forward/backward "
2705 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2706 "the kernel to see the struct size at the time of compilation."
2707 msgstr ""
2708
2709 #. type: Plain text
2710 #: build/C/man2/perf_event_open.2:340
2711 msgid ""
2712 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2713 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2714 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2715 "corresponding to the addition of branch sampling in Linux 3.4.  "
2716 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2717 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2718 msgstr ""
2719
2720 #. type: TP
2721 #: build/C/man2/perf_event_open.2:340
2722 #, no-wrap
2723 msgid "I<config>"
2724 msgstr ""
2725
2726 #. type: Plain text
2727 #: build/C/man2/perf_event_open.2:351
2728 msgid ""
2729 "This specifies which event you want, in conjunction with the I<type> field.  "
2730 "The I<config1> and I<config2> fields are also taken into account in cases "
2731 "where 64 bits is not enough to fully specify the event.  The encoding of "
2732 "these fields are event dependent."
2733 msgstr ""
2734
2735 #. type: Plain text
2736 #: build/C/man2/perf_event_open.2:357
2737 msgid ""
2738 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2739 "counter configuration data; if the most significant bit is unset, the next 7 "
2740 "bits are an event type and the rest of the bits are the event identifier."
2741 msgstr ""
2742
2743 #. type: Plain text
2744 #: build/C/man2/perf_event_open.2:368
2745 msgid ""
2746 "There are various ways to set the I<config> field that are dependent on the "
2747 "value of the previously described I<type> field.  What follows are various "
2748 "possible settings for I<config> separated out by I<type>."
2749 msgstr ""
2750
2751 #. type: Plain text
2752 #: build/C/man2/perf_event_open.2:378
2753 msgid ""
2754 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2755 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2756 "I<config> to one of the following:"
2757 msgstr ""
2758
2759 #. type: TP
2760 #: build/C/man2/perf_event_open.2:379
2761 #, no-wrap
2762 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2763 msgstr ""
2764
2765 #. type: Plain text
2766 #: build/C/man2/perf_event_open.2:383
2767 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2768 msgstr ""
2769
2770 #. type: TP
2771 #: build/C/man2/perf_event_open.2:383
2772 #, no-wrap
2773 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2774 msgstr ""
2775
2776 #. type: Plain text
2777 #: build/C/man2/perf_event_open.2:388
2778 msgid ""
2779 "Retired instructions.  Be careful, these can be affected by various issues, "
2780 "most notably hardware interrupt counts"
2781 msgstr ""
2782
2783 #. type: TP
2784 #: build/C/man2/perf_event_open.2:388
2785 #, no-wrap
2786 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2787 msgstr ""
2788
2789 #. type: Plain text
2790 #: build/C/man2/perf_event_open.2:395
2791 msgid ""
2792 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2793 "may vary depending on your CPU.  This may include prefetches and coherency "
2794 "messages; again this depends on the design of your CPU."
2795 msgstr ""
2796
2797 #. type: TP
2798 #: build/C/man2/perf_event_open.2:395
2799 #, no-wrap
2800 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2801 msgstr ""
2802
2803 #. type: Plain text
2804 #: build/C/man2/perf_event_open.2:402
2805 msgid ""
2806 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2807 "intended to be used in conjunction with the "
2808 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2809 msgstr ""
2810
2811 #. type: TP
2812 #: build/C/man2/perf_event_open.2:402
2813 #, no-wrap
2814 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2815 msgstr ""
2816
2817 #. type: Plain text
2818 #: build/C/man2/perf_event_open.2:407
2819 msgid ""
2820 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2821 "event on AMD processors."
2822 msgstr ""
2823
2824 #. type: TP
2825 #: build/C/man2/perf_event_open.2:407
2826 #, no-wrap
2827 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2828 msgstr ""
2829
2830 #. type: Plain text
2831 #: build/C/man2/perf_event_open.2:410
2832 msgid "Mispredicted branch instructions."
2833 msgstr ""
2834
2835 #. type: TP
2836 #: build/C/man2/perf_event_open.2:410
2837 #, no-wrap
2838 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2839 msgstr ""
2840
2841 #. type: Plain text
2842 #: build/C/man2/perf_event_open.2:413
2843 msgid "Bus cycles, which can be different from total cycles."
2844 msgstr ""
2845
2846 #. type: TP
2847 #: build/C/man2/perf_event_open.2:413
2848 #, fuzzy, no-wrap
2849 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2850 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2851 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2852
2853 #. type: Plain text
2854 #: build/C/man2/perf_event_open.2:416
2855 msgid "Stalled cycles during issue."
2856 msgstr ""
2857
2858 #. type: TP
2859 #: build/C/man2/perf_event_open.2:416
2860 #, no-wrap
2861 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2862 msgstr ""
2863
2864 #. type: Plain text
2865 #: build/C/man2/perf_event_open.2:419
2866 msgid "Stalled cycles during retirement."
2867 msgstr ""
2868
2869 #. type: TP
2870 #: build/C/man2/perf_event_open.2:419
2871 #, fuzzy, no-wrap
2872 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2873 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2874 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2875
2876 #. type: Plain text
2877 #: build/C/man2/perf_event_open.2:422
2878 msgid "Total cycles; not affected by CPU frequency scaling."
2879 msgstr ""
2880
2881 #. type: Plain text
2882 #: build/C/man2/perf_event_open.2:432
2883 msgid ""
2884 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2885 "provided by the kernel.  Set I<config> to one of the following:"
2886 msgstr ""
2887
2888 #. type: TP
2889 #: build/C/man2/perf_event_open.2:433
2890 #, no-wrap
2891 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2892 msgstr ""
2893
2894 #. type: Plain text
2895 #: build/C/man2/perf_event_open.2:436
2896 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2897 msgstr ""
2898
2899 #. type: TP
2900 #: build/C/man2/perf_event_open.2:436
2901 #, no-wrap
2902 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2903 msgstr ""
2904
2905 #. type: Plain text
2906 #: build/C/man2/perf_event_open.2:439
2907 msgid "This reports a clock count specific to the task that is running."
2908 msgstr ""
2909
2910 #. type: TP
2911 #: build/C/man2/perf_event_open.2:439
2912 #, no-wrap
2913 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2914 msgstr ""
2915
2916 #. type: Plain text
2917 #: build/C/man2/perf_event_open.2:442
2918 msgid "This reports the number of page faults."
2919 msgstr ""
2920
2921 #. type: TP
2922 #: build/C/man2/perf_event_open.2:442
2923 #, no-wrap
2924 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2925 msgstr ""
2926
2927 #. type: Plain text
2928 #: build/C/man2/perf_event_open.2:447
2929 msgid ""
2930 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2931 "as user-space events, after that they are reported as happening in the "
2932 "kernel."
2933 msgstr ""
2934
2935 #. type: TP
2936 #: build/C/man2/perf_event_open.2:447
2937 #, no-wrap
2938 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2939 msgstr ""
2940
2941 #. type: Plain text
2942 #: build/C/man2/perf_event_open.2:451
2943 msgid "This reports the number of times the process has migrated to a new CPU."
2944 msgstr ""
2945
2946 #. type: TP
2947 #: build/C/man2/perf_event_open.2:451
2948 #, no-wrap
2949 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2950 msgstr ""
2951
2952 #. type: Plain text
2953 #: build/C/man2/perf_event_open.2:455
2954 msgid ""
2955 "This counts the number of minor page faults.  These did not require disk I/O "
2956 "to handle."
2957 msgstr ""
2958
2959 #. type: TP
2960 #: build/C/man2/perf_event_open.2:455
2961 #, no-wrap
2962 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2963 msgstr ""
2964
2965 #. type: Plain text
2966 #: build/C/man2/perf_event_open.2:459
2967 msgid ""
2968 "This counts the number of major page faults.  These required disk I/O to "
2969 "handle."
2970 msgstr ""
2971
2972 #. type: TP
2973 #: build/C/man2/perf_event_open.2:459
2974 #, fuzzy, no-wrap
2975 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2976 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2977 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2978
2979 #. type: Plain text
2980 #: build/C/man2/perf_event_open.2:465
2981 msgid ""
2982 "This counts the number of alignment faults.  These happen when unaligned "
2983 "memory accesses happen; the kernel can handle these but it reduces "
2984 "performance.  This happens only on some architectures (never on x86)."
2985 msgstr ""
2986
2987 #. type: TP
2988 #: build/C/man2/perf_event_open.2:465
2989 #, fuzzy, no-wrap
2990 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2991 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
2992 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2993
2994 #. type: Plain text
2995 #: build/C/man2/perf_event_open.2:471
2996 msgid ""
2997 "This counts the number of emulation faults.  The kernel sometimes traps on "
2998 "unimplemented instructions and emulates them for user space.  This can "
2999 "negatively impact performance."
3000 msgstr ""
3001
3002 #. type: Plain text
3003 #: build/C/man2/perf_event_open.2:484
3004 msgid ""
3005 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3006 "tracepoints.  The value to use in I<config> can be obtained from under "
3007 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3008 msgstr ""
3009
3010 #. type: Plain text
3011 #: build/C/man2/perf_event_open.2:495
3012 msgid ""
3013 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3014 "cache event.  To calculate the appropriate I<config> value use the following "
3015 "equation:"
3016 msgstr ""
3017
3018 #. type: Plain text
3019 #: build/C/man2/perf_event_open.2:500
3020 #, no-wrap
3021 msgid ""
3022 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3023 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3024 msgstr ""
3025
3026 #. type: Plain text
3027 #: build/C/man2/perf_event_open.2:505
3028 msgid "where I<perf_hw_cache_id> is one of:"
3029 msgstr ""
3030
3031 #. type: TP
3032 #: build/C/man2/perf_event_open.2:506
3033 #, no-wrap
3034 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3035 msgstr ""
3036
3037 #. type: Plain text
3038 #: build/C/man2/perf_event_open.2:509
3039 msgid "for measuring Level 1 Data Cache"
3040 msgstr ""
3041
3042 #. type: TP
3043 #: build/C/man2/perf_event_open.2:509
3044 #, no-wrap
3045 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3046 msgstr ""
3047
3048 #. type: Plain text
3049 #: build/C/man2/perf_event_open.2:512
3050 msgid "for measuring Level 1 Instruction Cache"
3051 msgstr ""
3052
3053 #. type: TP
3054 #: build/C/man2/perf_event_open.2:512
3055 #, no-wrap
3056 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3057 msgstr ""
3058
3059 #. type: Plain text
3060 #: build/C/man2/perf_event_open.2:515
3061 msgid "for measuring Last-Level Cache"
3062 msgstr ""
3063
3064 #. type: TP
3065 #: build/C/man2/perf_event_open.2:515
3066 #, no-wrap
3067 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3068 msgstr ""
3069
3070 #. type: Plain text
3071 #: build/C/man2/perf_event_open.2:518
3072 msgid "for measuring the Data TLB"
3073 msgstr ""
3074
3075 #. type: TP
3076 #: build/C/man2/perf_event_open.2:518
3077 #, no-wrap
3078 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3079 msgstr ""
3080
3081 #. type: Plain text
3082 #: build/C/man2/perf_event_open.2:521
3083 msgid "for measuring the Instruction TLB"
3084 msgstr ""
3085
3086 #. type: TP
3087 #: build/C/man2/perf_event_open.2:521
3088 #, no-wrap
3089 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3090 msgstr ""
3091
3092 #. type: Plain text
3093 #: build/C/man2/perf_event_open.2:524
3094 msgid "for measuring the branch prediction unit"
3095 msgstr ""
3096
3097 #. type: TP
3098 #: build/C/man2/perf_event_open.2:524
3099 #, fuzzy, no-wrap
3100 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3101 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3102 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3103
3104 #. type: Plain text
3105 #: build/C/man2/perf_event_open.2:527
3106 msgid "for measuring local memory accesses"
3107 msgstr ""
3108
3109 #. type: Plain text
3110 #: build/C/man2/perf_event_open.2:532
3111 msgid "and I<perf_hw_cache_op_id> is one of"
3112 msgstr ""
3113
3114 #. type: TP
3115 #: build/C/man2/perf_event_open.2:533
3116 #, no-wrap
3117 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3118 msgstr ""
3119
3120 #. type: Plain text
3121 #: build/C/man2/perf_event_open.2:536
3122 msgid "for read accesses"
3123 msgstr ""
3124
3125 #. type: TP
3126 #: build/C/man2/perf_event_open.2:536
3127 #, no-wrap
3128 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3129 msgstr ""
3130
3131 #. type: Plain text
3132 #: build/C/man2/perf_event_open.2:539
3133 msgid "for write accesses"
3134 msgstr ""
3135
3136 #. type: TP
3137 #: build/C/man2/perf_event_open.2:539
3138 #, no-wrap
3139 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3140 msgstr ""
3141
3142 #. type: Plain text
3143 #: build/C/man2/perf_event_open.2:542
3144 msgid "for prefetch accesses"
3145 msgstr ""
3146
3147 #. type: Plain text
3148 #: build/C/man2/perf_event_open.2:547
3149 msgid "and I<perf_hw_cache_op_result_id> is one of"
3150 msgstr ""
3151
3152 #. type: TP
3153 #: build/C/man2/perf_event_open.2:548
3154 #, no-wrap
3155 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3156 msgstr ""
3157
3158 #. type: Plain text
3159 #: build/C/man2/perf_event_open.2:551
3160 msgid "to measure accesses"
3161 msgstr ""
3162
3163 #. type: TP
3164 #: build/C/man2/perf_event_open.2:551
3165 #, no-wrap
3166 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3167 msgstr ""
3168
3169 #. type: Plain text
3170 #: build/C/man2/perf_event_open.2:554
3171 msgid "to measure misses"
3172 msgstr ""
3173
3174 #. type: Plain text
3175 #: build/C/man2/perf_event_open.2:572
3176 msgid ""
3177 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3178 "needed.  Most CPUs support events that are not covered by the \"generalized"
3179 "\" events.  These are implementation defined; see your CPU manual (for "
3180 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3181 "Developer Guide).  The libpfm4 library can be used to translate from the "
3182 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3183 "expects in this field."
3184 msgstr ""
3185
3186 #. type: Plain text
3187 #: build/C/man2/perf_event_open.2:581
3188 msgid ""
3189 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3190 "Its parameters are set in other places."
3191 msgstr ""
3192
3193 #. type: TP
3194 #: build/C/man2/perf_event_open.2:582
3195 #, no-wrap
3196 msgid "I<sample_period>, I<sample_freq>"
3197 msgstr ""
3198
3199 #. type: Plain text
3200 #: build/C/man2/perf_event_open.2:594
3201 msgid ""
3202 "A \"sampling\" counter is one that generates an interrupt every N events, "
3203 "where N is given by I<sample_period>.  A sampling counter has "
3204 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3205 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3206 "is recorded on each interrupt."
3207 msgstr ""
3208
3209 #. type: Plain text
3210 #: build/C/man2/perf_event_open.2:604
3211 msgid ""
3212 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3213 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3214 "period to try and achieve the desired rate.  The rate of adjustment is a "
3215 "timer tick."
3216 msgstr ""
3217
3218 #. type: TP
3219 #: build/C/man2/perf_event_open.2:604
3220 #, no-wrap
3221 msgid "I<sample_type>"
3222 msgstr ""
3223
3224 #. type: Plain text
3225 #: build/C/man2/perf_event_open.2:616
3226 msgid ""
3227 "The various bits in this field specify which values to include in the "
3228 "sample.  They will be recorded in a ring-buffer, which is available to user "
3229 "space using B<mmap>(2).  The order in which the values are saved in the "
3230 "sample are documented in the MMAP Layout subsection below; it is not the "
3231 "I<enum perf_event_sample_format> order."
3232 msgstr ""
3233
3234 #. type: TP
3235 #: build/C/man2/perf_event_open.2:617
3236 #, no-wrap
3237 msgid "B<PERF_SAMPLE_IP>"
3238 msgstr ""
3239
3240 #. type: Plain text
3241 #: build/C/man2/perf_event_open.2:620
3242 msgid "Records instruction pointer."
3243 msgstr ""
3244
3245 #. type: TP
3246 #: build/C/man2/perf_event_open.2:620
3247 #, no-wrap
3248 msgid "B<PERF_SAMPLE_TID>"
3249 msgstr ""
3250
3251 #. type: Plain text
3252 #: build/C/man2/perf_event_open.2:623
3253 msgid "Records the process and thread IDs."
3254 msgstr ""
3255
3256 #. type: TP
3257 #: build/C/man2/perf_event_open.2:623
3258 #, no-wrap
3259 msgid "B<PERF_SAMPLE_TIME>"
3260 msgstr ""
3261
3262 #. type: Plain text
3263 #: build/C/man2/perf_event_open.2:626
3264 msgid "Records a timestamp."
3265 msgstr ""
3266
3267 #. type: TP
3268 #: build/C/man2/perf_event_open.2:626
3269 #, no-wrap
3270 msgid "B<PERF_SAMPLE_ADDR>"
3271 msgstr ""
3272
3273 #. type: Plain text
3274 #: build/C/man2/perf_event_open.2:629
3275 msgid "Records an address, if applicable."
3276 msgstr ""
3277
3278 #. type: TP
3279 #: build/C/man2/perf_event_open.2:629
3280 #, no-wrap
3281 msgid "B<PERF_SAMPLE_READ>"
3282 msgstr ""
3283
3284 #. type: Plain text
3285 #: build/C/man2/perf_event_open.2:632
3286 msgid ""
3287 "Record counter values for all events in a group, not just the group leader."
3288 msgstr ""
3289
3290 #. type: TP
3291 #: build/C/man2/perf_event_open.2:632
3292 #, no-wrap
3293 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3294 msgstr ""
3295
3296 #. type: Plain text
3297 #: build/C/man2/perf_event_open.2:635
3298 msgid "Records the callchain (stack backtrace)."
3299 msgstr ""
3300
3301 #. type: TP
3302 #: build/C/man2/perf_event_open.2:635
3303 #, no-wrap
3304 msgid "B<PERF_SAMPLE_ID>"
3305 msgstr ""
3306
3307 #. type: Plain text
3308 #: build/C/man2/perf_event_open.2:638
3309 msgid "Records a unique ID for the opened event's group leader."
3310 msgstr ""
3311
3312 #. type: TP
3313 #: build/C/man2/perf_event_open.2:638
3314 #, no-wrap
3315 msgid "B<PERF_SAMPLE_CPU>"
3316 msgstr ""
3317
3318 #. type: Plain text
3319 #: build/C/man2/perf_event_open.2:641
3320 msgid "Records CPU number."
3321 msgstr ""
3322
3323 #. type: TP
3324 #: build/C/man2/perf_event_open.2:641
3325 #, no-wrap
3326 msgid "B<PERF_SAMPLE_PERIOD>"
3327 msgstr ""
3328
3329 #. type: Plain text
3330 #: build/C/man2/perf_event_open.2:644
3331 msgid "Records the current sampling period."
3332 msgstr ""
3333
3334 #. type: TP
3335 #: build/C/man2/perf_event_open.2:644
3336 #, no-wrap
3337 msgid "B<PERF_SAMPLE_STREAM_ID>"
3338 msgstr ""
3339
3340 #. type: Plain text
3341 #: build/C/man2/perf_event_open.2:651
3342 msgid ""
3343 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3344 "actual ID is returned, not the group leader.  This ID is the same as the one "
3345 "returned by PERF_FORMAT_ID."
3346 msgstr ""
3347
3348 #. type: TP
3349 #: build/C/man2/perf_event_open.2:651
3350 #, no-wrap
3351 msgid "B<PERF_SAMPLE_RAW>"
3352 msgstr ""
3353
3354 #. type: Plain text
3355 #: build/C/man2/perf_event_open.2:655
3356 msgid ""
3357 "Records additional data, if applicable.  Usually returned by tracepoint "
3358 "events."
3359 msgstr ""
3360
3361 #. type: TP
3362 #: build/C/man2/perf_event_open.2:655
3363 #, fuzzy, no-wrap
3364 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3365 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3366 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3367
3368 #. type: Plain text
3369 #: build/C/man2/perf_event_open.2:660
3370 msgid ""
3371 "This provides a record of recent branches, as provided by CPU branch "
3372 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3373 "supports this feature."
3374 msgstr ""
3375
3376 #. type: Plain text
3377 #: build/C/man2/perf_event_open.2:664
3378 msgid ""
3379 "See the I<branch_sample_type> field for how to filter which branches are "
3380 "reported."
3381 msgstr ""
3382
3383 #. type: TP
3384 #: build/C/man2/perf_event_open.2:664
3385 #, fuzzy, no-wrap
3386 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3387 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3388 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3389
3390 #. type: Plain text
3391 #: build/C/man2/perf_event_open.2:668
3392 msgid ""
3393 "Records the current user-level CPU register state (the values in the process "
3394 "before the kernel was called)."
3395 msgstr ""
3396
3397 #. type: TP
3398 #: build/C/man2/perf_event_open.2:668
3399 #, fuzzy, no-wrap
3400 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3401 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3402 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3403
3404 #. type: Plain text
3405 #: build/C/man2/perf_event_open.2:671
3406 msgid "Records the user level stack, allowing stack unwinding."
3407 msgstr ""
3408
3409 #. type: TP
3410 #: build/C/man2/perf_event_open.2:671
3411 #, fuzzy, no-wrap
3412 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3413 msgid "B<PERF_SAMPLE_WEIGHT> (Since Linux 3.10)"
3414 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3415
3416 #. type: Plain text
3417 #: build/C/man2/perf_event_open.2:677
3418 msgid ""
3419 "Records a hardware provided weight value that expresses how costly the "
3420 "sampled event was.  This allows the hardware to highlight expensive events "
3421 "in a profile."
3422 msgstr ""
3423
3424 #. type: TP
3425 #: build/C/man2/perf_event_open.2:677
3426 #, fuzzy, no-wrap
3427 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3428 msgid "B<PERF_SAMPLE_DATA_SRC> (Since Linux 3.10)"
3429 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3430
3431 #. type: Plain text
3432 #: build/C/man2/perf_event_open.2:683
3433 msgid ""
3434 "Records the data source: where in the memory hierarchy the data associated "
3435 "with the sampled instruction came from.  This is only available if the "
3436 "underlying hardware supports this feature."
3437 msgstr ""
3438
3439 #. type: TP
3440 #: build/C/man2/perf_event_open.2:684
3441 #, no-wrap
3442 msgid "I<read_format>"
3443 msgstr ""
3444
3445 #. type: Plain text
3446 #: build/C/man2/perf_event_open.2:691
3447 msgid ""
3448 "This field specifies the format of the data returned by B<read>(2)  on a "
3449 "B<perf_event_open>()  file descriptor."
3450 msgstr ""
3451
3452 #. type: TP
3453 #: build/C/man2/perf_event_open.2:692
3454 #, no-wrap
3455 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3456 msgstr ""
3457
3458 #. type: Plain text
3459 #: build/C/man2/perf_event_open.2:699
3460 msgid ""
3461 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3462 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3463 msgstr ""
3464
3465 #. type: TP
3466 #: build/C/man2/perf_event_open.2:699
3467 #, no-wrap
3468 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3469 msgstr ""
3470
3471 #. type: Plain text
3472 #: build/C/man2/perf_event_open.2:706
3473 msgid ""
3474 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3475 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3476 msgstr ""
3477
3478 #. type: TP
3479 #: build/C/man2/perf_event_open.2:706
3480 #, no-wrap
3481 msgid "B<PERF_FORMAT_ID>"
3482 msgstr ""
3483
3484 #. type: Plain text
3485 #: build/C/man2/perf_event_open.2:709
3486 msgid "Adds a 64-bit unique value that corresponds to the event group."
3487 msgstr ""
3488
3489 #. type: TP
3490 #: build/C/man2/perf_event_open.2:709
3491 #, no-wrap
3492 msgid "B<PERF_FORMAT_GROUP>"
3493 msgstr ""
3494
3495 #. type: Plain text
3496 #: build/C/man2/perf_event_open.2:712
3497 msgid "Allows all counter values in an event group to be read with one read."
3498 msgstr ""
3499
3500 #. type: TP
3501 #: build/C/man2/perf_event_open.2:713
3502 #, no-wrap
3503 msgid "I<disabled>"
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man2/perf_event_open.2:723
3508 msgid ""
3509 "The I<disabled> bit specifies whether the counter starts out disabled or "
3510 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3511 "B<prctl>(2), or I<enable_on_exec>."
3512 msgstr ""
3513
3514 #. type: TP
3515 #: build/C/man2/perf_event_open.2:723
3516 #, no-wrap
3517 msgid "I<inherit>"
3518 msgstr ""
3519
3520 #. type: Plain text
3521 #: build/C/man2/perf_event_open.2:732
3522 msgid ""
3523 "The I<inherit> bit specifies that this counter should count events of child "
3524 "tasks as well as the task specified.  This applies only to new children, not "
3525 "to any existing children at the time the counter is created (nor to any new "
3526 "children of existing children)."
3527 msgstr ""
3528
3529 #. type: Plain text
3530 #: build/C/man2/perf_event_open.2:737
3531 msgid ""
3532 "Inherit does not work for some combinations of I<read_format>s, such as "
3533 "B<PERF_FORMAT_GROUP>."
3534 msgstr ""
3535
3536 #. type: TP
3537 #: build/C/man2/perf_event_open.2:737
3538 #, no-wrap
3539 msgid "I<pinned>"
3540 msgstr ""
3541
3542 #. type: Plain text
3543 #: build/C/man2/perf_event_open.2:750
3544 msgid ""
3545 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3546 "at all possible.  It applies only to hardware counters and only to group "
3547 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3548 "there are not enough hardware counters or because of a conflict with some "
3549 "other event), then the counter goes into an 'error' state, where reads "
3550 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3551 "subsequently enabled or disabled."
3552 msgstr ""
3553
3554 #. type: TP
3555 #: build/C/man2/perf_event_open.2:750
3556 #, no-wrap
3557 msgid "I<exclusive>"
3558 msgstr ""
3559
3560 #. type: Plain text
3561 #: build/C/man2/perf_event_open.2:759
3562 msgid ""
3563 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3564 "it should be the only group using the CPU's counters.  In the future this "
3565 "may allow monitoring programs to support PMU features that need to run alone "
3566 "so that they do not disrupt other hardware counters."
3567 msgstr ""
3568
3569 #. type: TP
3570 #: build/C/man2/perf_event_open.2:759
3571 #, no-wrap
3572 msgid "I<exclude_user>"
3573 msgstr ""
3574
3575 #. type: Plain text
3576 #: build/C/man2/perf_event_open.2:762
3577 msgid ""
3578 "If this bit is set, the count excludes events that happen in user space."
3579 msgstr ""
3580
3581 #. type: TP
3582 #: build/C/man2/perf_event_open.2:762
3583 #, no-wrap
3584 msgid "I<exclude_kernel>"
3585 msgstr ""
3586
3587 #. type: Plain text
3588 #: build/C/man2/perf_event_open.2:765
3589 msgid ""
3590 "If this bit is set, the count excludes events that happen in kernel-space."
3591 msgstr ""
3592
3593 #. type: TP
3594 #: build/C/man2/perf_event_open.2:765
3595 #, no-wrap
3596 msgid "I<exclude_hv>"
3597 msgstr ""
3598
3599 #. type: Plain text
3600 #: build/C/man2/perf_event_open.2:773
3601 msgid ""
3602 "If this bit is set, the count excludes events that happen in the "
3603 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3604 "this (such as POWER).  Extra support is needed for handling hypervisor "
3605 "measurements on most machines."
3606 msgstr ""
3607
3608 #. type: TP
3609 #: build/C/man2/perf_event_open.2:773
3610 #, no-wrap
3611 msgid "I<exclude_idle>"
3612 msgstr ""
3613
3614 #. type: Plain text
3615 #: build/C/man2/perf_event_open.2:776
3616 msgid "If set, don't count when the CPU is idle."
3617 msgstr ""
3618
3619 #. type: TP
3620 #: build/C/man2/perf_event_open.2:776
3621 #, no-wrap
3622 msgid "I<mmap>"
3623 msgstr ""
3624
3625 #. type: Plain text
3626 #: build/C/man2/perf_event_open.2:781
3627 msgid "The I<mmap> bit enables recording of exec mmap events."
3628 msgstr ""
3629
3630 #. type: TP
3631 #: build/C/man2/perf_event_open.2:781
3632 #, no-wrap
3633 msgid "I<comm>"
3634 msgstr ""
3635
3636 #. type: Plain text
3637 #: build/C/man2/perf_event_open.2:792
3638 msgid ""
3639 "The I<comm> bit enables tracking of process command name as modified by the "
3640 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3641 "tools, there is no way to distinguish one system call versus the other."
3642 msgstr ""
3643
3644 #. type: TP
3645 #: build/C/man2/perf_event_open.2:792
3646 #, no-wrap
3647 msgid "I<freq>"
3648 msgstr ""
3649
3650 #. type: Plain text
3651 #: build/C/man2/perf_event_open.2:799
3652 msgid ""
3653 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3654 "when setting up the sampling interval."
3655 msgstr ""
3656
3657 #. type: TP
3658 #: build/C/man2/perf_event_open.2:799
3659 #, no-wrap
3660 msgid "I<inherit_stat>"
3661 msgstr ""
3662
3663 #. type: Plain text
3664 #: build/C/man2/perf_event_open.2:806
3665 msgid ""
3666 "This bit enables saving of event counts on context switch for inherited "
3667 "tasks.  This is meaningful only if the I<inherit> field is set."
3668 msgstr ""
3669
3670 #. type: TP
3671 #: build/C/man2/perf_event_open.2:806
3672 #, no-wrap
3673 msgid "I<enable_on_exec>"
3674 msgstr ""
3675
3676 #. type: Plain text
3677 #: build/C/man2/perf_event_open.2:811
3678 msgid ""
3679 "If this bit is set, a counter is automatically enabled after a call to "
3680 "B<exec>(2)."
3681 msgstr ""
3682
3683 #. type: TP
3684 #: build/C/man2/perf_event_open.2:811
3685 #, no-wrap
3686 msgid "I<task>"
3687 msgstr ""
3688
3689 #. type: Plain text
3690 #: build/C/man2/perf_event_open.2:815
3691 msgid ""
3692 "If this bit is set, then fork/exit notifications are included in the ring "
3693 "buffer."
3694 msgstr ""
3695
3696 #. type: TP
3697 #: build/C/man2/perf_event_open.2:815
3698 #, no-wrap
3699 msgid "I<watermark>"
3700 msgstr ""
3701
3702 #. type: Plain text
3703 #: build/C/man2/perf_event_open.2:823
3704 msgid ""
3705 "If set, have a sampling interrupt happen when we cross the "
3706 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3707 "I<wakeup_events> samples."
3708 msgstr ""
3709
3710 #. type: TP
3711 #: build/C/man2/perf_event_open.2:823
3712 #, fuzzy, no-wrap
3713 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3714 msgid "I<precise_ip> (Since Linux 2.6.35)"
3715 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3716
3717 #. type: Plain text
3718 #: build/C/man2/perf_event_open.2:833
3719 msgid ""
3720 "This controls the amount of skid.  Skid is how many instructions execute "
3721 "between an event of interest happening and the kernel being able to stop and "
3722 "record the event.  Smaller skid is better and allows more accurate reporting "
3723 "of which events correspond to which instructions, but hardware is often "
3724 "limited with how small this can be."
3725 msgstr ""
3726
3727 #. type: Plain text
3728 #: build/C/man2/perf_event_open.2:835
3729 #, fuzzy
3730 #| msgid "The I<subcmd> value is one of the following:"
3731 msgid "The values of this are the following:"
3732 msgstr "I<subcmd> の値は以下のいずれかである"
3733
3734 #. type: TP
3735 #: build/C/man2/perf_event_open.2:836
3736 #, no-wrap
3737 msgid "0 -"
3738 msgstr ""
3739
3740 #. type: Plain text
3741 #: build/C/man2/perf_event_open.2:840
3742 msgid "B<SAMPLE_IP> can have arbitrary skid"
3743 msgstr ""
3744
3745 #. type: TP
3746 #: build/C/man2/perf_event_open.2:840
3747 #, no-wrap
3748 msgid "1 -"
3749 msgstr ""
3750
3751 #. type: Plain text
3752 #: build/C/man2/perf_event_open.2:844
3753 msgid "B<SAMPLE_IP> must have constant skid"
3754 msgstr ""
3755
3756 #. type: TP
3757 #: build/C/man2/perf_event_open.2:844
3758 #, no-wrap
3759 msgid "2 -"
3760 msgstr ""
3761
3762 #. type: Plain text
3763 #: build/C/man2/perf_event_open.2:848
3764 msgid "B<SAMPLE_IP> requested to have 0 skid"
3765 msgstr ""
3766
3767 #. type: TP
3768 #: build/C/man2/perf_event_open.2:848
3769 #, no-wrap
3770 msgid "3 -"
3771 msgstr ""
3772
3773 #. type: Plain text
3774 #: build/C/man2/perf_event_open.2:854
3775 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3776 msgstr ""
3777
3778 #. type: TP
3779 #: build/C/man2/perf_event_open.2:855
3780 #, fuzzy, no-wrap
3781 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3782 msgid "I<mmap_data> (Since Linux 2.6.36)"
3783 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3784
3785 #. type: Plain text
3786 #: build/C/man2/perf_event_open.2:861
3787 msgid ""
3788 "The counterpart of the I<mmap> field, but enables including data mmap events "
3789 "in the ring-buffer."
3790 msgstr ""
3791
3792 #. type: TP
3793 #: build/C/man2/perf_event_open.2:861
3794 #, fuzzy, no-wrap
3795 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3796 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3797 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3798
3799 #. type: Plain text
3800 #: build/C/man2/perf_event_open.2:869
3801 msgid ""
3802 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3803 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3804 "selected."
3805 msgstr ""
3806
3807 #. type: TP
3808 #: build/C/man2/perf_event_open.2:869
3809 #, no-wrap
3810 msgid "I<exclude_host> (Since Linux 3.2)"
3811 msgstr ""
3812
3813 #. type: Plain text
3814 #: build/C/man2/perf_event_open.2:872
3815 msgid "Do not measure time spent in VM host"
3816 msgstr ""
3817
3818 #. type: TP
3819 #: build/C/man2/perf_event_open.2:872
3820 #, no-wrap
3821 msgid "I<exclude_guest> (Since Linux 3.2)"
3822 msgstr ""
3823
3824 #. type: Plain text
3825 #: build/C/man2/perf_event_open.2:875
3826 msgid "Do not measure time spent in VM guest"
3827 msgstr ""
3828
3829 #. type: TP
3830 #: build/C/man2/perf_event_open.2:875
3831 #, no-wrap
3832 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3833 msgstr ""
3834
3835 #. type: Plain text
3836 #: build/C/man2/perf_event_open.2:878
3837 msgid "Do not include kernel callchains."
3838 msgstr ""
3839
3840 #. type: TP
3841 #: build/C/man2/perf_event_open.2:878
3842 #, no-wrap
3843 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3844 msgstr ""
3845
3846 #. type: Plain text
3847 #: build/C/man2/perf_event_open.2:881
3848 msgid "Do not include user callchains."
3849 msgstr ""
3850
3851 #. type: TP
3852 #: build/C/man2/perf_event_open.2:881
3853 #, no-wrap
3854 msgid "I<wakeup_events>, I<wakeup_watermark>"
3855 msgstr ""
3856
3857 #. type: Plain text
3858 #: build/C/man2/perf_event_open.2:891
3859 msgid ""
3860 "This union sets how many samples (I<wakeup_events>)  or bytes "
3861 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3862 "is used is selected by the I<watermark> bitflag."
3863 msgstr ""
3864
3865 #. type: Plain text
3866 #: build/C/man2/perf_event_open.2:901
3867 msgid ""
3868 "I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types.  To receive "
3869 "a signal for every incoming B<PERF_RECORD> type set I<wakeup_watermark> to 1."
3870 msgstr ""
3871
3872 #. type: TP
3873 #: build/C/man2/perf_event_open.2:901
3874 #, fuzzy, no-wrap
3875 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3876 msgid "I<bp_type> (Since Linux 2.6.33)"
3877 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3878
3879 #. type: Plain text
3880 #: build/C/man2/perf_event_open.2:905
3881 msgid "This chooses the breakpoint type.  It is one of:"
3882 msgstr ""
3883
3884 #. type: TP
3885 #: build/C/man2/perf_event_open.2:906
3886 #, no-wrap
3887 msgid "B<HW_BREAKPOINT_EMPTY>"
3888 msgstr ""
3889
3890 #. type: Plain text
3891 #: build/C/man2/perf_event_open.2:909
3892 msgid "no breakpoint"
3893 msgstr ""
3894
3895 #. type: TP
3896 #: build/C/man2/perf_event_open.2:909
3897 #, no-wrap
3898 msgid "B<HW_BREAKPOINT_R>"
3899 msgstr ""
3900
3901 #. type: Plain text
3902 #: build/C/man2/perf_event_open.2:912
3903 msgid "count when we read the memory location"
3904 msgstr ""
3905
3906 #. type: TP
3907 #: build/C/man2/perf_event_open.2:912
3908 #, no-wrap
3909 msgid "B<HW_BREAKPOINT_W>"
3910 msgstr ""
3911
3912 #. type: Plain text
3913 #: build/C/man2/perf_event_open.2:915
3914 msgid "count when we write the memory location"
3915 msgstr ""
3916
3917 #. type: TP
3918 #: build/C/man2/perf_event_open.2:915
3919 #, no-wrap
3920 msgid "B<HW_BREAKPOINT_RW>"
3921 msgstr ""
3922
3923 #. type: Plain text
3924 #: build/C/man2/perf_event_open.2:918
3925 msgid "count when we read or write the memory location"
3926 msgstr ""
3927
3928 #. type: TP
3929 #: build/C/man2/perf_event_open.2:918
3930 #, no-wrap
3931 msgid "B<HW_BREAKPOINT_X>"
3932 msgstr ""
3933
3934 #. type: Plain text
3935 #: build/C/man2/perf_event_open.2:921
3936 msgid "count when we execute code at the memory location"
3937 msgstr ""
3938
3939 #. type: Plain text
3940 #: build/C/man2/perf_event_open.2:930
3941 msgid ""
3942 "The values can be combined via a bitwise or, but the combination of "
3943 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3944 "allowed."
3945 msgstr ""
3946
3947 #. type: TP
3948 #: build/C/man2/perf_event_open.2:931
3949 #, fuzzy, no-wrap
3950 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3951 msgid "I<bp_addr> (Since Linux 2.6.33)"
3952 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3953
3954 #. type: Plain text
3955 #: build/C/man2/perf_event_open.2:938
3956 msgid ""
3957 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3958 "memory address of the instruction of interest; for read and write "
3959 "breakpoints it is the memory address of the memory location of interest."
3960 msgstr ""
3961
3962 #. type: TP
3963 #: build/C/man2/perf_event_open.2:938
3964 #, fuzzy, no-wrap
3965 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3966 msgid "I<config1> (Since Linux 2.6.39)"
3967 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3968
3969 #. type: Plain text
3970 #: build/C/man2/perf_event_open.2:945
3971 msgid ""
3972 "I<config1> is used for setting events that need an extra register or "
3973 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3974 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3975 msgstr ""
3976
3977 #. type: TP
3978 #: build/C/man2/perf_event_open.2:945
3979 #, fuzzy, no-wrap
3980 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3981 msgid "I<bp_len> (Since Linux 2.6.33)"
3982 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3983
3984 #. type: Plain text
3985 #: build/C/man2/perf_event_open.2:959
3986 msgid ""
3987 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3988 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3989 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3990 "an execution breakpoint, set this to I<sizeof(long)>."
3991 msgstr ""
3992
3993 #. type: TP
3994 #: build/C/man2/perf_event_open.2:959
3995 #, fuzzy, no-wrap
3996 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3997 msgid "I<config2> (Since Linux 2.6.39)"
3998 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3999
4000 #. type: Plain text
4001 #: build/C/man2/perf_event_open.2:966
4002 msgid "I<config2> is a further extension of the I<config1> field."
4003 msgstr ""
4004
4005 #. type: TP
4006 #: build/C/man2/perf_event_open.2:966
4007 #, no-wrap
4008 msgid "I<branch_sample_type> (Since Linux 3.4)"
4009 msgstr ""
4010
4011 #. type: Plain text
4012 #: build/C/man2/perf_event_open.2:979
4013 msgid ""
4014 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
4015 "to include in the branch record.  If the user does not set privilege level "
4016 "explicitly, the kernel will use the event's privilege level.  Event and "
4017 "branch privilege levels do not have to match.  The value is formed by ORing "
4018 "together zero or more of the following values, although "
4019 "B<PERF_SAMPLE_BRANCH_ANY> covers all branch types."
4020 msgstr ""
4021
4022 #. type: TP
4023 #: build/C/man2/perf_event_open.2:980
4024 #, no-wrap
4025 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4026 msgstr ""
4027
4028 #. type: Plain text
4029 #: build/C/man2/perf_event_open.2:983
4030 msgid "Branch target is in user space"
4031 msgstr ""
4032
4033 #. type: TP
4034 #: build/C/man2/perf_event_open.2:983
4035 #, no-wrap
4036 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4037 msgstr ""
4038
4039 #. type: Plain text
4040 #: build/C/man2/perf_event_open.2:986
4041 msgid "Branch target is in kernel space"
4042 msgstr ""
4043
4044 #. type: TP
4045 #: build/C/man2/perf_event_open.2:986
4046 #, no-wrap
4047 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4048 msgstr ""
4049
4050 #. type: Plain text
4051 #: build/C/man2/perf_event_open.2:989
4052 msgid "Branch target is in hypervisor"
4053 msgstr ""
4054
4055 #. type: TP
4056 #: build/C/man2/perf_event_open.2:989
4057 #, no-wrap
4058 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4059 msgstr ""
4060
4061 #. type: Plain text
4062 #: build/C/man2/perf_event_open.2:992
4063 msgid "Any branch type."
4064 msgstr ""
4065
4066 #. type: TP
4067 #: build/C/man2/perf_event_open.2:992
4068 #, no-wrap
4069 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4070 msgstr ""
4071
4072 #. type: Plain text
4073 #: build/C/man2/perf_event_open.2:995
4074 msgid "Any call branch"
4075 msgstr ""
4076
4077 #. type: TP
4078 #: build/C/man2/perf_event_open.2:995
4079 #, no-wrap
4080 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4081 msgstr ""
4082
4083 #. type: Plain text
4084 #: build/C/man2/perf_event_open.2:998
4085 msgid "Any return branch"
4086 msgstr ""
4087
4088 #. type: TP
4089 #: build/C/man2/perf_event_open.2:998
4090 #, no-wrap
4091 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4092 msgstr ""
4093
4094 #. type: Plain text
4095 #: build/C/man2/perf_event_open.2:1001
4096 msgid "Indirect calls"
4097 msgstr ""
4098
4099 #. type: TP
4100 #: build/C/man2/perf_event_open.2:1001
4101 #, no-wrap
4102 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man2/perf_event_open.2:1004
4107 msgid "User, kernel, and hv"
4108 msgstr ""
4109
4110 #. type: TP
4111 #: build/C/man2/perf_event_open.2:1005
4112 #, no-wrap
4113 msgid "I<sample_regs_user> (Since Linux 3.7)"
4114 msgstr ""
4115
4116 #. type: Plain text
4117 #: build/C/man2/perf_event_open.2:1011
4118 msgid ""
4119 "This bitmask defines the set of user CPU registers to dump on samples.  The "
4120 "layout of the register mask is architecture specific and described in the "
4121 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4122 msgstr ""
4123
4124 #. type: TP
4125 #: build/C/man2/perf_event_open.2:1011
4126 #, no-wrap
4127 msgid "I<sample_stack_user> (Since Linux 3.7)"
4128 msgstr ""
4129
4130 #. type: Plain text
4131 #: build/C/man2/perf_event_open.2:1016
4132 msgid ""
4133 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4134 "is specified."
4135 msgstr ""
4136
4137 #. type: SS
4138 #: build/C/man2/perf_event_open.2:1016
4139 #, no-wrap
4140 msgid "Reading results"
4141 msgstr ""
4142
4143 #. type: Plain text
4144 #: build/C/man2/perf_event_open.2:1026
4145 msgid ""
4146 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4147 "the events can be read from the file descriptor.  The values that are there "
4148 "are specified by the I<read_format> field in the I<attr> structure at open "
4149 "time."
4150 msgstr ""
4151
4152 #. type: Plain text
4153 #: build/C/man2/perf_event_open.2:1031
4154 msgid ""
4155 "If you attempt to read into a buffer that is not big enough to hold the data "
4156 "B<ENOSPC> is returned"
4157 msgstr ""
4158
4159 #. type: Plain text
4160 #: build/C/man2/perf_event_open.2:1033
4161 msgid "Here is the layout of the data returned by a read:"
4162 msgstr ""
4163
4164 #. type: IP
4165 #: build/C/man2/perf_event_open.2:1033 build/C/man2/perf_event_open.2:1051
4166 #: build/C/man2/ptrace.2:1619 build/C/man2/ptrace.2:1629
4167 #: build/C/man2/ptrace.2:1637 build/C/man2/ptrace.2:1643
4168 #: build/C/man2/ptrace.2:1772
4169 #, no-wrap
4170 msgid "*"
4171 msgstr ""
4172
4173 #. type: Plain text
4174 #: build/C/man2/perf_event_open.2:1037
4175 msgid ""
4176 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4177 "at once:"
4178 msgstr ""
4179
4180 #. type: Plain text
4181 #: build/C/man2/perf_event_open.2:1049
4182 #, no-wrap
4183 msgid ""
4184 "struct read_format {\n"
4185 "    u64 nr;            /* The number of events */\n"
4186 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4187 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4188 "    struct\n"
4189 "        u64 value;     /* The value of the event */\n"
4190 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4191 "    } values[nr];\n"
4192 "};\n"
4193 msgstr ""
4194
4195 #. type: Plain text
4196 #: build/C/man2/perf_event_open.2:1057
4197 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4198 msgstr ""
4199
4200 #. type: Plain text
4201 #: build/C/man2/perf_event_open.2:1066
4202 #, no-wrap
4203 msgid ""
4204 "struct read_format {\n"
4205 "    u64 value;         /* The value of the event */\n"
4206 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4207 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4208 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4209 "};\n"
4210 msgstr ""
4211
4212 #. type: Plain text
4213 #: build/C/man2/perf_event_open.2:1070
4214 msgid "The values read are as follows:"
4215 msgstr ""
4216
4217 #. type: TP
4218 #: build/C/man2/perf_event_open.2:1070
4219 #, no-wrap
4220 msgid "I<nr>"
4221 msgstr ""
4222
4223 #. type: Plain text
4224 #: build/C/man2/perf_event_open.2:1076
4225 msgid ""
4226 "The number of events in this file descriptor.  Only available if "
4227 "B<PERF_FORMAT_GROUP> was specified."
4228 msgstr ""
4229
4230 #. type: TP
4231 #: build/C/man2/perf_event_open.2:1076
4232 #, no-wrap
4233 msgid "I<time_enabled>, I<time_running>"
4234 msgstr ""
4235
4236 #. type: Plain text
4237 #: build/C/man2/perf_event_open.2:1088
4238 msgid ""
4239 "Total time the event was enabled and running.  Normally these are the same.  "
4240 "If more events are started than available counter slots on the PMU, then "
4241 "multiplexing happens and events run only part of the time.  In that case the "
4242 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4243 "value for the count."
4244 msgstr ""
4245
4246 #. type: TP
4247 #: build/C/man2/perf_event_open.2:1088
4248 #, no-wrap
4249 msgid "I<value>"
4250 msgstr ""
4251
4252 #. type: Plain text
4253 #: build/C/man2/perf_event_open.2:1091
4254 msgid "An unsigned 64-bit value containing the counter result."
4255 msgstr ""
4256
4257 #. type: TP
4258 #: build/C/man2/perf_event_open.2:1091 build/C/man2/perf_event_open.2:1355
4259 #: build/C/man2/perf_event_open.2:1492
4260 #, no-wrap
4261 msgid "I<id>"
4262 msgstr ""
4263
4264 #. type: Plain text
4265 #: build/C/man2/perf_event_open.2:1097
4266 msgid ""
4267 "A globally unique value for this particular event, only there if "
4268 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4269 msgstr ""
4270
4271 #. type: SS
4272 #: build/C/man2/perf_event_open.2:1097
4273 #, no-wrap
4274 msgid "MMAP layout"
4275 msgstr ""
4276
4277 #. type: Plain text
4278 #: build/C/man2/perf_event_open.2:1107
4279 msgid ""
4280 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4281 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4282 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4283 msgstr ""
4284
4285 #. type: Plain text
4286 #: build/C/man2/perf_event_open.2:1113
4287 msgid ""
4288 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4289 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4290 "such as where the ring-buffer head is."
4291 msgstr ""
4292
4293 #. type: Plain text
4294 #: build/C/man2/perf_event_open.2:1116
4295 msgid ""
4296 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4297 "ring buffer when sampling even if you do not plan to access it."
4298 msgstr ""
4299
4300 #. type: Plain text
4301 #: build/C/man2/perf_event_open.2:1118
4302 msgid "The structure of the first metadata mmap page is as follows:"
4303 msgstr ""
4304
4305 #. type: Plain text
4306 #: build/C/man2/perf_event_open.2:1142
4307 #, no-wrap
4308 msgid ""
4309 "struct perf_event_mmap_page {\n"
4310 "    __u32 version;          /* version number of this structure */\n"
4311 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4312 "    __u32 lock;             /* seqlock for synchronization */\n"
4313 "    __u32 index;            /* hardware counter identifier */\n"
4314 "    __s64 offset;           /* add to hardware counter value */\n"
4315 "    __u64 time_enabled;     /* time event active */\n"
4316 "    __u64 time_running;     /* time event on CPU */\n"
4317 "    union {\n"
4318 "        __u64   capabilities;\n"
4319 "        __u64   cap_usr_time  : 1,\n"
4320 "                cap_usr_rdpmc : 1,\n"
4321 "    };\n"
4322 "    __u16   pmc_width;\n"
4323 "    __u16   time_shift;\n"
4324 "    __u32   time_mult;\n"
4325 "    __u64   time_offset;\n"
4326 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4327 "    __u64   data_head;         /* head in the data section */\n"
4328 "    __u64   data_tail;         /* user-space written tail */\n"
4329 "}\n"
4330 msgstr ""
4331
4332 #. type: Plain text
4333 #: build/C/man2/perf_event_open.2:1148
4334 msgid ""
4335 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4336 "in more detail:"
4337 msgstr ""
4338
4339 #. type: TP
4340 #: build/C/man2/perf_event_open.2:1148
4341 #, no-wrap
4342 msgid "I<version>"
4343 msgstr ""
4344
4345 #. type: Plain text
4346 #: build/C/man2/perf_event_open.2:1151
4347 msgid "Version number of this structure."
4348 msgstr ""
4349
4350 #. type: TP
4351 #: build/C/man2/perf_event_open.2:1151
4352 #, no-wrap
4353 msgid "I<compat_version>"
4354 msgstr ""
4355
4356 #. type: Plain text
4357 #: build/C/man2/perf_event_open.2:1154
4358 msgid "The lowest version this is compatible with."
4359 msgstr ""
4360
4361 #. type: TP
4362 #: build/C/man2/perf_event_open.2:1154
4363 #, no-wrap
4364 msgid "I<lock>"
4365 msgstr ""
4366
4367 #. type: Plain text
4368 #: build/C/man2/perf_event_open.2:1157
4369 msgid "A seqlock for synchronization."
4370 msgstr ""
4371
4372 #. type: TP
4373 #: build/C/man2/perf_event_open.2:1157
4374 #, no-wrap
4375 msgid "I<index>"
4376 msgstr ""
4377
4378 #. type: Plain text
4379 #: build/C/man2/perf_event_open.2:1160
4380 msgid "A unique hardware counter identifier."
4381 msgstr ""
4382
4383 #. type: TP
4384 #: build/C/man2/perf_event_open.2:1160
4385 #, no-wrap
4386 msgid "I<offset>"
4387 msgstr ""
4388
4389 #.  FIXME clarify
4390 #. type: Plain text
4391 #: build/C/man2/perf_event_open.2:1164
4392 msgid "Add this to hardware counter value??"
4393 msgstr ""
4394
4395 #. type: TP
4396 #: build/C/man2/perf_event_open.2:1164
4397 #, no-wrap
4398 msgid "I<time_enabled>"
4399 msgstr ""
4400
4401 #. type: Plain text
4402 #: build/C/man2/perf_event_open.2:1167
4403 msgid "Time the event was active."
4404 msgstr ""
4405
4406 #. type: TP
4407 #: build/C/man2/perf_event_open.2:1167
4408 #, no-wrap
4409 msgid "I<time_running>"
4410 msgstr ""
4411
4412 #. type: Plain text
4413 #: build/C/man2/perf_event_open.2:1170
4414 msgid "Time the event was running."
4415 msgstr ""
4416
4417 #. type: TP
4418 #: build/C/man2/perf_event_open.2:1170
4419 #, no-wrap
4420 msgid "I<cap_usr_time>"
4421 msgstr ""
4422
4423 #. type: Plain text
4424 #: build/C/man2/perf_event_open.2:1173
4425 msgid "User time capability"
4426 msgstr ""
4427
4428 #. type: TP
4429 #: build/C/man2/perf_event_open.2:1173
4430 #, no-wrap
4431 msgid "I<cap_usr_rdpmc>"
4432 msgstr ""
4433
4434 #. type: Plain text
4435 #: build/C/man2/perf_event_open.2:1178
4436 msgid ""
4437 "If the hardware supports user-space read of performance counters without "
4438 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4439 "can be used to do a read:"
4440 msgstr ""
4441
4442 #. type: Plain text
4443 #: build/C/man2/perf_event_open.2:1185
4444 #, no-wrap
4445 msgid ""
4446 "u32 seq, time_mult, time_shift, idx, width;\n"
4447 "u64 count, enabled, running;\n"
4448 "u64 cyc, time_offset;\n"
4449 "s64 pmc = 0;\n"
4450 msgstr ""
4451
4452 #. type: Plain text
4453 #: build/C/man2/perf_event_open.2:1191
4454 #, no-wrap
4455 msgid ""
4456 "do {\n"
4457 "    seq = pc-E<gt>lock;\n"
4458 "    barrier();\n"
4459 "    enabled = pc-E<gt>time_enabled;\n"
4460 "    running = pc-E<gt>time_running;\n"
4461 msgstr ""
4462
4463 #. type: Plain text
4464 #: build/C/man2/perf_event_open.2:1198
4465 #, no-wrap
4466 msgid ""
4467 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4468 "        cyc = rdtsc();\n"
4469 "        time_offset = pc-E<gt>time_offset;\n"
4470 "        time_mult   = pc-E<gt>time_mult;\n"
4471 "        time_shift  = pc-E<gt>time_shift;\n"
4472 "    }\n"
4473 msgstr ""
4474
4475 #. type: Plain text
4476 #: build/C/man2/perf_event_open.2:1201
4477 #, no-wrap
4478 msgid ""
4479 "    idx = pc-E<gt>index;\n"
4480 "    count = pc-E<gt>offset;\n"
4481 msgstr ""
4482
4483 #. type: Plain text
4484 #: build/C/man2/perf_event_open.2:1206
4485 #, no-wrap
4486 msgid ""
4487 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4488 "        width = pc-E<gt>pmc_width;\n"
4489 "        pmc = rdpmc(idx - 1);\n"
4490 "    }\n"
4491 msgstr ""
4492
4493 #. type: Plain text
4494 #: build/C/man2/perf_event_open.2:1209
4495 #, no-wrap
4496 msgid ""
4497 "    barrier();\n"
4498 "} while (pc-E<gt>lock != seq);\n"
4499 msgstr ""
4500
4501 #. type: TP
4502 #: build/C/man2/perf_event_open.2:1211
4503 #, no-wrap
4504 msgid "I<pmc_width>"
4505 msgstr ""
4506
4507 #. type: Plain text
4508 #: build/C/man2/perf_event_open.2:1218
4509 msgid ""
4510 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4511 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4512 "the result like:"
4513 msgstr ""
4514
4515 #. type: Plain text
4516 #: build/C/man2/perf_event_open.2:1224
4517 #, no-wrap
4518 msgid ""
4519 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4520 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4521 "count += pmc;\n"
4522 msgstr ""
4523
4524 #. type: TP
4525 #: build/C/man2/perf_event_open.2:1226
4526 #, no-wrap
4527 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4528 msgstr ""
4529
4530 #. type: Plain text
4531 #: build/C/man2/perf_event_open.2:1233
4532 msgid ""
4533 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4534 "time_enabled (in nanoseconds) using rdtsc or similar."
4535 msgstr ""
4536
4537 #. type: Plain text
4538 #: build/C/man2/perf_event_open.2:1241
4539 #, no-wrap
4540 msgid ""
4541 "    u64 quot, rem;\n"
4542 "    u64 delta;\n"
4543 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4544 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4545 "    delta = time_offset + quot * time_mult +\n"
4546 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4547 msgstr ""
4548
4549 #. type: Plain text
4550 #: build/C/man2/perf_event_open.2:1253
4551 msgid ""
4552 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4553 "the seqcount loop described above.  This delta can then be added to enabled "
4554 "and possible running (if idx), improving the scaling:"
4555 msgstr ""
4556
4557 #. type: Plain text
4558 #: build/C/man2/perf_event_open.2:1261
4559 #, no-wrap
4560 msgid ""
4561 "    enabled += delta;\n"
4562 "    if (idx)\n"
4563 "        running += delta;\n"
4564 "    quot = count / running;\n"
4565 "    rem  = count % running;\n"
4566 "    count = quot * enabled + (rem * enabled) / running;\n"
4567 msgstr ""
4568
4569 #. type: TP
4570 #: build/C/man2/perf_event_open.2:1262
4571 #, no-wrap
4572 msgid "I<data_head>"
4573 msgstr ""
4574
4575 #. type: Plain text
4576 #: build/C/man2/perf_event_open.2:1268
4577 msgid ""
4578 "This points to the head of the data section.  The value continuously "
4579 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4580 "size of the mmap buffer before accessing the samples."
4581 msgstr ""
4582
4583 #. type: Plain text
4584 #: build/C/man2/perf_event_open.2:1271
4585 msgid ""
4586 "On SMP-capable platforms, after reading the data_head value, user space "
4587 "should issue an rmb()."
4588 msgstr ""
4589
4590 #. type: TP
4591 #: build/C/man2/perf_event_open.2:1271
4592 #, no-wrap
4593 msgid "I<data_tail;>"
4594 msgstr ""
4595
4596 #. type: Plain text
4597 #: build/C/man2/perf_event_open.2:1279
4598 msgid ""
4599 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4600 "by user space to reflect the last read data.  In this case the kernel will "
4601 "not over-write unread data."
4602 msgstr ""
4603
4604 #. type: Plain text
4605 #: build/C/man2/perf_event_open.2:1281
4606 msgid "The following 2^n ring-buffer pages have the layout described below."
4607 msgstr ""
4608
4609 #. type: Plain text
4610 #: build/C/man2/perf_event_open.2:1295
4611 msgid ""
4612 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4613 "the sample_type selected fields related to where/when (identity)  an event "
4614 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4615 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4616 "I<perf_event_header> and the fields already present for the existing fields, "
4617 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4618 "supported by older perf tools, with these new optional fields being ignored."
4619 msgstr ""
4620
4621 #. type: Plain text
4622 #: build/C/man2/perf_event_open.2:1297
4623 msgid "The mmap values start with a header:"
4624 msgstr ""
4625
4626 #. type: Plain text
4627 #: build/C/man2/perf_event_open.2:1305
4628 #, no-wrap
4629 msgid ""
4630 "struct perf_event_header {\n"
4631 "    __u32   type;\n"
4632 "    __u16   misc;\n"
4633 "    __u16   size;\n"
4634 "};\n"
4635 msgstr ""
4636
4637 #. type: Plain text
4638 #: build/C/man2/perf_event_open.2:1311
4639 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man2/perf_event_open.2:1320
4644 msgid ""
4645 "The I<type> value is one of the below.  The values in the corresponding "
4646 "record (that follows the header)  depend on the I<type> selected as shown."
4647 msgstr ""
4648
4649 #. type: TP
4650 #: build/C/man2/perf_event_open.2:1321
4651 #, no-wrap
4652 msgid "B<PERF_RECORD_MMAP>"
4653 msgstr ""
4654
4655 #. type: Plain text
4656 #: build/C/man2/perf_event_open.2:1328
4657 msgid ""
4658 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4659 "user-space IPs to code.  They have the following structure:"
4660 msgstr ""
4661
4662 #. type: Plain text
4663 #: build/C/man2/perf_event_open.2:1339
4664 #, no-wrap
4665 msgid ""
4666 "struct {\n"
4667 "    struct perf_event_header header;\n"
4668 "    u32    pid, tid;\n"
4669 "    u64    addr;\n"
4670 "    u64    len;\n"
4671 "    u64    pgoff;\n"
4672 "    char   filename[];\n"
4673 "};\n"
4674 msgstr ""
4675
4676 #. type: TP
4677 #: build/C/man2/perf_event_open.2:1341
4678 #, no-wrap
4679 msgid "B<PERF_RECORD_LOST>"
4680 msgstr ""
4681
4682 #. type: Plain text
4683 #: build/C/man2/perf_event_open.2:1344
4684 msgid "This record indicates when events are lost."
4685 msgstr ""
4686
4687 #. type: Plain text
4688 #: build/C/man2/perf_event_open.2:1352
4689 #, no-wrap
4690 msgid ""
4691 "struct {\n"
4692 "    struct perf_event_header header;\n"
4693 "    u64 id;\n"
4694 "    u64 lost;\n"
4695 "};\n"
4696 msgstr ""
4697
4698 #. type: Plain text
4699 #: build/C/man2/perf_event_open.2:1358
4700 msgid "is the unique event ID for the samples that were lost."
4701 msgstr ""
4702
4703 #. type: TP
4704 #: build/C/man2/perf_event_open.2:1358
4705 #, no-wrap
4706 msgid "I<lost>"
4707 msgstr ""
4708
4709 #. type: Plain text
4710 #: build/C/man2/perf_event_open.2:1361
4711 #, fuzzy
4712 #| msgid "Returns the number of processes woken up."
4713 msgid "is the number of events that were lost."
4714 msgstr "wake したプロセスの数を返す。"
4715
4716 #. type: TP
4717 #: build/C/man2/perf_event_open.2:1362
4718 #, no-wrap
4719 msgid "B<PERF_RECORD_COMM>"
4720 msgstr ""
4721
4722 #. type: Plain text
4723 #: build/C/man2/perf_event_open.2:1365
4724 msgid "This record indicates a change in the process name."
4725 msgstr ""
4726
4727 #. type: Plain text
4728 #: build/C/man2/perf_event_open.2:1373
4729 #, no-wrap
4730 msgid ""
4731 "struct {\n"
4732 "    struct perf_event_header header;\n"
4733 "    u32 pid, tid;\n"
4734 "    char comm[];\n"
4735 "};\n"
4736 msgstr ""
4737
4738 #. type: TP
4739 #: build/C/man2/perf_event_open.2:1375
4740 #, no-wrap
4741 msgid "B<PERF_RECORD_EXIT>"
4742 msgstr "B<PERF_RECORD_EXIT>"
4743
4744 #. type: Plain text
4745 #: build/C/man2/perf_event_open.2:1378
4746 msgid "This record indicates a process exit event."
4747 msgstr ""
4748
4749 #. type: Plain text
4750 #: build/C/man2/perf_event_open.2:1387 build/C/man2/perf_event_open.2:1415
4751 #, no-wrap
4752 msgid ""
4753 "struct {\n"
4754 "    struct perf_event_header header;\n"
4755 "    u32 pid, ppid;\n"
4756 "    u32 tid, ptid;\n"
4757 "    u64 time;\n"
4758 "};\n"
4759 msgstr ""
4760
4761 #. type: TP
4762 #: build/C/man2/perf_event_open.2:1389
4763 #, no-wrap
4764 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4765 msgstr ""
4766
4767 #. type: Plain text
4768 #: build/C/man2/perf_event_open.2:1392
4769 msgid "This record indicates a throttle/unthrottle event."
4770 msgstr ""
4771
4772 #. type: Plain text
4773 #: build/C/man2/perf_event_open.2:1401
4774 #, no-wrap
4775 msgid ""
4776 "struct {\n"
4777 "    struct perf_event_header header;\n"
4778 "    u64 time;\n"
4779 "    u64 id;\n"
4780 "    u64 stream_id;\n"
4781 "};\n"
4782 msgstr ""
4783
4784 #. type: TP
4785 #: build/C/man2/perf_event_open.2:1403
4786 #, fuzzy, no-wrap
4787 #| msgid "B<PTRACE_EVENT_FORK>"
4788 msgid "B<PERF_RECORD_FORK>"
4789 msgstr "B<PTRACE_EVENT_FORK>"
4790
4791 #. type: Plain text
4792 #: build/C/man2/perf_event_open.2:1406
4793 msgid "This record indicates a fork event."
4794 msgstr ""
4795
4796 #. type: TP
4797 #: build/C/man2/perf_event_open.2:1417
4798 #, no-wrap
4799 msgid "B<PERF_RECORD_READ>"
4800 msgstr ""
4801
4802 #. type: Plain text
4803 #: build/C/man2/perf_event_open.2:1420
4804 msgid "This record indicates a read event."
4805 msgstr ""
4806
4807 #. type: Plain text
4808 #: build/C/man2/perf_event_open.2:1428
4809 #, no-wrap
4810 msgid ""
4811 "struct {\n"
4812 "    struct perf_event_header header;\n"
4813 "    u32 pid, tid;\n"
4814 "    struct read_format values;\n"
4815 "};\n"
4816 msgstr ""
4817
4818 #. type: TP
4819 #: build/C/man2/perf_event_open.2:1430
4820 #, no-wrap
4821 msgid "B<PERF_RECORD_SAMPLE>"
4822 msgstr ""
4823
4824 #. type: Plain text
4825 #: build/C/man2/perf_event_open.2:1433
4826 msgid "This record indicates a sample."
4827 msgstr ""
4828
4829 #. type: Plain text
4830 #: build/C/man2/perf_event_open.2:1463
4831 #, no-wrap
4832 msgid ""
4833 "struct {\n"
4834 "    struct perf_event_header header;\n"
4835 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4836 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4837 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4838 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4839 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4840 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4841 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4842 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4843 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4844 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4845 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4846 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4847 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4848 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4849 "    struct perf_branch_entry lbr[bnr];\n"
4850 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4851 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4852 "    u64   regs[weight(mask)];\n"
4853 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4854 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4855 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4856 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4857 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
4858 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
4859 "};\n"
4860 msgstr ""
4861
4862 #. type: TP
4863 #: build/C/man2/perf_event_open.2:1465
4864 #, no-wrap
4865 msgid "I<ip>"
4866 msgstr ""
4867
4868 #. type: Plain text
4869 #: build/C/man2/perf_event_open.2:1471
4870 msgid ""
4871 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4872 "included."
4873 msgstr ""
4874
4875 #. type: TP
4876 #: build/C/man2/perf_event_open.2:1471
4877 #, no-wrap
4878 msgid "I<pid>, I<tid>"
4879 msgstr ""
4880
4881 #. type: Plain text
4882 #: build/C/man2/perf_event_open.2:1477
4883 msgid ""
4884 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4885 "ID are included."
4886 msgstr ""
4887
4888 #. type: TP
4889 #: build/C/man2/perf_event_open.2:1477
4890 #, no-wrap
4891 msgid "I<time>"
4892 msgstr ""
4893
4894 #. type: Plain text
4895 #: build/C/man2/perf_event_open.2:1485
4896 msgid ""
4897 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4898 "This is obtained via local_clock() which is a hardware timestamp if "
4899 "available and the jiffies value if not."
4900 msgstr ""
4901
4902 #. type: TP
4903 #: build/C/man2/perf_event_open.2:1485
4904 #, no-wrap
4905 msgid "I<addr>"
4906 msgstr ""
4907
4908 #. type: Plain text
4909 #: build/C/man2/perf_event_open.2:1492
4910 msgid ""
4911 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4912 "is usually the address of a tracepoint, breakpoint, or software event; "
4913 "otherwise the value is 0."
4914 msgstr ""
4915
4916 #. type: Plain text
4917 #: build/C/man2/perf_event_open.2:1500
4918 msgid ""
4919 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4920 "event is a member of an event group, the group leader ID is returned.  This "
4921 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4922 msgstr ""
4923
4924 #. type: TP
4925 #: build/C/man2/perf_event_open.2:1500
4926 #, no-wrap
4927 msgid "I<stream_id>"
4928 msgstr ""
4929
4930 #. type: Plain text
4931 #: build/C/man2/perf_event_open.2:1510
4932 msgid ""
4933 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4934 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4935 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4936 msgstr ""
4937
4938 #. type: TP
4939 #: build/C/man2/perf_event_open.2:1510
4940 #, no-wrap
4941 msgid "I<cpu>, I<res>"
4942 msgstr ""
4943
4944 #. type: Plain text
4945 #: build/C/man2/perf_event_open.2:1517
4946 msgid ""
4947 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4948 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4949 msgstr ""
4950
4951 #. type: TP
4952 #: build/C/man2/perf_event_open.2:1517
4953 #, no-wrap
4954 msgid "I<period>"
4955 msgstr ""
4956
4957 #. type: Plain text
4958 #: build/C/man2/perf_event_open.2:1523
4959 msgid ""
4960 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4961 "sampling period is written."
4962 msgstr ""
4963
4964 #. type: TP
4965 #: build/C/man2/perf_event_open.2:1523
4966 #, no-wrap
4967 msgid "I<v>"
4968 msgstr ""
4969
4970 #. type: Plain text
4971 #: build/C/man2/perf_event_open.2:1534
4972 msgid ""
4973 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4974 "included which has values for all events in the event group.  The values "
4975 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4976 "time."
4977 msgstr ""
4978
4979 #. type: TP
4980 #: build/C/man2/perf_event_open.2:1534
4981 #, no-wrap
4982 msgid "I<nr>, I<ips[nr]>"
4983 msgstr ""
4984
4985 #. type: Plain text
4986 #: build/C/man2/perf_event_open.2:1542
4987 msgid ""
4988 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4989 "which indicates how many following 64-bit instruction pointers will follow.  "
4990 "This is the current callchain."
4991 msgstr ""
4992
4993 #. type: TP
4994 #: build/C/man2/perf_event_open.2:1542
4995 #, no-wrap
4996 msgid "I<size>, I<data[size]>"
4997 msgstr ""
4998
4999 #. type: Plain text
5000 #: build/C/man2/perf_event_open.2:1549
5001 msgid ""
5002 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
5003 "included followed by an array of 8-bit values of length size.  The values "
5004 "are padded with 0 to have 64-bit alignment."
5005 msgstr ""
5006
5007 #. type: Plain text
5008 #: build/C/man2/perf_event_open.2:1554
5009 msgid ""
5010 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
5011 "make any promises with respect to the stability of its content, it may vary "
5012 "depending on event, hardware, and kernel version."
5013 msgstr ""
5014
5015 #. type: TP
5016 #: build/C/man2/perf_event_open.2:1554
5017 #, no-wrap
5018 msgid "I<bnr>, I<lbr[bnr]>"
5019 msgstr ""
5020
5021 #. type: Plain text
5022 #: build/C/man2/perf_event_open.2:1563
5023 msgid ""
5024 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5025 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5026 "structures which each include the fields:"
5027 msgstr ""
5028
5029 #. type: TP
5030 #: build/C/man2/perf_event_open.2:1564
5031 #, no-wrap
5032 msgid "I<from>"
5033 msgstr ""
5034
5035 #. type: Plain text
5036 #: build/C/man2/perf_event_open.2:1567
5037 msgid "indicating the source instruction (may not be a branch)"
5038 msgstr ""
5039
5040 #. type: TP
5041 #: build/C/man2/perf_event_open.2:1567
5042 #, no-wrap
5043 msgid "I<to>"
5044 msgstr ""
5045
5046 #. type: Plain text
5047 #: build/C/man2/perf_event_open.2:1570
5048 msgid "the branch target"
5049 msgstr ""
5050
5051 #. type: TP
5052 #: build/C/man2/perf_event_open.2:1570
5053 #, no-wrap
5054 msgid "I<mispred>"
5055 msgstr ""
5056
5057 #. type: Plain text
5058 #: build/C/man2/perf_event_open.2:1573
5059 msgid "the branch target was mispredicted"
5060 msgstr ""
5061
5062 #. type: TP
5063 #: build/C/man2/perf_event_open.2:1573
5064 #, no-wrap
5065 msgid "I<predicted>"
5066 msgstr ""
5067
5068 #. type: Plain text
5069 #: build/C/man2/perf_event_open.2:1576
5070 msgid "the branch target was predicted."
5071 msgstr ""
5072
5073 #. type: Plain text
5074 #: build/C/man2/perf_event_open.2:1579
5075 msgid ""
5076 "The entries are from most to least recent, so the first entry has the most "
5077 "recent branch."
5078 msgstr ""
5079
5080 #. type: Plain text
5081 #: build/C/man2/perf_event_open.2:1586
5082 msgid ""
5083 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
5084 "values will be 0."
5085 msgstr ""
5086
5087 #. type: TP
5088 #: build/C/man2/perf_event_open.2:1587
5089 #, no-wrap
5090 msgid "I<abi>, I<regs[weight(mask)]>"
5091 msgstr ""
5092
5093 #. type: Plain text
5094 #: build/C/man2/perf_event_open.2:1592
5095 msgid ""
5096 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
5097 "recorded."
5098 msgstr ""
5099
5100 #. type: Plain text
5101 #: build/C/man2/perf_event_open.2:1598
5102 msgid ""
5103 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5104 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5105 msgstr ""
5106
5107 #. type: Plain text
5108 #: build/C/man2/perf_event_open.2:1608
5109 msgid ""
5110 "The I<regs> field is an array of the CPU registers that were specified by "
5111 "the I<sample_regs_user> attr field.  The number of values is the number of "
5112 "bits set in the I<sample_regs_user> bitmask."
5113 msgstr ""
5114
5115 #. type: TP
5116 #: build/C/man2/perf_event_open.2:1608
5117 #, no-wrap
5118 msgid "I<size>, I<data[size]>, I<dyn_size>"
5119 msgstr ""
5120
5121 #. type: Plain text
5122 #: build/C/man2/perf_event_open.2:1622
5123 msgid ""
5124 "If B<PERF_SAMPLE_STACK_USER> is enabled, then record the user stack to "
5125 "enable backtracing.  I<size> is the size requested by the user in "
5126 "I<stack_user_size> or else the maximum record size.  I<data> is the stack "
5127 "data.  I<dyn_size> is the amount of data actually dumped (can be less than "
5128 "I<size>)."
5129 msgstr ""
5130
5131 #. type: TP
5132 #: build/C/man2/perf_event_open.2:1622
5133 #, no-wrap
5134 msgid "I<weight>"
5135 msgstr ""
5136
5137 #. type: Plain text
5138 #: build/C/man2/perf_event_open.2:1630
5139 msgid ""
5140 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64 bit value provided by the "
5141 "hardware is recorded that indicates how costly the event was.  This allows "
5142 "expensive events to stand out more clearly in profiles."
5143 msgstr ""
5144
5145 #. type: TP
5146 #: build/C/man2/perf_event_open.2:1630
5147 #, no-wrap
5148 msgid "I<data_src>"
5149 msgstr ""
5150
5151 #. type: Plain text
5152 #: build/C/man2/perf_event_open.2:1636
5153 msgid ""
5154 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64 bit value is recorded that "
5155 "is made up of the following fields:"
5156 msgstr ""
5157
5158 #. type: TP
5159 #: build/C/man2/perf_event_open.2:1637
5160 #, no-wrap
5161 msgid "I<mem_op>"
5162 msgstr ""
5163
5164 #. type: Plain text
5165 #: build/C/man2/perf_event_open.2:1650
5166 msgid ""
5167 "type of opcode, a bitwise combination of B<PERF_MEM_OP_NA> (not available), "
5168 "B<PERF_MEM_OP_LOAD> (load instruction), B<PERF_MEM_OP_STORE> (store "
5169 "instruction), B<PERF_MEM_OP_PFETCH> (prefetch), and B<PERF_MEM_OP_EXEC> "
5170 "(executable code)."
5171 msgstr ""
5172
5173 #. type: TP
5174 #: build/C/man2/perf_event_open.2:1650
5175 #, no-wrap
5176 msgid "I<mem_lvl>"
5177 msgstr ""
5178
5179 #. type: Plain text
5180 #: build/C/man2/perf_event_open.2:1681
5181 msgid ""
5182 "memory hierarchy level hit or miss, a bitwise combination of "
5183 "B<PERF_MEM_LVL_NA> (not available), B<PERF_MEM_LVL_HIT> (hit), "
5184 "B<PERF_MEM_LVL_MISS> (miss), B<PERF_MEM_LVL_L1> (level 1 cache), "
5185 "B<PERF_MEM_LVL_LFB> (line fill buffer), B<PERF_MEM_LVL_L2> (level 2 cache), "
5186 "B<PERF_MEM_LVL_L3> (level 3 cache), B<PERF_MEM_LVL_LOC_RAM> (local DRAM), "
5187 "B<PERF_MEM_LVL_REM_RAM1> (remote DRAM 1 hop), B<PERF_MEM_LVL_REM_RAM2> "
5188 "(remote DRAM 2 hops), B<PERF_MEM_LVL_REM_CCE1> (remote cache 1 hop), "
5189 "B<PERF_MEM_LVL_REM_CCE2> (remote cache 2 hops), B<PERF_MEM_LVL_IO> (I/O "
5190 "memory), and B<PERF_MEM_LVL_UNC> (uncached memory)."
5191 msgstr ""
5192
5193 #. type: TP
5194 #: build/C/man2/perf_event_open.2:1681
5195 #, no-wrap
5196 msgid "I<mem_snoop>"
5197 msgstr ""
5198
5199 #. type: Plain text
5200 #: build/C/man2/perf_event_open.2:1694
5201 msgid ""
5202 "snoop mode, a bitwise combination of B<PERF_MEM_SNOOP_NA> (not available), "
5203 "B<PERF_MEM_SNOOP_NONE> (no snoop), B<PERF_MEM_SNOOP_HIT> (snoop hit), "
5204 "B<PERF_MEM_SNOOP_MISS> (snoop miss), and B<PERF_MEM_SNOOP_HITM> (snoop hit "
5205 "modified)."
5206 msgstr ""
5207
5208 #. type: TP
5209 #: build/C/man2/perf_event_open.2:1694
5210 #, no-wrap
5211 msgid "I<mem_lock>"
5212 msgstr ""
5213
5214 #. type: Plain text
5215 #: build/C/man2/perf_event_open.2:1701
5216 msgid ""
5217 "lock instruction, a bitwise combination of B<PERF_MEM_LOCK_NA> (not "
5218 "available) and B<PERF_MEM_LOCK_LOCKED> (locked transaction)."
5219 msgstr ""
5220
5221 #. type: TP
5222 #: build/C/man2/perf_event_open.2:1701
5223 #, no-wrap
5224 msgid "I<mem_dtlb>"
5225 msgstr ""
5226
5227 #. type: Plain text
5228 #: build/C/man2/perf_event_open.2:1718
5229 msgid ""
5230 "tlb access hit or miss, a bitwise combination of B<PERF_MEM_TLB_NA> (not "
5231 "available), B<PERF_MEM_TLB_HIT> (hit), B<PERF_MEM_TLB_MISS> (miss), "
5232 "B<PERF_MEM_TLB_L1> (level 1 TLB), B<PERF_MEM_TLB_L2> (level 2 TLB), "
5233 "B<PERF_MEM_TLB_WK> (hardware walker), and B<PERF_MEM_TLB_OS> (OS fault "
5234 "handler)."
5235 msgstr ""
5236
5237 #. type: TP
5238 #: build/C/man2/perf_event_open.2:1721
5239 #, no-wrap
5240 msgid "I<misc>"
5241 msgstr ""
5242
5243 #. type: Plain text
5244 #: build/C/man2/perf_event_open.2:1726
5245 msgid "The I<misc> field contains additional information about the sample."
5246 msgstr ""
5247
5248 #. type: Plain text
5249 #: build/C/man2/perf_event_open.2:1731
5250 msgid ""
5251 "The CPU mode can be determined from this value by masking with "
5252 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5253 "these are not bit masks, only one can be set at a time):"
5254 msgstr ""
5255
5256 #. type: TP
5257 #: build/C/man2/perf_event_open.2:1732
5258 #, no-wrap
5259 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5260 msgstr ""
5261
5262 #. type: Plain text
5263 #: build/C/man2/perf_event_open.2:1735
5264 msgid "Unknown CPU mode."
5265 msgstr ""
5266
5267 #. type: TP
5268 #: build/C/man2/perf_event_open.2:1735
5269 #, no-wrap
5270 msgid "B<PERF_RECORD_MISC_KERNEL>"
5271 msgstr ""
5272
5273 #. type: Plain text
5274 #: build/C/man2/perf_event_open.2:1738
5275 msgid "Sample happened in the kernel."
5276 msgstr ""
5277
5278 #. type: TP
5279 #: build/C/man2/perf_event_open.2:1738
5280 #, no-wrap
5281 msgid "B<PERF_RECORD_MISC_USER>"
5282 msgstr ""
5283
5284 #. type: Plain text
5285 #: build/C/man2/perf_event_open.2:1741
5286 msgid "Sample happened in user code."
5287 msgstr ""
5288
5289 #. type: TP
5290 #: build/C/man2/perf_event_open.2:1741
5291 #, no-wrap
5292 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5293 msgstr ""
5294
5295 #. type: Plain text
5296 #: build/C/man2/perf_event_open.2:1744
5297 msgid "Sample happened in the hypervisor."
5298 msgstr ""
5299
5300 #. type: TP
5301 #: build/C/man2/perf_event_open.2:1744
5302 #, no-wrap
5303 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5304 msgstr ""
5305
5306 #. type: Plain text
5307 #: build/C/man2/perf_event_open.2:1747
5308 msgid "Sample happened in the guest kernel."
5309 msgstr ""
5310
5311 #. type: TP
5312 #: build/C/man2/perf_event_open.2:1747
5313 #, no-wrap
5314 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5315 msgstr ""
5316
5317 #. type: Plain text
5318 #: build/C/man2/perf_event_open.2:1750
5319 msgid "Sample happened in guest user code."
5320 msgstr ""
5321
5322 #. type: Plain text
5323 #: build/C/man2/perf_event_open.2:1754
5324 msgid "In addition, one of the following bits can be set:"
5325 msgstr ""
5326
5327 #. type: TP
5328 #: build/C/man2/perf_event_open.2:1754
5329 #, fuzzy, no-wrap
5330 #| msgid "B<PERF_RECORD_EXIT>"
5331 msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
5332 msgstr "B<PERF_RECORD_EXIT>"
5333
5334 #. type: Plain text
5335 #: build/C/man2/perf_event_open.2:1758
5336 msgid ""
5337 "This is set when the mapping is not executable; otherwise the mapping is "
5338 "executable."
5339 msgstr ""
5340
5341 #. type: TP
5342 #: build/C/man2/perf_event_open.2:1758
5343 #, no-wrap
5344 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5345 msgstr ""
5346
5347 #. type: Plain text
5348 #: build/C/man2/perf_event_open.2:1766
5349 msgid ""
5350 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5351 "instruction that triggered the event.  See also I<perf_event_attr."
5352 "precise_ip>."
5353 msgstr ""
5354
5355 #. type: TP
5356 #: build/C/man2/perf_event_open.2:1766
5357 #, no-wrap
5358 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5359 msgstr ""
5360
5361 #. type: Plain text
5362 #: build/C/man2/perf_event_open.2:1769
5363 msgid "This indicates there is extended data available (currently not used)."
5364 msgstr ""
5365
5366 #. type: Plain text
5367 #: build/C/man2/perf_event_open.2:1773
5368 msgid "This indicates the size of the record."
5369 msgstr ""
5370
5371 #. type: SS
5372 #: build/C/man2/perf_event_open.2:1774
5373 #, no-wrap
5374 msgid "Signal overflow"
5375 msgstr ""
5376
5377 #. type: Plain text
5378 #: build/C/man2/perf_event_open.2:1783
5379 msgid ""
5380 "Events can be set to deliver a signal when a threshold is crossed.  The "
5381 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5382 "and B<fcntl>(2), system calls."
5383 msgstr ""
5384
5385 #. type: Plain text
5386 #: build/C/man2/perf_event_open.2:1787
5387 msgid ""
5388 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5389 "non-zero value)."
5390 msgstr ""
5391
5392 #. type: Plain text
5393 #: build/C/man2/perf_event_open.2:1789
5394 msgid "There are two ways to generate signals."
5395 msgstr ""
5396
5397 #. type: Plain text
5398 #: build/C/man2/perf_event_open.2:1799
5399 msgid ""
5400 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5401 "will generate a signal if a certain number of samples or bytes have been "
5402 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5403 "is sent."
5404 msgstr ""
5405
5406 #. type: Plain text
5407 #: build/C/man2/perf_event_open.2:1811
5408 msgid ""
5409 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5410 "adds to a counter that decrements each time the event overflows.  When non-"
5411 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5412 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5413 msgstr ""
5414
5415 #.  FIXME(Vince) : Find out when this was introduced
5416 #. type: Plain text
5417 #: build/C/man2/perf_event_open.2:1817
5418 msgid ""
5419 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5420 "for every overflow, even if I<wakeup_events> is not set."
5421 msgstr ""
5422
5423 #. type: SS
5424 #: build/C/man2/perf_event_open.2:1817
5425 #, no-wrap
5426 msgid "rdpmc instruction"
5427 msgstr ""
5428
5429 #. type: Plain text
5430 #: build/C/man2/perf_event_open.2:1824
5431 msgid ""
5432 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5433 "low-latency reads without having to enter the kernel.  Note that using "
5434 "I<rdpmc> is not necessarily faster than other methods for reading event "
5435 "values."
5436 msgstr ""
5437
5438 #. type: Plain text
5439 #: build/C/man2/perf_event_open.2:1829
5440 msgid ""
5441 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5442 "page; documentation on how to calculate event values can be found in that "
5443 "section."
5444 msgstr ""
5445
5446 #. type: SS
5447 #: build/C/man2/perf_event_open.2:1829
5448 #, no-wrap
5449 msgid "perf_event ioctl calls"
5450 msgstr ""
5451
5452 #. type: Plain text
5453 #: build/C/man2/perf_event_open.2:1834
5454 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5455 msgstr ""
5456
5457 #. type: TP
5458 #: build/C/man2/perf_event_open.2:1834
5459 #, fuzzy, no-wrap
5460 #| msgid "B<PTRACE_EVENT_CLONE>"
5461 msgid "B<PERF_EVENT_IOC_ENABLE>"
5462 msgstr "B<PTRACE_EVENT_CLONE>"
5463
5464 #. type: Plain text
5465 #: build/C/man2/perf_event_open.2:1838
5466 msgid ""
5467 "Enables the individual event or event group specified by the file descriptor "
5468 "argument."
5469 msgstr ""
5470
5471 #. type: Plain text
5472 #: build/C/man2/perf_event_open.2:1844
5473 msgid ""
5474 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5475 "events in a group are enabled, even if the event specified is not the group "
5476 "leader (but see BUGS)."
5477 msgstr ""
5478
5479 #. type: TP
5480 #: build/C/man2/perf_event_open.2:1844
5481 #, fuzzy, no-wrap
5482 #| msgid "B<PTRACE_EVENT_CLONE>"
5483 msgid "B<PERF_EVENT_IOC_DISABLE>"
5484 msgstr "B<PTRACE_EVENT_CLONE>"
5485
5486 #. type: Plain text
5487 #: build/C/man2/perf_event_open.2:1848
5488 msgid ""
5489 "Disables the individual counter or event group specified by the file "
5490 "descriptor argument."
5491 msgstr ""
5492
5493 #. type: Plain text
5494 #: build/C/man2/perf_event_open.2:1855
5495 msgid ""
5496 "Enabling or disabling the leader of a group enables or disables the entire "
5497 "group; that is, while the group leader is disabled, none of the counters in "
5498 "the group will count.  Enabling or disabling a member of a group other than "
5499 "the leader affects only that counter; disabling a non-leader stops that "
5500 "counter from counting but doesn't affect any other counter."
5501 msgstr ""
5502
5503 #. type: Plain text
5504 #: build/C/man2/perf_event_open.2:1861
5505 msgid ""
5506 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5507 "events in a group are disabled, even if the event specified is not the group "
5508 "leader (but see BUGS)."
5509 msgstr ""
5510
5511 #. type: TP
5512 #: build/C/man2/perf_event_open.2:1861
5513 #, fuzzy, no-wrap
5514 #| msgid "B<PTRACE_EVENT_FORK>"
5515 msgid "B<PERF_EVENT_IOC_REFRESH>"
5516 msgstr "B<PTRACE_EVENT_FORK>"
5517
5518 #. type: Plain text
5519 #: build/C/man2/perf_event_open.2:1875
5520 msgid ""
5521 "Non-inherited overflow counters can use this to enable a counter for a "
5522 "number of overflows specified by the argument, after which it is disabled.  "
5523 "Subsequent calls of this ioctl add the argument value to the current count.  "
5524 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5525 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5526 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5527 msgstr ""
5528
5529 #. type: TP
5530 #: build/C/man2/perf_event_open.2:1875
5531 #, fuzzy, no-wrap
5532 #| msgid "B<PTRACE_EVENT_FORK>"
5533 msgid "B<PERF_EVENT_IOC_RESET>"
5534 msgstr "B<PTRACE_EVENT_FORK>"
5535
5536 #. type: Plain text
5537 #: build/C/man2/perf_event_open.2:1885
5538 msgid ""
5539 "Reset the event count specified by the file descriptor argument to zero.  "
5540 "This resets only the counts; there is no way to reset the multiplexing "
5541 "I<time_enabled> or I<time_running> values."
5542 msgstr ""
5543
5544 #. type: Plain text
5545 #: build/C/man2/perf_event_open.2:1891
5546 msgid ""
5547 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5548 "events in a group are reset, even if the event specified is not the group "
5549 "leader (but see BUGS)."
5550 msgstr ""
5551
5552 #. type: TP
5553 #: build/C/man2/perf_event_open.2:1891
5554 #, fuzzy, no-wrap
5555 #| msgid "B<PTRACE_EVENT_FORK>"
5556 msgid "B<PERF_EVENT_IOC_PERIOD>"
5557 msgstr "B<PTRACE_EVENT_FORK>"
5558
5559 #. type: Plain text
5560 #: build/C/man2/perf_event_open.2:1895
5561 msgid ""
5562 "IOC_PERIOD is the command to update the period; it does not update the "
5563 "current period but instead defers until next."
5564 msgstr ""
5565
5566 #. type: Plain text
5567 #: build/C/man2/perf_event_open.2:1898
5568 msgid ""
5569 "The argument is a pointer to a 64-bit value containing the desired new "
5570 "period."
5571 msgstr ""
5572
5573 #. type: TP
5574 #: build/C/man2/perf_event_open.2:1898
5575 #, no-wrap
5576 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5577 msgstr ""
5578
5579 #. type: Plain text
5580 #: build/C/man2/perf_event_open.2:1903
5581 msgid ""
5582 "This tells the kernel to report event notifications to the specified file "
5583 "descriptor rather than the default one.  The file descriptors must all be on "
5584 "the same CPU."
5585 msgstr ""
5586
5587 #. type: Plain text
5588 #: build/C/man2/perf_event_open.2:1906
5589 msgid ""
5590 "The argument specifies the desired file descriptor, or -1 if output should "
5591 "be ignored."
5592 msgstr ""
5593
5594 #. type: TP
5595 #: build/C/man2/perf_event_open.2:1906
5596 #, fuzzy, no-wrap
5597 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5598 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5599 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5600
5601 #. type: Plain text
5602 #: build/C/man2/perf_event_open.2:1909
5603 msgid "This adds an ftrace filter to this event."
5604 msgstr ""
5605
5606 #. type: Plain text
5607 #: build/C/man2/perf_event_open.2:1911
5608 msgid "The argument is a pointer to the desired ftrace filter."
5609 msgstr ""
5610
5611 #. type: SS
5612 #: build/C/man2/perf_event_open.2:1911
5613 #, no-wrap
5614 msgid "Using prctl"
5615 msgstr ""
5616
5617 #. type: Plain text
5618 #: build/C/man2/perf_event_open.2:1924
5619 msgid ""
5620 "A process can enable or disable all the event groups that are attached to it "
5621 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5622 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5623 "the current process, whether created by this process or by another, and does "
5624 "not affect any counters that this process has created on other processes.  "
5625 "It enables or disables only the group leaders, not any other members in the "
5626 "groups."
5627 msgstr ""
5628
5629 #. type: SS
5630 #: build/C/man2/perf_event_open.2:1924
5631 #, no-wrap
5632 msgid "perf_event related configuration files"
5633 msgstr ""
5634
5635 #. type: Plain text
5636 #: build/C/man2/perf_event_open.2:1927
5637 msgid "Files in I</proc/sys/kernel/>"
5638 msgstr ""
5639
5640 #. type: TP
5641 #: build/C/man2/perf_event_open.2:1928
5642 #, no-wrap
5643 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5644 msgstr ""
5645
5646 #. type: Plain text
5647 #: build/C/man2/perf_event_open.2:1934
5648 msgid ""
5649 "The I<perf_event_paranoid> file can be set to restrict access to the "
5650 "performance counters."
5651 msgstr ""
5652
5653 #. type: Plain text
5654 #: build/C/man2/perf_event_open.2:1936
5655 msgid "2 - only allow user-space measurements"
5656 msgstr ""
5657
5658 #. type: Plain text
5659 #: build/C/man2/perf_event_open.2:1938
5660 msgid "1 - (default) allow both kernel and user measurements"
5661 msgstr ""
5662
5663 #. type: Plain text
5664 #: build/C/man2/perf_event_open.2:1940
5665 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5666 msgstr ""
5667
5668 #. type: Plain text
5669 #: build/C/man2/perf_event_open.2:1942
5670 msgid "-1 - no restrictions"
5671 msgstr ""
5672
5673 #. type: Plain text
5674 #: build/C/man2/perf_event_open.2:1947
5675 msgid ""
5676 "The existence of the I<perf_event_paranoid> file is the official method for "
5677 "determining if a kernel supports B<perf_event_open>()."
5678 msgstr ""
5679
5680 #. type: TP
5681 #: build/C/man2/perf_event_open.2:1947
5682 #, no-wrap
5683 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5684 msgstr ""
5685
5686 #. type: Plain text
5687 #: build/C/man2/perf_event_open.2:1956
5688 msgid ""
5689 "This sets the maximum sample rate.  Setting this too high can allow users to "
5690 "sample at a rate that impacts overall machine performance and potentially "
5691 "lock up the machine.  The default value is 100000 (samples per second)."
5692 msgstr ""
5693
5694 #. type: TP
5695 #: build/C/man2/perf_event_open.2:1956
5696 #, no-wrap
5697 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5698 msgstr ""
5699
5700 #. type: Plain text
5701 #: build/C/man2/perf_event_open.2:1961
5702 msgid ""
5703 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5704 "516 (kB)."
5705 msgstr ""
5706
5707 #. type: Plain text
5708 #: build/C/man2/perf_event_open.2:1965
5709 msgid "Files in I</sys/bus/event_source/devices/>"
5710 msgstr ""
5711
5712 #. type: Plain text
5713 #: build/C/man2/perf_event_open.2:1971
5714 msgid ""
5715 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5716 "monitoring.  Information on how to program these PMUs can be found under I</"
5717 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5718 "different PMU."
5719 msgstr ""
5720
5721 #. type: TP
5722 #: build/C/man2/perf_event_open.2:1971
5723 #, fuzzy, no-wrap
5724 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5725 msgid "I</sys/bus/event_source/devices/*/type> (Since Linux 2.6.38)"
5726 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5727
5728 #. type: Plain text
5729 #: build/C/man2/perf_event_open.2:1976
5730 msgid ""
5731 "This contains an integer that can be used in the I<type> field of "
5732 "perf_event_attr to indicate you wish to use this PMU."
5733 msgstr ""
5734
5735 #. type: TP
5736 #: build/C/man2/perf_event_open.2:1976
5737 #, no-wrap
5738 msgid "I</sys/bus/event_source/devices/*/rdpmc> (Since Linux 3.4)"
5739 msgstr ""
5740
5741 #. type: Plain text
5742 #: build/C/man2/perf_event_open.2:1981
5743 msgid ""
5744 "If this file is 1, then direct user-space access to the performance counter "
5745 "registers is allowed via the rdpmc instruction.  This can be disabled by "
5746 "echoing 0 to the file."
5747 msgstr ""
5748
5749 #. type: TP
5750 #: build/C/man2/perf_event_open.2:1981
5751 #, no-wrap
5752 msgid "I</sys/bus/event_source/devices/*/format/> (Since Linux 3.4)"
5753 msgstr ""
5754
5755 #. type: Plain text
5756 #: build/C/man2/perf_event_open.2:1987
5757 msgid ""
5758 "This sub-directory contains information on the architecture-specific sub-"
5759 "fields available for programming the various I<config> fields in the "
5760 "perf_event_attr struct."
5761 msgstr ""
5762
5763 #. type: Plain text
5764 #: build/C/man2/perf_event_open.2:1997
5765 msgid ""
5766 "The content of each file is the name of the config field, followed by a "
5767 "colon, followed by a series of integer bit ranges separated by commas.  For "
5768 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
5769 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
5770 "perf_event_attr::config1."
5771 msgstr ""
5772
5773 #. type: TP
5774 #: build/C/man2/perf_event_open.2:1997
5775 #, no-wrap
5776 msgid "I</sys/bus/event_source/devices/*/events/> (Since Linux 3.4)"
5777 msgstr ""
5778
5779 #. type: Plain text
5780 #: build/C/man2/perf_event_open.2:2006
5781 msgid ""
5782 "This sub-directory contains files with pre-defined events.  The contents are "
5783 "strings describing the event settings expressed in terms of the fields found "
5784 "in the previously mentioned I<./format/> directory.  These are not "
5785 "necessarily complete lists of all events supported by a PMU, but usually a "
5786 "subset of events deemed useful or interesting."
5787 msgstr ""
5788
5789 #. type: Plain text
5790 #: build/C/man2/perf_event_open.2:2014
5791 msgid ""
5792 "The content of each file is a list of attribute names separated by commas.  "
5793 "Each entry has an optional value (either hex or decimal).  If no value is "
5794 "specified than it is assumed to be a single-bit field with a value of 1.  An "
5795 "example entry may look like this: I<event=0x2,inv,ldlat=3>"
5796 msgstr ""
5797
5798 #. type: TP
5799 #: build/C/man2/perf_event_open.2:2014
5800 #, no-wrap
5801 msgid "I</sys/bus/event_source/devices/*/uevent>"
5802 msgstr ""
5803
5804 #. type: Plain text
5805 #: build/C/man2/perf_event_open.2:2018
5806 msgid ""
5807 "This file is the standard kernel device interface for injecting hotplug "
5808 "events."
5809 msgstr ""
5810
5811 #. type: TP
5812 #: build/C/man2/perf_event_open.2:2018
5813 #, no-wrap
5814 msgid "I</sys/bus/event_source/devices/*/cpumask> (Since Linux 3.7)"
5815 msgstr ""
5816
5817 #. type: Plain text
5818 #: build/C/man2/perf_event_open.2:2025
5819 msgid ""
5820 "The cpumask file contains a comma-separated list of integers that indicate a "
5821 "representative cpu number for each socket (package)  on the motherboard.  "
5822 "This is needed when setting up uncore or northbridge events, as those PMUs "
5823 "present socket-wide events."
5824 msgstr ""
5825
5826 #. type: Plain text
5827 #: build/C/man2/perf_event_open.2:2032
5828 msgid ""
5829 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5830 "occurred (in which case, I<errno> is set appropriately)."
5831 msgstr ""
5832
5833 #. type: Plain text
5834 #: build/C/man2/perf_event_open.2:2036
5835 msgid "Returned if the specified event is not available."
5836 msgstr ""
5837
5838 #. type: TP
5839 #: build/C/man2/perf_event_open.2:2036
5840 #, no-wrap
5841 msgid "B<ENOSPC>"
5842 msgstr "B<ENOSPC>"
5843
5844 #. type: Plain text
5845 #: build/C/man2/perf_event_open.2:2046
5846 msgid ""
5847 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5848 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5849 "B<ENOSPC> is still returned if you try to read results into too small of a "
5850 "buffer."
5851 msgstr ""
5852
5853 #. type: SH
5854 #: build/C/man2/perf_event_open.2:2046
5855 #, no-wrap
5856 msgid "VERSION"
5857 msgstr "バージョン"
5858
5859 #. type: Plain text
5860 #: build/C/man2/perf_event_open.2:2051
5861 msgid ""
5862 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5863 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5864 msgstr ""
5865
5866 #. type: Plain text
5867 #: build/C/man2/perf_event_open.2:2056
5868 #, fuzzy
5869 #| msgid ""
5870 #| "B<personality>()  is Linux-specific and should not be used in programs "
5871 #| "intended to be portable."
5872 msgid ""
5873 "This B<perf_event_open>()  system call Linux- specific and should not be "
5874 "used in programs intended to be portable."
5875 msgstr ""
5876 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5877 "はない。"
5878
5879 #. type: Plain text
5880 #: build/C/man2/perf_event_open.2:2060
5881 #, fuzzy
5882 #| msgid ""
5883 #| "Glibc does not provide a wrapper for this system call; call it using "
5884 #| "B<syscall>(2)."
5885 msgid ""
5886 "Glibc does not provide a wrapper for this system call; call it using "
5887 "B<syscall>(2).  See the example below."
5888 msgstr ""
5889 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5890 "(2)  を使って呼び出すこと。"
5891
5892 #. type: Plain text
5893 #: build/C/man2/perf_event_open.2:2066
5894 msgid ""
5895 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5896 "checking for the existence of the file I</proc/sys/kernel/"
5897 "perf_event_paranoid>."
5898 msgstr ""
5899
5900 #. type: SH
5901 #: build/C/man2/perf_event_open.2:2066 build/C/man2/pivot_root.2:134
5902 #: build/C/man2/ptrace.2:1884
5903 #, no-wrap
5904 msgid "BUGS"
5905 msgstr "バグ"
5906
5907 #. type: Plain text
5908 #: build/C/man2/perf_event_open.2:2073
5909 msgid ""
5910 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5911 "signals in threads.  This was introduced in Linux 2.6.32."
5912 msgstr ""
5913
5914 #. type: Plain text
5915 #: build/C/man2/perf_event_open.2:2081
5916 msgid ""
5917 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5918 "could be scheduled together until read time.  The same happens on all known "
5919 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5920 "events works you have to B<perf_event_open>(), start, then read before you "
5921 "know for sure you can get valid measurements."
5922 msgstr ""
5923
5924 #. type: Plain text
5925 #: build/C/man2/perf_event_open.2:2085
5926 msgid ""
5927 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5928 "that case, some events would silently return \"0\" if the kernel scheduled "
5929 "them in an improper counter slot."
5930 msgstr ""
5931
5932 #. type: Plain text
5933 #: build/C/man2/perf_event_open.2:2088
5934 msgid ""
5935 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5936 "results could be returned."
5937 msgstr ""
5938
5939 #. type: Plain text
5940 #: build/C/man2/perf_event_open.2:2091
5941 msgid ""
5942 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5943 "\"inherit\" is enabled and many threads are started."
5944 msgstr ""
5945
5946 #. type: Plain text
5947 #: build/C/man2/perf_event_open.2:2095
5948 msgid ""
5949 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5950 "processes."
5951 msgstr ""
5952
5953 #. type: Plain text
5954 #: build/C/man2/perf_event_open.2:2100
5955 msgid ""
5956 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5957 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5958 "This behavior is unsupported and should not be relied on."
5959 msgstr ""
5960
5961 #. type: Plain text
5962 #: build/C/man2/perf_event_open.2:2106
5963 msgid ""
5964 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5965 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5966 "the union has a non-zero value in it."
5967 msgstr ""
5968
5969 #. type: Plain text
5970 #: build/C/man2/perf_event_open.2:2112
5971 msgid ""
5972 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
5973 "was broken and would repeatedly operate on the event specified rather than "
5974 "iterating across all sibling events in a group."
5975 msgstr ""
5976
5977 #. type: Plain text
5978 #: build/C/man2/perf_event_open.2:2117
5979 msgid ""
5980 "Always double-check your results! Various generalized events have had wrong "
5981 "values.  For example, retired branches measured the wrong thing on AMD "
5982 "machines until Linux 2.6.35."
5983 msgstr ""
5984
5985 #. type: SH
5986 #: build/C/man2/perf_event_open.2:2117 build/C/man2/process_vm_readv.2:295
5987 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5988 #, no-wrap
5989 msgid "EXAMPLE"
5990 msgstr "例"
5991
5992 #. type: Plain text
5993 #: build/C/man2/perf_event_open.2:2121
5994 msgid ""
5995 "The following is a short example that measures the total instruction count "
5996 "of a call to B<printf>(3)."
5997 msgstr ""
5998
5999 #. type: Plain text
6000 #: build/C/man2/perf_event_open.2:2130
6001 #, no-wrap
6002 msgid ""
6003 "#include E<lt>stdlib.hE<gt>\n"
6004 "#include E<lt>stdio.hE<gt>\n"
6005 "#include E<lt>unistd.hE<gt>\n"
6006 "#include E<lt>string.hE<gt>\n"
6007 "#include E<lt>sys/ioctl.hE<gt>\n"
6008 "#include E<lt>linux/perf_event.hE<gt>\n"
6009 "#include E<lt>asm/unistd.hE<gt>\n"
6010 msgstr ""
6011 "#include E<lt>stdlib.hE<gt>\n"
6012 "#include E<lt>stdio.hE<gt>\n"
6013 "#include E<lt>unistd.hE<gt>\n"
6014 "#include E<lt>string.hE<gt>\n"
6015 "#include E<lt>sys/ioctl.hE<gt>\n"
6016 "#include E<lt>linux/perf_event.hE<gt>\n"
6017 "#include E<lt>asm/unistd.hE<gt>\n"
6018
6019 #. type: Plain text
6020 #: build/C/man2/perf_event_open.2:2136
6021 #, no-wrap
6022 msgid ""
6023 "long\n"
6024 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
6025 "                int cpu, int group_fd, unsigned long flags)\n"
6026 "{\n"
6027 "    int ret;\n"
6028 msgstr ""
6029
6030 #. type: Plain text
6031 #: build/C/man2/perf_event_open.2:2141
6032 #, no-wrap
6033 msgid ""
6034 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
6035 "                   group_fd, flags);\n"
6036 "    return ret;\n"
6037 "}\n"
6038 msgstr ""
6039
6040 #. type: Plain text
6041 #: build/C/man2/perf_event_open.2:2148
6042 #, no-wrap
6043 msgid ""
6044 "int\n"
6045 "main(int argc, char **argv)\n"
6046 "{\n"
6047 "    struct perf_event_attr pe;\n"
6048 "    long long count;\n"
6049 "    int fd;\n"
6050 msgstr ""
6051 "int\n"
6052 "main(int argc, char **argv)\n"
6053 "{\n"
6054 "    struct perf_event_attr pe;\n"
6055 "    long long count;\n"
6056 "    int fd;\n"
6057
6058 #. type: Plain text
6059 #: build/C/man2/perf_event_open.2:2156
6060 #, no-wrap
6061 msgid ""
6062 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
6063 "    pe.type = PERF_TYPE_HARDWARE;\n"
6064 "    pe.size = sizeof(struct perf_event_attr);\n"
6065 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
6066 "    pe.disabled = 1;\n"
6067 "    pe.exclude_kernel = 1;\n"
6068 "    pe.exclude_hv = 1;\n"
6069 msgstr ""
6070
6071 #. type: Plain text
6072 #: build/C/man2/perf_event_open.2:2162
6073 #, no-wrap
6074 msgid ""
6075 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6076 "    if (fd == -1) {\n"
6077 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6078 "       exit(EXIT_FAILURE);\n"
6079 "    }\n"
6080 msgstr ""
6081 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6082 "    if (fd == -1) {\n"
6083 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6084 "       exit(EXIT_FAILURE);\n"
6085 "    }\n"
6086
6087 #. type: Plain text
6088 #: build/C/man2/perf_event_open.2:2165
6089 #, no-wrap
6090 msgid ""
6091 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
6092 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
6093 msgstr ""
6094
6095 #. type: Plain text
6096 #: build/C/man2/perf_event_open.2:2167
6097 #, no-wrap
6098 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
6099 msgstr ""
6100
6101 #. type: Plain text
6102 #: build/C/man2/perf_event_open.2:2170
6103 #, no-wrap
6104 msgid ""
6105 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
6106 "    read(fd, &count, sizeof(long long));\n"
6107 msgstr ""
6108
6109 #. type: Plain text
6110 #: build/C/man2/perf_event_open.2:2172
6111 #, no-wrap
6112 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
6113 msgstr ""
6114
6115 #. type: Plain text
6116 #: build/C/man2/perf_event_open.2:2175
6117 #, no-wrap
6118 msgid ""
6119 "    close(fd);\n"
6120 "}\n"
6121 msgstr ""
6122
6123 #. type: Plain text
6124 #: build/C/man2/perf_event_open.2:2182
6125 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6126 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6127
6128 #. type: TH
6129 #: build/C/man2/perfmonctl.2:27
6130 #, no-wrap
6131 msgid "PERFMONCTL"
6132 msgstr ""
6133
6134 #. type: Plain text
6135 #: build/C/man2/perfmonctl.2:30
6136 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
6137 msgstr ""
6138
6139 #. type: Plain text
6140 #: build/C/man2/perfmonctl.2:34
6141 #, no-wrap
6142 msgid ""
6143 "B<#include E<lt>syscall.hE<gt>>\n"
6144 "B<#include E<lt>perfmon.hE<gt>>\n"
6145 msgstr ""
6146 "B<#include E<lt>syscall.hE<gt>>\n"
6147 "B<#include E<lt>perfmon.hE<gt>>\n"
6148
6149 #. type: Plain text
6150 #: build/C/man2/perfmonctl.2:36
6151 #, no-wrap
6152 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6153 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6154
6155 #. type: Plain text
6156 #: build/C/man2/perfmonctl.2:47
6157 msgid ""
6158 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
6159 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
6160 "monitoring data) registers and PMC (performance monitoring control) "
6161 "registers, which gather hardware statistics."
6162 msgstr ""
6163
6164 #. type: Plain text
6165 #: build/C/man2/perfmonctl.2:57
6166 msgid ""
6167 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
6168 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
6169 "I<fd> argument specifies the perfmon context to operate on."
6170 msgstr ""
6171
6172 #. type: Plain text
6173 #: build/C/man2/perfmonctl.2:61
6174 msgid "Supported values for I<cmd> are:"
6175 msgstr ""
6176
6177 #. type: TP
6178 #: build/C/man2/perfmonctl.2:61
6179 #, no-wrap
6180 msgid "B<PFM_CREATE_CONTEXT>"
6181 msgstr "B<PFM_CREATE_CONTEXT>"
6182
6183 #. type: Plain text
6184 #: build/C/man2/perfmonctl.2:65
6185 #, no-wrap
6186 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
6187 msgstr ""
6188
6189 #. type: Plain text
6190 #: build/C/man2/perfmonctl.2:67
6191 msgid "Set up a context."
6192 msgstr ""
6193
6194 #. type: Plain text
6195 #: build/C/man2/perfmonctl.2:74
6196 msgid ""
6197 "The I<fd> parameter is ignored.  A new perfmon context is created as "
6198 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
6199 "E<gt>ctx_fd>."
6200 msgstr ""
6201
6202 #. type: Plain text
6203 #: build/C/man2/perfmonctl.2:86
6204 msgid ""
6205 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
6206 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
6207 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
6208 "B<epoll>(7)."
6209 msgstr ""
6210
6211 #. type: Plain text
6212 #: build/C/man2/perfmonctl.2:90
6213 msgid ""
6214 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
6215 msgstr ""
6216
6217 #. type: TP
6218 #: build/C/man2/perfmonctl.2:90
6219 #, no-wrap
6220 msgid "B<PFM_WRITE_PMCS>"
6221 msgstr ""
6222
6223 #. type: Plain text
6224 #: build/C/man2/perfmonctl.2:95
6225 #, no-wrap
6226 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
6227 msgstr ""
6228
6229 #. type: Plain text
6230 #: build/C/man2/perfmonctl.2:97
6231 msgid "Set PMC registers."
6232 msgstr ""
6233
6234 #. type: TP
6235 #: build/C/man2/perfmonctl.2:97
6236 #, no-wrap
6237 msgid "B<PFM_WRITE_PMDS>"
6238 msgstr ""
6239
6240 #. type: Plain text
6241 #: build/C/man2/perfmonctl.2:101
6242 #, no-wrap
6243 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6244 msgstr ""
6245
6246 #.  pfm_write_pmds()
6247 #. type: Plain text
6248 #: build/C/man2/perfmonctl.2:104
6249 msgid "Set PMD registers."
6250 msgstr ""
6251
6252 #. type: TP
6253 #: build/C/man2/perfmonctl.2:104
6254 #, no-wrap
6255 msgid "B<PFM_READ_PMDS>"
6256 msgstr ""
6257
6258 #. type: Plain text
6259 #: build/C/man2/perfmonctl.2:109
6260 #, no-wrap
6261 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6262 msgstr ""
6263
6264 #. type: Plain text
6265 #: build/C/man2/perfmonctl.2:111
6266 msgid "Read PMD registers."
6267 msgstr ""
6268
6269 #. type: TP
6270 #: build/C/man2/perfmonctl.2:111
6271 #, no-wrap
6272 msgid "B<PFM_START>"
6273 msgstr ""
6274
6275 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6276 #. type: Plain text
6277 #: build/C/man2/perfmonctl.2:117
6278 #, no-wrap
6279 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6280 msgstr ""
6281
6282 #. type: Plain text
6283 #: build/C/man2/perfmonctl.2:119
6284 msgid "Start monitoring."
6285 msgstr ""
6286
6287 #. type: TP
6288 #: build/C/man2/perfmonctl.2:119
6289 #, no-wrap
6290 msgid "B<PFM_STOP>"
6291 msgstr ""
6292
6293 #. type: Plain text
6294 #: build/C/man2/perfmonctl.2:124
6295 #, no-wrap
6296 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6297 msgstr ""
6298
6299 #. type: Plain text
6300 #: build/C/man2/perfmonctl.2:126
6301 msgid "Stop monitoring."
6302 msgstr ""
6303
6304 #. type: TP
6305 #: build/C/man2/perfmonctl.2:126
6306 #, no-wrap
6307 msgid "B<PFM_LOAD_CONTEXT>"
6308 msgstr "B<PFM_LOAD_CONTEXT>"
6309
6310 #. type: Plain text
6311 #: build/C/man2/perfmonctl.2:131
6312 #, no-wrap
6313 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6314 msgstr ""
6315
6316 #. type: Plain text
6317 #: build/C/man2/perfmonctl.2:133
6318 msgid "Attach the context to a thread."
6319 msgstr ""
6320
6321 #. type: TP
6322 #: build/C/man2/perfmonctl.2:133
6323 #, no-wrap
6324 msgid "B<PFM_UNLOAD_CONTEXT>"
6325 msgstr ""
6326
6327 #. type: Plain text
6328 #: build/C/man2/perfmonctl.2:138
6329 #, no-wrap
6330 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6331 msgstr ""
6332
6333 #. type: Plain text
6334 #: build/C/man2/perfmonctl.2:140
6335 msgid "Detach the context from a thread."
6336 msgstr ""
6337
6338 #. type: TP
6339 #: build/C/man2/perfmonctl.2:140
6340 #, no-wrap
6341 msgid "B<PFM_RESTART>"
6342 msgstr ""
6343
6344 #. type: Plain text
6345 #: build/C/man2/perfmonctl.2:145
6346 #, no-wrap
6347 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6348 msgstr ""
6349
6350 #. type: Plain text
6351 #: build/C/man2/perfmonctl.2:147
6352 msgid "Restart monitoring after receiving an overflow notification."
6353 msgstr ""
6354
6355 #. type: TP
6356 #: build/C/man2/perfmonctl.2:147
6357 #, no-wrap
6358 msgid "B<PFM_GET_FEATURES>"
6359 msgstr "B<PFM_GET_FEATURES>"
6360
6361 #. type: Plain text
6362 #: build/C/man2/perfmonctl.2:152
6363 #, no-wrap
6364 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6365 msgstr ""
6366
6367 #. type: TP
6368 #: build/C/man2/perfmonctl.2:153
6369 #, no-wrap
6370 msgid "B<PFM_DEBUG>"
6371 msgstr ""
6372
6373 #. type: Plain text
6374 #: build/C/man2/perfmonctl.2:158
6375 #, no-wrap
6376 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6377 msgstr ""
6378
6379 #. type: Plain text
6380 #: build/C/man2/perfmonctl.2:162
6381 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6382 msgstr ""
6383
6384 #. type: TP
6385 #: build/C/man2/perfmonctl.2:162
6386 #, no-wrap
6387 msgid "B<PFM_GET_PMC_RESET_VAL>"
6388 msgstr ""
6389
6390 #. type: Plain text
6391 #: build/C/man2/perfmonctl.2:167
6392 #, no-wrap
6393 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6394 msgstr ""
6395
6396 #
6397 #
6398 #
6399 #.  .TP
6400 #.  .B PFM_CREATE_EVTSETS
6401 #.  create or modify event sets
6402 #.  .nf
6403 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6404 #.  .fi
6405 #.  .TP
6406 #.  .B PFM_DELETE_EVTSETS
6407 #.  delete event sets
6408 #.  .nf
6409 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6410 #.  .fi
6411 #.  .TP
6412 #.  .B PFM_GETINFO_EVTSETS
6413 #.  get information about event sets
6414 #.  .nf
6415 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6416 #.  .fi
6417 #. type: Plain text
6418 #: build/C/man2/perfmonctl.2:190
6419 msgid "Reset PMC registers to default values."
6420 msgstr ""
6421
6422 #. type: Plain text
6423 #: build/C/man2/perfmonctl.2:196
6424 #, fuzzy
6425 #| msgid ""
6426 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6427 #| "I<errno> is set to indicate the error."
6428 msgid ""
6429 "B<performctl>()  returns zero when the operation is successful.  On error, "
6430 "-1 is returned and I<errno> is set to indicate the cause of the error."
6431 msgstr ""
6432 "成功すると、 B<kexec_load> は 0 を返す。\n"
6433 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6434
6435 #. type: Plain text
6436 #: build/C/man2/perfmonctl.2:199
6437 #, fuzzy
6438 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6439 msgid "B<perfmonctl>()  is available since Linux 2.4."
6440 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6441
6442 #. type: Plain text
6443 #: build/C/man2/perfmonctl.2:202
6444 msgid ""
6445 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6446 "architecture."
6447 msgstr ""
6448
6449 #. type: Plain text
6450 #: build/C/man2/perfmonctl.2:207
6451 msgid "B<gprof>(1)"
6452 msgstr ""
6453
6454 #. type: Plain text
6455 #: build/C/man2/perfmonctl.2:209
6456 msgid "The perfmon2 interface specification"
6457 msgstr ""
6458
6459 #. type: TH
6460 #: build/C/man2/personality.2:32
6461 #, no-wrap
6462 msgid "PERSONALITY"
6463 msgstr "PERSONALITY"
6464
6465 #. type: TH
6466 #: build/C/man2/personality.2:32
6467 #, no-wrap
6468 msgid "2003-01-01"
6469 msgstr "2003-01-01"
6470
6471 #. type: Plain text
6472 #: build/C/man2/personality.2:35
6473 msgid "personality - set the process execution domain"
6474 msgstr "personality - プロセスを実行するドメインを設定する"
6475
6476 #. type: Plain text
6477 #: build/C/man2/personality.2:37
6478 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6479 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6480
6481 #. type: Plain text
6482 #: build/C/man2/personality.2:39
6483 msgid "B<int personality(unsigned long >I<persona>B<);>"
6484 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6485
6486 #. type: Plain text
6487 #: build/C/man2/personality.2:47
6488 msgid ""
6489 "Linux supports different execution domains, or personalities, for each "
6490 "process.  Among other things, execution domains tell Linux how to map signal "
6491 "numbers into signal actions.  The execution domain system allows Linux to "
6492 "provide limited support for binaries compiled under other UNIX-like "
6493 "operating systems."
6494 msgstr ""
6495 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6496 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6497 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6498 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6499 "対する限定的なサポートを提供している。"
6500
6501 #. type: Plain text
6502 #: build/C/man2/personality.2:57
6503 msgid ""
6504 "This function will return the current B<personality>()  when I<persona> "
6505 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6506 "by I<persona> the new execution domain of the calling process."
6507 msgstr ""
6508 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6509 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6510 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6511
6512 #. type: Plain text
6513 #: build/C/man2/personality.2:64
6514 msgid ""
6515 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6516 "and I<errno> is set appropriately."
6517 msgstr ""
6518 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6519 "I<errno> が適切に設定される。"
6520
6521 #. type: Plain text
6522 #: build/C/man2/personality.2:68
6523 msgid "The kernel was unable to change the personality."
6524 msgstr "カーネルがパーソナリティを変更できなかった。"
6525
6526 #. type: Plain text
6527 #: build/C/man2/personality.2:72
6528 msgid ""
6529 "B<personality>()  is Linux-specific and should not be used in programs "
6530 "intended to be portable."
6531 msgstr ""
6532 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6533 "はない。"
6534
6535 #. type: TH
6536 #: build/C/man2/pivot_root.2:10
6537 #, no-wrap
6538 msgid "PIVOT_ROOT"
6539 msgstr "PIVOT_ROOT"
6540
6541 #. type: Plain text
6542 #: build/C/man2/pivot_root.2:13
6543 msgid "pivot_root - change the root file system"
6544 msgstr "pivot_root - root ファイルシステムを変更する"
6545
6546 #. type: Plain text
6547 #: build/C/man2/pivot_root.2:15
6548 msgid ""
6549 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6550 msgstr ""
6551 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6552
6553 #.  The
6554 #.  .B CAP_SYS_ADMIN
6555 #.  capability is required.
6556 #. type: Plain text
6557 #: build/C/man2/pivot_root.2:27
6558 msgid ""
6559 "B<pivot_root>()  moves the root file system of the calling process to the "
6560 "directory I<put_old> and makes I<new_root> the new root file system of the "
6561 "calling process."
6562 msgstr ""
6563 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6564 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6565 "ルシステムにする。"
6566
6567 #. type: Plain text
6568 #: build/C/man2/pivot_root.2:34
6569 msgid ""
6570 "The typical use of B<pivot_root>()  is during system startup, when the "
6571 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6572 "the real root file system, and eventually turns the latter into the current "
6573 "root of all relevant processes or threads."
6574 msgstr ""
6575 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6576 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6577 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6578 "レント root に変更するような場合である。"
6579
6580 #. type: Plain text
6581 #: build/C/man2/pivot_root.2:46
6582 msgid ""
6583 "B<pivot_root>()  may or may not change the current root and the current "
6584 "working directory of any processes or threads which use the old root "
6585 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6586 "root or current working directory at the old root operate correctly in "
6587 "either case.  An easy way to ensure this is to change their root and current "
6588 "working directory to I<new_root> before invoking B<pivot_root>()."
6589 msgstr ""
6590 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6591 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6592 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6593 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6594 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6595 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6596 "更しておくことである。"
6597
6598 #. type: Plain text
6599 #: build/C/man2/pivot_root.2:64
6600 msgid ""
6601 "The paragraph above is intentionally vague because the implementation of "
6602 "B<pivot_root>()  may change in the future.  At the time of writing, "
6603 "B<pivot_root>()  changes root and current working directory of each process "
6604 "or thread to I<new_root> if they point to the old root directory.  This is "
6605 "necessary in order to prevent kernel threads from keeping the old root "
6606 "directory busy with their root and current working directory, even if they "
6607 "never access the file system in any way.  In the future, there may be a "
6608 "mechanism for kernel threads to explicitly relinquish any access to the file "
6609 "system, such that this fairly intrusive mechanism can be removed from "
6610 "B<pivot_root>()."
6611 msgstr ""
6612 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6613 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6614 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6615 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6616 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6617 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6618 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6619 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6620 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6621 "除されるかもしれない。"
6622
6623 #. type: Plain text
6624 #: build/C/man2/pivot_root.2:72
6625 msgid ""
6626 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6627 "may not affect its current working directory.  It is therefore recommended "
6628 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6629 msgstr ""
6630 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6631 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6632 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6633
6634 #. type: Plain text
6635 #: build/C/man2/pivot_root.2:74
6636 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6637 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6638
6639 #. type: IP
6640 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6641 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6642 #, no-wrap
6643 msgid "-"
6644 msgstr "-"
6645
6646 #. type: Plain text
6647 #: build/C/man2/pivot_root.2:76
6648 msgid "They must be directories."
6649 msgstr "ディレクトリでなければならない。"
6650
6651 #. type: Plain text
6652 #: build/C/man2/pivot_root.2:79
6653 msgid ""
6654 "I<new_root> and I<put_old> must not be on the same file system as the "
6655 "current root."
6656 msgstr ""
6657 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6658 "ない。"
6659
6660 #. type: Plain text
6661 #: build/C/man2/pivot_root.2:83
6662 msgid ""
6663 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6664 "of I</..> to the string pointed to by I<put_old> must yield the same "
6665 "directory as I<new_root>."
6666 msgstr ""
6667 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6668 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6669 "リが得られなければならない。"
6670
6671 #. type: Plain text
6672 #: build/C/man2/pivot_root.2:85
6673 msgid "No other file system may be mounted on I<put_old>."
6674 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6675
6676 #. type: Plain text
6677 #: build/C/man2/pivot_root.2:89
6678 msgid "See also B<pivot_root>(8)  for additional usage examples."
6679 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6680
6681 #. type: Plain text
6682 #: build/C/man2/pivot_root.2:96
6683 msgid ""
6684 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6685 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6686 "point of that file system is mounted on I<put_old>."
6687 msgstr ""
6688 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6689 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6690 "テムのマウントポイントが I<put_old> にマウントされる。"
6691
6692 #. type: Plain text
6693 #: build/C/man2/pivot_root.2:101
6694 msgid ""
6695 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6696 "mounts> will show the mount point of the file system containing I<new_root> "
6697 "as root (I</>)."
6698 msgstr ""
6699 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6700 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6701 "る。"
6702
6703 #. type: Plain text
6704 #: build/C/man2/pivot_root.2:110
6705 msgid ""
6706 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6707 "B<stat>(2).  Additionally, it may return:"
6708 msgstr ""
6709 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6710 "性がある。さらに以下を返すことがある:"
6711
6712 #. type: Plain text
6713 #: build/C/man2/pivot_root.2:114
6714 msgid ""
6715 "I<new_root> or I<put_old> are on the current root file system, or a file "
6716 "system is already mounted on I<put_old>."
6717 msgstr ""
6718 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6719 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6720
6721 #. type: Plain text
6722 #: build/C/man2/pivot_root.2:117
6723 msgid "I<put_old> is not underneath I<new_root>."
6724 msgstr "I<put_old> が I<new_root> の下層にない。"
6725
6726 #. type: TP
6727 #: build/C/man2/pivot_root.2:117
6728 #, no-wrap
6729 msgid "B<ENOTDIR>"
6730 msgstr "B<ENOTDIR>"
6731
6732 #. type: Plain text
6733 #: build/C/man2/pivot_root.2:120
6734 msgid "I<new_root> or I<put_old> is not a directory."
6735 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6736
6737 #. type: Plain text
6738 #: build/C/man2/pivot_root.2:125
6739 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6740 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6741
6742 #. type: Plain text
6743 #: build/C/man2/pivot_root.2:128
6744 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6745 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6746
6747 #. type: Plain text
6748 #: build/C/man2/pivot_root.2:131
6749 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6750 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6751
6752 #. type: Plain text
6753 #: build/C/man2/pivot_root.2:138
6754 msgid ""
6755 "B<pivot_root>()  should not have to change root and current working "
6756 "directory of all other processes in the system."
6757 msgstr ""
6758 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6759 "ディレクトリとを変更しなくてもよいはずである。"
6760
6761 #. type: Plain text
6762 #: build/C/man2/pivot_root.2:143
6763 msgid ""
6764 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6765 "insanity."
6766 msgstr ""
6767 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6768 "からない状態になってしまうだろう"
6769
6770 #. type: Plain text
6771 #: build/C/man2/pivot_root.2:149
6772 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6773 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6774
6775 #. type: TH
6776 #: build/C/man2/process_vm_readv.2:29
6777 #, no-wrap
6778 msgid "PROCESS_VM_READV"
6779 msgstr ""
6780
6781 #. type: TH
6782 #: build/C/man2/process_vm_readv.2:29
6783 #, no-wrap
6784 msgid "2012-04-25"
6785 msgstr "2012-04-25"
6786
6787 #. type: Plain text
6788 #: build/C/man2/process_vm_readv.2:32
6789 msgid ""
6790 "process_vm_readv, process_vm_writev - transfer data between process address "
6791 "spaces"
6792 msgstr ""
6793
6794 #. type: Plain text
6795 #: build/C/man2/process_vm_readv.2:35
6796 #, no-wrap
6797 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6798 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6799
6800 #. type: Plain text
6801 #: build/C/man2/process_vm_readv.2:42
6802 #, no-wrap
6803 msgid ""
6804 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6805 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6806 "B<                         unsigned long >I<liovcnt>B<,>\n"
6807 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6808 "B<                         unsigned long >I<riovcnt>B<,>\n"
6809 "B<                         unsigned long >I<flags>B<);>\n"
6810 msgstr ""
6811
6812 #. type: Plain text
6813 #: build/C/man2/process_vm_readv.2:49
6814 #, no-wrap
6815 msgid ""
6816 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6817 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6818 "B<                          unsigned long >I<liovcnt>B<,>\n"
6819 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6820 "B<                          unsigned long >I<riovcnt>B<,>\n"
6821 "B<                          unsigned long >I<flags>B<);>\n"
6822 msgstr ""
6823
6824 #. type: Plain text
6825 #: build/C/man2/process_vm_readv.2:57
6826 msgid ""
6827 "These system calls transfer data between the address space of the calling "
6828 "process (\"the local process\") and the process identified by I<pid> (\"the "
6829 "remote process\").  The data moves directly between the address spaces of "
6830 "the two processes, without passing through kernel space."
6831 msgstr ""
6832
6833 #. type: Plain text
6834 #: build/C/man2/process_vm_readv.2:82
6835 msgid ""
6836 "The B<process_vm_readv>()  system call transfers data from the remote "
6837 "process to the local process.  The data to be transferred is identified by "
6838 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6839 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6840 "the number of elements in I<remote_iov>.  The data is transferred to the "
6841 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6842 "pointer to an array describing address ranges in the calling process, and "
6843 "I<liovcnt> specifies the number of elements in I<local_iov>."
6844 msgstr ""
6845
6846 #. type: Plain text
6847 #: build/C/man2/process_vm_readv.2:96
6848 msgid ""
6849 "The B<process_vm_writev>()  system call is the converse of "
6850 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6851 "remote process.  Other than the direction of the transfer, the arguments "
6852 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6853 "meaning as for B<process_vm_readv>()."
6854 msgstr ""
6855
6856 #. type: Plain text
6857 #: build/C/man2/process_vm_readv.2:106
6858 msgid ""
6859 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6860 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6861 msgstr ""
6862 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6863 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6864 "されている:"
6865
6866 #. type: Plain text
6867 #: build/C/man2/process_vm_readv.2:113
6868 #, no-wrap
6869 msgid ""
6870 "struct iovec {\n"
6871 "    void  *iov_base;    /* Starting address */\n"
6872 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6873 "};\n"
6874 msgstr ""
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
6880 #. type: Plain text
6881 #: build/C/man2/process_vm_readv.2:129
6882 msgid ""
6883 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6884 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6885 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6886 "to I<remote_iov[1]>, and so on."
6887 msgstr ""
6888 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6889 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6890 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6891 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6892 "以降も同様である。"
6893
6894 #. type: Plain text
6895 #: build/C/man2/process_vm_readv.2:140
6896 msgid ""
6897 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6898 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6899 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6900 msgstr ""
6901
6902 #. type: Plain text
6903 #: build/C/man2/process_vm_readv.2:148
6904 msgid ""
6905 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6906 "have to be the same.  Thus, it is possible to split a single local buffer "
6907 "into multiple remote buffers, or vice versa."
6908 msgstr ""
6909
6910 #. type: Plain text
6911 #: build/C/man2/process_vm_readv.2:152
6912 msgid "The I<flags> argument is currently unused and must be set to 0."
6913 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6914
6915 #.  In time, glibc might provide a wrapper that works around this limit,
6916 #.  as is done for readv()/writev()
6917 #. type: Plain text
6918 #: build/C/man2/process_vm_readv.2:165
6919 msgid ""
6920 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6921 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6922 "via the call I<sysconf(_SC_IOV_MAX)>)."
6923 msgstr ""
6924
6925 #. type: Plain text
6926 #: build/C/man2/process_vm_readv.2:175
6927 msgid ""
6928 "The count arguments and I<local_iov> are checked before doing any "
6929 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6930 "addresses refer to regions that are inaccessible to the local process, none "
6931 "of the vectors will be processed and an error will be returned immediately."
6932 msgstr ""
6933
6934 #. type: Plain text
6935 #: build/C/man2/process_vm_readv.2:195
6936 msgid ""
6937 "Note, however, that these system calls do not check the memory regions in "
6938 "the remote process until just before doing the read/write.  Consequently, a "
6939 "partial read/write (see RETURN VALUE)  may result if one of the "
6940 "I<remote_iov> elements points to an invalid memory region in the remote "
6941 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6942 "this in mind when attempting to read data of unknown length (such as C "
6943 "strings that are null-terminated) from a remote process, by avoiding "
6944 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6945 "(Instead, split the remote read into two I<remote_iov> elements and have "
6946 "them merge back into a single write I<local_iov> entry.  The first read "
6947 "entry goes up to the page boundary, while the second starts on the next page "
6948 "boundary.)"
6949 msgstr ""
6950
6951 #. type: Plain text
6952 #: build/C/man2/process_vm_readv.2:209
6953 msgid ""
6954 "In order to read from or write to another process, either the caller must "
6955 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6956 "ID, and saved set-user-ID of the remote process must match the real user ID "
6957 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6958 "group-ID of the remote process must match the real group ID of the caller.  "
6959 "(The permission required is exactly the same as that required to perform a "
6960 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6961 msgstr ""
6962
6963 #. type: Plain text
6964 #: build/C/man2/process_vm_readv.2:225
6965 msgid ""
6966 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6967 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6968 "value may be less than the total number of requested bytes, if a partial "
6969 "read/write occurred.  (Partial transfers apply at the granularity of "
6970 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6971 "splits a single I<iovec> element.)  The caller should check the return value "
6972 "to determine whether a partial read/write occurred."
6973 msgstr ""
6974
6975 #. type: Plain text
6976 #: build/C/man2/process_vm_readv.2:229
6977 msgid "On error, -1 is returned and I<errno> is set appropriately."
6978 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6979
6980 #. type: Plain text
6981 #: build/C/man2/process_vm_readv.2:241
6982 msgid ""
6983 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6984 "overflows a I<ssize_t> value."
6985 msgstr ""
6986
6987 #. type: Plain text
6988 #: build/C/man2/process_vm_readv.2:245
6989 msgid "I<flags> is not 0."
6990 msgstr "I<flags> が 0 でない。"
6991
6992 #. type: Plain text
6993 #: build/C/man2/process_vm_readv.2:251
6994 msgid "I<liovcnt> or I<riovcnt> is too large."
6995 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6996
6997 #. type: Plain text
6998 #: build/C/man2/process_vm_readv.2:256
6999 msgid ""
7000 "The memory described by I<local_iov> is outside the caller's accessible "
7001 "address space."
7002 msgstr ""
7003 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
7004 "アドレス空間の外にある。"
7005
7006 #. type: Plain text
7007 #: build/C/man2/process_vm_readv.2:262
7008 msgid ""
7009 "The memory described by I<remote_iov> is outside the accessible address "
7010 "space of the process I<pid>."
7011 msgstr ""
7012
7013 #. type: Plain text
7014 #: build/C/man2/process_vm_readv.2:267
7015 msgid ""
7016 "Could not allocate memory for internal copies of the I<iovec> structures."
7017 msgstr ""
7018
7019 #. type: Plain text
7020 #: build/C/man2/process_vm_readv.2:271
7021 msgid ""
7022 "The caller does not have permission to access the address space of the "
7023 "process I<pid>."
7024 msgstr ""
7025 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
7026 "持っていない。"
7027
7028 #. type: Plain text
7029 #: build/C/man2/process_vm_readv.2:276
7030 msgid "No process with ID I<pid> exists."
7031 msgstr "ID が I<pid> のプロセスが存在しない。"
7032
7033 #. type: Plain text
7034 #: build/C/man2/process_vm_readv.2:279
7035 msgid ""
7036 "These system calls were added in Linux 3.2.  Support is provided in glibc "
7037 "since version 2.15."
7038 msgstr ""
7039 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
7040 "サポートは glibc バージョン 2.15 以降で提供されている。"
7041
7042 #. type: Plain text
7043 #: build/C/man2/process_vm_readv.2:281
7044 msgid "These system calls are nonstandard Linux extensions."
7045 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
7046
7047 #. type: Plain text
7048 #: build/C/man2/process_vm_readv.2:287
7049 msgid ""
7050 "The data transfers performed by B<process_vm_readv>()  and "
7051 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
7052 msgstr ""
7053
7054 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
7055 #.  See also some benchmarks at http://lwn.net/Articles/405284/
7056 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
7057 #. type: Plain text
7058 #: build/C/man2/process_vm_readv.2:295
7059 msgid ""
7060 "These system calls were designed to permit fast message passing by allowing "
7061 "messages to be exchanged with a single copy operation (rather than the "
7062 "double copy that would be required when using, for example, shared memory or "
7063 "pipes)."
7064 msgstr ""
7065
7066 #. type: Plain text
7067 #: build/C/man2/process_vm_readv.2:303
7068 msgid ""
7069 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
7070 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
7071 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
7072 msgstr ""
7073
7074 #. type: Plain text
7075 #: build/C/man2/process_vm_readv.2:306
7076 #, no-wrap
7077 msgid "#include E<lt>sys/uio.hE<gt>\n"
7078 msgstr "#include E<lt>sys/uio.hE<gt>\n"
7079
7080 #. type: Plain text
7081 #: build/C/man2/process_vm_readv.2:316
7082 #, no-wrap
7083 msgid ""
7084 "int\n"
7085 "main(void)\n"
7086 "{\n"
7087 "    struct iovec local[2];\n"
7088 "    struct iovec remote[1];\n"
7089 "    char buf1[10];\n"
7090 "    char buf2[10];\n"
7091 "    ssize_t nread;\n"
7092 "    pid_t pid = 10;             /* PID of remote process */\n"
7093 msgstr ""
7094 "int\n"
7095 "main(void)\n"
7096 "{\n"
7097 "    struct iovec local[2];\n"
7098 "    struct iovec remote[1];\n"
7099 "    char buf1[10];\n"
7100 "    char buf2[10];\n"
7101 "    ssize_t nread;\n"
7102 "    pid_t pid = 10;             /* PID of remote process */\n"
7103
7104 #. type: Plain text
7105 #: build/C/man2/process_vm_readv.2:323
7106 #, no-wrap
7107 msgid ""
7108 "    local[0].iov_base = buf1;\n"
7109 "    local[0].iov_len = 10;\n"
7110 "    local[1].iov_base = buf2;\n"
7111 "    local[1].iov_len = 10;\n"
7112 "    remote[0].iov_base = (void *) 0x10000;\n"
7113 "    remote[1].iov_len = 20;\n"
7114 msgstr ""
7115 "    local[0].iov_base = buf1;\n"
7116 "    local[0].iov_len = 10;\n"
7117 "    local[1].iov_base = buf2;\n"
7118 "    local[1].iov_len = 10;\n"
7119 "    remote[0].iov_base = (void *) 0x10000;\n"
7120 "    remote[1].iov_len = 20;\n"
7121
7122 #. type: Plain text
7123 #: build/C/man2/process_vm_readv.2:330
7124 #, no-wrap
7125 msgid ""
7126 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7127 "    if (nread != 20)\n"
7128 "        return 1;\n"
7129 "    else\n"
7130 "        return 0;\n"
7131 "}\n"
7132 msgstr ""
7133 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7134 "    if (nread != 20)\n"
7135 "        return 1;\n"
7136 "    else\n"
7137 "        return 0;\n"
7138 "}\n"
7139
7140 #. type: Plain text
7141 #: build/C/man2/process_vm_readv.2:334
7142 msgid "B<readv>(2), B<writev>(2)"
7143 msgstr "B<readv>(2), B<writev>(2)"
7144
7145 #. type: TH
7146 #: build/C/man2/ptrace.2:44
7147 #, no-wrap
7148 msgid "PTRACE"
7149 msgstr "PTRACE"
7150
7151 #. type: TH
7152 #: build/C/man2/ptrace.2:44
7153 #, fuzzy, no-wrap
7154 #| msgid "2013-07-02"
7155 msgid "2013-07-11"
7156 msgstr "2013-07-02"
7157
7158 #. type: Plain text
7159 #: build/C/man2/ptrace.2:47
7160 msgid "ptrace - process trace"
7161 msgstr "ptrace - プロセスのトレース"
7162
7163 #. type: Plain text
7164 #: build/C/man2/ptrace.2:50
7165 #, no-wrap
7166 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7167 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7168
7169 #. type: Plain text
7170 #: build/C/man2/ptrace.2:53
7171 #, no-wrap
7172 msgid ""
7173 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7174 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7175 msgstr ""
7176 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7177 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7178
7179 #. type: Plain text
7180 #: build/C/man2/ptrace.2:62
7181 #, fuzzy
7182 #| msgid ""
7183 #| "The B<ptrace>()  system call provides a means by which a parent process "
7184 #| "may observe and control the execution of another process, and examine and "
7185 #| "change its core image and registers.  It is primarily used to implement "
7186 #| "breakpoint debugging and system call tracing."
7187 msgid ""
7188 "The B<ptrace>()  system call provides a means by which one process (the "
7189 "\"tracer\")  may observe and control the execution of another process (the "
7190 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
7191 "is primarily used to implement breakpoint debugging and system call tracing."
7192 msgstr ""
7193 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
7194 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
7195 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
7196 "コールのトレースを 実装するのに用いられる。"
7197
7198 #. type: Plain text
7199 #: build/C/man2/ptrace.2:73
7200 msgid ""
7201 "A tracee first needs to be attached to the tracer.  Attachment and "
7202 "subsequent commands are per thread: in a multithreaded process, every thread "
7203 "can be individually attached to a (potentially different) tracer, or left "
7204 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
7205 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
7206 "commands are always sent to a specific tracee using a call of the form"
7207 msgstr ""
7208
7209 #. type: Plain text
7210 #: build/C/man2/ptrace.2:75
7211 #, no-wrap
7212 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
7213 msgstr ""
7214
7215 #. type: Plain text
7216 #: build/C/man2/ptrace.2:79
7217 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
7218 msgstr ""
7219
7220 #. type: Plain text
7221 #: build/C/man2/ptrace.2:85
7222 msgid ""
7223 "(Note that in this page, a \"multithreaded process\" means a thread group "
7224 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
7225 msgstr ""
7226
7227 #. type: Plain text
7228 #: build/C/man2/ptrace.2:96
7229 #, fuzzy
7230 #| msgid ""
7231 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
7232 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
7233 #| "(3).  Alternatively, the parent may commence trace of an existing process "
7234 #| "using B<PTRACE_ATTACH>."
7235 msgid ""
7236 "A process 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<execve>"
7238 "(2).  Alternatively, one process may commence tracing another process using "
7239 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
7240 msgstr ""
7241 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
7242 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
7243 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
7244 "を使用し、トレースを開始する。"
7245
7246 #. type: Plain text
7247 #: build/C/man2/ptrace.2:113
7248 #, fuzzy
7249 #| msgid ""
7250 #| "While being traced, the child will stop each time a signal is delivered, "
7251 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
7252 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
7253 #| "(2)  and may inspect and modify the child process while it is stopped.  "
7254 #| "The parent then causes the child to continue, optionally ignoring the "
7255 #| "delivered signal (or even delivering a different signal instead)."
7256 msgid ""
7257 "While being traced, the tracee will stop each time a signal is delivered, "
7258 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
7259 "its usual effect.)  The tracer will be notified at its next call to "
7260 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
7261 "return a I<status> value containing information that indicates the cause of "
7262 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
7263 "various ptrace requests to inspect and modify the tracee.  The tracer then "
7264 "causes the tracee to continue, optionally ignoring the delivered signal (or "
7265 "even delivering a different signal instead)."
7266 msgstr ""
7267 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7268 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7269 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7270 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7271 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7272 "シグナルを 配送することもできる) 。"
7273
7274 #. type: Plain text
7275 #: build/C/man2/ptrace.2:123
7276 msgid ""
7277 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7278 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7279 "signal, giving the parent a chance to gain control before the new program "
7280 "begins execution."
7281 msgstr ""
7282
7283 #. type: Plain text
7284 #: build/C/man2/ptrace.2:127
7285 #, fuzzy
7286 #| msgid ""
7287 #| "When the parent is finished tracing, it can terminate the child with "
7288 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7289 #| "mode via B<PTRACE_DETACH>."
7290 msgid ""
7291 "When the tracer is finished tracing, it can cause the tracee to continue "
7292 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7293 msgstr ""
7294 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7295 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7296 "ドにして、 実行を継続させることもできる。"
7297
7298 #. type: Plain text
7299 #: build/C/man2/ptrace.2:131
7300 msgid "The value of I<request> determines the action to be performed:"
7301 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7302
7303 #. type: TP
7304 #: build/C/man2/ptrace.2:131
7305 #, no-wrap
7306 msgid "B<PTRACE_TRACEME>"
7307 msgstr "B<PTRACE_TRACEME>"
7308
7309 #. type: Plain text
7310 #: build/C/man2/ptrace.2:141
7311 msgid ""
7312 "Indicate that this process is to be traced by its parent.  A process "
7313 "probably shouldn't make this request if its parent isn't expecting to trace "
7314 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7315 msgstr ""
7316 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
7317 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
7318 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
7319
7320 #. type: Plain text
7321 #: build/C/man2/ptrace.2:156
7322 #, fuzzy
7323 #| msgid ""
7324 #| "The above request is used only by the child process; the rest are used "
7325 #| "only by the parent.  In the following requests, I<pid> specifies the "
7326 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7327 #| "the child process must be stopped."
7328 msgid ""
7329 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7330 "requests are used only by the tracer.  In the following requests, I<pid> "
7331 "specifies the thread ID of the tracee to be acted on.  For requests other "
7332 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7333 "B<PTRACE_KILL>, the tracee must be stopped."
7334 msgstr ""
7335 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7336 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7337 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7338 "らない。"
7339
7340 #. type: TP
7341 #: build/C/man2/ptrace.2:156
7342 #, no-wrap
7343 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7344 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7345
7346 #. type: Plain text
7347 #: build/C/man2/ptrace.2:167
7348 #, fuzzy
7349 #| msgid ""
7350 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7351 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7352 #| "separate text and data address spaces, so the two requests are currently "
7353 #| "equivalent.  (The argument I<data> is ignored.)"
7354 msgid ""
7355 "Read a word at the address I<addr> in the tracee's memory, returning the "
7356 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7357 "text and data address spaces, so these two requests are currently "
7358 "equivalent.  (I<data> is ignored.)"
7359 msgstr ""
7360 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7361 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7362 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7363 "ものである。 (引き数 I<data> は無視される。)"
7364
7365 #. type: TP
7366 #: build/C/man2/ptrace.2:167
7367 #, no-wrap
7368 msgid "B<PTRACE_PEEKUSER>"
7369 msgstr "B<PTRACE_PEEKUSER>"
7370
7371 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7372 #.  and that is the name that seems common on other systems.
7373 #. type: Plain text
7374 #: build/C/man2/ptrace.2:185
7375 #, fuzzy
7376 #| msgid ""
7377 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7378 #| "registers and other information about the process (see I<E<lt>sys/user."
7379 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7380 #| "Typically the offset must be word-aligned, though this might vary by "
7381 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7382 msgid ""
7383 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7384 "registers and other information about the process (see I<E<lt>sys/user."
7385 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7386 "Typically, the offset must be word-aligned, though this might vary by "
7387 "architecture.  See NOTES.  (I<data> is ignored.)"
7388 msgstr ""
7389 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7390 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7391 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7392 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7393 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7394 "される。 )"
7395
7396 #. type: TP
7397 #: build/C/man2/ptrace.2:185
7398 #, no-wrap
7399 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7400 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7401
7402 #. type: Plain text
7403 #: build/C/man2/ptrace.2:197
7404 #, fuzzy
7405 #| msgid ""
7406 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7407 #| "above, the two requests are currently equivalent."
7408 msgid ""
7409 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7410 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7411 "equivalent."
7412 msgstr ""
7413 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7414 "に、現在のところ二つの 要求は同じものである。"
7415
7416 #. type: TP
7417 #: build/C/man2/ptrace.2:197
7418 #, no-wrap
7419 msgid "B<PTRACE_POKEUSER>"
7420 msgstr "B<PTRACE_POKEUSER>"
7421
7422 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7423 #.  and that is the name that seems common on other systems.
7424 #.  FIXME In the preceding sentence, which modifications are disallowed,
7425 #.  and when they are disallowed, how does user space discover that fact?
7426 #. type: Plain text
7427 #: build/C/man2/ptrace.2:213
7428 #, fuzzy
7429 #| msgid ""
7430 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7431 #| "above, the offset must typically be word-aligned.  In order to maintain "
7432 #| "the integrity of the kernel, some modifications to the USER area are "
7433 #| "disallowed."
7434 msgid ""
7435 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7436 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7437 "maintain the integrity of the kernel, some modifications to the USER area "
7438 "are disallowed."
7439 msgstr ""
7440 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7441 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7442 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7443 "されている。"
7444
7445 #. type: TP
7446 #: build/C/man2/ptrace.2:213
7447 #, no-wrap
7448 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7449 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7450
7451 #. type: Plain text
7452 #: build/C/man2/ptrace.2:236
7453 #, fuzzy
7454 #| msgid ""
7455 #| "Copies the child's general purpose or floating-point registers, "
7456 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7457 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7458 msgid ""
7459 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7460 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7461 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7462 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7463 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7464 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7465 "architectures."
7466 msgstr ""
7467 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7468 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7469 "すること。(I<addr> は無視される。)"
7470
7471 #. type: TP
7472 #: build/C/man2/ptrace.2:236
7473 #, fuzzy, no-wrap
7474 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7475 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7476 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7477
7478 #. type: Plain text
7479 #: build/C/man2/ptrace.2:257
7480 msgid ""
7481 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7482 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7483 "numerical value 1)  usually results in reading of general-purpose "
7484 "registers.  If the CPU has, for example, floating-point and/or vector "
7485 "registers, they can be retrieved by setting I<addr> to the corresponding "
7486 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7487 "the destination buffer's location and length.  On return, the kernel "
7488 "modifies B<iov.len> to indicate the actual number of bytes returned."
7489 msgstr ""
7490
7491 #. type: TP
7492 #: build/C/man2/ptrace.2:257
7493 #, no-wrap
7494 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7495 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7496
7497 #.  FIXME In the preceding sentence, which modifications are disallowed,
7498 #.  and when they are disallowed, how does user space discover that fact?
7499 #. type: Plain text
7500 #: build/C/man2/ptrace.2:282
7501 #, fuzzy
7502 #| msgid ""
7503 #| "Copies the child's general purpose or floating-point registers, "
7504 #| "respectively, from location I<data> in the parent.  As for "
7505 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7506 #| "disallowed.  (I<addr> is ignored.)"
7507 msgid ""
7508 "Modify the tracee's general-purpose or floating-point registers, "
7509 "respectively, from the address I<data> in the tracer.  As for "
7510 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7511 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7512 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7513 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7514 "B<PTRACE_SETFPREGS> are not present on all architectures."
7515 msgstr ""
7516 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7517 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7518 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7519
7520 #. type: TP
7521 #: build/C/man2/ptrace.2:282
7522 #, fuzzy, no-wrap
7523 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7524 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7525 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7526
7527 #. type: Plain text
7528 #: build/C/man2/ptrace.2:291
7529 msgid ""
7530 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7531 "analogous to B<PTRACE_GETREGSET>."
7532 msgstr ""
7533
7534 #. type: TP
7535 #: build/C/man2/ptrace.2:291
7536 #, no-wrap
7537 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7538 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7539
7540 #. type: Plain text
7541 #: build/C/man2/ptrace.2:303
7542 #, fuzzy
7543 #| msgid ""
7544 #| "Retrieve information about the signal that caused the stop.  Copies a "
7545 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7546 #| "I<data> in the parent.  (I<addr> is ignored.)"
7547 msgid ""
7548 "Retrieve information about the signal that caused the stop.  Copy a "
7549 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7550 "I<data> in the tracer.  (I<addr> is ignored.)"
7551 msgstr ""
7552 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7553 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7554 "る。 (I<addr> は無視される。)"
7555
7556 #. type: TP
7557 #: build/C/man2/ptrace.2:303
7558 #, no-wrap
7559 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7560 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7561
7562 #. type: Plain text
7563 #: build/C/man2/ptrace.2:319
7564 #, fuzzy
7565 #| msgid ""
7566 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7567 #| "I<data> in the parent to the child.  This will only affect signals that "
7568 #| "would normally be delivered to the child and were caught by the tracer.  "
7569 #| "It may be difficult to tell these normal signals from synthetic signals "
7570 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7571 msgid ""
7572 "Set signal information: copy a I<siginfo_t> structure from the address "
7573 "I<data> in the tracer to the tracee.  This will affect only signals that "
7574 "would normally be delivered to the tracee and were caught by the tracer.  It "
7575 "may be difficult to tell these normal signals from synthetic signals "
7576 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7577 msgstr ""
7578 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7579 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7580 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7581 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7582 "かもしれない。 (I<addr> は無視される。)"
7583
7584 #. type: TP
7585 #: build/C/man2/ptrace.2:319
7586 #, no-wrap
7587 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7588 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7589
7590 #. type: Plain text
7591 #: build/C/man2/ptrace.2:328
7592 #, fuzzy
7593 #| msgid ""
7594 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7595 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7596 #| "the following flags:"
7597 msgid ""
7598 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7599 "interpreted as a bit mask of options, which are specified by the following "
7600 "flags:"
7601 msgstr ""
7602 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7603 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7604 "下のフラグを指定できる:"
7605
7606 #. type: TP
7607 #: build/C/man2/ptrace.2:329
7608 #, fuzzy, no-wrap
7609 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7610 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7611 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7612
7613 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7614 #. type: Plain text
7615 #: build/C/man2/ptrace.2:337
7616 msgid ""
7617 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7618 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7619 "ensure that tracees can never escape the tracer's control."
7620 msgstr ""
7621
7622 #. type: TP
7623 #: build/C/man2/ptrace.2:337
7624 #, no-wrap
7625 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7626 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7627
7628 #. type: Plain text
7629 #: build/C/man2/ptrace.2:354
7630 #, fuzzy
7631 #| msgid ""
7632 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7633 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7634 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7635 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7636 msgid ""
7637 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7638 "newly cloned process, which will start with a B<SIGSTOP>, or "
7639 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7640 "tracer will return a I<status> value such that"
7641 msgstr ""
7642 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7643 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7644 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7645 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7646
7647 #. type: Plain text
7648 #: build/C/man2/ptrace.2:357
7649 #, no-wrap
7650 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7651 msgstr ""
7652
7653 #. type: Plain text
7654 #: build/C/man2/ptrace.2:361 build/C/man2/ptrace.2:447
7655 #: build/C/man2/ptrace.2:480
7656 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7657 msgstr ""
7658
7659 #. type: Plain text
7660 #: build/C/man2/ptrace.2:382
7661 #, fuzzy
7662 #| msgid ""
7663 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7664 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7665 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7666 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7667 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7668 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7669 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7670 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7671 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7672 msgid ""
7673 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7674 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7675 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7676 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7677 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7678 msgstr ""
7679 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7680 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7681 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7682 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7683 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7684 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7685 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7686 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7687 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7688
7689 #. type: TP
7690 #: build/C/man2/ptrace.2:382
7691 #, no-wrap
7692 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7693 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7694
7695 #. type: Plain text
7696 #: build/C/man2/ptrace.2:391
7697 msgid ""
7698 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7699 "will return a I<status> value such that"
7700 msgstr ""
7701
7702 #. type: Plain text
7703 #: build/C/man2/ptrace.2:394
7704 #, no-wrap
7705 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7706 msgstr ""
7707
7708 #. type: Plain text
7709 #: build/C/man2/ptrace.2:400
7710 msgid ""
7711 "If the execing thread is not a thread group leader, the thread ID is reset "
7712 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7713 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7714 msgstr ""
7715
7716 #. type: TP
7717 #: build/C/man2/ptrace.2:400
7718 #, no-wrap
7719 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7720 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7721
7722 #. type: Plain text
7723 #: build/C/man2/ptrace.2:408
7724 msgid ""
7725 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7726 "I<status> value such that"
7727 msgstr ""
7728
7729 #. type: Plain text
7730 #: build/C/man2/ptrace.2:411
7731 #, no-wrap
7732 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7733 msgstr ""
7734
7735 #. type: Plain text
7736 #: build/C/man2/ptrace.2:415
7737 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7738 msgstr ""
7739
7740 #. type: Plain text
7741 #: build/C/man2/ptrace.2:423
7742 #, fuzzy
7743 #| msgid ""
7744 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7745 #| "8>.  The child's exit status can be retrieved with "
7746 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7747 #| "when registers are still available, allowing the tracer to see where the "
7748 #| "exit occurred, whereas the normal exit notification is done after the "
7749 #| "process is finished exiting.  Even though context is available, the "
7750 #| "tracer cannot prevent the exit from happening at this point."
7751 msgid ""
7752 "The tracee is stopped early during process exit, when registers are still "
7753 "available, allowing the tracer to see where the exit occurred, whereas the "
7754 "normal exit notification is done after the process is finished exiting.  "
7755 "Even though context is available, the tracer cannot prevent the exit from "
7756 "happening at this point."
7757 msgstr ""
7758 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7759 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7760 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7761 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7762 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7763 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7764 "できない。"
7765
7766 #. type: TP
7767 #: build/C/man2/ptrace.2:423
7768 #, no-wrap
7769 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7770 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7771
7772 #. type: Plain text
7773 #: build/C/man2/ptrace.2:440
7774 #, fuzzy
7775 #| msgid ""
7776 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7777 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7778 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7779 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7780 msgid ""
7781 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7782 "newly forked process, which will start with a B<SIGSTOP>, or "
7783 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7784 "tracer will return a I<status> value such that"
7785 msgstr ""
7786 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7787 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7788 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7789 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7790
7791 #. type: Plain text
7792 #: build/C/man2/ptrace.2:443
7793 #, no-wrap
7794 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7795 msgstr ""
7796
7797 #. type: TP
7798 #: build/C/man2/ptrace.2:447
7799 #, no-wrap
7800 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7801 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7802
7803 #. type: Plain text
7804 #: build/C/man2/ptrace.2:456
7805 #, fuzzy
7806 #| msgid ""
7807 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7808 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7809 #| "the difference between normal traps and those caused by a syscall.  "
7810 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7811 msgid ""
7812 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7813 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7814 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7815 "may not work on all architectures.)"
7816 msgstr ""
7817 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7818 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7819 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7820 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7821
7822 #. type: TP
7823 #: build/C/man2/ptrace.2:456
7824 #, no-wrap
7825 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7826 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7827
7828 #. type: Plain text
7829 #: build/C/man2/ptrace.2:473
7830 #, fuzzy
7831 #| msgid ""
7832 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7833 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7834 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7835 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7836 msgid ""
7837 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7838 "newly vforked process, which will start with a B<SIGSTOP>, or "
7839 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7840 "tracer will return a I<status> value such that"
7841 msgstr ""
7842 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7843 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7844 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7845 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7846
7847 #. type: Plain text
7848 #: build/C/man2/ptrace.2:476
7849 #, no-wrap
7850 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7851 msgstr ""
7852
7853 #. type: TP
7854 #: build/C/man2/ptrace.2:480
7855 #, no-wrap
7856 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7857 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7858
7859 #. type: Plain text
7860 #: build/C/man2/ptrace.2:489
7861 msgid ""
7862 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7863 "by the tracer will return a I<status> value such that"
7864 msgstr ""
7865
7866 #. type: Plain text
7867 #: build/C/man2/ptrace.2:492
7868 #, no-wrap
7869 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7870 msgstr ""
7871
7872 #. type: Plain text
7873 #: build/C/man2/ptrace.2:496
7874 msgid ""
7875 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7876 "B<PTRACE_GETEVENTMSG>."
7877 msgstr ""
7878
7879 #. type: TP
7880 #: build/C/man2/ptrace.2:497
7881 #, no-wrap
7882 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7883 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7884
7885 #. type: Plain text
7886 #: build/C/man2/ptrace.2:517
7887 #, fuzzy
7888 #| msgid ""
7889 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7890 #| "just happened, placing it in the location I<data> in the parent.  For "
7891 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7892 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7893 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7894 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7895 #| "is ignored.)"
7896 msgid ""
7897 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7898 "just happened, placing it at the address I<data> in the tracer.  For "
7899 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7900 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7901 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7902 "ignored.)"
7903 msgstr ""
7904 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7905 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7906 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7907 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7908 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7909 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7910
7911 #. type: TP
7912 #: build/C/man2/ptrace.2:517
7913 #, no-wrap
7914 msgid "B<PTRACE_CONT>"
7915 msgstr "B<PTRACE_CONT>"
7916
7917 #. type: Plain text
7918 #: build/C/man2/ptrace.2:529
7919 #, fuzzy
7920 #| msgid ""
7921 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7922 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7923 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7924 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7925 #| "is ignored.)"
7926 msgid ""
7927 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7928 "interpreted as the number of a signal to be delivered to the tracee; "
7929 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7930 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7931 "is ignored.)"
7932 msgstr ""
7933 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7934 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7935 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7936 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7937 "は無視される。)"
7938
7939 #. type: TP
7940 #: build/C/man2/ptrace.2:529
7941 #, no-wrap
7942 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7943 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7944
7945 #. type: Plain text
7946 #: build/C/man2/ptrace.2:553
7947 #, fuzzy
7948 #| msgid ""
7949 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7950 #| "child to be stopped at the next entry to or exit from a system call, or "
7951 #| "after execution of a single instruction, respectively.  (The child will "
7952 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7953 #| "perspective, the child will appear to have been stopped by receipt of a "
7954 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7955 #| "inspect the arguments to the system call at the first stop, then do "
7956 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7957 #| "at the second stop.  The I<data> argument is treated as for "
7958 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7959 msgid ""
7960 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7961 "to be stopped at the next entry to or exit from a system call, or after "
7962 "execution of a single instruction, respectively.  (The tracee will also, as "
7963 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7964 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7965 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7966 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7967 "inspect the return value of the system call at the second stop.  The I<data> "
7968 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7969 msgstr ""
7970 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7971 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7972 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7973 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7974 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7975 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7976 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7977 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7978 "同じ様に解釈される。 (I<addr> は無視される。)"
7979
7980 #. type: TP
7981 #: build/C/man2/ptrace.2:553
7982 #, no-wrap
7983 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7984 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7985
7986 #.  As at 3.7
7987 #. type: Plain text
7988 #: build/C/man2/ptrace.2:574
7989 #, fuzzy
7990 #| msgid ""
7991 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7992 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7993 #| "but also singlestep if not a syscall.  This call is used by programs like "
7994 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7995 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7996 #| "not supported on all architectures.)"
7997 msgid ""
7998 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7999 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
8000 "but also singlestep if not a system call.  This call is used by programs "
8001 "like User Mode Linux that want to emulate all the tracee's system calls.  "
8002 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
8003 "is ignored.  These requests are currently supported only on x86."
8004 msgstr ""
8005 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
8006 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
8007 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
8008 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
8009 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
8010 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
8011 "ポートされているわけではない。)"
8012
8013 #. type: TP
8014 #: build/C/man2/ptrace.2:574
8015 #, fuzzy, no-wrap
8016 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
8017 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
8018 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
8019
8020 #. type: Plain text
8021 #: build/C/man2/ptrace.2:585
8022 msgid ""
8023 "Restart the stopped tracee, but prevent it from executing.  The resulting "
8024 "state of the tracee is similar to a process which has been stopped by a "
8025 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
8026 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
8027 "by B<PTRACE_SEIZE>."
8028 msgstr ""
8029
8030 #. type: TP
8031 #: build/C/man2/ptrace.2:585
8032 #, no-wrap
8033 msgid "B<PTRACE_KILL>"
8034 msgstr "B<PTRACE_KILL>"
8035
8036 #. type: Plain text
8037 #: build/C/man2/ptrace.2:594
8038 #, fuzzy
8039 #| msgid ""
8040 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8041 #| "ignored.)"
8042 msgid ""
8043 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8044 "ignored.)"
8045 msgstr ""
8046 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
8047
8048 #.  [Note from Denys Vlasenko:
8049 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
8050 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
8051 #. type: Plain text
8052 #: build/C/man2/ptrace.2:613
8053 msgid ""
8054 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
8055 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
8056 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
8057 "may not work (i.e., may complete successfully but won't kill the tracee).  "
8058 "By contrast, sending a B<SIGKILL> directly has no such limitation."
8059 msgstr ""
8060
8061 #. type: TP
8062 #: build/C/man2/ptrace.2:613
8063 #, fuzzy, no-wrap
8064 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
8065 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
8066 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
8067
8068 #. type: Plain text
8069 #: build/C/man2/ptrace.2:641
8070 msgid ""
8071 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
8072 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
8073 "exit-stop is reported.  (The interrupted system call is restarted when the "
8074 "tracee is restarted.)  If the tracee was already stopped by a signal and "
8075 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
8076 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
8077 "is generated at the same time (for example, if a signal is sent to the "
8078 "tracee), this ptrace-stop happens.  If none of the above applies (for "
8079 "example, if the tracee is running in userspace), it stops with "
8080 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
8081 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
8082 msgstr ""
8083
8084 #. type: TP
8085 #: build/C/man2/ptrace.2:641
8086 #, no-wrap
8087 msgid "B<PTRACE_ATTACH>"
8088 msgstr "B<PTRACE_ATTACH>"
8089
8090 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
8091 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
8092 #.          Basically, it's not true for any Linux in practical use.
8093 #.  ; the behavior of the tracee is as if it had done a
8094 #.  .BR PTRACE_TRACEME .
8095 #.  The calling process actually becomes the parent of the tracee
8096 #.  process for most purposes (e.g., it will receive
8097 #.  notification of tracee events and appears in
8098 #.  .BR ps (1)
8099 #.  output as the tracee's parent), but a
8100 #.  .BR getppid (2)
8101 #.  by the tracee will still return the PID of the original parent.
8102 #. type: Plain text
8103 #: build/C/man2/ptrace.2:669
8104 msgid ""
8105 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8106 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
8107 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
8108 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
8109 "additional information.  (I<addr> and I<data> are ignored.)"
8110 msgstr ""
8111
8112 #. type: TP
8113 #: build/C/man2/ptrace.2:669
8114 #, fuzzy, no-wrap
8115 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
8116 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
8117 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
8118
8119 #. type: Plain text
8120 #: build/C/man2/ptrace.2:689
8121 msgid ""
8122 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8123 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
8124 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
8125 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
8126 "mask of ptrace options to activate immediately."
8127 msgstr ""
8128
8129 #. type: TP
8130 #: build/C/man2/ptrace.2:689
8131 #, no-wrap
8132 msgid "B<PTRACE_DETACH>"
8133 msgstr "B<PTRACE_DETACH>"
8134
8135 #. type: Plain text
8136 #: build/C/man2/ptrace.2:698
8137 #, fuzzy
8138 #| msgid ""
8139 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
8140 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
8141 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
8142 #| "a traced child can be detached in this way regardless of which method was "
8143 #| "used to initiate tracing.  (I<addr> is ignored.)"
8144 msgid ""
8145 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
8146 "Under Linux, a tracee can be detached in this way regardless of which method "
8147 "was used to initiate tracing.  (I<addr> is ignored.)"
8148 msgstr ""
8149 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
8150 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
8151 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
8152 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
8153 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
8154
8155 #. type: SS
8156 #: build/C/man2/ptrace.2:698
8157 #, no-wrap
8158 msgid "Death under ptrace"
8159 msgstr ""
8160
8161 #. type: Plain text
8162 #: build/C/man2/ptrace.2:707
8163 msgid ""
8164 "When a (possibly multithreaded) process receives a killing signal (one whose "
8165 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
8166 "process), all threads exit.  Tracees report their death to their tracer(s).  "
8167 "Notification of this event is delivered via B<waitpid>(2)."
8168 msgstr ""
8169
8170 #. type: Plain text
8171 #: build/C/man2/ptrace.2:716
8172 msgid ""
8173 "Note that the killing signal will first cause signal-delivery-stop (on one "
8174 "tracee only), and only after it is injected by the tracer (or after it was "
8175 "dispatched to a thread which isn't traced), will death from the signal "
8176 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
8177 "delivery-stop\" is explained below.)"
8178 msgstr ""
8179
8180 #. type: Plain text
8181 #: build/C/man2/ptrace.2:728
8182 msgid ""
8183 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
8184 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
8185 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
8186 "B<SIGKILL> always kills the process (all its threads), even if some threads "
8187 "of the process are ptraced."
8188 msgstr ""
8189
8190 #. type: Plain text
8191 #: build/C/man2/ptrace.2:733
8192 msgid ""
8193 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
8194 "Other threads are not affected."
8195 msgstr ""
8196
8197 #. type: Plain text
8198 #: build/C/man2/ptrace.2:737
8199 msgid ""
8200 "When any thread executes B<exit_group>(2), every tracee in its thread group "
8201 "reports its death to its tracer."
8202 msgstr ""
8203
8204 #. type: Plain text
8205 #: build/C/man2/ptrace.2:751
8206 msgid ""
8207 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
8208 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
8209 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
8210 "on B<execve>(2)  in a multithreaded process."
8211 msgstr ""
8212
8213 #. type: Plain text
8214 #: build/C/man2/ptrace.2:776
8215 msgid ""
8216 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
8217 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
8218 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
8219 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
8220 "exists but is not ptrace-stopped (for commands which require a stopped "
8221 "tracee), or if it is not traced by the process which issued the ptrace "
8222 "call.  The tracer needs to keep track of the stopped/running state of the "
8223 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
8224 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
8225 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
8226 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
8227 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
8228 "yet fully dead\", but already refusing ptrace requests."
8229 msgstr ""
8230
8231 #. type: Plain text
8232 #: build/C/man2/ptrace.2:790
8233 msgid ""
8234 "The tracer can't assume that the tracee I<always> ends its life by reporting "
8235 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
8236 "does not occur.  For example, if a thread other than thread group leader "
8237 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
8238 "any subsequent ptrace stops will be reported under the thread group leader's "
8239 "PID."
8240 msgstr ""
8241
8242 #. type: SS
8243 #: build/C/man2/ptrace.2:790
8244 #, no-wrap
8245 msgid "Stopped states"
8246 msgstr ""
8247
8248 #. type: Plain text
8249 #: build/C/man2/ptrace.2:812
8250 msgid ""
8251 "A tracee can be in two states: running or stopped.  For the purposes of "
8252 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
8253 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
8254 "tracee is blocked for a long time.  The state of the tracee after "
8255 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
8256 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
8257 "notifications), but it also may be considered \"stopped\" because it is not "
8258 "executing instructions (is not scheduled), and if it was in group-stop "
8259 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
8260 "received."
8261 msgstr ""
8262
8263 #. type: Plain text
8264 #: build/C/man2/ptrace.2:816
8265 msgid ""
8266 "There are many kinds of states when the tracee is stopped, and in ptrace "
8267 "discussions they are often conflated.  Therefore, it is important to use "
8268 "precise terms."
8269 msgstr ""
8270
8271 #. type: Plain text
8272 #: build/C/man2/ptrace.2:827
8273 msgid ""
8274 "In this manual page, any stopped state in which the tracee is ready to "
8275 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
8276 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
8277 "I<syscall-stop>, and so on.  These stopped states are described in detail "
8278 "below."
8279 msgstr ""
8280
8281 #. type: Plain text
8282 #: build/C/man2/ptrace.2:832
8283 msgid ""
8284 "When the running tracee enters ptrace-stop, it notifies its tracer using "
8285 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
8286 "manual page assumes that the tracer waits with:"
8287 msgstr ""
8288
8289 #. type: Plain text
8290 #: build/C/man2/ptrace.2:834
8291 #, no-wrap
8292 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8293 msgstr ""
8294
8295 #.  Denys Vlasenko:
8296 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8297 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8298 #.      rules different if user wants to use waitid? Will waitid require
8299 #.      WEXITED?
8300 #. type: Plain text
8301 #: build/C/man2/ptrace.2:846
8302 msgid ""
8303 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8304 "and I<WIFSTOPPED(status)> true."
8305 msgstr ""
8306
8307 #. type: Plain text
8308 #: build/C/man2/ptrace.2:854
8309 msgid ""
8310 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8311 "but implies their functionality."
8312 msgstr ""
8313
8314 #. type: Plain text
8315 #: build/C/man2/ptrace.2:861
8316 msgid ""
8317 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8318 "recommended: the \"continued\" state is per-process and consuming it can "
8319 "confuse the real parent of the tracee."
8320 msgstr ""
8321
8322 #. type: Plain text
8323 #: build/C/man2/ptrace.2:869
8324 msgid ""
8325 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8326 "results available yet\")  even if the tracer knows there should be a "
8327 "notification.  Example:"
8328 msgstr ""
8329
8330 #. type: Plain text
8331 #: build/C/man2/ptrace.2:878
8332 #, no-wrap
8333 msgid ""
8334 "    errno = 0;\n"
8335 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8336 "    if (errno == ESRCH) {\n"
8337 "        /* tracee is dead */\n"
8338 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8339 "        /* r can still be 0 here! */\n"
8340 "    }\n"
8341 msgstr ""
8342
8343 #. type: Plain text
8344 #: build/C/man2/ptrace.2:901
8345 msgid ""
8346 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8347 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8348 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8349 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8350 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8351 "> macro can't be used to perform this examination, because it returns the "
8352 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8353 msgstr ""
8354
8355 #. type: SS
8356 #: build/C/man2/ptrace.2:901
8357 #, no-wrap
8358 msgid "Signal-delivery-stop"
8359 msgstr ""
8360
8361 #. type: Plain text
8362 #: build/C/man2/ptrace.2:921
8363 msgid ""
8364 "When a (possibly multithreaded) process receives any signal except "
8365 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8366 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8367 "can be explicitly selected by the caller.)  If the selected thread is "
8368 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8369 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8370 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8371 "the next ptrace restart request.  This second step of signal delivery is "
8372 "called I<signal injection> in this manual page.  Note that if the signal is "
8373 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8374 "with the usual exception that B<SIGSTOP> can't be blocked."
8375 msgstr ""
8376
8377 #. type: Plain text
8378 #: build/C/man2/ptrace.2:935
8379 msgid ""
8380 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8381 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8382 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8383 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8384 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8385 "group-stop; see below."
8386 msgstr ""
8387
8388 #. type: SS
8389 #: build/C/man2/ptrace.2:935
8390 #, no-wrap
8391 msgid "Signal injection and suppression"
8392 msgstr ""
8393
8394 #. type: Plain text
8395 #: build/C/man2/ptrace.2:938
8396 msgid ""
8397 "After signal-delivery-stop is observed by the tracer, the tracer should "
8398 "restart the tracee with the call"
8399 msgstr ""
8400
8401 #. type: Plain text
8402 #: build/C/man2/ptrace.2:940
8403 #, no-wrap
8404 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8405 msgstr ""
8406
8407 #. type: Plain text
8408 #: build/C/man2/ptrace.2:953
8409 msgid ""
8410 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8411 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8412 "delivered.  This operation is called I<signal injection> in this manual "
8413 "page, to distinguish it from signal-delivery-stop."
8414 msgstr ""
8415
8416 #. type: Plain text
8417 #: build/C/man2/ptrace.2:959
8418 msgid ""
8419 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8420 "tracer can cause a different signal to be injected."
8421 msgstr ""
8422
8423 #. type: Plain text
8424 #: build/C/man2/ptrace.2:975
8425 msgid ""
8426 "Note that a suppressed signal still causes system calls to return "
8427 "prematurely.  In this case system calls will be restarted: the tracer will "
8428 "observe the tracee to reexecute the interrupted system call (or "
8429 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8430 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8431 "calls (such as B<poll>(2))  which are not restartable after signal are "
8432 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8433 "some syscalls to fail with B<EINTR> even though no observable signal is "
8434 "injected to the tracee."
8435 msgstr ""
8436
8437 #. type: Plain text
8438 #: build/C/man2/ptrace.2:986
8439 msgid ""
8440 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8441 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8442 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8443 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8444 "instead."
8445 msgstr ""
8446
8447 #. type: Plain text
8448 #: build/C/man2/ptrace.2:993
8449 msgid ""
8450 "The fact that signal injection requests may be ignored when restarting the "
8451 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8452 "confusion among ptrace users.  One typical scenario is that the tracer "
8453 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8454 "tracee with"
8455 msgstr ""
8456
8457 #. type: Plain text
8458 #: build/C/man2/ptrace.2:995
8459 #, no-wrap
8460 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8461 msgstr ""
8462
8463 #. type: Plain text
8464 #: build/C/man2/ptrace.2:1001
8465 msgid ""
8466 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8467 "the tracee continues to run."
8468 msgstr ""
8469
8470 #. type: Plain text
8471 #: build/C/man2/ptrace.2:1021
8472 msgid ""
8473 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8474 "group-stopped process.  This side effect happens before signal-delivery-"
8475 "stop.  The tracer can't suppress this side effect (it can only suppress "
8476 "signal injection, which only causes the B<SIGCONT> handler to not be "
8477 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8478 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8479 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8480 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8481 "by the tracee after it was sent."
8482 msgstr ""
8483
8484 #. type: Plain text
8485 #: build/C/man2/ptrace.2:1025
8486 msgid ""
8487 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8488 "side effect happens after signal injection, and therefore can be suppressed "
8489 "by the tracer."
8490 msgstr ""
8491
8492 #
8493 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8494 #.  there is:
8495 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8496 #.              if (signr == SIGSTOP)
8497 #.                      continue;
8498 #. type: Plain text
8499 #: build/C/man2/ptrace.2:1035
8500 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8501 msgstr ""
8502
8503 #. type: Plain text
8504 #: build/C/man2/ptrace.2:1052
8505 msgid ""
8506 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8507 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8508 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8509 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8510 "match, otherwise the result is undefined."
8511 msgstr ""
8512
8513 #. type: SS
8514 #: build/C/man2/ptrace.2:1052
8515 #, no-wrap
8516 msgid "Group-stop"
8517 msgstr ""
8518
8519 #. type: Plain text
8520 #: build/C/man2/ptrace.2:1064
8521 msgid ""
8522 "When a (possibly multithreaded) process receives a stopping signal, all "
8523 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8524 "that the stopping signal will first cause signal-delivery-stop (on one "
8525 "tracee only), and only after it is injected by the tracer (or after it was "
8526 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8527 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8528 "reports its group-stop separately to the corresponding tracer."
8529 msgstr ""
8530
8531 #. type: Plain text
8532 #: build/C/man2/ptrace.2:1073
8533 msgid ""
8534 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8535 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8536 "(status)>.  The same result is returned by some other classes of ptrace-"
8537 "stops, therefore the recommended practice is to perform the call"
8538 msgstr ""
8539
8540 #. type: Plain text
8541 #: build/C/man2/ptrace.2:1075
8542 #, no-wrap
8543 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8544 msgstr ""
8545
8546 #. type: Plain text
8547 #: build/C/man2/ptrace.2:1096
8548 msgid ""
8549 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8550 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8551 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8552 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8553 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8554 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8555 "the tracee.)"
8556 msgstr ""
8557
8558 #. type: Plain text
8559 #: build/C/man2/ptrace.2:1106
8560 msgid ""
8561 "If tracee was attached using I<PTRACE_SEIZE>, group-stop is indicated by "
8562 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
8563 "allows detection of group-stops without requiring an extra "
8564 "B<PTRACE_GETSIGINFO> call."
8565 msgstr ""
8566
8567 #. type: Plain text
8568 #: build/C/man2/ptrace.2:1115
8569 msgid ""
8570 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8571 "it restarts or kills it, the tracee will not run, and will not send "
8572 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8573 "enters into another B<waitpid>(2)  call."
8574 msgstr ""
8575
8576 #. type: Plain text
8577 #: build/C/man2/ptrace.2:1129
8578 msgid ""
8579 "The kernel behavior described in the previous paragraph causes a problem "
8580 "with transparent handling of stopping signals.  If the tracer restarts the "
8581 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8582 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8583 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8584 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8585 "signals to have no effect on the tracee."
8586 msgstr ""
8587
8588 #. type: Plain text
8589 #: build/C/man2/ptrace.2:1140
8590 msgid ""
8591 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8592 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8593 "in a way where it does not execute, but waits for a new event which it can "
8594 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8595 msgstr ""
8596
8597 #. type: SS
8598 #: build/C/man2/ptrace.2:1140
8599 #, no-wrap
8600 msgid "PTRACE_EVENT stops"
8601 msgstr ""
8602
8603 #. type: Plain text
8604 #: build/C/man2/ptrace.2:1146
8605 msgid ""
8606 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8607 "stops called B<PTRACE_EVENT> stops."
8608 msgstr ""
8609
8610 #. type: Plain text
8611 #: build/C/man2/ptrace.2:1160
8612 msgid ""
8613 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8614 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8615 "additional bit is set in the higher byte of the status word: the value "
8616 "I<statusE<gt>E<gt>8> will be"
8617 msgstr ""
8618
8619 #. type: Plain text
8620 #: build/C/man2/ptrace.2:1162
8621 #, no-wrap
8622 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8623 msgstr ""
8624
8625 #. type: Plain text
8626 #: build/C/man2/ptrace.2:1164
8627 msgid "The following events exist:"
8628 msgstr ""
8629
8630 #. type: TP
8631 #: build/C/man2/ptrace.2:1164
8632 #, no-wrap
8633 msgid "B<PTRACE_EVENT_VFORK>"
8634 msgstr "B<PTRACE_EVENT_VFORK>"
8635
8636 #. type: Plain text
8637 #: build/C/man2/ptrace.2:1177
8638 msgid ""
8639 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8640 "flag.  When the tracee is continued after this stop, it will wait for child "
8641 "to exit/exec before continuing its execution (in other words, the usual "
8642 "behavior on B<vfork>(2))."
8643 msgstr ""
8644
8645 #. type: TP
8646 #: build/C/man2/ptrace.2:1177
8647 #, no-wrap
8648 msgid "B<PTRACE_EVENT_FORK>"
8649 msgstr "B<PTRACE_EVENT_FORK>"
8650
8651 #. type: Plain text
8652 #: build/C/man2/ptrace.2:1185
8653 msgid ""
8654 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8655 "to B<SIGCHLD>."
8656 msgstr ""
8657
8658 #. type: TP
8659 #: build/C/man2/ptrace.2:1185
8660 #, no-wrap
8661 msgid "B<PTRACE_EVENT_CLONE>"
8662 msgstr "B<PTRACE_EVENT_CLONE>"
8663
8664 #. type: Plain text
8665 #: build/C/man2/ptrace.2:1189
8666 msgid "Stop before return from B<clone>(2)."
8667 msgstr ""
8668
8669 #. type: TP
8670 #: build/C/man2/ptrace.2:1189
8671 #, no-wrap
8672 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8673 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8674
8675 #. type: Plain text
8676 #: build/C/man2/ptrace.2:1199
8677 msgid ""
8678 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8679 "flag, but after the child unblocked this tracee by exiting or execing."
8680 msgstr ""
8681
8682 #. type: Plain text
8683 #: build/C/man2/ptrace.2:1205
8684 msgid ""
8685 "For all four stops described above, the stop occurs in the parent (i.e., the "
8686 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8687 "to retrieve the new thread's ID."
8688 msgstr ""
8689
8690 #. type: TP
8691 #: build/C/man2/ptrace.2:1205
8692 #, no-wrap
8693 msgid "B<PTRACE_EVENT_EXEC>"
8694 msgstr "B<PTRACE_EVENT_EXEC>"
8695
8696 #. type: Plain text
8697 #: build/C/man2/ptrace.2:1212
8698 msgid ""
8699 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8700 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8701 msgstr ""
8702
8703 #. type: TP
8704 #: build/C/man2/ptrace.2:1212
8705 #, no-wrap
8706 msgid "B<PTRACE_EVENT_EXIT>"
8707 msgstr "B<PTRACE_EVENT_EXIT>"
8708
8709 #. type: Plain text
8710 #: build/C/man2/ptrace.2:1228
8711 msgid ""
8712 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8713 "exit caused by B<execve>(2)  in a multithreaded process.  "
8714 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8715 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8716 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8717 msgstr ""
8718
8719 #. type: TP
8720 #: build/C/man2/ptrace.2:1228
8721 #, fuzzy, no-wrap
8722 #| msgid "B<PTRACE_EVENT_FORK>"
8723 msgid "B<PTRACE_EVENT_STOP>"
8724 msgstr "B<PTRACE_EVENT_FORK>"
8725
8726 #. type: Plain text
8727 #: build/C/man2/ptrace.2:1240
8728 msgid ""
8729 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
8730 "ptrace-stop when a new child is attached (only if attached using "
8731 "B<PTRACE_SEIZE>).  or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
8732 msgstr ""
8733
8734 #. type: Plain text
8735 #: build/C/man2/ptrace.2:1252
8736 msgid ""
8737 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8738 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8739 msgstr ""
8740
8741 #. type: SS
8742 #: build/C/man2/ptrace.2:1252
8743 #, no-wrap
8744 msgid "Syscall-stops"
8745 msgstr ""
8746
8747 #. type: Plain text
8748 #: build/C/man2/ptrace.2:1265
8749 msgid ""
8750 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8751 "enter-stop just prior to entering any system call.  If the tracer restarts "
8752 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8753 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8754 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8755 "exit-stop; it happens I<after> syscall-exit-stop.)"
8756 msgstr ""
8757
8758 #. type: Plain text
8759 #: build/C/man2/ptrace.2:1279
8760 msgid ""
8761 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8762 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8763 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8764 "(2)  happened in another thread, and that thread is not traced by the same "
8765 "tracer; this situation is discussed later)."
8766 msgstr ""
8767
8768 #. type: Plain text
8769 #: build/C/man2/ptrace.2:1294
8770 msgid ""
8771 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8772 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8773 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8774 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8775 "0x80)>."
8776 msgstr ""
8777
8778 #. type: Plain text
8779 #: build/C/man2/ptrace.2:1300
8780 msgid ""
8781 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8782 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8783 msgstr ""
8784
8785 #. type: TP
8786 #: build/C/man2/ptrace.2:1300
8787 #, no-wrap
8788 msgid "I<si_code> E<lt>= 0"
8789 msgstr ""
8790
8791 #. type: Plain text
8792 #: build/C/man2/ptrace.2:1312
8793 msgid ""
8794 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8795 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8796 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8797 "asynchronous I/O request."
8798 msgstr ""
8799
8800 #. type: TP
8801 #: build/C/man2/ptrace.2:1312
8802 #, no-wrap
8803 msgid "I<si_code> == SI_KERNEL (0x80)"
8804 msgstr ""
8805
8806 #. type: Plain text
8807 #: build/C/man2/ptrace.2:1316
8808 msgid "B<SIGTRAP> was sent by the kernel."
8809 msgstr ""
8810
8811 #. type: TP
8812 #: build/C/man2/ptrace.2:1316
8813 #, no-wrap
8814 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8815 msgstr ""
8816
8817 #. type: Plain text
8818 #: build/C/man2/ptrace.2:1319
8819 msgid "This is a syscall-stop."
8820 msgstr ""
8821
8822 #. type: Plain text
8823 #: build/C/man2/ptrace.2:1324
8824 msgid ""
8825 "However, syscall-stops happen very often (twice per system call), and "
8826 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8827 "expensive."
8828 msgstr ""
8829
8830 #. type: Plain text
8831 #: build/C/man2/ptrace.2:1347
8832 msgid ""
8833 "Some architectures allow the cases to be distinguished by examining "
8834 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8835 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8836 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8837 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8838 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8839 "and can be detected this way.  But such detection is fragile and is best "
8840 "avoided."
8841 msgstr ""
8842
8843 #. type: Plain text
8844 #: build/C/man2/ptrace.2:1353
8845 msgid ""
8846 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8847 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8848 "reliable and does not incur a performance penalty."
8849 msgstr ""
8850
8851 #. type: Plain text
8852 #: build/C/man2/ptrace.2:1364
8853 msgid ""
8854 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8855 "other by the tracer.  The tracer needs to keep track of the sequence of "
8856 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8857 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8858 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8859 "kinds of ptrace-stop can occur in between."
8860 msgstr ""
8861
8862 #. type: Plain text
8863 #: build/C/man2/ptrace.2:1369
8864 msgid ""
8865 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8866 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8867 msgstr ""
8868
8869 #. type: Plain text
8870 #: build/C/man2/ptrace.2:1381
8871 msgid ""
8872 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8873 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8874 msgstr ""
8875
8876 #. type: SS
8877 #: build/C/man2/ptrace.2:1381
8878 #, no-wrap
8879 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8880 msgstr ""
8881
8882 #
8883 #.  FIXME
8884 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8885 #.  PTRACE_SYSEMU_SINGLESTEP
8886 #. type: Plain text
8887 #: build/C/man2/ptrace.2:1387
8888 msgid "[Details of these kinds of stops are yet to be documented.]"
8889 msgstr ""
8890
8891 #. type: SS
8892 #: build/C/man2/ptrace.2:1387
8893 #, no-wrap
8894 msgid "Informational and restarting ptrace commands"
8895 msgstr ""
8896
8897 #. type: Plain text
8898 #: build/C/man2/ptrace.2:1397
8899 msgid ""
8900 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8901 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8902 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8903 msgstr ""
8904
8905 #. type: Plain text
8906 #: build/C/man2/ptrace.2:1402
8907 msgid ""
8908 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8909 "tracee using informational commands.  These commands leave the tracee in "
8910 "ptrace-stopped state:"
8911 msgstr ""
8912
8913 #. type: Plain text
8914 #: build/C/man2/ptrace.2:1414
8915 #, no-wrap
8916 msgid ""
8917 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8918 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8919 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8920 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8921 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8922 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8923 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8924 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8925 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8926 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8927 msgstr ""
8928
8929 #. type: Plain text
8930 #: build/C/man2/ptrace.2:1426
8931 msgid ""
8932 "Note that some errors are not reported.  For example, setting signal "
8933 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8934 "call may succeed (return 0 and not set I<errno>); querying "
8935 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8936 "ptrace-stop is not documented as returning a meaningful event message."
8937 msgstr ""
8938
8939 #. type: Plain text
8940 #: build/C/man2/ptrace.2:1428
8941 msgid "The call"
8942 msgstr ""
8943
8944 #. type: Plain text
8945 #: build/C/man2/ptrace.2:1430
8946 #, no-wrap
8947 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8948 msgstr ""
8949
8950 #. type: Plain text
8951 #: build/C/man2/ptrace.2:1439
8952 msgid ""
8953 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8954 "inherited by new tracees created and \"auto-attached\" via active "
8955 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8956 "options."
8957 msgstr ""
8958
8959 #. type: Plain text
8960 #: build/C/man2/ptrace.2:1442
8961 msgid ""
8962 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8963 "the form:"
8964 msgstr ""
8965
8966 #. type: Plain text
8967 #: build/C/man2/ptrace.2:1444
8968 #, no-wrap
8969 msgid "    ptrace(cmd, pid, 0, sig);\n"
8970 msgstr ""
8971
8972 #. type: Plain text
8973 #: build/C/man2/ptrace.2:1465
8974 msgid ""
8975 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8976 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8977 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8978 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8979 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8980 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8981 msgstr ""
8982
8983 #. type: SS
8984 #: build/C/man2/ptrace.2:1465
8985 #, no-wrap
8986 msgid "Attaching and detaching"
8987 msgstr ""
8988
8989 #. type: Plain text
8990 #: build/C/man2/ptrace.2:1467
8991 msgid "A thread can be attached to the tracer using the call"
8992 msgstr ""
8993
8994 #. type: Plain text
8995 #: build/C/man2/ptrace.2:1469
8996 #, no-wrap
8997 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8998 msgstr ""
8999
9000 #. type: Plain text
9001 #: build/C/man2/ptrace.2:1471 build/C/man2/ptrace.2:1968
9002 msgid "or"
9003 msgstr ""
9004
9005 #. type: Plain text
9006 #: build/C/man2/ptrace.2:1473
9007 #, no-wrap
9008 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
9009 msgstr ""
9010
9011 #
9012 #.  FIXME: Describe how to attach to a thread which is already
9013 #.         group-stopped.
9014 #. type: Plain text
9015 #: build/C/man2/ptrace.2:1498
9016 msgid ""
9017 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
9018 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
9019 "signals are concurrently sent to this thread during attach, the tracer may "
9020 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
9021 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
9022 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
9023 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
9024 "B<SIGSTOP> may be lost."
9025 msgstr ""
9026
9027 #. type: Plain text
9028 #: build/C/man2/ptrace.2:1505
9029 msgid ""
9030 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
9031 "may cause a stray B<EINTR> return from the currently executing system call "
9032 "in the tracee, as described in the \"Signal injection and suppression\" "
9033 "section."
9034 msgstr ""
9035
9036 #. type: Plain text
9037 #: build/C/man2/ptrace.2:1517
9038 msgid ""
9039 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
9040 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
9041 "after attach (or at any other time) without sending it any signals, use "
9042 "B<PTRACE_INTERRUPT> command."
9043 msgstr ""
9044
9045 #. type: Plain text
9046 #: build/C/man2/ptrace.2:1519
9047 msgid "The request"
9048 msgstr ""
9049
9050 #. type: Plain text
9051 #: build/C/man2/ptrace.2:1521
9052 #, no-wrap
9053 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
9054 msgstr ""
9055
9056 #. type: Plain text
9057 #: build/C/man2/ptrace.2:1527
9058 msgid ""
9059 "turns the calling thread into a tracee.  The thread continues to run "
9060 "(doesn't enter ptrace-stop).  A common practice is to follow the "
9061 "B<PTRACE_TRACEME> with"
9062 msgstr ""
9063
9064 #. type: Plain text
9065 #: build/C/man2/ptrace.2:1529
9066 #, no-wrap
9067 msgid "    raise(SIGSTOP);\n"
9068 msgstr ""
9069
9070 #. type: Plain text
9071 #: build/C/man2/ptrace.2:1532
9072 msgid ""
9073 "and allow the parent (which is our tracer now) to observe our signal-"
9074 "delivery-stop."
9075 msgstr ""
9076
9077 #. type: Plain text
9078 #: build/C/man2/ptrace.2:1556
9079 msgid ""
9080 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
9081 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
9082 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
9083 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
9084 "other kinds of B<clone>(2), are automatically attached to the same tracer "
9085 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
9086 "them to enter signal-delivery-stop after they exit the system call which "
9087 "created them."
9088 msgstr ""
9089
9090 #. type: Plain text
9091 #: build/C/man2/ptrace.2:1558
9092 msgid "Detaching of the tracee is performed by:"
9093 msgstr ""
9094
9095 #. type: Plain text
9096 #: build/C/man2/ptrace.2:1560
9097 #, no-wrap
9098 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
9099 msgstr ""
9100
9101 #. type: Plain text
9102 #: build/C/man2/ptrace.2:1568
9103 msgid ""
9104 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
9105 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
9106 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
9107 msgstr ""
9108
9109 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
9110 #.         doesn't run, but continues to wait for SIGCONT.
9111 #. type: Plain text
9112 #: build/C/man2/ptrace.2:1592
9113 msgid ""
9114 "If the tracee is running when the tracer wants to detach it, the usual "
9115 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
9116 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
9117 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
9118 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
9119 "is that the tracee may enter other ptrace-stops and needs to be restarted "
9120 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
9121 "to be sure that the tracee is not already ptrace-stopped, because no signal "
9122 "delivery happens while it is\\(emnot even B<SIGSTOP>."
9123 msgstr ""
9124
9125 #. type: Plain text
9126 #: build/C/man2/ptrace.2:1600
9127 msgid ""
9128 "If the tracer dies, all tracees are automatically detached and restarted, "
9129 "unless they were in group-stop.  Handling of restart from group-stop is "
9130 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
9131 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
9132 "stop, the pending signal is injected."
9133 msgstr ""
9134
9135 #. type: SS
9136 #: build/C/man2/ptrace.2:1600
9137 #, no-wrap
9138 msgid "execve(2) under ptrace"
9139 msgstr ""
9140
9141 #
9142 #.  clone(2) CLONE_THREAD says:
9143 #.      If  any  of the threads in a thread group performs an execve(2),
9144 #.      then all threads other than the thread group leader are terminated,
9145 #.      and the new program is executed in the thread group leader.
9146 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
9147 #. type: Plain text
9148 #: build/C/man2/ptrace.2:1619
9149 msgid ""
9150 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
9151 "destroys all other threads in the process, and resets the thread ID of the "
9152 "execing thread to the thread group ID (process ID).  (Or, to put things "
9153 "another way, when a multithreaded process does an B<execve>(2), at "
9154 "completion of the call, it appears as though the B<execve>(2)  occurred in "
9155 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
9156 "This resetting of the thread ID looks very confusing to tracers:"
9157 msgstr ""
9158
9159 #. type: Plain text
9160 #: build/C/man2/ptrace.2:1629
9161 msgid ""
9162 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
9163 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
9164 "the thread group leader report death as if they exited via B<_exit>(2)  with "
9165 "exit code 0."
9166 msgstr ""
9167
9168 #. type: Plain text
9169 #: build/C/man2/ptrace.2:1637
9170 msgid ""
9171 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
9172 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
9173 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
9174 "ID is reset to be the same as its process ID, which is the same as the "
9175 "thread group leader's thread ID."
9176 msgstr ""
9177
9178 #. type: Plain text
9179 #: build/C/man2/ptrace.2:1643
9180 msgid ""
9181 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
9182 "option was turned on."
9183 msgstr ""
9184
9185 #. type: Plain text
9186 #: build/C/man2/ptrace.2:1664
9187 msgid ""
9188 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
9189 "this time, it appears to the tracer that the dead thread leader \"reappears "
9190 "from nowhere\".  (Note: the thread group leader does not report death via "
9191 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
9192 "eliminates the possibility that the tracer will see it dying and then "
9193 "reappearing.)  If the thread group leader was still alive, for the tracer "
9194 "this may look as if thread group leader returns from a different system call "
9195 "than it entered, or even \"returned from a system call even though it was "
9196 "not in any system call\".  If the thread group leader was not traced (or was "
9197 "traced by a different tracer), then during B<execve>(2)  it will appear as "
9198 "if it has become a tracee of the tracer of the execing tracee."
9199 msgstr ""
9200
9201 #. type: Plain text
9202 #: build/C/man2/ptrace.2:1667
9203 msgid ""
9204 "All of the above effects are the artifacts of the thread ID change in the "
9205 "tracee."
9206 msgstr ""
9207
9208 #. type: Plain text
9209 #: build/C/man2/ptrace.2:1687
9210 msgid ""
9211 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
9212 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
9213 "before B<execve>(2)  returns.  In this stop, the tracer can use "
9214 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
9215 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
9216 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
9217 msgstr ""
9218
9219 #. type: Plain text
9220 #: build/C/man2/ptrace.2:1693
9221 msgid ""
9222 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
9223 "guaranteed that except this tracee and the thread group leader, no other "
9224 "threads from the process are alive."
9225 msgstr ""
9226
9227 #. type: Plain text
9228 #: build/C/man2/ptrace.2:1701
9229 msgid ""
9230 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
9231 "clean up all its internal data structures describing the threads of this "
9232 "process, and retain only one data structure\\(emone which describes the "
9233 "single still running tracee, with"
9234 msgstr ""
9235
9236 #. type: Plain text
9237 #: build/C/man2/ptrace.2:1703
9238 #, no-wrap
9239 msgid "    thread ID == thread group ID == process ID.\n"
9240 msgstr ""
9241
9242 #. type: Plain text
9243 #: build/C/man2/ptrace.2:1707
9244 msgid "Example: two threads call B<execve>(2)  at the same time:"
9245 msgstr ""
9246
9247 #. type: Plain text
9248 #: build/C/man2/ptrace.2:1718
9249 #, no-wrap
9250 msgid ""
9251 "*** we get syscall-enter-stop in thread 1: **\n"
9252 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
9253 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
9254 "*** we get syscall-enter-stop in thread 2: **\n"
9255 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
9256 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
9257 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
9258 "*** we get syscall-exit-stop for PID0: **\n"
9259 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
9260 msgstr ""
9261
9262 #. type: Plain text
9263 #: build/C/man2/ptrace.2:1741
9264 msgid ""
9265 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
9266 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
9267 "(2)  returns.  This is an ordinary signal (similar to one which can be "
9268 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
9269 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
9270 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
9271 "delivered (much) later."
9272 msgstr ""
9273
9274 #. type: Plain text
9275 #: build/C/man2/ptrace.2:1760
9276 msgid ""
9277 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
9278 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
9279 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
9280 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
9281 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
9282 "B<SIGTRAP> is the recommended approach."
9283 msgstr ""
9284
9285 #. type: SS
9286 #: build/C/man2/ptrace.2:1760
9287 #, no-wrap
9288 msgid "Real parent"
9289 msgstr ""
9290
9291 #. type: Plain text
9292 #: build/C/man2/ptrace.2:1767
9293 msgid ""
9294 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
9295 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
9296 "receiving several kinds of B<waitpid>(2)  notifications when the child "
9297 "process is traced by some other process."
9298 msgstr ""
9299
9300 #. type: Plain text
9301 #: build/C/man2/ptrace.2:1770
9302 msgid ""
9303 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9304 "exist; see BUGS below."
9305 msgstr ""
9306
9307 #. type: Plain text
9308 #: build/C/man2/ptrace.2:1772
9309 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9310 msgstr ""
9311
9312 #. type: Plain text
9313 #: build/C/man2/ptrace.2:1780
9314 msgid ""
9315 "exit/death by signal is reported first to the tracer, then, when the tracer "
9316 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9317 "only when the whole multithreaded process exits).  If the tracer and the "
9318 "real parent are the same process, the report is sent only once."
9319 msgstr ""
9320
9321 #. type: Plain text
9322 #: build/C/man2/ptrace.2:1791
9323 #, fuzzy
9324 #| msgid ""
9325 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9326 #| "other requests return zero.  On error, all requests return -1, and "
9327 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9328 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9329 #| "such requests to determine whether or not an error occurred."
9330 msgid ""
9331 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9332 "requests return zero.  (On Linux, this is done in the libc wrapper around "
9333 "ptrace system call.  On the system call level, B<PTRACE_PEEK*> requests have "
9334 "a different API: they store the result at the address specified by I<data> "
9335 "parameter, and return value is the error flag.)"
9336 msgstr ""
9337 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9338 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9339 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9340 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9341 "なければならない。"
9342
9343 #. type: Plain text
9344 #: build/C/man2/ptrace.2:1801
9345 #, fuzzy
9346 #| msgid ""
9347 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9348 #| "other requests return zero.  On error, all requests return -1, and "
9349 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9350 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9351 #| "such requests to determine whether or not an error occurred."
9352 msgid ""
9353 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
9354 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
9355 "caller must clear I<errno> before the call, and then check it afterward to "
9356 "determine whether or not an error occurred."
9357 msgstr ""
9358 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9359 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9360 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9361 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9362 "なければならない。"
9363
9364 #. type: Plain text
9365 #: build/C/man2/ptrace.2:1805
9366 msgid ""
9367 "(i386 only) There was an error with allocating or freeing a debug register."
9368 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9369
9370 #. type: Plain text
9371 #: build/C/man2/ptrace.2:1816
9372 #, fuzzy
9373 #| msgid ""
9374 #| "There was an attempt to read from or write to an invalid area in the "
9375 #| "parent's or child's memory, probably because the area wasn't mapped or "
9376 #| "accessible.  Unfortunately, under Linux, different variations of this "
9377 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9378 msgid ""
9379 "There was an attempt to read from or write to an invalid area in the "
9380 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9381 "accessible.  Unfortunately, under Linux, different variations of this fault "
9382 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9383 msgstr ""
9384 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9385 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9386 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9387 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9388
9389 #. type: Plain text
9390 #: build/C/man2/ptrace.2:1819
9391 msgid "An attempt was made to set an invalid option."
9392 msgstr "不正なオプションを設定しようとした。"
9393
9394 #. type: Plain text
9395 #: build/C/man2/ptrace.2:1826
9396 #, fuzzy
9397 #| msgid ""
9398 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9399 #| "invalid area in the parent's or child's memory, or there was a word-"
9400 #| "alignment violation, or an invalid signal was specified during a restart "
9401 #| "request."
9402 msgid ""
9403 "I<request> is invalid, or an attempt was made to read from or write to an "
9404 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9405 "alignment violation, or an invalid signal was specified during a restart "
9406 "request."
9407 msgstr ""
9408 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9409 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9410 "開の要求で不正なシグナルを指定した。"
9411
9412 #. type: Plain text
9413 #: build/C/man2/ptrace.2:1839
9414 #, fuzzy
9415 #| msgid ""
9416 #| "The specified process cannot be traced.  This could be because the parent "
9417 #| "has insufficient privileges (the required capability is "
9418 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9419 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9420 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9421 #| "being traced, or be B<init>(8)  (PID 1)."
9422 msgid ""
9423 "The specified process cannot be traced.  This could be because the tracer "
9424 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9425 "unprivileged processes cannot trace processes that they cannot send signals "
9426 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9427 "Alternatively, the process may already be being traced, or (on kernels "
9428 "before 2.6.26) be B<init>(8)  (PID 1)."
9429 msgstr ""
9430 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9431 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9432 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9433 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9434 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9435 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9436
9437 #. type: Plain text
9438 #: build/C/man2/ptrace.2:1844
9439 #, fuzzy
9440 #| msgid ""
9441 #| "The specified process does not exist, or is not currently being traced by "
9442 #| "the caller, or is not stopped (for requests that require that)."
9443 msgid ""
9444 "The specified process does not exist, or is not currently being traced by "
9445 "the caller, or is not stopped (for requests that require a stopped tracee)."
9446 msgstr ""
9447 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9448 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9449 "ない (停止していることが必要な要求の場合)。"
9450
9451 #. type: Plain text
9452 #: build/C/man2/ptrace.2:1846
9453 msgid "SVr4, 4.3BSD."
9454 msgstr "SVr4, 4.3BSD."
9455
9456 #. type: Plain text
9457 #: build/C/man2/ptrace.2:1861
9458 #, fuzzy
9459 #| msgid ""
9460 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9461 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9462 #| "function with only the I<request> argument fixed.  This means that "
9463 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9464 #| "undocumented B<gcc>(1)  behavior."
9465 msgid ""
9466 "Although arguments to B<ptrace>()  are interpreted according to the "
9467 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9468 "function with only the I<request> argument fixed.  It is recommended to "
9469 "always supply four arguments, even if the requested operation does not use "
9470 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9471 msgstr ""
9472 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9473 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9474 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9475 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9476 "になる。"
9477
9478 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9479 #. type: Plain text
9480 #: build/C/man2/ptrace.2:1866
9481 #, fuzzy
9482 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9483 msgid ""
9484 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9485 "be traced."
9486 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9487
9488 #.  See http://lkml.org/lkml/2008/5/8/375
9489 #. type: Plain text
9490 #: build/C/man2/ptrace.2:1873
9491 #, fuzzy
9492 #| msgid ""
9493 #| "The layout of the contents of memory and the USER area are quite OS- and "
9494 #| "architecture-specific.  The offset supplied, and the data returned, might "
9495 #| "not entirely match with the definition of I<struct user>."
9496 msgid ""
9497 "The layout of the contents of memory and the USER area are quite operating-"
9498 "system- and architecture-specific.  The offset supplied, and the data "
9499 "returned, might not entirely match with the definition of I<struct user>."
9500 msgstr ""
9501 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9502 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9503 "に一致しないこともありえる。"
9504
9505 #. type: Plain text
9506 #: build/C/man2/ptrace.2:1876
9507 #, fuzzy
9508 #| msgid ""
9509 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9510 #| "Linux it is 32 bits, etc.)."
9511 msgid ""
9512 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9513 "for 32-bit Linux it is 32 bits)."
9514 msgstr ""
9515 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9516 "では 32 ビットである、など。)"
9517
9518 #. type: Plain text
9519 #: build/C/man2/ptrace.2:1884
9520 #, fuzzy
9521 #| msgid ""
9522 #| "This page documents the way the B<ptrace>()  call works currently in "
9523 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9524 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9525 msgid ""
9526 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9527 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9528 "of B<ptrace>()  is highly specific to the operating system and architecture."
9529 msgstr ""
9530 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9531 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9532 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9533
9534 #. type: Plain text
9535 #: build/C/man2/ptrace.2:1895
9536 #, fuzzy
9537 #| msgid ""
9538 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9539 #| "different value than the one for 2.4.  This leads to applications "
9540 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9541 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9542 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9543 msgid ""
9544 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9545 "different value than the one for 2.4.  This leads to applications compiled "
9546 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9547 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9548 "that is defined."
9549 msgstr ""
9550 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9551 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9552 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9553 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9554 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9555
9556 #. type: Plain text
9557 #: build/C/man2/ptrace.2:1898
9558 msgid ""
9559 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9560 "Last confirmed on 2.6.38.6."
9561 msgstr ""
9562
9563 #.  Note from Denys Vlasenko:
9564 #.      Here "exits" means any kind of death - _exit, exit_group,
9565 #.      signal death. Signal death and exit_group cases are trivial,
9566 #.      though: since signal death and exit_group kill all other threads
9567 #.      too, "until all other threads exit" thing happens rather soon
9568 #.      in these cases. Therefore, only _exit presents observably
9569 #.      puzzling behavior to ptrace users: thread leader _exit's,
9570 #.      but WIFEXITED isn't reported! We are trying to explain here
9571 #.      why it is so.
9572 #.   FIXME: ^^^ need to test/verify this scenario
9573 #. type: Plain text
9574 #: build/C/man2/ptrace.2:1929
9575 msgid ""
9576 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9577 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9578 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9579 "threads exit.  As explained above, if one of other threads calls B<execve>"
9580 "(2), the death of the thread group leader will I<never> be reported.  If the "
9581 "execed thread is not traced by this tracer, the tracer will never know that "
9582 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9583 "thread group leader instead of restarting it in this case.  Last confirmed "
9584 "on 2.6.38.6."
9585 msgstr ""
9586
9587 #. type: Plain text
9588 #: build/C/man2/ptrace.2:1939
9589 msgid ""
9590 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9591 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9592 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9593 "2.6.38.6."
9594 msgstr ""
9595
9596 #. type: Plain text
9597 #: build/C/man2/ptrace.2:1957
9598 msgid ""
9599 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9600 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9601 "is usually done by debuggers on every attach, in order to not introduce a "
9602 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9603 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9604 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9605 "that when you attach to a quiescent process with the command"
9606 msgstr ""
9607
9608 #. type: Plain text
9609 #: build/C/man2/ptrace.2:1959
9610 #, no-wrap
9611 msgid "    strace -p E<lt>process-IDE<gt>\n"
9612 msgstr ""
9613
9614 #. type: Plain text
9615 #: build/C/man2/ptrace.2:1962
9616 msgid "then, instead of the usual and expected one-line output such as"
9617 msgstr ""
9618
9619 #. type: Plain text
9620 #: build/C/man2/ptrace.2:1965
9621 #, no-wrap
9622 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9623 msgstr ""
9624
9625 #. type: Plain text
9626 #: build/C/man2/ptrace.2:1971
9627 #, no-wrap
9628 msgid "    select(6, [5], NULL, [5], NULL_\n"
9629 msgstr ""
9630
9631 #. type: Plain text
9632 #: build/C/man2/ptrace.2:1975
9633 msgid ""
9634 "('_' denotes the cursor position), you observe more than one line.  For "
9635 "example:"
9636 msgstr ""
9637
9638 #. type: Plain text
9639 #: build/C/man2/ptrace.2:1979
9640 #, no-wrap
9641 msgid ""
9642 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9643 "    epoll_wait(4,_\n"
9644 msgstr ""
9645
9646 #. type: Plain text
9647 #: build/C/man2/ptrace.2:2000
9648 msgid ""
9649 "What is not visible here is that the process was blocked in B<epoll_wait>"
9650 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9651 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9652 "case, the program reacted to B<EINTR> by checking the current time, and then "
9653 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9654 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9655 "(1)  attach.)"
9656 msgstr ""
9657
9658 #. type: Plain text
9659 #: build/C/man2/ptrace.2:2014
9660 msgid ""
9661 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9662 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9663 "B<capabilities>(7), B<signal>(7)"
9664 msgstr ""
9665 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9666 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9667 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9668
9669 #. type: TH
9670 #: build/C/man2/quotactl.2:27
9671 #, no-wrap
9672 msgid "QUOTACTL"
9673 msgstr "QUOTACTL"
9674
9675 #. type: TH
9676 #: build/C/man2/quotactl.2:27
9677 #, no-wrap
9678 msgid "2010-06-16"
9679 msgstr "2010-06-16"
9680
9681 #. type: Plain text
9682 #: build/C/man2/quotactl.2:30
9683 msgid "quotactl - manipulate disk quotas"
9684 msgstr "quotactl - ディスク quota を操作する"
9685
9686 #. type: Plain text
9687 #: build/C/man2/quotactl.2:34
9688 #, no-wrap
9689 msgid ""
9690 "B<#include E<lt>sys/quota.hE<gt>>\n"
9691 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9692 msgstr ""
9693 "B<#include E<lt>sys/quota.hE<gt>>\n"
9694 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9695
9696 #. type: Plain text
9697 #: build/C/man2/quotactl.2:37
9698 #, no-wrap
9699 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9700 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9701
9702 #. type: Plain text
9703 #: build/C/man2/quotactl.2:49
9704 #, fuzzy
9705 #| msgid ""
9706 #| "The quota system defines for each user and/or group a soft limit and a "
9707 #| "hard limit bounding the amount of disk space that can be used on a given "
9708 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9709 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9710 #| "soft limit for more than one week (by default)  at a time: after this "
9711 #| "week the soft limit counts as hard limit."
9712 msgid ""
9713 "The quota system can be used to set per-user and per-group limits on the "
9714 "amount of disk space used on a file system.  For each user and/or group, a "
9715 "soft limit and a hard limit can be set for each file system.  The hard limit "
9716 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9717 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9718 "week (by default) at a time; after this time, the soft limit counts as a "
9719 "hard limit."
9720 msgstr ""
9721 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9722 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9723 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9724 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9725 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9726 "過した後はハード・リミットを超過したと みなされる。"
9727
9728 #. type: Plain text
9729 #: build/C/man2/quotactl.2:74
9730 #, fuzzy
9731 #| msgid ""
9732 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9733 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9734 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9735 #| "respectively), and I<subcmd> is described below."
9736 msgid ""
9737 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9738 "indicates a command to be applied to the user or group ID specified in "
9739 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9740 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9741 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9742 msgstr ""
9743 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9744 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9745 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9746 "を指定する。 I<subcmd> は以下で説明する。"
9747
9748 #. type: Plain text
9749 #: build/C/man2/quotactl.2:79
9750 msgid ""
9751 "The I<special> argument is a pointer to a null-terminated string containing "
9752 "the pathname of the (mounted) block special device for the file system being "
9753 "manipulated."
9754 msgstr ""
9755
9756 #. type: Plain text
9757 #: build/C/man2/quotactl.2:87
9758 msgid ""
9759 "The I<addr> argument is the address of an optional, command-specific, data "
9760 "structure that is copied in or out of the system.  The interpretation of "
9761 "I<addr> is given with each command below."
9762 msgstr ""
9763
9764 #. type: Plain text
9765 #: build/C/man2/quotactl.2:91
9766 msgid "The I<subcmd> value is one of the following:"
9767 msgstr "I<subcmd> の値は以下のいずれかである"
9768
9769 #. type: TP
9770 #: build/C/man2/quotactl.2:91
9771 #, no-wrap
9772 msgid "B<Q_QUOTAON>"
9773 msgstr "B<Q_QUOTAON>"
9774
9775 #. type: Plain text
9776 #: build/C/man2/quotactl.2:98
9777 msgid ""
9778 "Turn on quotas for a file system.  The I<id> argument is the identification "
9779 "number of the quota format to be used.  Currently, there are three supported "
9780 "quota formats:"
9781 msgstr ""
9782
9783 #. type: TP
9784 #: build/C/man2/quotactl.2:99
9785 #, no-wrap
9786 msgid "B<QFMT_VFS_OLD>"
9787 msgstr ""
9788
9789 #. type: Plain text
9790 #: build/C/man2/quotactl.2:102
9791 msgid "The original quota format."
9792 msgstr ""
9793
9794 #. type: TP
9795 #: build/C/man2/quotactl.2:102
9796 #, no-wrap
9797 msgid "B<QFMT_VFS_V0>"
9798 msgstr ""
9799
9800 #. type: Plain text
9801 #: build/C/man2/quotactl.2:106
9802 msgid ""
9803 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9804 "quota limits up to 2^42 bytes and 2^32 inodes."
9805 msgstr ""
9806
9807 #. type: TP
9808 #: build/C/man2/quotactl.2:106
9809 #, no-wrap
9810 msgid "B<QFMT_VFS_V1>"
9811 msgstr ""
9812
9813 #. type: Plain text
9814 #: build/C/man2/quotactl.2:110
9815 msgid ""
9816 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9817 "bytes and 2^64 inodes."
9818 msgstr ""
9819
9820 #. type: Plain text
9821 #: build/C/man2/quotactl.2:121
9822 msgid ""
9823 "The I<addr> argument points to the pathname of a file containing the quotas "
9824 "for the file system.  The quota file must exist; it is normally created with "
9825 "the B<quotacheck>(8)  program.  This operation requires privilege "
9826 "(B<CAP_SYS_ADMIN>)."
9827 msgstr ""
9828
9829 #. type: TP
9830 #: build/C/man2/quotactl.2:121
9831 #, no-wrap
9832 msgid "B<Q_QUOTAOFF>"
9833 msgstr "B<Q_QUOTAOFF>"
9834
9835 #. type: Plain text
9836 #: build/C/man2/quotactl.2:131
9837 msgid ""
9838 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9839 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9840 msgstr ""
9841
9842 #. type: TP
9843 #: build/C/man2/quotactl.2:131
9844 #, no-wrap
9845 msgid "B<Q_GETQUOTA>"
9846 msgstr "B<Q_GETQUOTA>"
9847
9848 #. type: Plain text
9849 #: build/C/man2/quotactl.2:142
9850 #, fuzzy
9851 #| msgid ""
9852 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9853 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9854 msgid ""
9855 "Get disk quota limits and current usage for user or group I<id>.  The "
9856 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9857 "quota.hE<gt>> as follows:"
9858 msgstr ""
9859 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9860 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9861
9862 #. type: Plain text
9863 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9864 #, no-wrap
9865 msgid ""
9866 "/* uint64_t is an unsigned 64-bit integer;\n"
9867 "   uint32_t is an unsigned 32-bit integer */\n"
9868 msgstr ""
9869
9870 #. type: Plain text
9871 #: build/C/man2/quotactl.2:167
9872 #, no-wrap
9873 msgid ""
9874 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9875 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9876 "                                  quota blocks alloc */\n"
9877 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9878 "                                  disk quota blocks */\n"
9879 "    uint64_t dqb_curspace;     /* current quota block\n"
9880 "                                  count */\n"
9881 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9882 "                                  allocated inodes */\n"
9883 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9884 "    uint64_t dqb_curinodes;    /* current number of\n"
9885 "                                  allocated inodes */\n"
9886 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9887 "                                  disk use */\n"
9888 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9889 "                                  files */\n"
9890 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9891 "                                  constants */\n"
9892 "};\n"
9893 msgstr ""
9894
9895 #. type: Plain text
9896 #: build/C/man2/quotactl.2:170
9897 #, no-wrap
9898 msgid ""
9899 "/* Flags in dqb_valid that indicate which fields in\n"
9900 "   dqblk structure are valid. */\n"
9901 msgstr ""
9902
9903 #. type: Plain text
9904 #: build/C/man2/quotactl.2:181
9905 #, no-wrap
9906 msgid ""
9907 "#define QIF_BLIMITS   1\n"
9908 "#define QIF_SPACE     2\n"
9909 "#define QIF_ILIMITS   4\n"
9910 "#define QIF_INODES    8\n"
9911 "#define QIF_BTIME     16\n"
9912 "#define QIF_ITIME     32\n"
9913 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9914 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9915 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9916 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9917 msgstr ""
9918
9919 #. type: Plain text
9920 #: build/C/man2/quotactl.2:198
9921 msgid ""
9922 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9923 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9924 "entries of the I<dqblk> structure and marks them as valid in the "
9925 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9926 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9927 msgstr ""
9928
9929 #. type: TP
9930 #: build/C/man2/quotactl.2:198
9931 #, no-wrap
9932 msgid "B<Q_SETQUOTA>"
9933 msgstr "B<Q_SETQUOTA>"
9934
9935 #. type: Plain text
9936 #: build/C/man2/quotactl.2:218
9937 msgid ""
9938 "Set quota information for user or group I<id>, using the information "
9939 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9940 "field of the I<dqblk> structure indicates which entries in the structure "
9941 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9942 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9943 "requires privilege (B<CAP_SYS_ADMIN>)."
9944 msgstr ""
9945
9946 #. type: TP
9947 #: build/C/man2/quotactl.2:218
9948 #, no-wrap
9949 msgid "B<Q_GETINFO>"
9950 msgstr "B<Q_GETINFO>"
9951
9952 #. type: Plain text
9953 #: build/C/man2/quotactl.2:229
9954 #, fuzzy
9955 #| msgid ""
9956 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9957 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9958 msgid ""
9959 "Get information (like grace times) about quotafile.  The I<addr> argument "
9960 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9961 "I<E<lt>sys/quota.hE<gt>> as follows:"
9962 msgstr ""
9963 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9964 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9965
9966 #. type: Plain text
9967 #: build/C/man2/quotactl.2:238
9968 #, no-wrap
9969 msgid ""
9970 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9971 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9972 "                               becomes hard limit */\n"
9973 msgstr ""
9974
9975 #. type: Plain text
9976 #: build/C/man2/quotactl.2:245
9977 #, no-wrap
9978 msgid ""
9979 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9980 "                               becomes hard limit */\n"
9981 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9982 "                               (DQF_*) */\n"
9983 "    uint32_t dqi_valid;\n"
9984 "};\n"
9985 msgstr ""
9986
9987 #. type: Plain text
9988 #: build/C/man2/quotactl.2:247
9989 #, no-wrap
9990 msgid "/* Bits for dqi_flags */\n"
9991 msgstr ""
9992
9993 #. type: Plain text
9994 #: build/C/man2/quotactl.2:249
9995 #, no-wrap
9996 msgid "/* Quota format QFMT_VFS_OLD */\n"
9997 msgstr ""
9998
9999 #. type: Plain text
10000 #: build/C/man2/quotactl.2:251
10001 #, no-wrap
10002 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
10003 msgstr ""
10004
10005 #. type: Plain text
10006 #: build/C/man2/quotactl.2:253
10007 #, no-wrap
10008 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
10009 msgstr ""
10010
10011 #. type: Plain text
10012 #: build/C/man2/quotactl.2:256
10013 #, no-wrap
10014 msgid ""
10015 "/* Flags in dqi_valid that indicate which fields in\n"
10016 "   dqinfo structure are valid. */\n"
10017 msgstr ""
10018
10019 #. type: Plain text
10020 #: build/C/man2/quotactl.2:261
10021 #, no-wrap
10022 msgid ""
10023 "# define IIF_BGRACE\t1\n"
10024 "# define IIF_IGRACE\t2\n"
10025 "# define IIF_FLAGS\t4\n"
10026 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
10027 msgstr ""
10028
10029 #. type: Plain text
10030 #: build/C/man2/quotactl.2:277
10031 msgid ""
10032 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
10033 "the structure that are valid.  Currently, the kernel fills in all entries of "
10034 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
10035 "field.  The I<id> argument is ignored."
10036 msgstr ""
10037
10038 #. type: TP
10039 #: build/C/man2/quotactl.2:277
10040 #, no-wrap
10041 msgid "B<Q_SETINFO>"
10042 msgstr "B<Q_SETINFO>"
10043
10044 #. type: Plain text
10045 #: build/C/man2/quotactl.2:301
10046 msgid ""
10047 "Set information about quotafile.  The I<addr> argument should be a pointer "
10048 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
10049 "indicates the entries in the structure that have been set by the caller.  "
10050 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
10051 "the previous quota interfaces.  The I<id> argument is ignored.  This "
10052 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10053 msgstr ""
10054
10055 #. type: TP
10056 #: build/C/man2/quotactl.2:301
10057 #, no-wrap
10058 msgid "B<Q_GETFMT>"
10059 msgstr "B<Q_GETFMT>"
10060
10061 #. type: Plain text
10062 #: build/C/man2/quotactl.2:308
10063 msgid ""
10064 "Get quota format used on the specified file system.  The I<addr> argument "
10065 "should be a pointer to a 4-byte buffer where the format number will be "
10066 "stored."
10067 msgstr ""
10068
10069 #. type: TP
10070 #: build/C/man2/quotactl.2:308
10071 #, no-wrap
10072 msgid "B<Q_SYNC>"
10073 msgstr "B<Q_SYNC>"
10074
10075 #. type: Plain text
10076 #: build/C/man2/quotactl.2:319
10077 msgid ""
10078 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
10079 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
10080 "I<id> arguments are ignored."
10081 msgstr ""
10082
10083 #. type: TP
10084 #: build/C/man2/quotactl.2:319
10085 #, no-wrap
10086 msgid "B<Q_GETSTATS>"
10087 msgstr "B<Q_GETSTATS>"
10088
10089 #.  Q_GETSTATS was removed in kernel 2.4.22.
10090 #. type: Plain text
10091 #: build/C/man2/quotactl.2:339
10092 msgid ""
10093 "Get statistics and other generic information about the quota subsystem.  The "
10094 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
10095 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
10096 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
10097 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
10098 "the information instead."
10099 msgstr ""
10100
10101 #. type: Plain text
10102 #: build/C/man2/quotactl.2:342
10103 msgid ""
10104 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
10105 "commands are bypassed and the following commands are used:"
10106 msgstr ""
10107
10108 #. type: TP
10109 #: build/C/man2/quotactl.2:342
10110 #, no-wrap
10111 msgid "B<Q_XQUOTAON>"
10112 msgstr "B<Q_XQUOTAON>"
10113
10114 #. type: Plain text
10115 #: build/C/man2/quotactl.2:363
10116 msgid ""
10117 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
10118 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
10119 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
10120 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
10121 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
10122 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
10123 "(B<CAP_SYS_ADMIN>)."
10124 msgstr ""
10125
10126 #. type: TP
10127 #: build/C/man2/quotactl.2:363
10128 #, no-wrap
10129 msgid "B<Q_XQUOTAOFF>"
10130 msgstr "B<Q_XQUOTAOFF>"
10131
10132 #. type: Plain text
10133 #: build/C/man2/quotactl.2:374
10134 msgid ""
10135 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
10136 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
10137 "accounting and/or limit enforcement need to be turned off.  This operation "
10138 "requires privilege (B<CAP_SYS_ADMIN>)."
10139 msgstr ""
10140
10141 #. type: TP
10142 #: build/C/man2/quotactl.2:374
10143 #, no-wrap
10144 msgid "B<Q_XGETQUOTA>"
10145 msgstr "B<Q_XGETQUOTA>"
10146
10147 #. type: Plain text
10148 #: build/C/man2/quotactl.2:388
10149 msgid ""
10150 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
10151 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
10152 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
10153 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
10154 "user."
10155 msgstr ""
10156
10157 #. type: TP
10158 #: build/C/man2/quotactl.2:388
10159 #, no-wrap
10160 msgid "B<Q_XSETQLIM>"
10161 msgstr "B<Q_XSETQLIM>"
10162
10163 #. type: Plain text
10164 #: build/C/man2/quotactl.2:400
10165 msgid ""
10166 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
10167 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
10168 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10169 msgstr ""
10170
10171 #. type: TP
10172 #: build/C/man2/quotactl.2:400
10173 #, no-wrap
10174 msgid "B<Q_XGETQSTAT>"
10175 msgstr "B<Q_XGETQSTAT>"
10176
10177 #. type: Plain text
10178 #: build/C/man2/quotactl.2:408
10179 msgid ""
10180 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
10181 "quota information.  This is useful for finding out how much space is used to "
10182 "store quota information, and also to get quotaon/off status of a given local "
10183 "XFS file system."
10184 msgstr ""
10185
10186 #. type: TP
10187 #: build/C/man2/quotactl.2:408
10188 #, no-wrap
10189 msgid "B<Q_XQUOTARM>"
10190 msgstr "B<Q_XQUOTARM>"
10191
10192 #. type: Plain text
10193 #: build/C/man2/quotactl.2:412
10194 msgid ""
10195 "Free the disk space taken by disk quotas.  Quotas must have already been "
10196 "turned off."
10197 msgstr ""
10198
10199 #. type: Plain text
10200 #: build/C/man2/quotactl.2:419
10201 msgid ""
10202 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
10203 "quota information to disk (in addition to the other file system metadata "
10204 "that it writes out)."
10205 msgstr ""
10206
10207 #. type: Plain text
10208 #: build/C/man2/quotactl.2:427
10209 msgid ""
10210 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
10211 "is set to indicate the error."
10212 msgstr ""
10213 "成功すると、 B<quotactl>()  は 0 を返す。\n"
10214 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
10215
10216 #. type: Plain text
10217 #: build/C/man2/quotactl.2:434
10218 msgid "I<addr> or I<special> is invalid."
10219 msgstr ""
10220
10221 #. type: Plain text
10222 #: build/C/man2/quotactl.2:440
10223 msgid "I<cmd> or I<type> is invalid."
10224 msgstr ""
10225
10226 #. type: TP
10227 #: build/C/man2/quotactl.2:440
10228 #, no-wrap
10229 msgid "B<ENOENT>"
10230 msgstr "B<ENOENT>"
10231
10232 #. type: Plain text
10233 #: build/C/man2/quotactl.2:447
10234 msgid "The file specified by I<special> or I<addr> does not exist."
10235 msgstr ""
10236
10237 #. type: Plain text
10238 #: build/C/man2/quotactl.2:452
10239 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
10240 msgstr ""
10241
10242 #. type: TP
10243 #: build/C/man2/quotactl.2:452
10244 #, no-wrap
10245 msgid "B<ENOTBLK>"
10246 msgstr "B<ENOTBLK>"
10247
10248 #. type: Plain text
10249 #: build/C/man2/quotactl.2:456
10250 msgid "I<special> is not a block device."
10251 msgstr "I<special> がブロックデバイスではない。"
10252
10253 #. type: Plain text
10254 #: build/C/man2/quotactl.2:461
10255 msgid ""
10256 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
10257 "specified operation."
10258 msgstr ""
10259
10260 #. type: Plain text
10261 #: build/C/man2/quotactl.2:465
10262 msgid ""
10263 "No disk quota is found for the indicated user.  Quotas have not been turned "
10264 "on for this file system."
10265 msgstr ""
10266
10267 #. type: Plain text
10268 #: build/C/man2/quotactl.2:474
10269 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
10270 msgstr ""
10271
10272 #. type: Plain text
10273 #: build/C/man2/quotactl.2:477
10274 msgid "Specified limits are out of range allowed by quota format."
10275 msgstr ""
10276
10277 #. type: Plain text
10278 #: build/C/man2/quotactl.2:486
10279 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
10280 msgstr ""
10281
10282 #. type: Plain text
10283 #: build/C/man2/quotactl.2:495
10284 msgid ""
10285 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
10286 "the quota file pointed to by I<addr> exists, but is not on the file system "
10287 "pointed to by I<special>."
10288 msgstr ""
10289
10290 #. type: Plain text
10291 #: build/C/man2/quotactl.2:501
10292 msgid ""
10293 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
10294 msgstr ""
10295
10296 #. type: Plain text
10297 #: build/C/man2/quotactl.2:504
10298 msgid "The quota file is corrupted."
10299 msgstr "quota ファイルが壊れている。"
10300
10301 #. type: Plain text
10302 #: build/C/man2/quotactl.2:507
10303 msgid "Specified quota format was not found."
10304 msgstr ""
10305
10306 #. type: Plain text
10307 #: build/C/man2/quotactl.2:512
10308 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10309 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10310
10311 #. type: TH
10312 #: build/C/man2/sendfile.2:19
10313 #, no-wrap
10314 msgid "SENDFILE"
10315 msgstr "SENDFILE"
10316
10317 #. type: TH
10318 #: build/C/man2/sendfile.2:19
10319 #, no-wrap
10320 msgid "2011-09-14"
10321 msgstr "2011-09-14"
10322
10323 #. type: Plain text
10324 #: build/C/man2/sendfile.2:22
10325 msgid "sendfile - transfer data between file descriptors"
10326 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10327
10328 #. type: Plain text
10329 #: build/C/man2/sendfile.2:24
10330 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10331 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10332
10333 #.  The below is too ugly. Comments about glibc versions belong
10334 #.  in the notes, not in the header.
10335 #.  .B #include <features.h>
10336 #.  .br
10337 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10338 #.  .br
10339 #.  .B #include <sys/sendfile.h>
10340 #.  .br
10341 #.  #else
10342 #.  .br
10343 #.  .B #include <sys/types.h>
10344 #.  .br
10345 #.  .B /* No system prototype before glibc 2.1. */
10346 #.  .br
10347 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10348 #.  .br
10349 #.  .B #endif
10350 #. type: Plain text
10351 #: build/C/man2/sendfile.2:47
10352 msgid ""
10353 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10354 "size_t>I< count>B<);>"
10355 msgstr ""
10356 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10357 "size_t>I< count>B<);>"
10358
10359 #. type: Plain text
10360 #: build/C/man2/sendfile.2:57
10361 msgid ""
10362 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10363 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10364 "than the combination of B<read>(2)  and B<write>(2), which would require "
10365 "transferring data to and from user space."
10366 msgstr ""
10367 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10368 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10369 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10370 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10371 "るからである。"
10372
10373 #. type: Plain text
10374 #: build/C/man2/sendfile.2:62
10375 msgid ""
10376 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10377 "be a descriptor opened for writing."
10378 msgstr ""
10379 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10380 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10381
10382 #. type: Plain text
10383 #: build/C/man2/sendfile.2:83
10384 msgid ""
10385 "If I<offset> is not NULL, then it points to a variable holding the file "
10386 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10387 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10388 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10389 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10390 "otherwise the current file offset is adjusted to reflect the number of bytes "
10391 "read from I<in_fd>."
10392 msgstr ""
10393 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10394 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10395 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10396 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10397 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10398 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10399 "整する。"
10400
10401 #. type: Plain text
10402 #: build/C/man2/sendfile.2:90
10403 msgid ""
10404 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10405 "current file offset, and the file offset will be updated by the call."
10406 msgstr ""
10407 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10408 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10409
10410 #. type: Plain text
10411 #: build/C/man2/sendfile.2:93
10412 msgid "I<count> is the number of bytes to copy between the file descriptors."
10413 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10414
10415 #. type: Plain text
10416 #: build/C/man2/sendfile.2:100
10417 msgid ""
10418 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10419 "like operations (i.e., it cannot be a socket)."
10420 msgstr ""
10421 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10422 "な\n"
10423 "い (ソケットを指定することはできない)。"
10424
10425 #. type: Plain text
10426 #: build/C/man2/sendfile.2:108
10427 msgid ""
10428 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10429 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10430 "()  changes the file offset appropriately."
10431 msgstr ""
10432 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10433 "な\n"
10434 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10435 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10436
10437 #. type: Plain text
10438 #: build/C/man2/sendfile.2:115
10439 msgid ""
10440 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10441 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10442 msgstr ""
10443 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10444 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10445
10446 #. type: Plain text
10447 #: build/C/man2/sendfile.2:121
10448 msgid ""
10449 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10450 "block."
10451 msgstr ""
10452 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10453 "た。"
10454
10455 #. type: TP
10456 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10457 #: build/C/man2/vmsplice.2:123
10458 #, no-wrap
10459 msgid "B<EBADF>"
10460 msgstr "B<EBADF>"
10461
10462 #. type: Plain text
10463 #: build/C/man2/sendfile.2:125
10464 msgid ""
10465 "The input file was not opened for reading or the output file was not opened "
10466 "for writing."
10467 msgstr ""
10468 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10469 "のためにオープンされていない。"
10470
10471 #. type: Plain text
10472 #: build/C/man2/sendfile.2:128
10473 msgid "Bad address."
10474 msgstr "アドレスがおかしい。"
10475
10476 #. type: Plain text
10477 #: build/C/man2/sendfile.2:134
10478 msgid ""
10479 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10480 "available for I<in_fd>."
10481 msgstr ""
10482 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10483 "が I<in_fd> では利用できない。"
10484
10485 #. type: Plain text
10486 #: build/C/man2/sendfile.2:138
10487 msgid "Unspecified error while reading from I<in_fd>."
10488 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10489
10490 #. type: Plain text
10491 #: build/C/man2/sendfile.2:142
10492 msgid "Insufficient memory to read from I<in_fd>."
10493 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10494
10495 #. type: Plain text
10496 #: build/C/man2/sendfile.2:148
10497 msgid ""
10498 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10499 "sendfile.hE<gt>> is present since glibc 2.1."
10500 msgstr ""
10501 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10502 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10503
10504 #. type: Plain text
10505 #: build/C/man2/sendfile.2:150
10506 msgid "Not specified in POSIX.1-2001, or other standards."
10507 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10508
10509 #. type: Plain text
10510 #: build/C/man2/sendfile.2:155
10511 msgid ""
10512 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10513 "prototypes.  It should not be used in portable programs."
10514 msgstr ""
10515 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10516 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10517
10518 #. type: Plain text
10519 #: build/C/man2/sendfile.2:165
10520 msgid ""
10521 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10522 "need to send some header data in front of the file contents, you will find "
10523 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10524 "minimize the number of packets and to tune performance."
10525 msgstr ""
10526 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10527 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10528 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10529 "いいだろう。"
10530
10531 #. type: Plain text
10532 #: build/C/man2/sendfile.2:171
10533 msgid ""
10534 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10535 "B<sendfile>()  changed the current offset of that file."
10536 msgstr ""
10537 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10538 "き、\n"
10539 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10540
10541 #. type: Plain text
10542 #: build/C/man2/sendfile.2:183
10543 msgid ""
10544 "The original Linux B<sendfile>()  system call was not designed to handle "
10545 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10546 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10547 "function transparently deals with the kernel differences."
10548 msgstr ""
10549 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10550 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10551 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10552 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10553
10554 #. type: Plain text
10555 #: build/C/man2/sendfile.2:192
10556 msgid ""
10557 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10558 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10559 msgstr ""
10560 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10561 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10562
10563 #. type: Plain text
10564 #: build/C/man2/sendfile.2:197
10565 msgid ""
10566 "The Linux-specific B<splice>(2)  call supports transferring data between "
10567 "arbitrary files (e.g., a pair of sockets)."
10568 msgstr ""
10569 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10570 "ソケット同士) でのデータ転送をサポートしている。"
10571
10572 #. type: Plain text
10573 #: build/C/man2/sendfile.2:202
10574 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10575 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10576
10577 #. type: TH
10578 #: build/C/man2/set_tid_address.2:25
10579 #, no-wrap
10580 msgid "SET_TID_ADDRESS"
10581 msgstr "SET_TID_ADDRESS"
10582
10583 #. type: TH
10584 #: build/C/man2/set_tid_address.2:25
10585 #, no-wrap
10586 msgid "2012-07-19"
10587 msgstr "2012-07-19"
10588
10589 #. type: Plain text
10590 #: build/C/man2/set_tid_address.2:28
10591 msgid "set_tid_address - set pointer to thread ID"
10592 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10593
10594 #. type: Plain text
10595 #: build/C/man2/set_tid_address.2:31
10596 #, no-wrap
10597 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10598 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10599
10600 #. type: Plain text
10601 #: build/C/man2/set_tid_address.2:33
10602 #, no-wrap
10603 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10604 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10605
10606 #. type: Plain text
10607 #: build/C/man2/set_tid_address.2:40
10608 msgid ""
10609 "For each process, the kernel maintains two attributes (addresses) called "
10610 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10611 "value NULL by default."
10612 msgstr ""
10613 "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
10614 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10615
10616 #. type: TP
10617 #: build/C/man2/set_tid_address.2:40
10618 #, no-wrap
10619 msgid "I<set_child_tid>"
10620 msgstr "I<set_child_tid>"
10621
10622 #. type: Plain text
10623 #: build/C/man2/set_tid_address.2:51
10624 msgid ""
10625 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10626 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10627 "that system call."
10628 msgstr ""
10629 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10630 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
10631 "で渡された値に設定される。"
10632
10633 #. type: Plain text
10634 #: build/C/man2/set_tid_address.2:56
10635 msgid ""
10636 "When I<set_child_tid> is set, the very first thing the new process does is "
10637 "writing its PID at this address."
10638 msgstr ""
10639 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10640 "のアドレスに自身の PID を書き込むことである。"
10641
10642 #. type: TP
10643 #: build/C/man2/set_tid_address.2:56
10644 #, no-wrap
10645 msgid "I<clear_child_tid>"
10646 msgstr "I<clear_child_tid>"
10647
10648 #. type: Plain text
10649 #: build/C/man2/set_tid_address.2:67
10650 msgid ""
10651 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10652 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10653 "of that system call."
10654 msgstr ""
10655 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
10656 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
10657 "き数で渡された値に設定される。"
10658
10659 #. type: Plain text
10660 #: build/C/man2/set_tid_address.2:74
10661 msgid ""
10662 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10663 "the calling process to I<tidptr>."
10664 msgstr ""
10665 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10666 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10667
10668 #. type: Plain text
10669 #: build/C/man2/set_tid_address.2:82
10670 msgid ""
10671 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10672 "process is sharing memory with other processes or threads, then 0 is written "
10673 "at the address specified in I<clear_child_tid> and the kernel performs the "
10674 "following operation:"
10675 msgstr ""
10676 "I<clear_child_tid> が NULL でないプロセスが終了すると、そのプロセスが他のプロ"
10677 "セスまたはスレッドとメモリを共有していれば、 I<clear_child_tid> で指定された"
10678 "アドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。"
10679
10680 #. type: Plain text
10681 #: build/C/man2/set_tid_address.2:84
10682 #, no-wrap
10683 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10684 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10685
10686 #. type: Plain text
10687 #: build/C/man2/set_tid_address.2:88
10688 msgid ""
10689 "The effect of this operation is to wake a single process that is performing "
10690 "a futex wait on the memory location.  Errors from the futex wake operation "
10691 "are ignored."
10692 msgstr ""
10693 "この処理の結果、このメモリアドレスに対する futex wait を実行しているプロセス"
10694 "を一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
10695
10696 #. type: Plain text
10697 #: build/C/man2/set_tid_address.2:91
10698 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10699 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10700
10701 #. type: Plain text
10702 #: build/C/man2/set_tid_address.2:94
10703 msgid "B<set_tid_address>()  always succeeds."
10704 msgstr "B<set_tid_address>()  は常に成功する。"
10705
10706 #. type: Plain text
10707 #: build/C/man2/set_tid_address.2:97
10708 msgid ""
10709 "This call is present since Linux 2.5.48.  Details as given here are valid "
10710 "since Linux 2.5.49."
10711 msgstr ""
10712 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10713 "2.5.49 以降で有効である。"
10714
10715 #. type: Plain text
10716 #: build/C/man2/set_tid_address.2:102
10717 msgid "B<clone>(2), B<futex>(2)"
10718 msgstr "B<clone>(2), B<futex>(2)"
10719
10720 #. type: TH
10721 #: build/C/man2/splice.2:26
10722 #, no-wrap
10723 msgid "SPLICE"
10724 msgstr "SPLICE"
10725
10726 #. type: TH
10727 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10728 #, no-wrap
10729 msgid "2012-05-04"
10730 msgstr "2012-05-04"
10731
10732 #. type: Plain text
10733 #: build/C/man2/splice.2:29
10734 msgid "splice - splice data to/from a pipe"
10735 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10736
10737 #. type: Plain text
10738 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10739 #, no-wrap
10740 msgid ""
10741 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10742 "B<#include E<lt>fcntl.hE<gt>>\n"
10743 msgstr ""
10744 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10745 "B<#include E<lt>fcntl.hE<gt>>\n"
10746
10747 #.  Return type was long before glibc 2.7
10748 #. type: Plain text
10749 #: build/C/man2/splice.2:38
10750 #, no-wrap
10751 msgid ""
10752 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10753 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10754 msgstr ""
10755 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10756 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10757
10758 #. type: Plain text
10759 #: build/C/man2/splice.2:50
10760 msgid ""
10761 "B<splice>()  moves data between two file descriptors without copying between "
10762 "kernel address space and user address space.  It transfers up to I<len> "
10763 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10764 "I<fd_out>, where one of the descriptors must refer to a pipe."
10765 msgstr ""
10766 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10767 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10768 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10769 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10770 "ならない。"
10771
10772 #. type: Plain text
10773 #: build/C/man2/splice.2:80
10774 msgid ""
10775 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10776 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10777 "starting from the current file offset, and the current file offset is "
10778 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10779 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10780 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10781 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10782 "apply for I<fd_out> and I<off_out>."
10783 msgstr ""
10784 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10785 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10786 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10787 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10788 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10789 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10790 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10791 "る。"
10792
10793 #. type: Plain text
10794 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10795 msgid ""
10796 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10797 "or more of the following values:"
10798 msgstr ""
10799 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10800
10801 #. type: TP
10802 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10803 #, no-wrap
10804 msgid "B<SPLICE_F_MOVE>"
10805 msgstr "B<SPLICE_F_MOVE>"
10806
10807 #. type: Plain text
10808 #: build/C/man2/splice.2:98
10809 msgid ""
10810 "Attempt to move pages instead of copying.  This is only a hint to the "
10811 "kernel: pages may still be copied if the kernel cannot move the pages from "
10812 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10813 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10814 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10815 "correct implementation may be restored."
10816 msgstr ""
10817 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10818 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10819 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10820 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10821 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10822 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10823
10824 #. type: TP
10825 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10826 #, no-wrap
10827 msgid "B<SPLICE_F_NONBLOCK>"
10828 msgstr "B<SPLICE_F_NONBLOCK>"
10829
10830 #. type: Plain text
10831 #: build/C/man2/splice.2:107
10832 msgid ""
10833 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10834 "B<splice>()  may nevertheless block because the file descriptors that are "
10835 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10836 msgstr ""
10837 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10838 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10839 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10840 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10841 "らである。"
10842
10843 #. type: TP
10844 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10845 #, no-wrap
10846 msgid "B<SPLICE_F_MORE>"
10847 msgstr "B<SPLICE_F_MORE>"
10848
10849 #. type: Plain text
10850 #: build/C/man2/splice.2:121
10851 msgid ""
10852 "More data will be coming in a subsequent splice.  This is a helpful hint "
10853 "when the I<fd_out> refers to a socket (see also the description of "
10854 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10855 msgstr ""
10856 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10857 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10858 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10859
10860 #. type: TP
10861 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10862 #, no-wrap
10863 msgid "B<SPLICE_F_GIFT>"
10864 msgstr "B<SPLICE_F_GIFT>"
10865
10866 #. type: Plain text
10867 #: build/C/man2/splice.2:127
10868 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10869 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10870
10871 #. type: Plain text
10872 #: build/C/man2/splice.2:136
10873 msgid ""
10874 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10875 "to or from the pipe.  A return value of 0 means that there was no data to "
10876 "transfer, and it would not make sense to block, because there are no writers "
10877 "connected to the write end of the pipe referred to by I<fd_in>."
10878 msgstr ""
10879 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10880 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10881 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10882 "れている者がいないからである。"
10883
10884 #. type: Plain text
10885 #: build/C/man2/splice.2:142
10886 msgid ""
10887 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10888 msgstr ""
10889 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10890 "る。"
10891
10892 #. type: Plain text
10893 #: build/C/man2/splice.2:147
10894 msgid ""
10895 "One or both file descriptors are not valid, or do not have proper read-write "
10896 "mode."
10897 msgstr ""
10898 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10899 "write モードではない。"
10900
10901 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10902 #.  splice() in append mode was broken
10903 #. type: Plain text
10904 #: build/C/man2/splice.2:155
10905 msgid ""
10906 "Target file system doesn't support splicing; target file is opened in append "
10907 "mode; neither of the descriptors refers to a pipe; or offset given for "
10908 "nonseekable device."
10909 msgstr ""
10910 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10911 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10912 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10913
10914 #. type: Plain text
10915 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10916 #: build/C/man2/vmsplice.2:138
10917 msgid "Out of memory."
10918 msgstr "メモリ不足。"
10919
10920 #. type: TP
10921 #: build/C/man2/splice.2:158
10922 #, no-wrap
10923 msgid "B<ESPIPE>"
10924 msgstr "B<ESPIPE>"
10925
10926 #. type: Plain text
10927 #: build/C/man2/splice.2:165
10928 msgid ""
10929 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10930 "descriptor refers to a pipe."
10931 msgstr ""
10932 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10933 "クリプタが パイプを参照している。"
10934
10935 #. type: Plain text
10936 #: build/C/man2/splice.2:170
10937 msgid ""
10938 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10939 "was added to glibc in version 2.5."
10940 msgstr ""
10941 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10942 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10943
10944 #. type: Plain text
10945 #: build/C/man2/splice.2:182
10946 msgid ""
10947 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10948 "user-space programs with full control over an arbitrary kernel buffer, "
10949 "implemented within the kernel using the same type of buffer that is used for "
10950 "a pipe.  In overview, these system calls perform the following tasks:"
10951 msgstr ""
10952 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10953 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10954 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10955 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10956
10957 #. type: TP
10958 #: build/C/man2/splice.2:182
10959 #, no-wrap
10960 msgid "B<splice>()"
10961 msgstr "B<splice>()"
10962
10963 #. type: Plain text
10964 #: build/C/man2/splice.2:186
10965 msgid ""
10966 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10967 "or from one buffer to another."
10968 msgstr ""
10969 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10970 "から別のバッファへの、データ移動を行う。"
10971
10972 #. type: TP
10973 #: build/C/man2/splice.2:186
10974 #, no-wrap
10975 msgid "B<tee>(2)"
10976 msgstr "B<tee>(2)"
10977
10978 #. type: Plain text
10979 #: build/C/man2/splice.2:189
10980 msgid "\"copies\" the data from one buffer to another."
10981 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10982
10983 #. type: TP
10984 #: build/C/man2/splice.2:189
10985 #, no-wrap
10986 msgid "B<vmsplice>(2)"
10987 msgstr "B<vmsplice>(2)"
10988
10989 #. type: Plain text
10990 #: build/C/man2/splice.2:192
10991 msgid "\"copies\" data from user space into the buffer."
10992 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10993
10994 #.  Linus: Now, imagine using the above in a media server, for example.
10995 #.  Let's say that a year or two has passed, so that the video drivers
10996 #.  have been updated to be able to do the splice thing, and what can
10997 #.  you do? You can:
10998 #.  - splice from the (mpeg or whatever - let's just assume that the video
10999 #.    input is either digital or does the encoding on its own - like they
11000 #.    pretty much all do) video input into a pipe (remember: no copies - the
11001 #.    video input will just DMA directly into memory, and splice will just
11002 #.    set up the pages in the pipe buffer)
11003 #.  - tee that pipe to split it up
11004 #.  - splice one end to a file (ie "save the compressed stream to disk")
11005 #.  - splice the other end to a real-time video decoder window for your
11006 #.    real-time viewing pleasure.
11007 #.  Linus: Now, the advantage of splice()/tee() is that you can
11008 #.  do zero-copy movement of data, and unlike sendfile() you can
11009 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
11010 #.  than just sending the data to somebody else: you can duplicate
11011 #.  the data and choose to forward it to two or more different
11012 #.  users - for things like logging etc.).
11013 #. type: Plain text
11014 #: build/C/man2/splice.2:223
11015 msgid ""
11016 "Though we talk of copying, actual copies are generally avoided.  The kernel "
11017 "does this by implementing a pipe buffer as a set of reference-counted "
11018 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
11019 "in a buffer by creating new pointers (for the output buffer) referring to "
11020 "the pages, and increasing the reference counts for the pages: only pointers "
11021 "are copied, not the pages of the buffer."
11022 msgstr ""
11023 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
11024 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
11025 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
11026 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
11027 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
11028 "タだけがコピーされ、 バッファのページはコピーされない。"
11029
11030 #. type: Plain text
11031 #: build/C/man2/splice.2:226
11032 msgid "See B<tee>(2)."
11033 msgstr "B<tee>(2)  参照。"
11034
11035 #. type: Plain text
11036 #: build/C/man2/splice.2:230
11037 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
11038 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
11039
11040 #. type: TH
11041 #: build/C/man2/tee.2:26
11042 #, no-wrap
11043 msgid "TEE"
11044 msgstr "TEE"
11045
11046 #. type: Plain text
11047 #: build/C/man2/tee.2:29
11048 msgid "tee - duplicating pipe content"
11049 msgstr "tee - パイプの中身を複製する"
11050
11051 #. type: Plain text
11052 #: build/C/man2/tee.2:36
11053 #, no-wrap
11054 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"
11055 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"
11056
11057 #.  Example programs http://brick.kernel.dk/snaps
11058 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
11059 #.  (again, incrementing their reference count, not copying the data) from
11060 #.  one pipe to two other pipes.
11061 #. type: Plain text
11062 #: build/C/man2/tee.2:56
11063 msgid ""
11064 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
11065 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
11066 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
11067 "therefore, that data can be copied by a subsequent B<splice>(2)."
11068 msgstr ""
11069 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
11070 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
11071 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
11072 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
11073
11074 #. type: Plain text
11075 #: build/C/man2/tee.2:62
11076 msgid ""
11077 "I<flags> is a series of modifier flags, which share the name space with "
11078 "B<splice>(2)  and B<vmsplice>(2):"
11079 msgstr ""
11080 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
11081 "名前である。"
11082
11083 #. type: Plain text
11084 #: build/C/man2/tee.2:68
11085 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
11086 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
11087
11088 #.  Not used for vmsplice
11089 #.  May be in the future -- therefore EAGAIN
11090 #. type: Plain text
11091 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
11092 msgid "Do not block on I/O; see B<splice>(2)  for further details."
11093 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
11094
11095 #. type: Plain text
11096 #: build/C/man2/tee.2:79
11097 msgid ""
11098 "Currently has no effect for B<tee>(), but may be implemented in the future; "
11099 "see B<splice>(2)."
11100 msgstr ""
11101 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
11102 "る。 B<splice>(2)  参照。"
11103
11104 #. type: Plain text
11105 #: build/C/man2/tee.2:85
11106 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
11107 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
11108
11109 #. type: Plain text
11110 #: build/C/man2/tee.2:94
11111 msgid ""
11112 "Upon successful completion, B<tee>()  returns the number of bytes that were "
11113 "duplicated between the input and output.  A return value of 0 means that "
11114 "there was no data to transfer, and it would not make sense to block, because "
11115 "there are no writers connected to the write end of the pipe referred to by "
11116 "I<fd_in>."
11117 msgstr ""
11118 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
11119 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
11120 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
11121 "ている者がいないからである。"
11122
11123 #. type: Plain text
11124 #: build/C/man2/tee.2:100
11125 msgid ""
11126 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
11127 msgstr ""
11128 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
11129
11130 #. type: Plain text
11131 #: build/C/man2/tee.2:111
11132 msgid ""
11133 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
11134 "refer to the same pipe."
11135 msgstr ""
11136 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
11137 "と I<fd_out> が同じパイプを参照している。"
11138
11139 #. type: Plain text
11140 #: build/C/man2/tee.2:119
11141 msgid ""
11142 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
11143 "was added to glibc in version 2.5."
11144 msgstr ""
11145 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11146 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11147
11148 #. type: Plain text
11149 #: build/C/man2/tee.2:130
11150 msgid ""
11151 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
11152 "no real data copying takes place though: under the covers, B<tee>()  assigns "
11153 "data in the output by merely grabbing a reference to the input."
11154 msgstr ""
11155 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
11156 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
11157 "照だけを作成することで出力側にデータを 追加する。"
11158
11159 #. type: Plain text
11160 #: build/C/man2/tee.2:136
11161 msgid ""
11162 "The following example implements a basic B<tee>(1)  program using the B<tee>"
11163 "()  system call."
11164 msgstr ""
11165 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
11166 "ムを実装したものである。"
11167
11168 #. type: Plain text
11169 #: build/C/man2/tee.2:145
11170 #, no-wrap
11171 msgid ""
11172 "#define _GNU_SOURCE\n"
11173 "#include E<lt>fcntl.hE<gt>\n"
11174 "#include E<lt>stdio.hE<gt>\n"
11175 "#include E<lt>stdlib.hE<gt>\n"
11176 "#include E<lt>unistd.hE<gt>\n"
11177 "#include E<lt>errno.hE<gt>\n"
11178 "#include E<lt>limits.hE<gt>\n"
11179 msgstr ""
11180 "#define _GNU_SOURCE\n"
11181 "#include E<lt>fcntl.hE<gt>\n"
11182 "#include E<lt>stdio.hE<gt>\n"
11183 "#include E<lt>stdlib.hE<gt>\n"
11184 "#include E<lt>unistd.hE<gt>\n"
11185 "#include E<lt>errno.hE<gt>\n"
11186 "#include E<lt>limits.hE<gt>\n"
11187
11188 #. type: Plain text
11189 #: build/C/man2/tee.2:151
11190 #, no-wrap
11191 msgid ""
11192 "int\n"
11193 "main(int argc, char *argv[])\n"
11194 "{\n"
11195 "    int fd;\n"
11196 "    int len, slen;\n"
11197 msgstr ""
11198 "int\n"
11199 "main(int argc, char *argv[])\n"
11200 "{\n"
11201 "    int fd;\n"
11202 "    int len, slen;\n"
11203
11204 #. type: Plain text
11205 #: build/C/man2/tee.2:156
11206 #, no-wrap
11207 msgid ""
11208 "    if (argc != 2) {\n"
11209 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
11210 "        exit(EXIT_FAILURE);\n"
11211 "    }\n"
11212 msgstr ""
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
11218 #. type: Plain text
11219 #: build/C/man2/tee.2:162
11220 #, no-wrap
11221 msgid ""
11222 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11223 "    if (fd == -1) {\n"
11224 "        perror(\"open\");\n"
11225 "        exit(EXIT_FAILURE);\n"
11226 "    }\n"
11227 msgstr ""
11228 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11229 "    if (fd == -1) {\n"
11230 "        perror(\"open\");\n"
11231 "        exit(EXIT_FAILURE);\n"
11232 "    }\n"
11233
11234 #. type: Plain text
11235 #: build/C/man2/tee.2:169
11236 #, no-wrap
11237 msgid ""
11238 "    do {\n"
11239 "        /*\n"
11240 "         * tee stdin to stdout.\n"
11241 "         */\n"
11242 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11243 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11244 msgstr ""
11245 "    do {\n"
11246 "        /*\n"
11247 "         * tee stdin to stdout.\n"
11248 "         */\n"
11249 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11250 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11251
11252 #. type: Plain text
11253 #: build/C/man2/tee.2:178
11254 #, no-wrap
11255 msgid ""
11256 "        if (len E<lt> 0) {\n"
11257 "            if (errno == EAGAIN)\n"
11258 "                continue;\n"
11259 "            perror(\"tee\");\n"
11260 "            exit(EXIT_FAILURE);\n"
11261 "        } else\n"
11262 "            if (len == 0)\n"
11263 "                break;\n"
11264 msgstr ""
11265 "        if (len E<lt> 0) {\n"
11266 "            if (errno == EAGAIN)\n"
11267 "                continue;\n"
11268 "            perror(\"tee\");\n"
11269 "            exit(EXIT_FAILURE);\n"
11270 "        } else\n"
11271 "            if (len == 0)\n"
11272 "                break;\n"
11273
11274 #. type: Plain text
11275 #: build/C/man2/tee.2:192
11276 #, no-wrap
11277 msgid ""
11278 "        /*\n"
11279 "         * Consume stdin by splicing it to a file.\n"
11280 "         */\n"
11281 "        while (len E<gt> 0) {\n"
11282 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11283 "                          len, SPLICE_F_MOVE);\n"
11284 "            if (slen E<lt> 0) {\n"
11285 "                perror(\"splice\");\n"
11286 "                break;\n"
11287 "            }\n"
11288 "            len -= slen;\n"
11289 "        }\n"
11290 "    } while (1);\n"
11291 msgstr ""
11292 "        /*\n"
11293 "         * Consume stdin by splicing it to a file.\n"
11294 "         */\n"
11295 "        while (len E<gt> 0) {\n"
11296 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11297 "                          len, SPLICE_F_MOVE);\n"
11298 "            if (slen E<lt> 0) {\n"
11299 "                perror(\"splice\");\n"
11300 "                break;\n"
11301 "            }\n"
11302 "            len -= slen;\n"
11303 "        }\n"
11304 "    } while (1);\n"
11305
11306 #. type: Plain text
11307 #: build/C/man2/tee.2:196
11308 #, no-wrap
11309 msgid ""
11310 "    close(fd);\n"
11311 "    exit(EXIT_SUCCESS);\n"
11312 "}\n"
11313 msgstr ""
11314 "    close(fd);\n"
11315 "    exit(EXIT_SUCCESS);\n"
11316 "}\n"
11317
11318 #. type: Plain text
11319 #: build/C/man2/tee.2:200
11320 msgid "B<splice>(2), B<vmsplice>(2)"
11321 msgstr "B<splice>(2), B<vmsplice>(2)"
11322
11323 #. type: TH
11324 #: build/C/man2/vm86.2:26
11325 #, no-wrap
11326 msgid "VM86"
11327 msgstr "VM86"
11328
11329 #. type: TH
11330 #: build/C/man2/vm86.2:26
11331 #, no-wrap
11332 msgid "2009-02-20"
11333 msgstr "2009-02-20"
11334
11335 #. type: Plain text
11336 #: build/C/man2/vm86.2:29
11337 msgid "vm86old, vm86 - enter virtual 8086 mode"
11338 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11339
11340 #. type: Plain text
11341 #: build/C/man2/vm86.2:31
11342 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11343 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11344
11345 #. type: Plain text
11346 #: build/C/man2/vm86.2:33
11347 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11348 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11349
11350 #. type: Plain text
11351 #: build/C/man2/vm86.2:35
11352 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11353 msgstr ""
11354 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11355
11356 #. type: Plain text
11357 #: build/C/man2/vm86.2:48
11358 msgid ""
11359 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11360 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11361 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11362 "and 1.1.9."
11363 msgstr ""
11364 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11365 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11366 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11367
11368 #. type: Plain text
11369 #: build/C/man2/vm86.2:52
11370 msgid ""
11371 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11372 "literature), and are used by B<dosemu>."
11373 msgstr ""
11374 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11375 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11376
11377 #. type: Plain text
11378 #: build/C/man2/vm86.2:54
11379 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11380 msgstr ""
11381 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11382 "ある。"
11383
11384 #. type: Plain text
11385 #: build/C/man2/vm86.2:64
11386 msgid ""
11387 "This return value is specific to i386 and indicates a problem with getting "
11388 "user-space data."
11389 msgstr ""
11390 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11391 "あったことを示す。"
11392
11393 #. type: Plain text
11394 #: build/C/man2/vm86.2:68
11395 msgid ""
11396 "This return value indicates the call is not implemented on the present "
11397 "architecture."
11398 msgstr ""
11399 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11400
11401 #. type: Plain text
11402 #: build/C/man2/vm86.2:73
11403 msgid ""
11404 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11405 "should exist only within vm86 mode itself.)"
11406 msgstr ""
11407 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11408 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11409 "い。)"
11410
11411 #. type: Plain text
11412 #: build/C/man2/vm86.2:76
11413 msgid ""
11414 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11415 "used in programs intended to be portable."
11416 msgstr ""
11417 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11418 "したプログラムでは使用すべきでない。"
11419
11420 #. type: TH
11421 #: build/C/man2/vmsplice.2:26
11422 #, no-wrap
11423 msgid "VMSPLICE"
11424 msgstr "VMSPLICE"
11425
11426 #. type: Plain text
11427 #: build/C/man2/vmsplice.2:29
11428 msgid "vmsplice - splice user pages into a pipe"
11429 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11430
11431 #. type: Plain text
11432 #: build/C/man2/vmsplice.2:34
11433 #, no-wrap
11434 msgid ""
11435 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11436 "B<#include E<lt>fcntl.hE<gt>>\n"
11437 "B<#include E<lt>sys/uio.hE<gt>>\n"
11438 msgstr ""
11439 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11440 "B<#include E<lt>fcntl.hE<gt>>\n"
11441 "B<#include E<lt>sys/uio.hE<gt>>\n"
11442
11443 #. type: Plain text
11444 #: build/C/man2/vmsplice.2:37
11445 #, no-wrap
11446 msgid ""
11447 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11448 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11449 msgstr ""
11450 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11451 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11452
11453 #.  Linus: vmsplice() system call to basically do a "write to
11454 #.  the buffer", but using the reference counting and VM traversal
11455 #.  to actually fill the buffer. This means that the user needs to
11456 #.  be careful not to reuse the user-space buffer it spliced into
11457 #.  the kernel-space one (contrast this to "write()", which copies
11458 #.  the actual data, and you can thus reuse the buffer immediately
11459 #.  after a successful write), but that is often easy to do.
11460 #. type: Plain text
11461 #: build/C/man2/vmsplice.2:57
11462 msgid ""
11463 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11464 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11465 "pipe."
11466 msgstr ""
11467 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11468 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11469 "ばならない。"
11470
11471 #. type: Plain text
11472 #: build/C/man2/vmsplice.2:64
11473 msgid ""
11474 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11475 "I<E<lt>sys/uio.hE<gt>>:"
11476 msgstr ""
11477 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11478 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11479
11480 #. type: Plain text
11481 #: build/C/man2/vmsplice.2:71
11482 #, no-wrap
11483 msgid ""
11484 "struct iovec {\n"
11485 "    void  *iov_base;            /* Starting address */\n"
11486 "    size_t iov_len;             /* Number of bytes */\n"
11487 "};\n"
11488 msgstr ""
11489 "struct iovec {\n"
11490 "    void  *iov_base;            /* 開始アドレス */\n"
11491 "    size_t iov_len;             /* バイト数 */\n"
11492 "};\n"
11493
11494 #. type: Plain text
11495 #: build/C/man2/vmsplice.2:84
11496 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11497 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11498
11499 #. type: Plain text
11500 #: build/C/man2/vmsplice.2:97
11501 msgid ""
11502 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11503 "future; see B<splice>(2)."
11504 msgstr ""
11505 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11506 "がある。 B<splice>(2)  参照。"
11507
11508 #.  FIXME Explain the following line in a little more detail:
11509 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11510 #. type: Plain text
11511 #: build/C/man2/vmsplice.2:113
11512 msgid ""
11513 "The user pages are a gift to the kernel.  The application may not modify "
11514 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11515 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11516 "successfully move the pages; if this flag is not specified, then a "
11517 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11518 "also be properly page aligned, both in memory and length."
11519 msgstr ""
11520 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11521 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11522 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11523 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11524 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11525 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11526 "なければならず、 長さもページ境界の倍数でなければならない。"
11527
11528 #. type: Plain text
11529 #: build/C/man2/vmsplice.2:122
11530 msgid ""
11531 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11532 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11533 "is set to indicate the error."
11534 msgstr ""
11535 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11536 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11537
11538 #. type: Plain text
11539 #: build/C/man2/vmsplice.2:127
11540 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11541 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11542
11543 #. type: Plain text
11544 #: build/C/man2/vmsplice.2:135
11545 msgid ""
11546 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11547 "B<SPLICE_F_GIFT> set."
11548 msgstr ""
11549 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11550 "設定されたがメモリがページ境界にあっていない。"
11551
11552 #. type: Plain text
11553 #: build/C/man2/vmsplice.2:143
11554 msgid ""
11555 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11556 "support was added to glibc in version 2.5."
11557 msgstr ""
11558 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11559 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11560
11561 #. type: Plain text
11562 #: build/C/man2/vmsplice.2:154
11563 msgid ""
11564 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11565 "it comes to limitations on number of segments being passed in.  This limit "
11566 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11567 "writing, that limit is 1024."
11568 msgstr ""
11569 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11570 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11571 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11572 "は 1024 である。"
11573
11574 #. type: Plain text
11575 #: build/C/man2/vmsplice.2:157
11576 msgid "B<splice>(2), B<tee>(2)"
11577 msgstr "B<splice>(2), B<tee>(2)"
11578
11579 #~ msgid "2013-03-15"
11580 #~ msgstr "2013-03-15"
11581
11582 #~ msgid "B<futex>(7)"
11583 #~ msgstr "B<futex>(7)"
11584
11585 #, fuzzy
11586 #~| msgid "The I<subcmd> value is one of the following:"
11587 #~ msgid "The I<flags> argument takes one of the following values:"
11588 #~ msgstr "I<subcmd> の値は以下のいずれかである"
11589
11590 #~ msgid ""
11591 #~ "Depending on which operation was executed, the returned value for a "
11592 #~ "successful call can have differing meanings."
11593 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11594
11595 #~ msgid ""
11596 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11597 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11598 #~ "was not equal to the expected value, the operation fails with the error "
11599 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11600 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11601 #~ msgstr ""
11602 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11603 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11604 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11605 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11606 #~ "敗する。"
11607
11608 #~ msgid "An operation was not defined or error in page alignment."
11609 #~ msgstr ""
11610 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11611
11612 #, fuzzy
11613 #~| msgid ""
11614 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11615 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11616 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11617 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11618 #~| "giving the parent a chance to gain control before the new program begins "
11619 #~| "execution.  A process probably shouldn't make this request if its parent "
11620 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11621 #~ msgid ""
11622 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11623 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11624 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11625 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11626 #~ "be sent to it, giving the parent a chance to gain control before the new "
11627 #~ "program begins execution.  A process probably shouldn't make this request "
11628 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11629 #~ "are ignored.)"
11630 #~ msgstr ""
11631 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11632 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11633 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11634 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11635 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11636 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11637 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11638 #~ "は無視される。)"
11639
11640 #~ msgid ""
11641 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11642 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11643 #~ msgstr ""
11644 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11645 #~ "\\ 8> で子プロセスの動作を停止させる。"
11646
11647 #~ msgid ""
11648 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11649 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11650 #~ msgstr ""
11651 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11652 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11653
11654 #~ msgid ""
11655 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11656 #~ "of the calling process; the behavior of the child is as if it had done a "
11657 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11658 #~ "the child process for most purposes (e.g., it will receive notification "
11659 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11660 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11661 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11662 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11663 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11664 #~ msgstr ""
11665 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11666 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11667 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11668 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11669 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11670 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11671 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11672 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11673 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11674
11675 #~ msgid ""
11676 #~ "Tracing causes a few subtle differences in the semantics of traced "
11677 #~ "processes.  For example, if a process is attached to with "
11678 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11679 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11680 #~ "effectively simulate this notification."
11681 #~ msgstr ""
11682 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11683 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11684 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11685 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11686
11687 #~ msgid ""
11688 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11689 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11690 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11691 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11692 #~ "child process after receiving one of these messages."
11693 #~ msgstr ""
11694 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11695 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11696 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11697 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11698 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11699 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11700
11701 #~ msgid ""
11702 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11703 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11704 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11705 #~ "and uniform way."
11706 #~ msgstr ""
11707 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11708 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11709 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11710 #~ "るものとなっている。"
11711
11712 #~ msgid ""
11713 #~ "The second argument I<special> is the block special device these quota "
11714 #~ "apply to.  It must be mounted."
11715 #~ msgstr ""
11716 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11717 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11718
11719 #~ msgid ""
11720 #~ "The third argument I<id> is the user or group ID these quota apply to "
11721 #~ "(when relevant)."
11722 #~ msgstr ""
11723 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11724 #~ "グループの ID を指定する。"
11725
11726 #~ msgid ""
11727 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11728 #~ "on the command."
11729 #~ msgstr ""
11730 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11731 #~ "指定する。"
11732
11733 #~ msgid ""
11734 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11735 #~ "containing the quota for the file system."
11736 #~ msgstr ""
11737 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11738 #~ "記録されているファイルの パス名を指定する。"
11739
11740 #~ msgid "Disable quota."
11741 #~ msgstr "quota を無効にする。"
11742
11743 #~ msgid "Set limits and current usage; I<addr> is as before."
11744 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11745
11746 #~ msgid "Set limits; I<addr> is as before."
11747 #~ msgstr "制限値を設定する; I<addr> は同上。"
11748
11749 #~ msgid "Set usage."
11750 #~ msgstr "使用量を設定する。"
11751
11752 #~ msgid "Sync disk copy of a file system's quota."
11753 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11754
11755 #~ msgid "Get collected stats."
11756 #~ msgstr "収集された統計を取得する。"
11757
11758 #~ msgid ""
11759 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11760 #~ "I<errno> is set appropriately."
11761 #~ msgstr ""
11762 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11763 #~ "I<errno> が適切な値に設定される。"
11764
11765 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11766 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11767
11768 #~ msgid "Bad I<addr> value."
11769 #~ msgstr "I<addr> の値に誤りがある。"
11770
11771 #~ msgid ""
11772 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11773 #~ msgstr ""
11774 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11775 #~ "付からなかった。"
11776
11777 #~ msgid "Cannot read or write the quota file."
11778 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11779
11780 #~ msgid "Too many open files: cannot open quota file."
11781 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11782
11783 #~ msgid "I<special> cannot be found in the mount table."
11784 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11785
11786 #~ msgid "The kernel was compiled without quota support."
11787 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11788
11789 #~ msgid ""
11790 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11791 #~ "asked for another I<id> than that of the process itself, or anything "
11792 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11793 #~ msgstr ""
11794 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11795 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11796 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11797
11798 #~ msgid ""
11799 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11800 #~ "for a file system that didn't have quota enabled."
11801 #~ msgstr ""
11802 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11803 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"