OSDN Git Service

195891a4ab8c578890ca7ea3a683251eb763886a
[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-03-22 01:05+0900\n"
10 "PO-Revision-Date: 2013-03-24 20:58+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 "Sub functions 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:1804
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:1713 build/C/man2/sendfile.2:108
215 #: build/C/man2/set_tid_address.2:88 build/C/man2/splice.2:127
216 #: build/C/man2/tee.2:85 build/C/man2/vm86.2:52 build/C/man2/vmsplice.2:113
217 #, no-wrap
218 msgid "RETURN VALUE"
219 msgstr "返り値"
220
221 #. type: Plain text
222 #: build/C/man2/arch_prctl.2:88
223 msgid ""
224 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
225 "I<errno> is set to indicate the error."
226 msgstr ""
227 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
228 "I<errno> をエラーを示す値に設定する。"
229
230 #. type: SH
231 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
232 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
233 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
234 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
235 #: build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64
236 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
237 #: build/C/man2/ptrace.2:1727 build/C/man2/quotactl.2:427
238 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
239 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
240 #: build/C/man2/vmsplice.2:122
241 #, no-wrap
242 msgid "ERRORS"
243 msgstr "エラー"
244
245 #. type: TP
246 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
247 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
248 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
249 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1731
250 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
251 #: build/C/man2/vm86.2:58
252 #, no-wrap
253 msgid "B<EFAULT>"
254 msgstr "B<EFAULT>"
255
256 #. type: Plain text
257 #: build/C/man2/arch_prctl.2:93
258 msgid ""
259 "I<addr> points to an unmapped address or is outside the process address "
260 "space."
261 msgstr ""
262 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
263 "にある。"
264
265 #. type: TP
266 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
267 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
268 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
269 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811
270 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
271 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
272 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1742
273 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
274 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
275 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
276 #, no-wrap
277 msgid "B<EINVAL>"
278 msgstr "B<EINVAL>"
279
280 #. type: Plain text
281 #: build/C/man2/arch_prctl.2:97
282 msgid "I<code> is not a valid subcommand."
283 msgstr "I<code> が有効なサブコマンドでない。"
284
285 #. type: TP
286 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
287 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
288 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
289 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1752
290 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
291 #, no-wrap
292 msgid "B<EPERM>"
293 msgstr "B<EPERM>"
294
295 #.  .SH AUTHOR
296 #.  Man page written by Andi Kleen.
297 #. type: Plain text
298 #: build/C/man2/arch_prctl.2:103
299 msgid "I<addr> is outside the process address space."
300 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
301
302 #. type: SH
303 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
304 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
305 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
306 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
307 #: build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829
308 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
309 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
310 #: build/C/man2/ptrace.2:1770 build/C/man2/sendfile.2:148
311 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
312 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
313 #, no-wrap
314 msgid "CONFORMING TO"
315 msgstr "準拠"
316
317 #. type: Plain text
318 #: build/C/man2/arch_prctl.2:107
319 msgid ""
320 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
321 "programs intended to be portable."
322 msgstr ""
323 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
324 "うべきでない。"
325
326 #. type: SH
327 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
328 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
329 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
330 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834
331 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
332 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1772
333 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
334 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
335 #, no-wrap
336 msgid "NOTES"
337 msgstr "注意"
338
339 #. type: Plain text
340 #: build/C/man2/arch_prctl.2:110
341 msgid ""
342 "B<arch_prctl>()  is only supported on Linux/x86-64 for 64-bit programs "
343 "currently."
344 msgstr ""
345 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
346 "ポートされている。"
347
348 #. type: Plain text
349 #: build/C/man2/arch_prctl.2:112
350 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
351 msgstr ""
352 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
353 "される。"
354
355 #. type: Plain text
356 #: build/C/man2/arch_prctl.2:115
357 msgid "B<ARCH_SET_GS> is disabled in some kernels."
358 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
359
360 #. type: Plain text
361 #: build/C/man2/arch_prctl.2:130
362 msgid ""
363 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
364 "faster alternative to set a 32-bit base using a segment selector by setting "
365 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
366 "call in kernel 2.5 or later.  B<arch_prctl>()  is only needed when you want "
367 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
368 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
369 msgstr ""
370 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
371 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
372 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
373 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
374 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
375 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
376
377 #. type: Plain text
378 #: build/C/man2/arch_prctl.2:135
379 msgid ""
380 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
381 "have to declare it yourself for now.  This may be fixed in future glibc "
382 "versions."
383 msgstr ""
384 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
385 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
386 "ジョンで修正されるかもしれない。"
387
388 #. type: Plain text
389 #: build/C/man2/arch_prctl.2:138
390 msgid "I<FS> may be already used by the threading library."
391 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
392
393 #. type: SH
394 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
395 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
396 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
397 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112
398 #: build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205
399 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
400 #: build/C/man2/ptrace.2:1926 build/C/man2/quotactl.2:507
401 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
402 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
403 #: build/C/man2/vmsplice.2:154
404 #, no-wrap
405 msgid "SEE ALSO"
406 msgstr "関連項目"
407
408 #. type: Plain text
409 #: build/C/man2/arch_prctl.2:143
410 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
411 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412
413 #. type: Plain text
414 #: build/C/man2/arch_prctl.2:145
415 msgid "AMD X86-64 Programmer's manual"
416 msgstr "AMD X86-64 Programmer's manual"
417
418 #. type: SH
419 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325
420 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
421 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
422 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
423 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114
424 #: build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209
425 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
426 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1940
427 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
428 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
429 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
430 #, no-wrap
431 msgid "COLOPHON"
432 msgstr "この文書について"
433
434 #. type: Plain text
435 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332
436 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
437 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
438 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
439 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121
440 #: build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216
441 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
442 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1947
443 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
444 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
445 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
446 msgid ""
447 "This page is part of release 3.50 of the Linux I<man-pages> project.  A "
448 "description of the project, and information about reporting bugs, can be "
449 "found at http://www.kernel.org/doc/man-pages/."
450 msgstr ""
451 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.50 の一部\n"
452 "である。プロジェクトの説明とバグ報告に関する情報は\n"
453 "http://www.kernel.org/doc/man-pages/ に書かれている。"
454
455 #. type: TH
456 #: build/C/man2/futex.2:53
457 #, no-wrap
458 msgid "FUTEX"
459 msgstr "FUTEX"
460
461 #. type: TH
462 #: build/C/man2/futex.2:53
463 #, no-wrap
464 msgid "2013-03-15"
465 msgstr "2013-03-15"
466
467 #. type: Plain text
468 #: build/C/man2/futex.2:56
469 msgid "futex - fast user-space locking"
470 msgstr "futex - 高速ユーザ空間ロック"
471
472 #. type: Plain text
473 #: build/C/man2/futex.2:61
474 #, no-wrap
475 msgid ""
476 "B<#include E<lt>linux/futex.hE<gt>>\n"
477 "B<#include E<lt>sys/time.hE<gt>>\n"
478 msgstr ""
479 "B<#include E<lt>linux/futex.hE<gt>>\n"
480 "B<#include E<lt>sys/time.hE<gt>>\n"
481
482 #. type: Plain text
483 #: build/C/man2/futex.2:64
484 #, no-wrap
485 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
486 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
487
488 #.  int *? void *? u32 *?
489 #. type: Plain text
490 #: build/C/man2/futex.2:67
491 #, no-wrap
492 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
493 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
494
495 #. type: Plain text
496 #: build/C/man2/futex.2:84
497 msgid ""
498 "The B<futex>()  system call provides a method for a program to wait for a "
499 "value at a given address to change, and a method to wake up anyone waiting "
500 "on a particular address (while the addresses for the same memory in separate "
501 "processes may not be equal, the kernel maps them internally so the same "
502 "memory mapped in different locations will correspond for B<futex>()  "
503 "calls).  This system call is typically used to implement the contended case "
504 "of a lock in shared memory, as described in B<futex>(7)."
505 msgstr ""
506 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
507 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
508 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
509 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
510 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
511 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
512 "る。"
513
514 #. type: Plain text
515 #: build/C/man2/futex.2:91
516 msgid ""
517 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
518 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
519 "mean putting the calling process to sleep or, conversely, waking a waiting "
520 "process."
521 msgstr ""
522 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
523 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
524 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
525 "味する。"
526
527 #. type: Plain text
528 #: build/C/man2/futex.2:98
529 msgid ""
530 "Callers of this function are expected to adhere to the semantics as set out "
531 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
532 "instructions, this in turn probably means that most users will in fact be "
533 "library authors and not general application developers."
534 msgstr ""
535 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
536 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
537 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
538 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
539 "る。"
540
541 #. type: Plain text
542 #: build/C/man2/futex.2:106
543 msgid ""
544 "The I<uaddr> argument needs to point to an aligned integer which stores the "
545 "counter.  The operation to execute is passed via the I<op> argument, along "
546 "with a value I<val>."
547 msgstr ""
548 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
549 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
550 "渡される。"
551
552 #. type: Plain text
553 #: build/C/man2/futex.2:108
554 msgid "Five operations are currently defined:"
555 msgstr "現在のところ 5 つの操作が定義されている:"
556
557 #. type: TP
558 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
559 #, no-wrap
560 msgid "B<FUTEX_WAIT>"
561 msgstr "B<FUTEX_WAIT>"
562
563 #. type: Plain text
564 #: build/C/man2/futex.2:126
565 msgid ""
566 "This operation atomically verifies that the futex address I<uaddr> still "
567 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
568 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
569 "minimum duration of the wait, which is infinite otherwise.  The arguments "
570 "I<uaddr2> and I<val3> are ignored."
571 msgstr ""
572 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
573 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
574 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
575 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
576 "I<uaddr2> と I<val3> は無視される。"
577
578 #. type: Plain text
579 #: build/C/man2/futex.2:134
580 msgid ""
581 "For B<futex>(7), this call is executed if decrementing the count gave a "
582 "negative value (indicating contention), and will sleep until another process "
583 "releases the futex and executes the B<FUTEX_WAKE> operation."
584 msgstr ""
585 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
586 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
587 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
588
589 #. type: TP
590 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
591 #, no-wrap
592 msgid "B<FUTEX_WAKE>"
593 msgstr "B<FUTEX_WAKE>"
594
595 #. type: Plain text
596 #: build/C/man2/futex.2:145
597 msgid ""
598 "This operation wakes at most I<val> processes waiting on this futex address "
599 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
600 "I<val3> are ignored."
601 msgstr ""
602 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
603 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
604 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
605
606 #. type: Plain text
607 #: build/C/man2/futex.2:151
608 msgid ""
609 "For B<futex>(7), this is executed if incrementing the count showed that "
610 "there were waiters, once the futex value has been set to 1 (indicating that "
611 "it is available)."
612 msgstr ""
613 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
614 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
615 "場合に実行される。"
616
617 #. type: TP
618 #: build/C/man2/futex.2:151
619 #, no-wrap
620 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
621 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
622
623 #.  , suitable for .BR poll (2).
624 #. type: Plain text
625 #: build/C/man2/futex.2:167
626 msgid ""
627 "To support asynchronous wakeups, this operation associates a file descriptor "
628 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
629 "receive the signal number that was passed in I<val>.  The calling process "
630 "must close the returned file descriptor after use.  The arguments "
631 "I<timeout>, I<uaddr2> and I<val3> are ignored."
632 msgstr ""
633 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
634 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
635 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
636 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
637 "I<uaddr2>, I<val3> は無視される。"
638
639 #. type: Plain text
640 #: build/C/man2/futex.2:172
641 msgid ""
642 "To prevent race conditions, the caller should test if the futex has been "
643 "upped after B<FUTEX_FD> returns."
644 msgstr ""
645 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
646 "up されたかどうかを確認しなければならない。"
647
648 #. type: Plain text
649 #: build/C/man2/futex.2:176
650 msgid ""
651 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
652 "2.6.26 onward."
653 msgstr ""
654 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
655 "ている。"
656
657 #. type: TP
658 #: build/C/man2/futex.2:176
659 #, no-wrap
660 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
661 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
662
663 #. type: Plain text
664 #: build/C/man2/futex.2:191
665 msgid ""
666 "This operation was introduced in order to avoid a \"thundering herd\" effect "
667 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
668 "another futex.  This call wakes up I<val> processes, and requeues all other "
669 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
670 "I<val3> are ignored."
671 msgstr ""
672 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
673 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
674 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
675 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
676 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
677
678 #. type: TP
679 #: build/C/man2/futex.2:191
680 #, no-wrap
681 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
682 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
683
684 #. type: Plain text
685 #: build/C/man2/futex.2:209
686 msgid ""
687 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
688 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
689 "but first checks whether the location I<uaddr> still contains the value "
690 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
691 "argument I<timeout> is ignored."
692 msgstr ""
693 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
694 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
695 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
696 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
697
698 #. type: Plain text
699 #: build/C/man2/futex.2:216
700 #, fuzzy
701 #| msgid ""
702 #| "In the event of an error, all operations return -1, and set I<errno> to "
703 #| "indicate the error."
704 msgid ""
705 "In the event of an error, all operations return -1, and set I<errno> to "
706 "indicate the error.  The return value on success depends on the operation, "
707 "as described in the following list:"
708 msgstr ""
709 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
710 "される。"
711
712 #. type: Plain text
713 #: build/C/man2/futex.2:222
714 msgid ""
715 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
716 "the various possible error returns."
717 msgstr ""
718
719 #. type: Plain text
720 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
721 msgid "Returns the number of processes woken up."
722 msgstr "wake したプロセスの数を返す。"
723
724 #. type: TP
725 #: build/C/man2/futex.2:225
726 #, no-wrap
727 msgid "B<FUTEX_FD>"
728 msgstr "B<FUTEX_FD>"
729
730 #. type: Plain text
731 #: build/C/man2/futex.2:228
732 msgid "Returns the new file descriptor associated with the futex."
733 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
734
735 #. type: TP
736 #: build/C/man2/futex.2:228
737 #, no-wrap
738 msgid "B<FUTEX_REQUEUE>"
739 msgstr "B<FUTEX_REQUEUE>"
740
741 #. type: TP
742 #: build/C/man2/futex.2:231
743 #, no-wrap
744 msgid "B<FUTEX_CMP_REQUEUE>"
745 msgstr "B<FUTEX_CMP_REQUEUE>"
746
747 #. type: TP
748 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
749 #, no-wrap
750 msgid "B<EACCES>"
751 msgstr "B<EACCES>"
752
753 #. type: Plain text
754 #: build/C/man2/futex.2:238
755 msgid "No read access to futex memory."
756 msgstr "futex メモリに読み込みアクセス権がなかった。"
757
758 #. type: TP
759 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
760 #, no-wrap
761 msgid "B<EAGAIN>"
762 msgstr "B<EAGAIN>"
763
764 #. type: Plain text
765 #: build/C/man2/futex.2:249
766 #, fuzzy
767 #| msgid ""
768 #| "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
769 #| "indicates a race; use the safe B<FUTEX_WAKE> now.)"
770 msgid ""
771 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
772 "equal to the expected value I<val3>.  (This probably indicates a race; use "
773 "the safe B<FUTEX_WAKE> now.)"
774 msgstr ""
775 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
776 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
777
778 #. type: Plain text
779 #: build/C/man2/futex.2:254
780 msgid "Error retrieving I<timeout> information from user space."
781 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
782
783 #. type: TP
784 #: build/C/man2/futex.2:254
785 #, no-wrap
786 msgid "B<EINTR>"
787 msgstr "B<EINTR>"
788
789 #. type: Plain text
790 #: build/C/man2/futex.2:261
791 msgid ""
792 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
793 "a spurious wakeup."
794 msgstr ""
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:62
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 ""
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
849 #. type: SH
850 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
851 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
852 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
853 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
854 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
855 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
856 #: build/C/man2/vmsplice.2:138
857 #, no-wrap
858 msgid "VERSIONS"
859 msgstr "バージョン"
860
861 #. type: Plain text
862 #: build/C/man2/futex.2:296
863 msgid ""
864 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
865 "from what was described above.  A 4-argument system call with the semantics "
866 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
867 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
868 "especially on the s390 architecture."
869 msgstr ""
870 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
871 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
872 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
873 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
874 "上の特別のものである。"
875
876 #. type: Plain text
877 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
878 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
879 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
880 msgid "This system call is Linux-specific."
881 msgstr "このシステムコールは Linux 固有である。"
882
883 #.  .SH "AUTHORS"
884 #.  .PP
885 #.  Futexes were designed and worked on by
886 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
887 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
888 #.  and Rusty Russell (IBM Linux Technology Center).
889 #.  This page written by bert hubert.
890 #. type: Plain text
891 #: build/C/man2/futex.2:312
892 msgid ""
893 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
894 "for end-users.  (There is no wrapper function for this system call in "
895 "glibc.)  Implementors are expected to be assembly literate and to have read "
896 "the sources of the futex user-space library referenced below."
897 msgstr ""
898 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
899 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
900 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
901 "ブラリの ソースを読み終えていることが要求される。"
902
903 #. type: Plain text
904 #: build/C/man2/futex.2:314
905 msgid "B<futex>(7)"
906 msgstr "B<futex>(7)"
907
908 #. type: Plain text
909 #: build/C/man2/futex.2:317
910 msgid ""
911 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
912 "of the Ottawa Linux Symposium 2002), online at"
913 msgstr ""
914 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
915 "of the Ottawa Linux Symposium 2002), online at"
916
917 #. type: Plain text
918 #: build/C/man2/futex.2:320
919 msgid ""
920 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
921 "E<.UE>"
922 msgstr "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> E<.UE>"
923
924 #. type: Plain text
925 #: build/C/man2/futex.2:322
926 msgid "Futex example library, futex-*.tar.bz2 at"
927 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
928
929 #. type: Plain text
930 #: build/C/man2/futex.2:325
931 msgid ""
932 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
933 "E<.UE>"
934 msgstr "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<.UE>"
935
936 #. type: TH
937 #: build/C/man2/get_robust_list.2:29
938 #, no-wrap
939 msgid "GET_ROBUST_LIST"
940 msgstr "GET_ROBUST_LIST"
941
942 #. type: TH
943 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
944 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
945 #, no-wrap
946 msgid "2012-07-13"
947 msgstr "2012-07-13"
948
949 #. type: TH
950 #: build/C/man2/get_robust_list.2:29
951 #, no-wrap
952 msgid "Linux System Calls"
953 msgstr ""
954
955 #. type: Plain text
956 #: build/C/man2/get_robust_list.2:32
957 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
958 msgstr ""
959
960 #. type: Plain text
961 #: build/C/man2/get_robust_list.2:36
962 #, no-wrap
963 msgid ""
964 "B<#include E<lt>linux/futex.hE<gt>>\n"
965 "B<#include E<lt>syscall.hE<gt>>\n"
966 msgstr ""
967 "B<#include E<lt>linux/futex.hE<gt>>\n"
968 "B<#include E<lt>syscall.hE<gt>>\n"
969
970 #. type: Plain text
971 #: build/C/man2/get_robust_list.2:40
972 #, no-wrap
973 msgid ""
974 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
975 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
976 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
977 msgstr ""
978
979 #. type: Plain text
980 #: build/C/man2/get_robust_list.2:44
981 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
982 msgstr ""
983
984 #. type: Plain text
985 #: build/C/man2/get_robust_list.2:49
986 msgid ""
987 "The robust futex implementation needs to maintain per-thread lists of robust "
988 "futexes which are unlocked when the thread exits.  These lists are managed "
989 "in user space; the kernel is only notified about the location of the head of "
990 "the list."
991 msgstr ""
992
993 #. type: Plain text
994 #: build/C/man2/get_robust_list.2:65
995 msgid ""
996 "The B<get_robust_list>()  system call returns the head of the robust futex "
997 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
998 "the head of the list for the calling thread is returned.  The list head is "
999 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1000 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1001 msgstr ""
1002
1003 #. type: Plain text
1004 #: build/C/man2/get_robust_list.2:77
1005 msgid ""
1006 "The B<set_robust_list>()  system call requests the kernel to record the head "
1007 "of the list of robust futexes owned by the calling thread.  The I<head> "
1008 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1009 "(*head)>."
1010 msgstr ""
1011
1012 #. type: Plain text
1013 #: build/C/man2/get_robust_list.2:84
1014 msgid ""
1015 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1016 "when the operation is successful, an error code otherwise."
1017 msgstr ""
1018
1019 #. type: Plain text
1020 #: build/C/man2/get_robust_list.2:88
1021 msgid ""
1022 "The B<set_robust_list>()  system call can fail with the following error:"
1023 msgstr ""
1024
1025 #. type: Plain text
1026 #: build/C/man2/get_robust_list.2:94
1027 msgid ""
1028 "I<len> does not match the size of structure B<struct robust_list_head> "
1029 "expected by kernel."
1030 msgstr ""
1031
1032 #. type: Plain text
1033 #: build/C/man2/get_robust_list.2:98
1034 msgid ""
1035 "The B<get_robust_list>()  system call can fail with the following errors:"
1036 msgstr ""
1037
1038 #. type: Plain text
1039 #: build/C/man2/get_robust_list.2:106
1040 msgid ""
1041 "The calling process does not have permission to see the robust futex list of "
1042 "the thread with the thread ID I<pid>, and does not have the "
1043 "B<CAP_SYS_PTRACE> capability."
1044 msgstr ""
1045
1046 #. type: TP
1047 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1048 #: build/C/man2/ptrace.2:1765 build/C/man2/quotactl.2:461
1049 #: build/C/man2/quotactl.2:504
1050 #, no-wrap
1051 msgid "B<ESRCH>"
1052 msgstr "B<ESRCH>"
1053
1054 #. type: Plain text
1055 #: build/C/man2/get_robust_list.2:111
1056 msgid "No thread with the thread ID I<pid> could be found."
1057 msgstr ""
1058
1059 #. type: Plain text
1060 #: build/C/man2/get_robust_list.2:115
1061 msgid ""
1062 "The head of the robust futex list can't be stored at the location I<head>."
1063 msgstr ""
1064
1065 #. type: Plain text
1066 #: build/C/man2/get_robust_list.2:119
1067 msgid ""
1068 "These system calls were added in Linux 2.6.17.  No library support is "
1069 "provided; use B<syscall>(2)."
1070 msgstr ""
1071 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1072 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1073
1074 #. type: Plain text
1075 #: build/C/man2/get_robust_list.2:124
1076 #, fuzzy
1077 #| msgid ""
1078 #| "These system calls are not needed by normal applications.  No support for "
1079 #| "them is provided in glibc."
1080 msgid ""
1081 "These system calls are not needed by normal applications.  No support for "
1082 "them is provided in glibc.  In the unlikely event that you want to call them "
1083 "directly, use B<syscall>(2)."
1084 msgstr ""
1085 "通常のアプリケーションでは、これらのシステムコールは必要ではない。\n"
1086 "glibc によるサポートは提供されていない。"
1087
1088 #. type: Plain text
1089 #: build/C/man2/get_robust_list.2:128
1090 msgid ""
1091 "A thread can have only one robust futex list; therefore applications that "
1092 "wish to use this functionality should use the robust mutexes provided by "
1093 "glibc."
1094 msgstr ""
1095
1096 #.  .BR pthread_mutexattr_setrobust_np (3)
1097 #. type: Plain text
1098 #: build/C/man2/get_robust_list.2:131
1099 msgid "B<futex>(2)"
1100 msgstr "B<futex>(2)"
1101
1102 #.  http://lwn.net/Articles/172149/
1103 #. type: Plain text
1104 #: build/C/man2/get_robust_list.2:137
1105 msgid ""
1106 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1107 "txt> in the Linux kernel source tree"
1108 msgstr ""
1109
1110 #. type: TH
1111 #: build/C/man2/getunwind.2:27
1112 #, no-wrap
1113 msgid "GETUNWIND"
1114 msgstr ""
1115
1116 #. type: TH
1117 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1118 #, fuzzy, no-wrap
1119 #| msgid "2009-02-20"
1120 msgid "2013-02-13"
1121 msgstr "2009-02-20"
1122
1123 #. type: Plain text
1124 #: build/C/man2/getunwind.2:30
1125 msgid "getunwind - copy the unwind data to caller's buffer"
1126 msgstr ""
1127
1128 #. type: Plain text
1129 #: build/C/man2/getunwind.2:34
1130 #, fuzzy, no-wrap
1131 #| msgid ""
1132 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
1133 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1134 msgid ""
1135 "B<#include E<lt>syscall.hE<gt>>\n"
1136 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1137 msgstr ""
1138 "B<#include E<lt>sys/quota.hE<gt>>\n"
1139 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1140
1141 #. type: Plain text
1142 #: build/C/man2/getunwind.2:36
1143 #, no-wrap
1144 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1145 msgstr ""
1146
1147 #. type: Plain text
1148 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1149 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1150 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1151 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1152 msgstr ""
1153
1154 #. type: Plain text
1155 #: build/C/man2/getunwind.2:42
1156 msgid "I<Note: this function is obsolete.>"
1157 msgstr ""
1158
1159 #. type: Plain text
1160 #: build/C/man2/getunwind.2:52
1161 msgid ""
1162 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1163 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1164 "of the unwind data; this data describes the gate page (kernel code that is "
1165 "mapped into user space)."
1166 msgstr ""
1167
1168 #. type: Plain text
1169 #: build/C/man2/getunwind.2:64
1170 msgid ""
1171 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1172 "copied only if I<buf_size> is greater than or equal to the size of the "
1173 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1174 "call succeeds, returning the size that would be needed to store the unwind "
1175 "data."
1176 msgstr ""
1177
1178 #. type: Plain text
1179 #: build/C/man2/getunwind.2:68
1180 msgid ""
1181 "The first part of the unwind data contains an unwind table.  The rest "
1182 "contains the associated unwind information, in no particular order.  The "
1183 "unwind table contains entries of the following form:"
1184 msgstr ""
1185
1186 #. type: Plain text
1187 #: build/C/man2/getunwind.2:73
1188 #, no-wrap
1189 msgid ""
1190 "\tu64 start;      (64-bit address of start of function)\n"
1191 "\tu64 end;        (64-bit address of end of function)\n"
1192 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1193 msgstr ""
1194
1195 #. type: Plain text
1196 #: build/C/man2/getunwind.2:81
1197 msgid ""
1198 "An entry whose I<start> value is zero indicates the end of the table.  For "
1199 "more information about the format, see the I<IA-64 Software Conventions and "
1200 "Runtime Architecture> manual."
1201 msgstr ""
1202
1203 #. type: Plain text
1204 #: build/C/man2/getunwind.2:88
1205 #, fuzzy
1206 #| msgid ""
1207 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1208 #| "I<errno> is set to indicate the error."
1209 msgid ""
1210 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1211 "is returned and I<errno> is set to indicate the error."
1212 msgstr ""
1213 "成功すると、 B<kexec_load> は 0 を返す。\n"
1214 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1215
1216 #. type: Plain text
1217 #: build/C/man2/getunwind.2:94
1218 msgid ""
1219 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1220 "stored in the space specified by I<buf>."
1221 msgstr ""
1222
1223 #. type: Plain text
1224 #: build/C/man2/getunwind.2:96
1225 #, fuzzy
1226 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1227 msgid "This system call is available since Linux 2.4."
1228 msgstr ""
1229 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1230 "である。"
1231
1232 #. type: Plain text
1233 #: build/C/man2/getunwind.2:99
1234 msgid ""
1235 "This system call is Linux specific, and is available only on the IA-64 "
1236 "architecture."
1237 msgstr ""
1238
1239 #. type: Plain text
1240 #: build/C/man2/getunwind.2:107
1241 msgid ""
1242 "This system call has been deprecated.  The modern way to obtain the kernel's "
1243 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1244 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1245 msgstr ""
1246
1247 #. type: Plain text
1248 #: build/C/man2/getunwind.2:111
1249 #, fuzzy
1250 #| msgid ""
1251 #| "Glibc does not provide a wrapper for this system call; call it using "
1252 #| "B<syscall>(2)."
1253 msgid ""
1254 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1255 "that you want to call it, use B<syscall>(2)."
1256 msgstr ""
1257 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1258 "(2)  を使って呼び出すこと。"
1259
1260 #. type: Plain text
1261 #: build/C/man2/getunwind.2:113
1262 msgid "B<getauxval>(3)"
1263 msgstr "B<getauxval>(3)"
1264
1265 #. type: TH
1266 #: build/C/man2/kexec_load.2:26
1267 #, no-wrap
1268 msgid "KEXEC_LOAD"
1269 msgstr "KEXEC_LOAD"
1270
1271 #. type: Plain text
1272 #: build/C/man2/kexec_load.2:29
1273 msgid "kexec_load - load a new kernel for later execution"
1274 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1275
1276 #. type: Plain text
1277 #: build/C/man2/kexec_load.2:31
1278 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1279 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1280
1281 #. type: Plain text
1282 #: build/C/man2/kexec_load.2:33
1283 msgid ""
1284 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1285 ">"
1286 msgstr ""
1287 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1288 ">"
1289
1290 #. type: Plain text
1291 #: build/C/man2/kexec_load.2:36
1292 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1293 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1294
1295 #. type: Plain text
1296 #: build/C/man2/kexec_load.2:44
1297 msgid ""
1298 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1299 "later by B<reboot>(2)."
1300 msgstr ""
1301 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1302 "その後の B<reboot>(2) で実行できるようにする。"
1303
1304 #. type: Plain text
1305 #: build/C/man2/kexec_load.2:50
1306 msgid ""
1307 "The I<flags> argument is a mask whose high-order bits control the operation "
1308 "of the call.  The following values can be specified in I<flags>:"
1309 msgstr ""
1310 "I<flags> 引き数はマスクビットで、\n"
1311 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1312 "I<flags> には以下の値を指定できる。"
1313
1314 #. type: TP
1315 #: build/C/man2/kexec_load.2:50
1316 #, no-wrap
1317 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1318 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1319
1320 #.  FIXME figure out how this is really used
1321 #. type: Plain text
1322 #: build/C/man2/kexec_load.2:54
1323 msgid "Execute the new kernel automatically on a system crash."
1324 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1325
1326 #. type: TP
1327 #: build/C/man2/kexec_load.2:54
1328 #, fuzzy, no-wrap
1329 #| msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
1330 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1331 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.7.27 以降)"
1332
1333 #. type: Plain text
1334 #: build/C/man2/kexec_load.2:64
1335 msgid ""
1336 "Preserve the system hardware and software states before executing the new "
1337 "kernel.  This could be used for system suspend.  This flag is only available "
1338 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
1339 "effective if I<nr_segments> is greater than 0."
1340 msgstr ""
1341 "新しいカーネルを実行する前に、\n"
1342 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1343 "システムの中断時 (suspend) などで使用できる。\n"
1344 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1345 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1346
1347 #. type: Plain text
1348 #: build/C/man2/kexec_load.2:84
1349 msgid ""
1350 "The low-order bits of I<flags> contain the architecture of the to-be-"
1351 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1352 "current architecture, or one of the following architecture constants "
1353 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1354 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1355 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1356 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1357 "the system."
1358 msgstr ""
1359 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1360 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1361 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1362 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1363 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1364 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1365 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1366 "システムの CPU で実行可能なものでなければならない。"
1367
1368 #. type: Plain text
1369 #: build/C/man2/kexec_load.2:98
1370 msgid ""
1371 "The I<entry> argument is the physical entry address in the kernel image.  "
1372 "The I<nr_segments> argument is the number of segments pointed to by the "
1373 "I<segments> pointer.  The I<segments> argument is an array of "
1374 "I<kexec_segment> structures which define the kernel layout:"
1375 msgstr ""
1376 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1377 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1378 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1379 "この構造体によりカーネルの配置が定義される。"
1380
1381 #. type: Plain text
1382 #: build/C/man2/kexec_load.2:107
1383 #, no-wrap
1384 msgid ""
1385 "struct kexec_segment {\n"
1386 "    void   *buf;        /* Buffer in user space */\n"
1387 "    size_t  bufsz;      /* Buffer length in user space */\n"
1388 "    void   *mem;        /* Physical address of kernel */\n"
1389 "    size_t  memsz;      /* Physical address length */\n"
1390 "};\n"
1391 msgstr ""
1392 "struct kexec_segment {\n"
1393 "    void   *buf;        /* Buffer in user space */\n"
1394 "    size_t  bufsz;      /* Buffer length in user space */\n"
1395 "    void   *mem;        /* Physical address of kernel */\n"
1396 "    size_t  memsz;      /* Physical address length */\n"
1397 "};\n"
1398
1399 #.  FIXME elaborate on the following:
1400 #. type: Plain text
1401 #: build/C/man2/kexec_load.2:114
1402 msgid ""
1403 "The kernel image defined by I<segments> is copied from the calling process "
1404 "into previously reserved memory."
1405 msgstr ""
1406 "I<segments> で定義されたカーネルイメージは、\n"
1407 "呼び出したプロセスから予約済みメモリにコピーされる。"
1408
1409 #. type: Plain text
1410 #: build/C/man2/kexec_load.2:121
1411 msgid ""
1412 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1413 "I<errno> is set to indicate the error."
1414 msgstr ""
1415 "成功すると、 B<kexec_load> は 0 を返す。\n"
1416 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1417
1418 #. type: TP
1419 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1420 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:495
1421 #, no-wrap
1422 msgid "B<EBUSY>"
1423 msgstr "B<EBUSY>"
1424
1425 #. type: Plain text
1426 #: build/C/man2/kexec_load.2:126
1427 msgid ""
1428 "Another crash kernel is already being loaded or a crash kernel is already in "
1429 "use."
1430 msgstr ""
1431 "別のクラッシュカーネルがすでにロードされているか、\n"
1432 "クラッシュカーネルがすでに使用されている。"
1433
1434 #.  KEXEC_SEGMENT_MAX == 16
1435 #. type: Plain text
1436 #: build/C/man2/kexec_load.2:133
1437 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1438 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1439
1440 #. type: Plain text
1441 #: build/C/man2/kexec_load.2:138
1442 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1443 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1444
1445 #. type: Plain text
1446 #: build/C/man2/kexec_load.2:142
1447 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1448 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1449
1450 #. type: Plain text
1451 #: build/C/man2/kexec_load.2:149
1452 msgid ""
1453 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1454 "B<syscall>(2)."
1455 msgstr ""
1456 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1457 "B<syscall>(2) を使って呼び出すこと。"
1458
1459 #.  FIXME Andi submitted a patch for this.
1460 #.  Check if it got accepted later.
1461 #. type: Plain text
1462 #: build/C/man2/kexec_load.2:156
1463 #, fuzzy
1464 #| msgid ""
1465 #| "The required constants are in the kernel source file I<linux/kexec.h>, "
1466 #| "which is not currently exported to glibc.  Therefore, these constants "
1467 #| "must be defined manually."
1468 msgid ""
1469 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1470 "which is not currently exported to glibc.  Therefore, these constants must "
1471 "be defined manually."
1472 msgstr ""
1473 "必要な定数はカーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1474 "が、現在のところ glibc には公開されていない。\n"
1475 "そのため、これらの定数は手動で定義しなければならない。"
1476
1477 #. type: Plain text
1478 #: build/C/man2/kexec_load.2:159
1479 msgid ""
1480 "This system call is only available if the kernel was configured with "
1481 "B<CONFIG_KEXEC>."
1482 msgstr ""
1483 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1484 "いる場合にのみ利用できる。"
1485
1486 #. type: Plain text
1487 #: build/C/man2/kexec_load.2:162
1488 msgid "B<reboot>(2), B<syscall>(2)"
1489 msgstr "B<reboot>(2), B<syscall>(2)"
1490
1491 #. type: TH
1492 #: build/C/man2/lookup_dcookie.2:27
1493 #, no-wrap
1494 msgid "LOOKUP_DCOOKIE"
1495 msgstr "LOOKUP_DCOOKIE"
1496
1497 #. type: TH
1498 #: build/C/man2/lookup_dcookie.2:27
1499 #, no-wrap
1500 msgid "2004-06-17"
1501 msgstr "2004-06-17"
1502
1503 #. type: Plain text
1504 #: build/C/man2/lookup_dcookie.2:30
1505 msgid "lookup_dcookie - return a directory entry's path"
1506 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1507
1508 #. type: Plain text
1509 #: build/C/man2/lookup_dcookie.2:32
1510 msgid ""
1511 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1512 ">"
1513 msgstr ""
1514 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1515 ">"
1516
1517 #. type: Plain text
1518 #: build/C/man2/lookup_dcookie.2:38
1519 msgid ""
1520 "Look up the full path of the directory entry specified by the value "
1521 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1522 "particular directory entry.  The buffer given is filled in with the full "
1523 "path of the directory entry."
1524 msgstr ""
1525 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1526 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1527 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1528 "ルパス名が格納される。"
1529
1530 #. type: Plain text
1531 #: build/C/man2/lookup_dcookie.2:43
1532 msgid ""
1533 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1534 "a cookie reference to the directory entry."
1535 msgstr ""
1536 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1537 "リへの cookie 参照を 保持していなければならない。"
1538
1539 #. type: Plain text
1540 #: build/C/man2/lookup_dcookie.2:50
1541 msgid ""
1542 "On success, B<lookup_dcookie>()  returns the length of the path string "
1543 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1544 "appropriately."
1545 msgstr ""
1546 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1547 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1548
1549 #. type: Plain text
1550 #: build/C/man2/lookup_dcookie.2:54
1551 msgid "The buffer was not valid."
1552 msgstr "バッファが有効でなかった。"
1553
1554 #. type: Plain text
1555 #: build/C/man2/lookup_dcookie.2:58
1556 msgid ""
1557 "The kernel has no registered cookie/directory entry mappings at the time of "
1558 "lookup, or the cookie does not refer to a valid directory entry."
1559 msgstr ""
1560 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1561 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1562 "いない。"
1563
1564 #. type: TP
1565 #: build/C/man2/lookup_dcookie.2:58
1566 #, no-wrap
1567 msgid "B<ENAMETOOLONG>"
1568 msgstr "B<ENAMETOOLONG>"
1569
1570 #. type: Plain text
1571 #: build/C/man2/lookup_dcookie.2:61
1572 msgid "The name could not fit in the buffer."
1573 msgstr "名前がバッファに入り切らなかった。"
1574
1575 #. type: TP
1576 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1577 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1578 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1579 #, no-wrap
1580 msgid "B<ENOMEM>"
1581 msgstr "B<ENOMEM>"
1582
1583 #. type: Plain text
1584 #: build/C/man2/lookup_dcookie.2:65
1585 msgid ""
1586 "The kernel could not allocate memory for the temporary buffer holding the "
1587 "path."
1588 msgstr ""
1589 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1590 "かった。"
1591
1592 #. type: Plain text
1593 #: build/C/man2/lookup_dcookie.2:70
1594 msgid ""
1595 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1596 "up cookie values."
1597 msgstr ""
1598 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1599 "持っていない。"
1600
1601 #. type: TP
1602 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1603 #, no-wrap
1604 msgid "B<ERANGE>"
1605 msgstr "B<ERANGE>"
1606
1607 #. type: Plain text
1608 #: build/C/man2/lookup_dcookie.2:73
1609 msgid ""
1610 "The buffer was not large enough to hold the path of the directory entry."
1611 msgstr ""
1612 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1613 "かった。"
1614
1615 #. type: Plain text
1616 #: build/C/man2/lookup_dcookie.2:78
1617 msgid ""
1618 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1619 "2.5.70."
1620 msgstr ""
1621 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1622 "追加された。"
1623
1624 #. type: Plain text
1625 #: build/C/man2/lookup_dcookie.2:81
1626 msgid "B<lookup_dcookie>()  is Linux-specific."
1627 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1628
1629 #. type: Plain text
1630 #: build/C/man2/lookup_dcookie.2:85
1631 msgid ""
1632 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1633 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1634 "for directory entries."
1635 msgstr ""
1636 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1637 "oprofile profiler で 使われているだけである。"
1638
1639 #. type: Plain text
1640 #: build/C/man2/lookup_dcookie.2:88
1641 msgid ""
1642 "The path returned may be suffixed by the string \" (deleted)\" if the "
1643 "directory entry has been removed."
1644 msgstr ""
1645 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1646 "\" (deleted)\" という文字列が付加されることがある。"
1647
1648 #. type: TH
1649 #: build/C/man2/modify_ldt.2:24
1650 #, no-wrap
1651 msgid "MODIFY_LDT"
1652 msgstr "MODIFY_LDT"
1653
1654 #. type: Plain text
1655 #: build/C/man2/modify_ldt.2:27
1656 msgid "modify_ldt - get or set ldt"
1657 msgstr "modify_ldt - ldt を設定または取得する"
1658
1659 #. type: Plain text
1660 #: build/C/man2/modify_ldt.2:30
1661 #, no-wrap
1662 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1663 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1664
1665 #. type: Plain text
1666 #: build/C/man2/modify_ldt.2:32
1667 #, no-wrap
1668 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1669 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1670
1671 #. type: Plain text
1672 #: build/C/man2/modify_ldt.2:41
1673 msgid ""
1674 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1675 "process.  The ldt is a per-process memory management table used by the i386 "
1676 "processor.  For more information on this table, see an Intel 386 processor "
1677 "handbook."
1678 msgstr ""
1679 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1680 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1681 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1682 "は Intel 386 processor handbook を 参照すること。"
1683
1684 #. type: Plain text
1685 #: build/C/man2/modify_ldt.2:51
1686 msgid ""
1687 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1688 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1689 "actual size of the ldt."
1690 msgstr ""
1691 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1692 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1693 "である。"
1694
1695 #.  FIXME ? say something about func == 2 and func == 0x11?
1696 #.  In Linux 2.4, func == 2 returned "the default ldt"
1697 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1698 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1699 #. type: Plain text
1700 #: build/C/man2/modify_ldt.2:69
1701 msgid ""
1702 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1703 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1704 "structure."
1705 msgstr ""
1706 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1707 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1708 "くなければならない。"
1709
1710 #. type: Plain text
1711 #: build/C/man2/modify_ldt.2:73
1712 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1713 msgstr ""
1714 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1715
1716 #. type: Plain text
1717 #: build/C/man2/modify_ldt.2:87
1718 #, no-wrap
1719 msgid ""
1720 "struct user_desc {\n"
1721 "    unsigned int  entry_number;\n"
1722 "    unsigned long base_addr;\n"
1723 "    unsigned int  limit;\n"
1724 "    unsigned int  seg_32bit:1;\n"
1725 "    unsigned int  contents:2;\n"
1726 "    unsigned int  read_exec_only:1;\n"
1727 "    unsigned int  limit_in_pages:1;\n"
1728 "    unsigned int  seg_not_present:1;\n"
1729 "    unsigned int  useable:1;\n"
1730 "};\n"
1731 msgstr ""
1732 "struct user_desc {\n"
1733 "    unsigned int  entry_number;\n"
1734 "    unsigned long base_addr;\n"
1735 "    unsigned int  limit;\n"
1736 "    unsigned int  seg_32bit:1;\n"
1737 "    unsigned int  contents:2;\n"
1738 "    unsigned int  read_exec_only:1;\n"
1739 "    unsigned int  limit_in_pages:1;\n"
1740 "    unsigned int  seg_not_present:1;\n"
1741 "    unsigned int  useable:1;\n"
1742 "};\n"
1743
1744 #.  .PP
1745 #.  The ldt is specific for the calling process. Any attempts to change
1746 #.  the ldt to include the address space of another process or the kernel
1747 #.  will result in a segmentation violation when trying to access the memory
1748 #.  outside of the process address space. The memory protection is enforced
1749 #.  at the paging layer.
1750 #. type: Plain text
1751 #: build/C/man2/modify_ldt.2:98
1752 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1753 msgstr ""
1754 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1755
1756 #. type: Plain text
1757 #: build/C/man2/modify_ldt.2:108
1758 msgid ""
1759 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1760 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1761 "and sets I<errno> to indicate the error."
1762 msgstr ""
1763 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1764 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1765 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1766
1767 #. type: Plain text
1768 #: build/C/man2/modify_ldt.2:113
1769 msgid "I<ptr> points outside the address space."
1770 msgstr "I<ptr> がアドレス空間の外を指している。"
1771
1772 #. type: Plain text
1773 #: build/C/man2/modify_ldt.2:126
1774 msgid ""
1775 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1776 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1777 "invalid values."
1778 msgstr ""
1779 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1780 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1781 "エントリが無効な値である。"
1782
1783 #. type: Plain text
1784 #: build/C/man2/modify_ldt.2:130
1785 msgid "I<func> is neither 0 nor 1."
1786 msgstr "I<func> が 0 でも 1 でもない。"
1787
1788 #. type: Plain text
1789 #: build/C/man2/modify_ldt.2:133
1790 msgid ""
1791 "This call is Linux-specific and should not be used in programs intended to "
1792 "be portable."
1793 msgstr ""
1794 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1795 "い。"
1796
1797 #. type: Plain text
1798 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1799 #: build/C/man2/pivot_root.2:134
1800 msgid ""
1801 "Glibc does not provide a wrapper for this system call; call it using "
1802 "B<syscall>(2)."
1803 msgstr ""
1804 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1805 "(2)  を使って呼び出すこと。"
1806
1807 #. type: Plain text
1808 #: build/C/man2/modify_ldt.2:138
1809 msgid "B<vm86>(2)"
1810 msgstr "B<vm86>(2)"
1811
1812 #. type: TH
1813 #: build/C/man2/nfsservctl.2:8
1814 #, no-wrap
1815 msgid "NFSSERVCTL"
1816 msgstr "NFSSERVCTL"
1817
1818 #. type: TH
1819 #: build/C/man2/nfsservctl.2:8
1820 #, no-wrap
1821 msgid "2012-03-05"
1822 msgstr "2012-03-05"
1823
1824 #. type: Plain text
1825 #: build/C/man2/nfsservctl.2:11
1826 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1827 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1828
1829 #. type: Plain text
1830 #: build/C/man2/nfsservctl.2:14
1831 #, no-wrap
1832 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1833 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1834
1835 #. type: Plain text
1836 #: build/C/man2/nfsservctl.2:17
1837 #, no-wrap
1838 msgid ""
1839 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1840 "B<                union nfsctl_res *>I<resp>B<);>\n"
1841 msgstr ""
1842 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1843 "B<                union nfsctl_res *>I<resp>B<);>\n"
1844
1845 #. type: Plain text
1846 #: build/C/man2/nfsservctl.2:21
1847 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1848 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1849
1850 #. type: Plain text
1851 #: build/C/man2/nfsservctl.2:33
1852 #, no-wrap
1853 msgid ""
1854 "/*\n"
1855 " * These are the commands understood by nfsctl().\n"
1856 " */\n"
1857 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1858 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1859 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1860 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1861 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1862 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1863 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1864 msgstr ""
1865 "/*\n"
1866 " * nfsctl() によって理解されるコマンド\n"
1867 " */\n"
1868 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1869 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1870 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1871 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1872 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1873 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1874 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1875
1876 #. type: Plain text
1877 #: build/C/man2/nfsservctl.2:45
1878 #, no-wrap
1879 msgid ""
1880 "struct nfsctl_arg {\n"
1881 "    int                       ca_version;     /* safeguard */\n"
1882 "    union {\n"
1883 "        struct nfsctl_svc     u_svc;\n"
1884 "        struct nfsctl_client  u_client;\n"
1885 "        struct nfsctl_export  u_export;\n"
1886 "        struct nfsctl_uidmap  u_umap;\n"
1887 "        struct nfsctl_fhparm  u_getfh;\n"
1888 "        unsigned int          u_debug;\n"
1889 "    } u;\n"
1890 "}\n"
1891 msgstr ""
1892 "struct nfsctl_arg {\n"
1893 "    int                       ca_version;     /* safeguard */\n"
1894 "    union {\n"
1895 "        struct nfsctl_svc     u_svc;\n"
1896 "        struct nfsctl_client  u_client;\n"
1897 "        struct nfsctl_export  u_export;\n"
1898 "        struct nfsctl_uidmap  u_umap;\n"
1899 "        struct nfsctl_fhparm  u_getfh;\n"
1900 "        unsigned int          u_debug;\n"
1901 "    } u;\n"
1902 "}\n"
1903
1904 #. type: Plain text
1905 #: build/C/man2/nfsservctl.2:50
1906 #, no-wrap
1907 msgid ""
1908 "union nfsctl_res {\n"
1909 "        struct knfs_fh          cr_getfh;\n"
1910 "        unsigned int            cr_debug;\n"
1911 "};\n"
1912 msgstr ""
1913 "union nfsctl_res {\n"
1914 "        struct knfs_fh          cr_getfh;\n"
1915 "        unsigned int            cr_debug;\n"
1916 "};\n"
1917
1918 #. type: Plain text
1919 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1920 #: build/C/man2/vm86.2:57
1921 msgid ""
1922 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1923 "appropriately."
1924 msgstr ""
1925 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1926 "定される。"
1927
1928 #. type: Plain text
1929 #: build/C/man2/nfsservctl.2:58
1930 msgid "This call is Linux-specific."
1931 msgstr "このコールは Linux 特有である。"
1932
1933 #. type: TH
1934 #: build/C/man2/outb.2:26
1935 #, no-wrap
1936 msgid "OUTB"
1937 msgstr "OUTB"
1938
1939 #. type: TH
1940 #: build/C/man2/outb.2:26
1941 #, no-wrap
1942 msgid "2012-12-31"
1943 msgstr "2012-12-31"
1944
1945 #. type: Plain text
1946 #: build/C/man2/outb.2:31
1947 msgid ""
1948 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1949 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1950 msgstr ""
1951 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1952 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1953
1954 #. type: Plain text
1955 #: build/C/man2/outb.2:34
1956 #, no-wrap
1957 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1958 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1959
1960 #. type: Plain text
1961 #: build/C/man2/outb.2:41
1962 #, no-wrap
1963 msgid ""
1964 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1965 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1966 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1967 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1968 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1969 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1970 msgstr ""
1971 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1972 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1973 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1974 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1975 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1976 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1977
1978 #. type: Plain text
1979 #: build/C/man2/outb.2:48
1980 #, no-wrap
1981 msgid ""
1982 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1983 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1984 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1985 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1986 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1987 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1988 msgstr ""
1989 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1990 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1991 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1992 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1993 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1994 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1995
1996 #. type: Plain text
1997 #: build/C/man2/outb.2:61
1998 #, no-wrap
1999 msgid ""
2000 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2001 "B<           unsigned long int >I<count>B<);>\n"
2002 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2003 "B<           unsigned long int >I<count>B<);>\n"
2004 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2005 "B<           unsigned long int >I<count>B<);>\n"
2006 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2007 "B<           unsigned long int >I<count>B<);>\n"
2008 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2009 "B<           unsigned long int >I<count>B<);>\n"
2010 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2011 "B<           unsigned long int >I<count>B<);>\n"
2012 msgstr ""
2013 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2014 "B<           unsigned long int >I<count>B<);>\n"
2015 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2016 "B<           unsigned long int >I<count>B<);>\n"
2017 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2018 "B<           unsigned long int >I<count>B<);>\n"
2019 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2020 "B<           unsigned long int >I<count>B<);>\n"
2021 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2022 "B<           unsigned long int >I<count>B<);>\n"
2023 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2024 "B<           unsigned long int >I<count>B<);>\n"
2025
2026 #. type: Plain text
2027 #: build/C/man2/outb.2:67
2028 msgid ""
2029 "This family of functions is used to do low-level port input and output.  The "
2030 "out* functions do port output, the in* functions do port input; the b-suffix "
2031 "functions are byte-width and the w-suffix functions word-width; the _p-"
2032 "suffix functions pause until the I/O completes."
2033 msgstr ""
2034 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2035 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2036 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2037 "待つ。"
2038
2039 #.  , given the following information
2040 #.  in addition to that given in
2041 #.  .BR outb (9).
2042 #. type: Plain text
2043 #: build/C/man2/outb.2:73
2044 msgid ""
2045 "They are primarily designed for internal kernel use, but can be used from "
2046 "user space."
2047 msgstr ""
2048 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2049 "ザー空間からでも使用できる。"
2050
2051 #. type: Plain text
2052 #: build/C/man2/outb.2:78
2053 #, fuzzy
2054 msgid ""
2055 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2056 "as inline macros, and will not be substituted in without optimization "
2057 "enabled, causing unresolved references at link time."
2058 msgstr "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はインライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2059
2060 #. type: Plain text
2061 #: build/C/man2/outb.2:87
2062 msgid ""
2063 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2064 "allow the user space application to access the I/O ports in question.  "
2065 "Failure to do this will cause the application to receive a segmentation "
2066 "fault."
2067 msgstr ""
2068 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2069 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2070 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2071 "になる。"
2072
2073 #. type: Plain text
2074 #: build/C/man2/outb.2:96
2075 msgid ""
2076 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2077 "passed first and the I<port> argument is passed second, which is the "
2078 "opposite order from most DOS implementations."
2079 msgstr ""
2080 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2081 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2082 "である。"
2083
2084 #. type: Plain text
2085 #: build/C/man2/outb.2:99
2086 msgid "B<ioperm>(2), B<iopl>(2)"
2087 msgstr "B<ioperm>(2), B<iopl>(2)"
2088
2089 #. type: TH
2090 #: build/C/man2/pciconfig_read.2:8
2091 #, no-wrap
2092 msgid "PCICONFIG_READ"
2093 msgstr "PCICONFIG_READ"
2094
2095 #. type: TH
2096 #: build/C/man2/pciconfig_read.2:8
2097 #, no-wrap
2098 msgid "2003-07-14"
2099 msgstr "2003-07-14"
2100
2101 #. type: Plain text
2102 #: build/C/man2/pciconfig_read.2:11
2103 msgid ""
2104 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2105 "handling"
2106 msgstr ""
2107 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2108
2109 #. type: Plain text
2110 #: build/C/man2/pciconfig_read.2:14
2111 #, no-wrap
2112 msgid "B<#include E<lt>pci.hE<gt>>\n"
2113 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2114
2115 #. type: Plain text
2116 #: build/C/man2/pciconfig_read.2:21
2117 #, no-wrap
2118 msgid ""
2119 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2120 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2121 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2122 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2123 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2124 "B<          unsigned long >I<devfn>B<);>\n"
2125 msgstr ""
2126 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2127 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2128 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2129 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2130 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2131 "B<          unsigned long >I<devfn>B<);>\n"
2132
2133 #. type: Plain text
2134 #: build/C/man2/pciconfig_read.2:27
2135 #, fuzzy
2136 #| msgid ""
2137 #| "Most of the interaction with PCI devices is already handled by the kernel "
2138 #| "PCI layer, and thus these calls should not normally need to be accessed "
2139 #| "from userspace."
2140 msgid ""
2141 "Most of the interaction with PCI devices is already handled by the kernel "
2142 "PCI layer, and thus these calls should not normally need to be accessed from "
2143 "user space."
2144 msgstr ""
2145 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2146 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2147
2148 #. type: TP
2149 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2150 #, no-wrap
2151 msgid "B<pciconfig_read>()"
2152 msgstr "B<pciconfig_read>()"
2153
2154 #. type: Plain text
2155 #: build/C/man2/pciconfig_read.2:36
2156 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2157 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2158
2159 #. type: TP
2160 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2161 #, no-wrap
2162 msgid "B<pciconfig_write>()"
2163 msgstr "B<pciconfig_write>()"
2164
2165 #. type: Plain text
2166 #: build/C/man2/pciconfig_read.2:45
2167 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2168 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2169
2170 #. type: TP
2171 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2172 #, no-wrap
2173 msgid "B<pciconfig_iobase>()"
2174 msgstr "B<pciconfig_iobase>()"
2175
2176 #. type: Plain text
2177 #: build/C/man2/pciconfig_read.2:50
2178 msgid ""
2179 "You pass it a bus/devfn pair and get a physical address for either the "
2180 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2181 "PIO cycles, or the ISA holes if any."
2182 msgstr ""
2183 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2184 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2185 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2186
2187 #. type: Plain text
2188 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2189 msgid ""
2190 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2191 "appropriately."
2192 msgstr ""
2193 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2194 "定される。"
2195
2196 #. type: Plain text
2197 #: build/C/man2/pciconfig_read.2:77
2198 msgid ""
2199 "Returns information on locations of various I/O regions in physical memory "
2200 "according to the I<which> value.  Values for I<which> are: "
2201 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2202 "B<IOBASE_ISA_MEM>."
2203 msgstr ""
2204 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2205 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2206 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2207
2208 #. type: Plain text
2209 #: build/C/man2/pciconfig_read.2:84
2210 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2211 msgstr ""
2212 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2213 "い。"
2214
2215 #. type: TP
2216 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1745
2217 #: build/C/man2/sendfile.2:134
2218 #, no-wrap
2219 msgid "B<EIO>"
2220 msgstr "B<EIO>"
2221
2222 #. type: Plain text
2223 #: build/C/man2/pciconfig_read.2:87
2224 msgid "I/O error."
2225 msgstr "I/O エラー。"
2226
2227 #. type: TP
2228 #: build/C/man2/pciconfig_read.2:87
2229 #, no-wrap
2230 msgid "B<ENODEV>"
2231 msgstr "B<ENODEV>"
2232
2233 #. type: Plain text
2234 #: build/C/man2/pciconfig_read.2:93
2235 msgid ""
2236 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2237 "could not find a slot."
2238 msgstr ""
2239 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2240 "出しの場合、スロット (slot) が見つからない。"
2241
2242 #. type: Plain text
2243 #: build/C/man2/pciconfig_read.2:98
2244 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2245 msgstr ""
2246 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2247 "いない)。"
2248
2249 #. type: TP
2250 #: build/C/man2/pciconfig_read.2:98
2251 #, no-wrap
2252 msgid "B<EOPNOTSUPP>"
2253 msgstr "B<EOPNOTSUPP>"
2254
2255 #. type: Plain text
2256 #: build/C/man2/pciconfig_read.2:105
2257 msgid ""
2258 "This return value is only valid for B<pciconfig_iobase>().  It is returned "
2259 "if the value for I<which> is invalid."
2260 msgstr ""
2261 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2262 "の値が無効であるときに返される。"
2263
2264 #. type: Plain text
2265 #: build/C/man2/pciconfig_read.2:110
2266 msgid ""
2267 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2268 "B<pciconfig_iobase>()."
2269 msgstr ""
2270 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2271 "B<pciconfig_iobase>()  には適用されない。"
2272
2273 #. type: Plain text
2274 #: build/C/man2/pciconfig_read.2:112
2275 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2276 msgstr ""
2277 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2278 "である。"
2279
2280 #. type: Plain text
2281 #: build/C/man2/pciconfig_read.2:114
2282 msgid "B<capabilities>(7)"
2283 msgstr "B<capabilities>(7)"
2284
2285 #. type: TH
2286 #: build/C/man2/perf_event_open.2:27
2287 #, fuzzy, no-wrap
2288 #| msgid "B<PTRACE_EVENT_CLONE>"
2289 msgid "PERF_EVENT_OPEN"
2290 msgstr "B<PTRACE_EVENT_CLONE>"
2291
2292 #. type: TH
2293 #: build/C/man2/perf_event_open.2:27
2294 #, fuzzy, no-wrap
2295 #| msgid "2012-04-25"
2296 msgid "2013-02-04"
2297 msgstr "2012-04-25"
2298
2299 #. type: Plain text
2300 #: build/C/man2/perf_event_open.2:30
2301 msgid "perf_event_open - set up performance monitoring"
2302 msgstr ""
2303
2304 #. type: Plain text
2305 #: build/C/man2/perf_event_open.2:34
2306 #, no-wrap
2307 msgid ""
2308 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2309 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2310 msgstr ""
2311 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2312 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2313
2314 #. type: Plain text
2315 #: build/C/man2/perf_event_open.2:38
2316 #, no-wrap
2317 msgid ""
2318 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2319 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2320 "B<                    unsigned long >I<flags>B<);>\n"
2321 msgstr ""
2322 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2323 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2324 "B<                    unsigned long >I<flags>B<);>\n"
2325
2326 #. type: Plain text
2327 #: build/C/man2/perf_event_open.2:47
2328 msgid ""
2329 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2330 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2331 "B<fcntl>(2), etc.)."
2332 msgstr ""
2333
2334 #. type: Plain text
2335 #: build/C/man2/perf_event_open.2:55
2336 msgid ""
2337 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2338 "measuring performance information.  Each file descriptor corresponds to one "
2339 "event that is measured; these can be grouped together to measure multiple "
2340 "events simultaneously."
2341 msgstr ""
2342
2343 #. type: Plain text
2344 #: build/C/man2/perf_event_open.2:62
2345 msgid ""
2346 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2347 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2348 "overflows but does continue to exist and maintain its count value."
2349 msgstr ""
2350
2351 #. type: Plain text
2352 #: build/C/man2/perf_event_open.2:76
2353 msgid ""
2354 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2355 "one that is used for counting the aggregate number of events that occur.  In "
2356 "general, counting event results are gathered with a B<read>(2)  call.  A "
2357 "I<sampling> event periodically writes measurements to a buffer that can then "
2358 "be accessed via B<mmap>(2)B<.>"
2359 msgstr ""
2360
2361 #. type: SS
2362 #: build/C/man2/perf_event_open.2:76
2363 #, no-wrap
2364 msgid "Arguments"
2365 msgstr ""
2366
2367 #. type: Plain text
2368 #: build/C/man2/perf_event_open.2:90
2369 msgid ""
2370 "The argument I<pid> allows events to be attached to processes in various "
2371 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2372 "is greater than 0, the process indicated by I<pid> is measured, and if "
2373 "I<pid> is -1, all processes are counted."
2374 msgstr ""
2375
2376 #. type: Plain text
2377 #: build/C/man2/perf_event_open.2:101
2378 msgid ""
2379 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2380 "is greater than or equal to 0, measurements are restricted to the specified "
2381 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2382 msgstr ""
2383
2384 #. type: Plain text
2385 #: build/C/man2/perf_event_open.2:107
2386 msgid ""
2387 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2388 msgstr ""
2389
2390 #. type: Plain text
2391 #: build/C/man2/perf_event_open.2:115
2392 msgid ""
2393 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2394 "that process to whatever CPU the process gets scheduled to.  Per-process "
2395 "events can be created by any user."
2396 msgstr ""
2397
2398 #. type: Plain text
2399 #: build/C/man2/perf_event_open.2:126
2400 msgid ""
2401 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2402 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2403 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2404 msgstr ""
2405
2406 #. type: Plain text
2407 #: build/C/man2/perf_event_open.2:148
2408 msgid ""
2409 "The I<group_fd> argument allows event groups to be created.  An event group "
2410 "has one event which is the group leader.  The leader is created first, with "
2411 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2412 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2413 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2414 "and is considered to be a group with only 1 member.)  An event group is "
2415 "scheduled onto the CPU as a unit: it will only be put onto the CPU if all of "
2416 "the events in the group can be put onto the CPU.  This means that the values "
2417 "of the member events can be meaningfully compared, added, divided (to get "
2418 "ratios), etc., with each other, since they have counted events for the same "
2419 "set of executed instructions."
2420 msgstr ""
2421
2422 #. type: Plain text
2423 #: build/C/man2/perf_event_open.2:152
2424 #, fuzzy
2425 #| msgid "The I<subcmd> value is one of the following:"
2426 msgid "The I<flags> argument takes one of the following values:"
2427 msgstr "I<subcmd> の値は以下のいずれかである"
2428
2429 #. type: TP
2430 #: build/C/man2/perf_event_open.2:152
2431 #, no-wrap
2432 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2433 msgstr ""
2434
2435 #.  FIXME The following sentence is unclear
2436 #.  FIXME So, why is it useful?
2437 #. type: Plain text
2438 #: build/C/man2/perf_event_open.2:159
2439 msgid ""
2440 "This flag allows creating an event as part of an event group but having no "
2441 "group leader.  It is unclear why this is useful."
2442 msgstr ""
2443
2444 #. type: TP
2445 #: build/C/man2/perf_event_open.2:159
2446 #, no-wrap
2447 msgid "B<PERF_FLAG_FD_OUTPUT>"
2448 msgstr ""
2449
2450 #. type: Plain text
2451 #: build/C/man2/perf_event_open.2:162
2452 msgid "This flag re-routes the output from an event to the group leader."
2453 msgstr ""
2454
2455 #. type: TP
2456 #: build/C/man2/perf_event_open.2:162
2457 #, fuzzy, no-wrap
2458 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2459 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2460 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2461
2462 #. type: Plain text
2463 #: build/C/man2/perf_event_open.2:185
2464 msgid ""
2465 "This flag activates per-container system-wide monitoring.  A container is an "
2466 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2467 "memory, etc...).  In this mode, the event is measured only if the thread "
2468 "running on the monitored CPU belongs to the designated container (cgroup).  "
2469 "The cgroup is identified by passing a file descriptor opened on its "
2470 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2471 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2472 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2473 "the I<pid> parameter.  cgroup monitoring is only available for system-wide "
2474 "events and may therefore require extra permissions."
2475 msgstr ""
2476
2477 #. type: Plain text
2478 #: build/C/man2/perf_event_open.2:190
2479 msgid ""
2480 "The I<perf_event_attr> structure provides detailed configuration information "
2481 "for the event being created."
2482 msgstr ""
2483
2484 #. type: Plain text
2485 #: build/C/man2/perf_event_open.2:197
2486 #, no-wrap
2487 msgid ""
2488 "struct perf_event_attr {\n"
2489 "    __u32     type;         /* Type of event */\n"
2490 "    __u32     size;         /* Size of attribute structure */\n"
2491 "    __u64     config;       /* Type-specific configuration */\n"
2492 msgstr ""
2493
2494 #. type: Plain text
2495 #: build/C/man2/perf_event_open.2:202
2496 #, no-wrap
2497 msgid ""
2498 "    union {\n"
2499 "        __u64 sample_period;    /* Period of sampling */\n"
2500 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2501 "    };\n"
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man2/perf_event_open.2:205
2506 #, no-wrap
2507 msgid ""
2508 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2509 "    __u64     read_format;  /* Specifies values returned in read */\n"
2510 msgstr ""
2511
2512 #. type: Plain text
2513 #: build/C/man2/perf_event_open.2:231
2514 #, no-wrap
2515 msgid ""
2516 "    __u64     disabled       : 1,   /* off by default */\n"
2517 "              inherit        : 1,   /* children inherit it */\n"
2518 "              pinned         : 1,   /* must always be on PMU */\n"
2519 "              exclusive      : 1,   /* only group on PMU */\n"
2520 "              exclude_user   : 1,   /* don't count user */\n"
2521 "              exclude_kernel : 1,   /* don't count kernel */\n"
2522 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2523 "              exclude_idle   : 1,   /* don't count when idle */\n"
2524 "              mmap           : 1,   /* include mmap data */\n"
2525 "              comm           : 1,   /* include comm data */\n"
2526 "              freq           : 1,   /* use freq, not period */\n"
2527 "              inherit_stat   : 1,   /* per task counts */\n"
2528 "              enable_on_exec : 1,   /* next exec enables */\n"
2529 "              task           : 1,   /* trace fork/exit */\n"
2530 "              watermark      : 1,   /* wakeup_watermark */\n"
2531 "              precise_ip     : 2,   /* skid constraint */\n"
2532 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2533 "              sample_id_all  : 1,   /* sample_type all events */\n"
2534 "              exclude_host   : 1,   /* don't count in host */\n"
2535 "              exclude_guest  : 1,   /* don't count in guest */\n"
2536 "              exclude_callchain_kernel : 1,\n"
2537 "                                    /* exclude kernel callchains */\n"
2538 "              exclude_callchain_user   : 1,\n"
2539 "\t                            /* exclude user callchains */\n"
2540 "              __reserved_1   : 41;\n"
2541 msgstr ""
2542
2543 #. type: Plain text
2544 #: build/C/man2/perf_event_open.2:236
2545 #, no-wrap
2546 msgid ""
2547 "    union {\n"
2548 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2549 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2550 "    };\n"
2551 msgstr ""
2552
2553 #. type: Plain text
2554 #: build/C/man2/perf_event_open.2:238
2555 #, no-wrap
2556 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2557 msgstr ""
2558
2559 #. type: Plain text
2560 #: build/C/man2/perf_event_open.2:243
2561 #, no-wrap
2562 msgid ""
2563 "    union {\n"
2564 "        __u64 bp_addr;          /* breakpoint address */\n"
2565 "        __u64 config1;          /* extension of config */\n"
2566 "    };\n"
2567 msgstr ""
2568
2569 #. type: Plain text
2570 #: build/C/man2/perf_event_open.2:253
2571 #, no-wrap
2572 msgid ""
2573 "    union {\n"
2574 "        __u64 bp_len;           /* breakpoint length */\n"
2575 "        __u64 config2;          /* extension of config1 */\n"
2576 "    };\n"
2577 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2578 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2579 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2580 "                                   samples */\n"
2581 "    __u32   __reserved_2;       /* Align to u64 */\n"
2582 msgstr ""
2583
2584 #. type: Plain text
2585 #: build/C/man2/perf_event_open.2:255
2586 #, no-wrap
2587 msgid "};\n"
2588 msgstr ""
2589
2590 #. type: Plain text
2591 #: build/C/man2/perf_event_open.2:261
2592 msgid ""
2593 "The fields of the I<perf_event_attr> structure are described in more detail "
2594 "below:"
2595 msgstr ""
2596
2597 #. type: TP
2598 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2599 #, no-wrap
2600 msgid "I<type>"
2601 msgstr ""
2602
2603 #. type: Plain text
2604 #: build/C/man2/perf_event_open.2:265
2605 msgid ""
2606 "This field specifies the overall event type.  It has one of the following "
2607 "values:"
2608 msgstr ""
2609
2610 #. type: TP
2611 #: build/C/man2/perf_event_open.2:266
2612 #, no-wrap
2613 msgid "B<PERF_TYPE_HARDWARE>"
2614 msgstr ""
2615
2616 #. type: Plain text
2617 #: build/C/man2/perf_event_open.2:273
2618 msgid ""
2619 "This indicates one of the \"generalized\" hardware events provided by the "
2620 "kernel.  See the I<config> field definition for more details."
2621 msgstr ""
2622
2623 #. type: TP
2624 #: build/C/man2/perf_event_open.2:273
2625 #, no-wrap
2626 msgid "B<PERF_TYPE_SOFTWARE>"
2627 msgstr ""
2628
2629 #. type: Plain text
2630 #: build/C/man2/perf_event_open.2:277
2631 msgid ""
2632 "This indicates one of the software-defined events provided by the kernel "
2633 "(even if no hardware support is available)."
2634 msgstr ""
2635
2636 #. type: TP
2637 #: build/C/man2/perf_event_open.2:277
2638 #, fuzzy, no-wrap
2639 #| msgid "B<PTRACE_CONT>"
2640 msgid "B<PERF_TYPE_TRACEPOINT>"
2641 msgstr "B<PTRACE_CONT>"
2642
2643 #. type: Plain text
2644 #: build/C/man2/perf_event_open.2:281
2645 msgid ""
2646 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2647 msgstr ""
2648
2649 #. type: TP
2650 #: build/C/man2/perf_event_open.2:281
2651 #, no-wrap
2652 msgid "B<PERF_TYPE_HW_CACHE>"
2653 msgstr ""
2654
2655 #. type: Plain text
2656 #: build/C/man2/perf_event_open.2:287
2657 msgid ""
2658 "This indicates a hardware cache event.  This has a special encoding, "
2659 "described in the I<config> field definition."
2660 msgstr ""
2661
2662 #. type: TP
2663 #: build/C/man2/perf_event_open.2:287
2664 #, no-wrap
2665 msgid "B<PERF_TYPE_RAW>"
2666 msgstr ""
2667
2668 #. type: Plain text
2669 #: build/C/man2/perf_event_open.2:291
2670 msgid ""
2671 "This indicates a \"raw\" implementation-specific event in the I<config> "
2672 "field."
2673 msgstr ""
2674
2675 #. type: TP
2676 #: build/C/man2/perf_event_open.2:291
2677 #, fuzzy, no-wrap
2678 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2679 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2680 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2681
2682 #. type: Plain text
2683 #: build/C/man2/perf_event_open.2:296
2684 msgid ""
2685 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2686 "can be read/write accesses to an address as well as execution of an "
2687 "instruction address."
2688 msgstr ""
2689
2690 #. type: TP
2691 #: build/C/man2/perf_event_open.2:296
2692 #, no-wrap
2693 msgid "dynamic PMU"
2694 msgstr ""
2695
2696 #. type: Plain text
2697 #: build/C/man2/perf_event_open.2:315
2698 msgid ""
2699 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2700 "enable this, a value exported by the kernel can be used in the I<type> field "
2701 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2702 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2703 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2704 "content is an integer that can be used in the I<type> field.  For instance, "
2705 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2706 "CPU PMU, which is usually 4."
2707 msgstr ""
2708
2709 #. type: TP
2710 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2711 #, no-wrap
2712 msgid "I<size>"
2713 msgstr ""
2714
2715 #. type: Plain text
2716 #: build/C/man2/perf_event_open.2:325
2717 msgid ""
2718 "The size of the I<perf_event_attr> structure for forward/backward "
2719 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2720 "the kernel to see the struct size at the time of compilation."
2721 msgstr ""
2722
2723 #. type: Plain text
2724 #: build/C/man2/perf_event_open.2:340
2725 msgid ""
2726 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2727 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2728 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2729 "corresponding to the addition of branch sampling in Linux 3.4.  "
2730 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2731 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2732 msgstr ""
2733
2734 #. type: TP
2735 #: build/C/man2/perf_event_open.2:340
2736 #, no-wrap
2737 msgid "I<config>"
2738 msgstr ""
2739
2740 #. type: Plain text
2741 #: build/C/man2/perf_event_open.2:351
2742 msgid ""
2743 "This specifies which event you want, in conjunction with the I<type> field.  "
2744 "The I<config1> and I<config2> fields are also taken into account in cases "
2745 "where 64 bits is not enough to fully specify the event.  The encoding of "
2746 "these fields are event dependent."
2747 msgstr ""
2748
2749 #. type: Plain text
2750 #: build/C/man2/perf_event_open.2:357
2751 msgid ""
2752 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2753 "counter configuration data; if the most significant bit is unset, the next 7 "
2754 "bits are an event type and the rest of the bits are the event identifier."
2755 msgstr ""
2756
2757 #. type: Plain text
2758 #: build/C/man2/perf_event_open.2:368
2759 msgid ""
2760 "There are various ways to set the I<config> field that are dependent on the "
2761 "value of the previously described I<type> field.  What follows are various "
2762 "possible settings for I<config> separated out by I<type>."
2763 msgstr ""
2764
2765 #. type: Plain text
2766 #: build/C/man2/perf_event_open.2:378
2767 msgid ""
2768 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2769 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2770 "I<config> to one of the following:"
2771 msgstr ""
2772
2773 #. type: TP
2774 #: build/C/man2/perf_event_open.2:379
2775 #, no-wrap
2776 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2777 msgstr ""
2778
2779 #. type: Plain text
2780 #: build/C/man2/perf_event_open.2:383
2781 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2782 msgstr ""
2783
2784 #. type: TP
2785 #: build/C/man2/perf_event_open.2:383
2786 #, no-wrap
2787 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2788 msgstr ""
2789
2790 #. type: Plain text
2791 #: build/C/man2/perf_event_open.2:388
2792 msgid ""
2793 "Retired instructions.  Be careful, these can be affected by various issues, "
2794 "most notably hardware interrupt counts"
2795 msgstr ""
2796
2797 #. type: TP
2798 #: build/C/man2/perf_event_open.2:388
2799 #, no-wrap
2800 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2801 msgstr ""
2802
2803 #. type: Plain text
2804 #: build/C/man2/perf_event_open.2:395
2805 msgid ""
2806 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2807 "may vary depending on your CPU.  This may include prefetches and coherency "
2808 "messages; again this depends on the design of your CPU."
2809 msgstr ""
2810
2811 #. type: TP
2812 #: build/C/man2/perf_event_open.2:395
2813 #, no-wrap
2814 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2815 msgstr ""
2816
2817 #. type: Plain text
2818 #: build/C/man2/perf_event_open.2:402
2819 msgid ""
2820 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2821 "intended to be used in conjunction with the "
2822 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2823 msgstr ""
2824
2825 #. type: TP
2826 #: build/C/man2/perf_event_open.2:402
2827 #, no-wrap
2828 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2829 msgstr ""
2830
2831 #. type: Plain text
2832 #: build/C/man2/perf_event_open.2:407
2833 msgid ""
2834 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2835 "event on AMD processors."
2836 msgstr ""
2837
2838 #. type: TP
2839 #: build/C/man2/perf_event_open.2:407
2840 #, no-wrap
2841 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2842 msgstr ""
2843
2844 #. type: Plain text
2845 #: build/C/man2/perf_event_open.2:410
2846 msgid "Mispredicted branch instructions."
2847 msgstr ""
2848
2849 #. type: TP
2850 #: build/C/man2/perf_event_open.2:410
2851 #, no-wrap
2852 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2853 msgstr ""
2854
2855 #. type: Plain text
2856 #: build/C/man2/perf_event_open.2:413
2857 msgid "Bus cycles, which can be different from total cycles."
2858 msgstr ""
2859
2860 #. type: TP
2861 #: build/C/man2/perf_event_open.2:413
2862 #, fuzzy, no-wrap
2863 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2864 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2865 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2866
2867 #. type: Plain text
2868 #: build/C/man2/perf_event_open.2:416
2869 msgid "Stalled cycles during issue."
2870 msgstr ""
2871
2872 #. type: TP
2873 #: build/C/man2/perf_event_open.2:416
2874 #, no-wrap
2875 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2876 msgstr ""
2877
2878 #. type: Plain text
2879 #: build/C/man2/perf_event_open.2:419
2880 msgid "Stalled cycles during retirement."
2881 msgstr ""
2882
2883 #. type: TP
2884 #: build/C/man2/perf_event_open.2:419
2885 #, fuzzy, no-wrap
2886 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2887 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2888 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2889
2890 #. type: Plain text
2891 #: build/C/man2/perf_event_open.2:422
2892 msgid "Total cycles; not affected by CPU frequency scaling."
2893 msgstr ""
2894
2895 #. type: Plain text
2896 #: build/C/man2/perf_event_open.2:432
2897 msgid ""
2898 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2899 "provided by the kernel.  Set I<config> to one of the following:"
2900 msgstr ""
2901
2902 #. type: TP
2903 #: build/C/man2/perf_event_open.2:433
2904 #, no-wrap
2905 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2906 msgstr ""
2907
2908 #. type: Plain text
2909 #: build/C/man2/perf_event_open.2:436
2910 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2911 msgstr ""
2912
2913 #. type: TP
2914 #: build/C/man2/perf_event_open.2:436
2915 #, no-wrap
2916 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2917 msgstr ""
2918
2919 #. type: Plain text
2920 #: build/C/man2/perf_event_open.2:439
2921 msgid "This reports a clock count specific to the task that is running."
2922 msgstr ""
2923
2924 #. type: TP
2925 #: build/C/man2/perf_event_open.2:439
2926 #, no-wrap
2927 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2928 msgstr ""
2929
2930 #. type: Plain text
2931 #: build/C/man2/perf_event_open.2:442
2932 msgid "This reports the number of page faults."
2933 msgstr ""
2934
2935 #. type: TP
2936 #: build/C/man2/perf_event_open.2:442
2937 #, no-wrap
2938 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2939 msgstr ""
2940
2941 #. type: Plain text
2942 #: build/C/man2/perf_event_open.2:447
2943 msgid ""
2944 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2945 "as user-space events, after that they are reported as happening in the "
2946 "kernel."
2947 msgstr ""
2948
2949 #. type: TP
2950 #: build/C/man2/perf_event_open.2:447
2951 #, no-wrap
2952 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2953 msgstr ""
2954
2955 #. type: Plain text
2956 #: build/C/man2/perf_event_open.2:451
2957 msgid "This reports the number of times the process has migrated to a new CPU."
2958 msgstr ""
2959
2960 #. type: TP
2961 #: build/C/man2/perf_event_open.2:451
2962 #, no-wrap
2963 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2964 msgstr ""
2965
2966 #. type: Plain text
2967 #: build/C/man2/perf_event_open.2:455
2968 msgid ""
2969 "This counts the number of minor page faults.  These did not require disk I/O "
2970 "to handle."
2971 msgstr ""
2972
2973 #. type: TP
2974 #: build/C/man2/perf_event_open.2:455
2975 #, no-wrap
2976 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2977 msgstr ""
2978
2979 #. type: Plain text
2980 #: build/C/man2/perf_event_open.2:459
2981 msgid ""
2982 "This counts the number of major page faults.  These required disk I/O to "
2983 "handle."
2984 msgstr ""
2985
2986 #. type: TP
2987 #: build/C/man2/perf_event_open.2:459
2988 #, fuzzy, no-wrap
2989 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2990 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2991 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2992
2993 #. type: Plain text
2994 #: build/C/man2/perf_event_open.2:465
2995 msgid ""
2996 "This counts the number of alignment faults.  These happen when unaligned "
2997 "memory accesses happen; the kernel can handle these but it reduces "
2998 "performance.  This only happens on some architectures (never on x86)."
2999 msgstr ""
3000
3001 #. type: TP
3002 #: build/C/man2/perf_event_open.2:465
3003 #, fuzzy, no-wrap
3004 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3005 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
3006 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3007
3008 #. type: Plain text
3009 #: build/C/man2/perf_event_open.2:471
3010 msgid ""
3011 "This counts the number of emulation faults.  The kernel sometimes traps on "
3012 "unimplemented instructions and emulates them for user space.  This can "
3013 "negatively impact performance."
3014 msgstr ""
3015
3016 #. type: Plain text
3017 #: build/C/man2/perf_event_open.2:484
3018 msgid ""
3019 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3020 "tracepoints.  The value to use in I<config> can be obtained from under "
3021 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3022 msgstr ""
3023
3024 #. type: Plain text
3025 #: build/C/man2/perf_event_open.2:495
3026 msgid ""
3027 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3028 "cache event.  To calculate the appropriate I<config> value use the following "
3029 "equation:"
3030 msgstr ""
3031
3032 #. type: Plain text
3033 #: build/C/man2/perf_event_open.2:500
3034 #, no-wrap
3035 msgid ""
3036 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3037 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3038 msgstr ""
3039
3040 #. type: Plain text
3041 #: build/C/man2/perf_event_open.2:505
3042 msgid "where I<perf_hw_cache_id> is one of:"
3043 msgstr ""
3044
3045 #. type: TP
3046 #: build/C/man2/perf_event_open.2:506
3047 #, no-wrap
3048 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3049 msgstr ""
3050
3051 #. type: Plain text
3052 #: build/C/man2/perf_event_open.2:509
3053 msgid "for measuring Level 1 Data Cache"
3054 msgstr ""
3055
3056 #. type: TP
3057 #: build/C/man2/perf_event_open.2:509
3058 #, no-wrap
3059 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3060 msgstr ""
3061
3062 #. type: Plain text
3063 #: build/C/man2/perf_event_open.2:512
3064 msgid "for measuring Level 1 Instruction Cache"
3065 msgstr ""
3066
3067 #. type: TP
3068 #: build/C/man2/perf_event_open.2:512
3069 #, no-wrap
3070 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3071 msgstr ""
3072
3073 #. type: Plain text
3074 #: build/C/man2/perf_event_open.2:515
3075 msgid "for measuring Last-Level Cache"
3076 msgstr ""
3077
3078 #. type: TP
3079 #: build/C/man2/perf_event_open.2:515
3080 #, no-wrap
3081 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3082 msgstr ""
3083
3084 #. type: Plain text
3085 #: build/C/man2/perf_event_open.2:518
3086 msgid "for measuring the Data TLB"
3087 msgstr ""
3088
3089 #. type: TP
3090 #: build/C/man2/perf_event_open.2:518
3091 #, no-wrap
3092 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3093 msgstr ""
3094
3095 #. type: Plain text
3096 #: build/C/man2/perf_event_open.2:521
3097 msgid "for measuring the Instruction TLB"
3098 msgstr ""
3099
3100 #. type: TP
3101 #: build/C/man2/perf_event_open.2:521
3102 #, no-wrap
3103 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3104 msgstr ""
3105
3106 #. type: Plain text
3107 #: build/C/man2/perf_event_open.2:524
3108 msgid "for measuring the branch prediction unit"
3109 msgstr ""
3110
3111 #. type: TP
3112 #: build/C/man2/perf_event_open.2:524
3113 #, fuzzy, no-wrap
3114 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3115 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3116 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3117
3118 #. type: Plain text
3119 #: build/C/man2/perf_event_open.2:527
3120 msgid "for measuring local memory accesses"
3121 msgstr ""
3122
3123 #. type: Plain text
3124 #: build/C/man2/perf_event_open.2:532
3125 msgid "and I<perf_hw_cache_op_id> is one of"
3126 msgstr ""
3127
3128 #. type: TP
3129 #: build/C/man2/perf_event_open.2:533
3130 #, no-wrap
3131 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3132 msgstr ""
3133
3134 #. type: Plain text
3135 #: build/C/man2/perf_event_open.2:536
3136 msgid "for read accesses"
3137 msgstr ""
3138
3139 #. type: TP
3140 #: build/C/man2/perf_event_open.2:536
3141 #, no-wrap
3142 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3143 msgstr ""
3144
3145 #. type: Plain text
3146 #: build/C/man2/perf_event_open.2:539
3147 msgid "for write accesses"
3148 msgstr ""
3149
3150 #. type: TP
3151 #: build/C/man2/perf_event_open.2:539
3152 #, no-wrap
3153 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3154 msgstr ""
3155
3156 #. type: Plain text
3157 #: build/C/man2/perf_event_open.2:542
3158 msgid "for prefetch accesses"
3159 msgstr ""
3160
3161 #. type: Plain text
3162 #: build/C/man2/perf_event_open.2:547
3163 msgid "and I<perf_hw_cache_op_result_id> is one of"
3164 msgstr ""
3165
3166 #. type: TP
3167 #: build/C/man2/perf_event_open.2:548
3168 #, no-wrap
3169 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man2/perf_event_open.2:551
3174 msgid "to measure accesses"
3175 msgstr ""
3176
3177 #. type: TP
3178 #: build/C/man2/perf_event_open.2:551
3179 #, no-wrap
3180 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3181 msgstr ""
3182
3183 #. type: Plain text
3184 #: build/C/man2/perf_event_open.2:554
3185 msgid "to measure misses"
3186 msgstr ""
3187
3188 #. type: Plain text
3189 #: build/C/man2/perf_event_open.2:572
3190 msgid ""
3191 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3192 "needed.  Most CPUs support events that are not covered by the \"generalized"
3193 "\" events.  These are implementation defined; see your CPU manual (for "
3194 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3195 "Developer Guide).  The libpfm4 library can be used to translate from the "
3196 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3197 "expects in this field."
3198 msgstr ""
3199
3200 #. type: Plain text
3201 #: build/C/man2/perf_event_open.2:581
3202 msgid ""
3203 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3204 "Its parameters are set in other places."
3205 msgstr ""
3206
3207 #. type: TP
3208 #: build/C/man2/perf_event_open.2:582
3209 #, no-wrap
3210 msgid "I<sample_period>, I<sample_freq>"
3211 msgstr ""
3212
3213 #. type: Plain text
3214 #: build/C/man2/perf_event_open.2:594
3215 msgid ""
3216 "A \"sampling\" counter is one that generates an interrupt every N events, "
3217 "where N is given by I<sample_period>.  A sampling counter has "
3218 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3219 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3220 "is recorded on each interrupt."
3221 msgstr ""
3222
3223 #. type: Plain text
3224 #: build/C/man2/perf_event_open.2:604
3225 msgid ""
3226 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3227 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3228 "period to try and achieve the desired rate.  The rate of adjustment is a "
3229 "timer tick."
3230 msgstr ""
3231
3232 #. type: TP
3233 #: build/C/man2/perf_event_open.2:604
3234 #, no-wrap
3235 msgid "I<sample_type>"
3236 msgstr ""
3237
3238 #. type: Plain text
3239 #: build/C/man2/perf_event_open.2:616
3240 msgid ""
3241 "The various bits in this field specify which values to include in the "
3242 "sample.  They will be recorded in a ring-buffer, which is available to user "
3243 "space using B<mmap>(2).  The order in which the values are saved in the "
3244 "sample are documented in the MMAP Layout subsection below; it is not the "
3245 "I<enum perf_event_sample_format> order."
3246 msgstr ""
3247
3248 #. type: TP
3249 #: build/C/man2/perf_event_open.2:617
3250 #, no-wrap
3251 msgid "B<PERF_SAMPLE_IP>"
3252 msgstr ""
3253
3254 #. type: Plain text
3255 #: build/C/man2/perf_event_open.2:620
3256 msgid "Records instruction pointer."
3257 msgstr ""
3258
3259 #. type: TP
3260 #: build/C/man2/perf_event_open.2:620
3261 #, no-wrap
3262 msgid "B<PERF_SAMPLE_TID>"
3263 msgstr ""
3264
3265 #. type: Plain text
3266 #: build/C/man2/perf_event_open.2:623
3267 msgid "Records the process and thread IDs."
3268 msgstr ""
3269
3270 #. type: TP
3271 #: build/C/man2/perf_event_open.2:623
3272 #, no-wrap
3273 msgid "B<PERF_SAMPLE_TIME>"
3274 msgstr ""
3275
3276 #. type: Plain text
3277 #: build/C/man2/perf_event_open.2:626
3278 msgid "Records a timestamp."
3279 msgstr ""
3280
3281 #. type: TP
3282 #: build/C/man2/perf_event_open.2:626
3283 #, no-wrap
3284 msgid "B<PERF_SAMPLE_ADDR>"
3285 msgstr ""
3286
3287 #. type: Plain text
3288 #: build/C/man2/perf_event_open.2:629
3289 msgid "Records an address, if applicable."
3290 msgstr ""
3291
3292 #. type: TP
3293 #: build/C/man2/perf_event_open.2:629
3294 #, no-wrap
3295 msgid "B<PERF_SAMPLE_READ>"
3296 msgstr ""
3297
3298 #. type: Plain text
3299 #: build/C/man2/perf_event_open.2:632
3300 msgid ""
3301 "Record counter values for all events in a group, not just the group leader."
3302 msgstr ""
3303
3304 #. type: TP
3305 #: build/C/man2/perf_event_open.2:632
3306 #, no-wrap
3307 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3308 msgstr ""
3309
3310 #. type: Plain text
3311 #: build/C/man2/perf_event_open.2:635
3312 msgid "Records the callchain (stack backtrace)."
3313 msgstr ""
3314
3315 #. type: TP
3316 #: build/C/man2/perf_event_open.2:635
3317 #, no-wrap
3318 msgid "B<PERF_SAMPLE_ID>"
3319 msgstr ""
3320
3321 #. type: Plain text
3322 #: build/C/man2/perf_event_open.2:638
3323 msgid "Records a unique ID for the opened event's group leader."
3324 msgstr ""
3325
3326 #. type: TP
3327 #: build/C/man2/perf_event_open.2:638
3328 #, no-wrap
3329 msgid "B<PERF_SAMPLE_CPU>"
3330 msgstr ""
3331
3332 #. type: Plain text
3333 #: build/C/man2/perf_event_open.2:641
3334 msgid "Records CPU number."
3335 msgstr ""
3336
3337 #. type: TP
3338 #: build/C/man2/perf_event_open.2:641
3339 #, no-wrap
3340 msgid "B<PERF_SAMPLE_PERIOD>"
3341 msgstr ""
3342
3343 #. type: Plain text
3344 #: build/C/man2/perf_event_open.2:644
3345 msgid "Records the current sampling period."
3346 msgstr ""
3347
3348 #. type: TP
3349 #: build/C/man2/perf_event_open.2:644
3350 #, no-wrap
3351 msgid "B<PERF_SAMPLE_STREAM_ID>"
3352 msgstr ""
3353
3354 #. type: Plain text
3355 #: build/C/man2/perf_event_open.2:651
3356 msgid ""
3357 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3358 "actual ID is returned, not the group leader.  This ID is the same as the one "
3359 "returned by PERF_FORMAT_ID."
3360 msgstr ""
3361
3362 #. type: TP
3363 #: build/C/man2/perf_event_open.2:651
3364 #, no-wrap
3365 msgid "B<PERF_SAMPLE_RAW>"
3366 msgstr ""
3367
3368 #. type: Plain text
3369 #: build/C/man2/perf_event_open.2:655
3370 msgid ""
3371 "Records additional data, if applicable.  Usually returned by tracepoint "
3372 "events."
3373 msgstr ""
3374
3375 #. type: TP
3376 #: build/C/man2/perf_event_open.2:655
3377 #, fuzzy, no-wrap
3378 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3379 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3380 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3381
3382 #. type: Plain text
3383 #: build/C/man2/perf_event_open.2:659
3384 msgid "Records the branch stack.  See branch_sample_type."
3385 msgstr ""
3386
3387 #. type: TP
3388 #: build/C/man2/perf_event_open.2:659
3389 #, fuzzy, no-wrap
3390 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3391 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3392 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3393
3394 #. type: Plain text
3395 #: build/C/man2/perf_event_open.2:662
3396 msgid "Records the current register state."
3397 msgstr ""
3398
3399 #. type: TP
3400 #: build/C/man2/perf_event_open.2:662
3401 #, fuzzy, no-wrap
3402 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3403 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3404 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3405
3406 #. type: Plain text
3407 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3408 #: build/C/man2/perf_event_open.2:1803
3409 msgid "[To be documented]"
3410 msgstr ""
3411
3412 #. type: TP
3413 #: build/C/man2/perf_event_open.2:666
3414 #, no-wrap
3415 msgid "I<read_format>"
3416 msgstr ""
3417
3418 #. type: Plain text
3419 #: build/C/man2/perf_event_open.2:673
3420 msgid ""
3421 "This field specifies the format of the data returned by B<read>(2)  on a "
3422 "B<perf_event_open>()  file descriptor."
3423 msgstr ""
3424
3425 #. type: TP
3426 #: build/C/man2/perf_event_open.2:674
3427 #, no-wrap
3428 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3429 msgstr ""
3430
3431 #. type: Plain text
3432 #: build/C/man2/perf_event_open.2:681
3433 msgid ""
3434 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3435 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3436 msgstr ""
3437
3438 #. type: TP
3439 #: build/C/man2/perf_event_open.2:681
3440 #, no-wrap
3441 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3442 msgstr ""
3443
3444 #. type: Plain text
3445 #: build/C/man2/perf_event_open.2:688
3446 msgid ""
3447 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3448 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3449 msgstr ""
3450
3451 #. type: TP
3452 #: build/C/man2/perf_event_open.2:688
3453 #, no-wrap
3454 msgid "B<PERF_FORMAT_ID>"
3455 msgstr ""
3456
3457 #. type: Plain text
3458 #: build/C/man2/perf_event_open.2:691
3459 msgid "Adds a 64-bit unique value that corresponds to the event group."
3460 msgstr ""
3461
3462 #. type: TP
3463 #: build/C/man2/perf_event_open.2:691
3464 #, no-wrap
3465 msgid "B<PERF_FORMAT_GROUP>"
3466 msgstr ""
3467
3468 #. type: Plain text
3469 #: build/C/man2/perf_event_open.2:694
3470 msgid "Allows all counter values in an event group to be read with one read."
3471 msgstr ""
3472
3473 #. type: TP
3474 #: build/C/man2/perf_event_open.2:695
3475 #, no-wrap
3476 msgid "I<disabled>"
3477 msgstr ""
3478
3479 #. type: Plain text
3480 #: build/C/man2/perf_event_open.2:705
3481 msgid ""
3482 "The I<disabled> bit specifies whether the counter starts out disabled or "
3483 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3484 "B<prctl>(2), or I<enable_on_exec>."
3485 msgstr ""
3486
3487 #. type: TP
3488 #: build/C/man2/perf_event_open.2:705
3489 #, no-wrap
3490 msgid "I<inherit>"
3491 msgstr ""
3492
3493 #. type: Plain text
3494 #: build/C/man2/perf_event_open.2:714
3495 msgid ""
3496 "The I<inherit> bit specifies that this counter should count events of child "
3497 "tasks as well as the task specified.  This only applies to new children, not "
3498 "to any existing children at the time the counter is created (nor to any new "
3499 "children of existing children)."
3500 msgstr ""
3501
3502 #. type: Plain text
3503 #: build/C/man2/perf_event_open.2:719
3504 msgid ""
3505 "Inherit does not work for some combinations of I<read_format>s, such as "
3506 "B<PERF_FORMAT_GROUP>."
3507 msgstr ""
3508
3509 #. type: TP
3510 #: build/C/man2/perf_event_open.2:719
3511 #, no-wrap
3512 msgid "I<pinned>"
3513 msgstr ""
3514
3515 #. type: Plain text
3516 #: build/C/man2/perf_event_open.2:732
3517 msgid ""
3518 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3519 "at all possible.  It only applies to hardware counters and only to group "
3520 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3521 "there are not enough hardware counters or because of a conflict with some "
3522 "other event), then the counter goes into an 'error' state, where reads "
3523 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3524 "subsequently enabled or disabled."
3525 msgstr ""
3526
3527 #. type: TP
3528 #: build/C/man2/perf_event_open.2:732
3529 #, no-wrap
3530 msgid "I<exclusive>"
3531 msgstr ""
3532
3533 #. type: Plain text
3534 #: build/C/man2/perf_event_open.2:741
3535 msgid ""
3536 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3537 "it should be the only group using the CPU's counters.  In the future this "
3538 "may allow monitoring programs to support PMU features that need to run alone "
3539 "so that they do not disrupt other hardware counters."
3540 msgstr ""
3541
3542 #. type: TP
3543 #: build/C/man2/perf_event_open.2:741
3544 #, no-wrap
3545 msgid "I<exclude_user>"
3546 msgstr ""
3547
3548 #. type: Plain text
3549 #: build/C/man2/perf_event_open.2:744
3550 msgid ""
3551 "If this bit is set, the count excludes events that happen in user space."
3552 msgstr ""
3553
3554 #. type: TP
3555 #: build/C/man2/perf_event_open.2:744
3556 #, no-wrap
3557 msgid "I<exclude_kernel>"
3558 msgstr ""
3559
3560 #. type: Plain text
3561 #: build/C/man2/perf_event_open.2:747
3562 msgid ""
3563 "If this bit is set, the count excludes events that happen in kernel-space."
3564 msgstr ""
3565
3566 #. type: TP
3567 #: build/C/man2/perf_event_open.2:747
3568 #, no-wrap
3569 msgid "I<exclude_hv>"
3570 msgstr ""
3571
3572 #. type: Plain text
3573 #: build/C/man2/perf_event_open.2:755
3574 msgid ""
3575 "If this bit is set, the count excludes events that happen in the "
3576 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3577 "this (such as POWER).  Extra support is needed for handling hypervisor "
3578 "measurements on most machines."
3579 msgstr ""
3580
3581 #. type: TP
3582 #: build/C/man2/perf_event_open.2:755
3583 #, no-wrap
3584 msgid "I<exclude_idle>"
3585 msgstr ""
3586
3587 #. type: Plain text
3588 #: build/C/man2/perf_event_open.2:758
3589 msgid "If set, don't count when the CPU is idle."
3590 msgstr ""
3591
3592 #. type: TP
3593 #: build/C/man2/perf_event_open.2:758
3594 #, no-wrap
3595 msgid "I<mmap>"
3596 msgstr ""
3597
3598 #. type: Plain text
3599 #: build/C/man2/perf_event_open.2:763
3600 msgid "The I<mmap> bit enables recording of exec mmap events."
3601 msgstr ""
3602
3603 #. type: TP
3604 #: build/C/man2/perf_event_open.2:763
3605 #, no-wrap
3606 msgid "I<comm>"
3607 msgstr ""
3608
3609 #. type: Plain text
3610 #: build/C/man2/perf_event_open.2:774
3611 msgid ""
3612 "The I<comm> bit enables tracking of process command name as modified by the "
3613 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3614 "tools, there is no way to distinguish one system call versus the other."
3615 msgstr ""
3616
3617 #. type: TP
3618 #: build/C/man2/perf_event_open.2:774
3619 #, no-wrap
3620 msgid "I<freq>"
3621 msgstr ""
3622
3623 #. type: Plain text
3624 #: build/C/man2/perf_event_open.2:781
3625 msgid ""
3626 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3627 "when setting up the sampling interval."
3628 msgstr ""
3629
3630 #. type: TP
3631 #: build/C/man2/perf_event_open.2:781
3632 #, no-wrap
3633 msgid "I<inherit_stat>"
3634 msgstr ""
3635
3636 #. type: Plain text
3637 #: build/C/man2/perf_event_open.2:788
3638 msgid ""
3639 "This bit enables saving of event counts on context switch for inherited "
3640 "tasks.  This is only meaningful if the I<inherit> field is set."
3641 msgstr ""
3642
3643 #. type: TP
3644 #: build/C/man2/perf_event_open.2:788
3645 #, no-wrap
3646 msgid "I<enable_on_exec>"
3647 msgstr ""
3648
3649 #. type: Plain text
3650 #: build/C/man2/perf_event_open.2:793
3651 msgid ""
3652 "If this bit is set, a counter is automatically enabled after a call to "
3653 "B<exec>(2)."
3654 msgstr ""
3655
3656 #. type: TP
3657 #: build/C/man2/perf_event_open.2:793
3658 #, no-wrap
3659 msgid "I<task>"
3660 msgstr ""
3661
3662 #. type: Plain text
3663 #: build/C/man2/perf_event_open.2:797
3664 msgid ""
3665 "If this bit is set, then fork/exit notifications are included in the ring "
3666 "buffer."
3667 msgstr ""
3668
3669 #. type: TP
3670 #: build/C/man2/perf_event_open.2:797
3671 #, no-wrap
3672 msgid "I<watermark>"
3673 msgstr ""
3674
3675 #. type: Plain text
3676 #: build/C/man2/perf_event_open.2:805
3677 msgid ""
3678 "If set, have a sampling interrupt happen when we cross the "
3679 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3680 "I<wakeup_events> samples."
3681 msgstr ""
3682
3683 #. type: TP
3684 #: build/C/man2/perf_event_open.2:805
3685 #, fuzzy, no-wrap
3686 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3687 msgid "I<precise_ip> (Since Linux 2.6.35)"
3688 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3689
3690 #. type: Plain text
3691 #: build/C/man2/perf_event_open.2:815
3692 msgid ""
3693 "This controls the amount of skid.  Skid is how many instructions execute "
3694 "between an event of interest happening and the kernel being able to stop and "
3695 "record the event.  Smaller skid is better and allows more accurate reporting "
3696 "of which events correspond to which instructions, but hardware is often "
3697 "limited with how small this can be."
3698 msgstr ""
3699
3700 #. type: Plain text
3701 #: build/C/man2/perf_event_open.2:817
3702 #, fuzzy
3703 #| msgid "The I<subcmd> value is one of the following:"
3704 msgid "The values of this are the following:"
3705 msgstr "I<subcmd> の値は以下のいずれかである"
3706
3707 #. type: TP
3708 #: build/C/man2/perf_event_open.2:818
3709 #, no-wrap
3710 msgid "0 -"
3711 msgstr ""
3712
3713 #. type: Plain text
3714 #: build/C/man2/perf_event_open.2:822
3715 msgid "B<SAMPLE_IP> can have arbitrary skid"
3716 msgstr ""
3717
3718 #. type: TP
3719 #: build/C/man2/perf_event_open.2:822
3720 #, no-wrap
3721 msgid "1 -"
3722 msgstr ""
3723
3724 #. type: Plain text
3725 #: build/C/man2/perf_event_open.2:826
3726 msgid "B<SAMPLE_IP> must have constant skid"
3727 msgstr ""
3728
3729 #. type: TP
3730 #: build/C/man2/perf_event_open.2:826
3731 #, no-wrap
3732 msgid "2 -"
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/perf_event_open.2:830
3737 msgid "B<SAMPLE_IP> requested to have 0 skid"
3738 msgstr ""
3739
3740 #. type: TP
3741 #: build/C/man2/perf_event_open.2:830
3742 #, no-wrap
3743 msgid "3 -"
3744 msgstr ""
3745
3746 #. type: Plain text
3747 #: build/C/man2/perf_event_open.2:836
3748 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3749 msgstr ""
3750
3751 #. type: TP
3752 #: build/C/man2/perf_event_open.2:837
3753 #, fuzzy, no-wrap
3754 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3755 msgid "I<mmap_data> (Since Linux 2.6.36)"
3756 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3757
3758 #. type: Plain text
3759 #: build/C/man2/perf_event_open.2:843
3760 msgid ""
3761 "The counterpart of the I<mmap> field, but enables including data mmap events "
3762 "in the ring-buffer."
3763 msgstr ""
3764
3765 #. type: TP
3766 #: build/C/man2/perf_event_open.2:843
3767 #, fuzzy, no-wrap
3768 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3769 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3770 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3771
3772 #. type: Plain text
3773 #: build/C/man2/perf_event_open.2:851
3774 msgid ""
3775 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3776 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3777 "selected."
3778 msgstr ""
3779
3780 #. type: TP
3781 #: build/C/man2/perf_event_open.2:851
3782 #, no-wrap
3783 msgid "I<exclude_host> (Since Linux 3.2)"
3784 msgstr ""
3785
3786 #. type: Plain text
3787 #: build/C/man2/perf_event_open.2:854
3788 msgid "Do not measure time spent in VM host"
3789 msgstr ""
3790
3791 #. type: TP
3792 #: build/C/man2/perf_event_open.2:854
3793 #, no-wrap
3794 msgid "I<exclude_guest> (Since Linux 3.2)"
3795 msgstr ""
3796
3797 #. type: Plain text
3798 #: build/C/man2/perf_event_open.2:857
3799 msgid "Do not measure time spent in VM guest"
3800 msgstr ""
3801
3802 #. type: TP
3803 #: build/C/man2/perf_event_open.2:857
3804 #, no-wrap
3805 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3806 msgstr ""
3807
3808 #. type: Plain text
3809 #: build/C/man2/perf_event_open.2:860
3810 msgid "Do not include kernel callchains."
3811 msgstr ""
3812
3813 #. type: TP
3814 #: build/C/man2/perf_event_open.2:860
3815 #, no-wrap
3816 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3817 msgstr ""
3818
3819 #. type: Plain text
3820 #: build/C/man2/perf_event_open.2:863
3821 msgid "Do not include user callchains."
3822 msgstr ""
3823
3824 #. type: TP
3825 #: build/C/man2/perf_event_open.2:863
3826 #, no-wrap
3827 msgid "I<wakeup_events>, I<wakeup_watermark>"
3828 msgstr ""
3829
3830 #. type: Plain text
3831 #: build/C/man2/perf_event_open.2:873
3832 msgid ""
3833 "This union sets how many samples (I<wakeup_events>)  or bytes "
3834 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3835 "is used is selected by the I<watermark> bitflag."
3836 msgstr ""
3837
3838 #. type: TP
3839 #: build/C/man2/perf_event_open.2:873
3840 #, fuzzy, no-wrap
3841 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3842 msgid "I<bp_type> (Since Linux 2.6.33)"
3843 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3844
3845 #. type: Plain text
3846 #: build/C/man2/perf_event_open.2:877
3847 msgid "This chooses the breakpoint type.  It is one of:"
3848 msgstr ""
3849
3850 #. type: TP
3851 #: build/C/man2/perf_event_open.2:878
3852 #, no-wrap
3853 msgid "B<HW_BREAKPOINT_EMPTY>"
3854 msgstr ""
3855
3856 #. type: Plain text
3857 #: build/C/man2/perf_event_open.2:881
3858 msgid "no breakpoint"
3859 msgstr ""
3860
3861 #. type: TP
3862 #: build/C/man2/perf_event_open.2:881
3863 #, no-wrap
3864 msgid "B<HW_BREAKPOINT_R>"
3865 msgstr ""
3866
3867 #. type: Plain text
3868 #: build/C/man2/perf_event_open.2:884
3869 msgid "count when we read the memory location"
3870 msgstr ""
3871
3872 #. type: TP
3873 #: build/C/man2/perf_event_open.2:884
3874 #, no-wrap
3875 msgid "B<HW_BREAKPOINT_W>"
3876 msgstr ""
3877
3878 #. type: Plain text
3879 #: build/C/man2/perf_event_open.2:887
3880 msgid "count when we write the memory location"
3881 msgstr ""
3882
3883 #. type: TP
3884 #: build/C/man2/perf_event_open.2:887
3885 #, no-wrap
3886 msgid "B<HW_BREAKPOINT_RW>"
3887 msgstr ""
3888
3889 #. type: Plain text
3890 #: build/C/man2/perf_event_open.2:890
3891 msgid "count when we read or write the memory location"
3892 msgstr ""
3893
3894 #. type: TP
3895 #: build/C/man2/perf_event_open.2:890
3896 #, no-wrap
3897 msgid "B<HW_BREAKPOINT_X>"
3898 msgstr ""
3899
3900 #. type: Plain text
3901 #: build/C/man2/perf_event_open.2:893
3902 msgid "count when we execute code at the memory location"
3903 msgstr ""
3904
3905 #. type: Plain text
3906 #: build/C/man2/perf_event_open.2:902
3907 msgid ""
3908 "The values can be combined via a bitwise or, but the combination of "
3909 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3910 "allowed."
3911 msgstr ""
3912
3913 #. type: TP
3914 #: build/C/man2/perf_event_open.2:903
3915 #, fuzzy, no-wrap
3916 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3917 msgid "I<bp_addr> (Since Linux 2.6.33)"
3918 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3919
3920 #. type: Plain text
3921 #: build/C/man2/perf_event_open.2:910
3922 msgid ""
3923 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3924 "memory address of the instruction of interest; for read and write "
3925 "breakpoints it is the memory address of the memory location of interest."
3926 msgstr ""
3927
3928 #. type: TP
3929 #: build/C/man2/perf_event_open.2:910
3930 #, fuzzy, no-wrap
3931 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3932 msgid "I<config1> (Since Linux 2.6.39)"
3933 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3934
3935 #. type: Plain text
3936 #: build/C/man2/perf_event_open.2:917
3937 msgid ""
3938 "I<config1> is used for setting events that need an extra register or "
3939 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3940 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3941 msgstr ""
3942
3943 #. type: TP
3944 #: build/C/man2/perf_event_open.2:917
3945 #, fuzzy, no-wrap
3946 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3947 msgid "I<bp_len> (Since Linux 2.6.33)"
3948 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3949
3950 #. type: Plain text
3951 #: build/C/man2/perf_event_open.2:931
3952 msgid ""
3953 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3954 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3955 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3956 "an execution breakpoint, set this to I<sizeof(long)>."
3957 msgstr ""
3958
3959 #. type: TP
3960 #: build/C/man2/perf_event_open.2:931
3961 #, fuzzy, no-wrap
3962 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3963 msgid "I<config2> (Since Linux 2.6.39)"
3964 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3965
3966 #. type: Plain text
3967 #: build/C/man2/perf_event_open.2:938
3968 msgid "I<config2> is a further extension of the I<config1> field."
3969 msgstr ""
3970
3971 #. type: TP
3972 #: build/C/man2/perf_event_open.2:938
3973 #, no-wrap
3974 msgid "I<branch_sample_type> (Since Linux 3.4)"
3975 msgstr ""
3976
3977 #. type: Plain text
3978 #: build/C/man2/perf_event_open.2:942
3979 msgid ""
3980 "This is used with the CPUs hardware branch sampling, if available.  It can "
3981 "have one of the following values:"
3982 msgstr ""
3983
3984 #. type: TP
3985 #: build/C/man2/perf_event_open.2:943
3986 #, no-wrap
3987 msgid "B<PERF_SAMPLE_BRANCH_USER>"
3988 msgstr ""
3989
3990 #. type: Plain text
3991 #: build/C/man2/perf_event_open.2:946
3992 msgid "Branch target is in user space"
3993 msgstr ""
3994
3995 #. type: TP
3996 #: build/C/man2/perf_event_open.2:946
3997 #, no-wrap
3998 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
3999 msgstr ""
4000
4001 #. type: Plain text
4002 #: build/C/man2/perf_event_open.2:949
4003 msgid "Branch target is in kernel space"
4004 msgstr ""
4005
4006 #. type: TP
4007 #: build/C/man2/perf_event_open.2:949
4008 #, no-wrap
4009 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4010 msgstr ""
4011
4012 #. type: Plain text
4013 #: build/C/man2/perf_event_open.2:952
4014 msgid "Branch target is in hypervisor"
4015 msgstr ""
4016
4017 #. type: TP
4018 #: build/C/man2/perf_event_open.2:952
4019 #, no-wrap
4020 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4021 msgstr ""
4022
4023 #. type: Plain text
4024 #: build/C/man2/perf_event_open.2:955
4025 msgid "Any branch type."
4026 msgstr ""
4027
4028 #. type: TP
4029 #: build/C/man2/perf_event_open.2:955
4030 #, no-wrap
4031 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4032 msgstr ""
4033
4034 #. type: Plain text
4035 #: build/C/man2/perf_event_open.2:958
4036 msgid "Any call branch"
4037 msgstr ""
4038
4039 #. type: TP
4040 #: build/C/man2/perf_event_open.2:958
4041 #, no-wrap
4042 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4043 msgstr ""
4044
4045 #. type: Plain text
4046 #: build/C/man2/perf_event_open.2:961
4047 msgid "Any return branch"
4048 msgstr ""
4049
4050 #. type: TP
4051 #: build/C/man2/perf_event_open.2:961
4052 #, no-wrap
4053 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4054 msgstr ""
4055
4056 #. type: Plain text
4057 #: build/C/man2/perf_event_open.2:964
4058 msgid "Indirect calls"
4059 msgstr ""
4060
4061 #. type: TP
4062 #: build/C/man2/perf_event_open.2:964
4063 #, no-wrap
4064 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4065 msgstr ""
4066
4067 #. type: Plain text
4068 #: build/C/man2/perf_event_open.2:967
4069 msgid "User, kernel, and hv"
4070 msgstr ""
4071
4072 #. type: TP
4073 #: build/C/man2/perf_event_open.2:968
4074 #, no-wrap
4075 msgid "I<sample_regs_user> (Since Linux 3.7)"
4076 msgstr ""
4077
4078 #.  FIXME: The following reference seems to be not quite right:
4079 #. type: Plain text
4080 #: build/C/man2/perf_event_open.2:974
4081 msgid ""
4082 "This defines the set of user registers to dump on samples.  See I<asm/"
4083 "perf_regs.h>."
4084 msgstr ""
4085
4086 #. type: TP
4087 #: build/C/man2/perf_event_open.2:974
4088 #, no-wrap
4089 msgid "I<sample_stack_user> (Since Linux 3.7)"
4090 msgstr ""
4091
4092 #. type: Plain text
4093 #: build/C/man2/perf_event_open.2:977
4094 msgid "This defines the size of the user stack to dump on samples."
4095 msgstr ""
4096
4097 #. type: SS
4098 #: build/C/man2/perf_event_open.2:977
4099 #, no-wrap
4100 msgid "Reading results"
4101 msgstr ""
4102
4103 #. type: Plain text
4104 #: build/C/man2/perf_event_open.2:987
4105 msgid ""
4106 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4107 "the events can be read from the file descriptor.  The values that are there "
4108 "are specified by the I<read_format> field in the I<attr> structure at open "
4109 "time."
4110 msgstr ""
4111
4112 #. type: Plain text
4113 #: build/C/man2/perf_event_open.2:992
4114 msgid ""
4115 "If you attempt to read into a buffer that is not big enough to hold the data "
4116 "B<ENOSPC> is returned"
4117 msgstr ""
4118
4119 #. type: Plain text
4120 #: build/C/man2/perf_event_open.2:994
4121 msgid "Here is the layout of the data returned by a read:"
4122 msgstr ""
4123
4124 #. type: IP
4125 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4126 #: build/C/man2/ptrace.2:1552 build/C/man2/ptrace.2:1562
4127 #: build/C/man2/ptrace.2:1570 build/C/man2/ptrace.2:1576
4128 #: build/C/man2/ptrace.2:1705
4129 #, no-wrap
4130 msgid "*"
4131 msgstr ""
4132
4133 #. type: Plain text
4134 #: build/C/man2/perf_event_open.2:998
4135 msgid ""
4136 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4137 "at once:"
4138 msgstr ""
4139
4140 #. type: Plain text
4141 #: build/C/man2/perf_event_open.2:1010
4142 #, no-wrap
4143 msgid ""
4144 "struct read_format {\n"
4145 "    u64 nr;            /* The number of events */\n"
4146 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4147 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4148 "    struct\n"
4149 "        u64 value;     /* The value of the event */\n"
4150 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4151 "    } values[nr];\n"
4152 "};\n"
4153 msgstr ""
4154
4155 #. type: Plain text
4156 #: build/C/man2/perf_event_open.2:1018
4157 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4158 msgstr ""
4159
4160 #. type: Plain text
4161 #: build/C/man2/perf_event_open.2:1027
4162 #, no-wrap
4163 msgid ""
4164 "struct read_format {\n"
4165 "    u64 value;         /* The value of the event */\n"
4166 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4167 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4168 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4169 "};\n"
4170 msgstr ""
4171
4172 #. type: Plain text
4173 #: build/C/man2/perf_event_open.2:1031
4174 msgid "The values read are as follows:"
4175 msgstr ""
4176
4177 #. type: TP
4178 #: build/C/man2/perf_event_open.2:1031
4179 #, no-wrap
4180 msgid "I<nr>"
4181 msgstr ""
4182
4183 #. type: Plain text
4184 #: build/C/man2/perf_event_open.2:1037
4185 msgid ""
4186 "The number of events in this file descriptor.  Only available if "
4187 "B<PERF_FORMAT_GROUP> was specified."
4188 msgstr ""
4189
4190 #. type: TP
4191 #: build/C/man2/perf_event_open.2:1037
4192 #, no-wrap
4193 msgid "I<time_enabled>, I<time_running>"
4194 msgstr ""
4195
4196 #. type: Plain text
4197 #: build/C/man2/perf_event_open.2:1049
4198 msgid ""
4199 "Total time the event was enabled and running.  Normally these are the same.  "
4200 "If more events are started than available counter slots on the PMU, then "
4201 "multiplexing happens and events only run part of the time.  In that case the "
4202 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4203 "value for the count."
4204 msgstr ""
4205
4206 #. type: TP
4207 #: build/C/man2/perf_event_open.2:1049
4208 #, no-wrap
4209 msgid "I<value>"
4210 msgstr ""
4211
4212 #. type: Plain text
4213 #: build/C/man2/perf_event_open.2:1052
4214 msgid "An unsigned 64-bit value containing the counter result."
4215 msgstr ""
4216
4217 #. type: TP
4218 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4219 #: build/C/man2/perf_event_open.2:1451
4220 #, no-wrap
4221 msgid "I<id>"
4222 msgstr ""
4223
4224 #. type: Plain text
4225 #: build/C/man2/perf_event_open.2:1058
4226 msgid ""
4227 "A globally unique value for this particular event, only there if "
4228 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4229 msgstr ""
4230
4231 #. type: SS
4232 #: build/C/man2/perf_event_open.2:1058
4233 #, no-wrap
4234 msgid "MMAP layout"
4235 msgstr ""
4236
4237 #. type: Plain text
4238 #: build/C/man2/perf_event_open.2:1068
4239 msgid ""
4240 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4241 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4242 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4243 msgstr ""
4244
4245 #. type: Plain text
4246 #: build/C/man2/perf_event_open.2:1074
4247 msgid ""
4248 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4249 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4250 "such as where the ring-buffer head is."
4251 msgstr ""
4252
4253 #. type: Plain text
4254 #: build/C/man2/perf_event_open.2:1077
4255 msgid ""
4256 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4257 "ring buffer when sampling even if you do not plan to access it."
4258 msgstr ""
4259
4260 #. type: Plain text
4261 #: build/C/man2/perf_event_open.2:1079
4262 msgid "The structure of the first metadata mmap page is as follows:"
4263 msgstr ""
4264
4265 #. type: Plain text
4266 #: build/C/man2/perf_event_open.2:1103
4267 #, no-wrap
4268 msgid ""
4269 "struct perf_event_mmap_page {\n"
4270 "    __u32 version;          /* version number of this structure */\n"
4271 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4272 "    __u32 lock;             /* seqlock for synchronization */\n"
4273 "    __u32 index;            /* hardware counter identifier */\n"
4274 "    __s64 offset;           /* add to hardware counter value */\n"
4275 "    __u64 time_enabled;     /* time event active */\n"
4276 "    __u64 time_running;     /* time event on CPU */\n"
4277 "    union {\n"
4278 "        __u64   capabilities;\n"
4279 "        __u64   cap_usr_time  : 1,\n"
4280 "                cap_usr_rdpmc : 1,\n"
4281 "    };\n"
4282 "    __u16   pmc_width;\n"
4283 "    __u16   time_shift;\n"
4284 "    __u32   time_mult;\n"
4285 "    __u64   time_offset;\n"
4286 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4287 "    __u64   data_head;         /* head in the data section */\n"
4288 "    __u64   data_tail;         /* user-space written tail */\n"
4289 "}\n"
4290 msgstr ""
4291
4292 #. type: Plain text
4293 #: build/C/man2/perf_event_open.2:1109
4294 msgid ""
4295 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4296 "in more detail:"
4297 msgstr ""
4298
4299 #. type: TP
4300 #: build/C/man2/perf_event_open.2:1109
4301 #, no-wrap
4302 msgid "I<version>"
4303 msgstr ""
4304
4305 #. type: Plain text
4306 #: build/C/man2/perf_event_open.2:1112
4307 msgid "Version number of this structure."
4308 msgstr ""
4309
4310 #. type: TP
4311 #: build/C/man2/perf_event_open.2:1112
4312 #, no-wrap
4313 msgid "I<compat_version>"
4314 msgstr ""
4315
4316 #. type: Plain text
4317 #: build/C/man2/perf_event_open.2:1115
4318 msgid "The lowest version this is compatible with."
4319 msgstr ""
4320
4321 #. type: TP
4322 #: build/C/man2/perf_event_open.2:1115
4323 #, no-wrap
4324 msgid "I<lock>"
4325 msgstr ""
4326
4327 #. type: Plain text
4328 #: build/C/man2/perf_event_open.2:1118
4329 msgid "A seqlock for synchronization."
4330 msgstr ""
4331
4332 #. type: TP
4333 #: build/C/man2/perf_event_open.2:1118
4334 #, no-wrap
4335 msgid "I<index>"
4336 msgstr ""
4337
4338 #. type: Plain text
4339 #: build/C/man2/perf_event_open.2:1121
4340 msgid "A unique hardware counter identifier."
4341 msgstr ""
4342
4343 #. type: TP
4344 #: build/C/man2/perf_event_open.2:1121
4345 #, no-wrap
4346 msgid "I<offset>"
4347 msgstr ""
4348
4349 #.  FIXME clarify
4350 #. type: Plain text
4351 #: build/C/man2/perf_event_open.2:1125
4352 msgid "Add this to hardware counter value??"
4353 msgstr ""
4354
4355 #. type: TP
4356 #: build/C/man2/perf_event_open.2:1125
4357 #, no-wrap
4358 msgid "I<time_enabled>"
4359 msgstr ""
4360
4361 #. type: Plain text
4362 #: build/C/man2/perf_event_open.2:1128
4363 msgid "Time the event was active."
4364 msgstr ""
4365
4366 #. type: TP
4367 #: build/C/man2/perf_event_open.2:1128
4368 #, no-wrap
4369 msgid "I<time_running>"
4370 msgstr ""
4371
4372 #. type: Plain text
4373 #: build/C/man2/perf_event_open.2:1131
4374 msgid "Time the event was running."
4375 msgstr ""
4376
4377 #. type: TP
4378 #: build/C/man2/perf_event_open.2:1131
4379 #, no-wrap
4380 msgid "I<cap_usr_time>"
4381 msgstr ""
4382
4383 #. type: Plain text
4384 #: build/C/man2/perf_event_open.2:1134
4385 msgid "User time capability"
4386 msgstr ""
4387
4388 #. type: TP
4389 #: build/C/man2/perf_event_open.2:1134
4390 #, no-wrap
4391 msgid "I<cap_usr_rdpmc>"
4392 msgstr ""
4393
4394 #. type: Plain text
4395 #: build/C/man2/perf_event_open.2:1139
4396 msgid ""
4397 "If the hardware supports user-space read of performance counters without "
4398 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4399 "can be used to do a read:"
4400 msgstr ""
4401
4402 #. type: Plain text
4403 #: build/C/man2/perf_event_open.2:1146
4404 #, no-wrap
4405 msgid ""
4406 "u32 seq, time_mult, time_shift, idx, width;\n"
4407 "u64 count, enabled, running;\n"
4408 "u64 cyc, time_offset;\n"
4409 "s64 pmc = 0;\n"
4410 msgstr ""
4411
4412 #. type: Plain text
4413 #: build/C/man2/perf_event_open.2:1152
4414 #, no-wrap
4415 msgid ""
4416 "do {\n"
4417 "    seq = pc-E<gt>lock;\n"
4418 "    barrier();\n"
4419 "    enabled = pc-E<gt>time_enabled;\n"
4420 "    running = pc-E<gt>time_running;\n"
4421 msgstr ""
4422
4423 #. type: Plain text
4424 #: build/C/man2/perf_event_open.2:1159
4425 #, no-wrap
4426 msgid ""
4427 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4428 "        cyc = rdtsc();\n"
4429 "        time_offset = pc-E<gt>time_offset;\n"
4430 "        time_mult   = pc-E<gt>time_mult;\n"
4431 "        time_shift  = pc-E<gt>time_shift;\n"
4432 "    }\n"
4433 msgstr ""
4434
4435 #. type: Plain text
4436 #: build/C/man2/perf_event_open.2:1162
4437 #, no-wrap
4438 msgid ""
4439 "    idx = pc-E<gt>index;\n"
4440 "    count = pc-E<gt>offset;\n"
4441 msgstr ""
4442
4443 #. type: Plain text
4444 #: build/C/man2/perf_event_open.2:1167
4445 #, no-wrap
4446 msgid ""
4447 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4448 "        width = pc-E<gt>pmc_width;\n"
4449 "        pmc = rdpmc(idx - 1);\n"
4450 "    }\n"
4451 msgstr ""
4452
4453 #. type: Plain text
4454 #: build/C/man2/perf_event_open.2:1170
4455 #, no-wrap
4456 msgid ""
4457 "    barrier();\n"
4458 "} while (pc-E<gt>lock != seq);\n"
4459 msgstr ""
4460
4461 #. type: TP
4462 #: build/C/man2/perf_event_open.2:1172
4463 #, no-wrap
4464 msgid "I<pmc_width>"
4465 msgstr ""
4466
4467 #. type: Plain text
4468 #: build/C/man2/perf_event_open.2:1179
4469 msgid ""
4470 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4471 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4472 "the result like:"
4473 msgstr ""
4474
4475 #. type: Plain text
4476 #: build/C/man2/perf_event_open.2:1185
4477 #, no-wrap
4478 msgid ""
4479 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4480 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4481 "count += pmc;\n"
4482 msgstr ""
4483
4484 #. type: TP
4485 #: build/C/man2/perf_event_open.2:1187
4486 #, no-wrap
4487 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4488 msgstr ""
4489
4490 #. type: Plain text
4491 #: build/C/man2/perf_event_open.2:1194
4492 msgid ""
4493 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4494 "time_enabled (in nanoseconds) using rdtsc or similar."
4495 msgstr ""
4496
4497 #. type: Plain text
4498 #: build/C/man2/perf_event_open.2:1202
4499 #, no-wrap
4500 msgid ""
4501 "    u64 quot, rem;\n"
4502 "    u64 delta;\n"
4503 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4504 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4505 "    delta = time_offset + quot * time_mult +\n"
4506 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4507 msgstr ""
4508
4509 #. type: Plain text
4510 #: build/C/man2/perf_event_open.2:1214
4511 msgid ""
4512 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4513 "the seqcount loop described above.  This delta can then be added to enabled "
4514 "and possible running (if idx), improving the scaling:"
4515 msgstr ""
4516
4517 #. type: Plain text
4518 #: build/C/man2/perf_event_open.2:1222
4519 #, no-wrap
4520 msgid ""
4521 "    enabled += delta;\n"
4522 "    if (idx)\n"
4523 "        running += delta;\n"
4524 "    quot = count / running;\n"
4525 "    rem  = count % running;\n"
4526 "    count = quot * enabled + (rem * enabled) / running;\n"
4527 msgstr ""
4528
4529 #. type: TP
4530 #: build/C/man2/perf_event_open.2:1223
4531 #, no-wrap
4532 msgid "I<data_head>"
4533 msgstr ""
4534
4535 #. type: Plain text
4536 #: build/C/man2/perf_event_open.2:1229
4537 msgid ""
4538 "This points to the head of the data section.  The value continuously "
4539 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4540 "size of the mmap buffer before accessing the samples."
4541 msgstr ""
4542
4543 #. type: Plain text
4544 #: build/C/man2/perf_event_open.2:1232
4545 msgid ""
4546 "On SMP-capable platforms, after reading the data_head value, user space "
4547 "should issue an rmb()."
4548 msgstr ""
4549
4550 #. type: TP
4551 #: build/C/man2/perf_event_open.2:1232
4552 #, no-wrap
4553 msgid "I<data_tail;>"
4554 msgstr ""
4555
4556 #. type: Plain text
4557 #: build/C/man2/perf_event_open.2:1240
4558 msgid ""
4559 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4560 "by user space to reflect the last read data.  In this case the kernel will "
4561 "not over-write unread data."
4562 msgstr ""
4563
4564 #. type: Plain text
4565 #: build/C/man2/perf_event_open.2:1242
4566 msgid "The following 2^n ring-buffer pages have the layout described below."
4567 msgstr ""
4568
4569 #. type: Plain text
4570 #: build/C/man2/perf_event_open.2:1256
4571 msgid ""
4572 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4573 "the sample_type selected fields related to where/when (identity)  an event "
4574 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4575 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4576 "I<perf_event_header> and the fields already present for the existing fields, "
4577 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4578 "supported by older perf tools, with these new optional fields being ignored."
4579 msgstr ""
4580
4581 #. type: Plain text
4582 #: build/C/man2/perf_event_open.2:1258
4583 msgid "The mmap values start with a header:"
4584 msgstr ""
4585
4586 #. type: Plain text
4587 #: build/C/man2/perf_event_open.2:1266
4588 #, no-wrap
4589 msgid ""
4590 "struct perf_event_header {\n"
4591 "    __u32   type;\n"
4592 "    __u16   misc;\n"
4593 "    __u16   size;\n"
4594 "};\n"
4595 msgstr ""
4596
4597 #. type: Plain text
4598 #: build/C/man2/perf_event_open.2:1272
4599 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4600 msgstr ""
4601
4602 #. type: Plain text
4603 #: build/C/man2/perf_event_open.2:1281
4604 msgid ""
4605 "The I<type> value is one of the below.  The values in the corresponding "
4606 "record (that follows the header)  depend on the I<type> selected as shown."
4607 msgstr ""
4608
4609 #. type: TP
4610 #: build/C/man2/perf_event_open.2:1282
4611 #, no-wrap
4612 msgid "B<PERF_RECORD_MMAP>"
4613 msgstr ""
4614
4615 #. type: Plain text
4616 #: build/C/man2/perf_event_open.2:1289
4617 msgid ""
4618 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4619 "user-space IPs to code.  They have the following structure:"
4620 msgstr ""
4621
4622 #. type: Plain text
4623 #: build/C/man2/perf_event_open.2:1300
4624 #, no-wrap
4625 msgid ""
4626 "struct {\n"
4627 "    struct perf_event_header header;\n"
4628 "    u32    pid, tid;\n"
4629 "    u64    addr;\n"
4630 "    u64    len;\n"
4631 "    u64    pgoff;\n"
4632 "    char   filename[];\n"
4633 "};\n"
4634 msgstr ""
4635
4636 #. type: TP
4637 #: build/C/man2/perf_event_open.2:1302
4638 #, no-wrap
4639 msgid "B<PERF_RECORD_LOST>"
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man2/perf_event_open.2:1305
4644 msgid "This record indicates when events are lost."
4645 msgstr ""
4646
4647 #. type: Plain text
4648 #: build/C/man2/perf_event_open.2:1313
4649 #, no-wrap
4650 msgid ""
4651 "struct {\n"
4652 "    struct perf_event_header header;\n"
4653 "    u64 id;\n"
4654 "    u64 lost;\n"
4655 "};\n"
4656 msgstr ""
4657
4658 #. type: Plain text
4659 #: build/C/man2/perf_event_open.2:1319
4660 msgid "is the unique event ID for the samples that were lost."
4661 msgstr ""
4662
4663 #. type: TP
4664 #: build/C/man2/perf_event_open.2:1319
4665 #, no-wrap
4666 msgid "I<lost>"
4667 msgstr ""
4668
4669 #. type: Plain text
4670 #: build/C/man2/perf_event_open.2:1322
4671 #, fuzzy
4672 #| msgid "Returns the number of processes woken up."
4673 msgid "is the number of events that were lost."
4674 msgstr "wake したプロセスの数を返す。"
4675
4676 #. type: TP
4677 #: build/C/man2/perf_event_open.2:1323
4678 #, no-wrap
4679 msgid "B<PERF_RECORD_COMM>"
4680 msgstr ""
4681
4682 #. type: Plain text
4683 #: build/C/man2/perf_event_open.2:1326
4684 msgid "This record indicates a change in the process name."
4685 msgstr ""
4686
4687 #. type: Plain text
4688 #: build/C/man2/perf_event_open.2:1334
4689 #, no-wrap
4690 msgid ""
4691 "struct {\n"
4692 "    struct perf_event_header header;\n"
4693 "    u32 pid, tid;\n"
4694 "    char comm[];\n"
4695 "};\n"
4696 msgstr ""
4697
4698 #. type: TP
4699 #: build/C/man2/perf_event_open.2:1336
4700 #, fuzzy, no-wrap
4701 #| msgid "B<PTRACE_EVENT_EXIT>"
4702 msgid "B<PERF_RECORD_EXIT>"
4703 msgstr "B<PTRACE_EVENT_EXIT>"
4704
4705 #. type: Plain text
4706 #: build/C/man2/perf_event_open.2:1339
4707 msgid "This record indicates a process exit event."
4708 msgstr ""
4709
4710 #. type: Plain text
4711 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4712 #, no-wrap
4713 msgid ""
4714 "struct {\n"
4715 "    struct perf_event_header header;\n"
4716 "    u32 pid, ppid;\n"
4717 "    u32 tid, ptid;\n"
4718 "    u64 time;\n"
4719 "};\n"
4720 msgstr ""
4721
4722 #. type: TP
4723 #: build/C/man2/perf_event_open.2:1350
4724 #, no-wrap
4725 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4726 msgstr ""
4727
4728 #. type: Plain text
4729 #: build/C/man2/perf_event_open.2:1353
4730 msgid "This record indicates a throttle/unthrottle event."
4731 msgstr ""
4732
4733 #. type: Plain text
4734 #: build/C/man2/perf_event_open.2:1362
4735 #, no-wrap
4736 msgid ""
4737 "struct {\n"
4738 "    struct perf_event_header header;\n"
4739 "    u64 time;\n"
4740 "    u64 id;\n"
4741 "    u64 stream_id;\n"
4742 "};\n"
4743 msgstr ""
4744
4745 #. type: TP
4746 #: build/C/man2/perf_event_open.2:1364
4747 #, fuzzy, no-wrap
4748 #| msgid "B<PTRACE_EVENT_FORK>"
4749 msgid "B<PERF_RECORD_FORK>"
4750 msgstr "B<PTRACE_EVENT_FORK>"
4751
4752 #. type: Plain text
4753 #: build/C/man2/perf_event_open.2:1367
4754 msgid "This record indicates a fork event."
4755 msgstr ""
4756
4757 #. type: TP
4758 #: build/C/man2/perf_event_open.2:1378
4759 #, no-wrap
4760 msgid "B<PERF_RECORD_READ>"
4761 msgstr ""
4762
4763 #. type: Plain text
4764 #: build/C/man2/perf_event_open.2:1381
4765 msgid "This record indicates a read event."
4766 msgstr ""
4767
4768 #. type: Plain text
4769 #: build/C/man2/perf_event_open.2:1389
4770 #, no-wrap
4771 msgid ""
4772 "struct {\n"
4773 "    struct perf_event_header header;\n"
4774 "    u32 pid, tid;\n"
4775 "    struct read_format values;\n"
4776 "};\n"
4777 msgstr ""
4778
4779 #. type: TP
4780 #: build/C/man2/perf_event_open.2:1391
4781 #, no-wrap
4782 msgid "B<PERF_RECORD_SAMPLE>"
4783 msgstr ""
4784
4785 #. type: Plain text
4786 #: build/C/man2/perf_event_open.2:1394
4787 msgid "This record indicates a sample."
4788 msgstr ""
4789
4790 #. type: Plain text
4791 #: build/C/man2/perf_event_open.2:1422
4792 #, no-wrap
4793 msgid ""
4794 "struct {\n"
4795 "    struct perf_event_header header;\n"
4796 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4797 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4798 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4799 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4800 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4801 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4802 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4803 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4804 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4805 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4806 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4807 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4808 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4809 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4810 "    struct perf_branch_entry lbr[bnr];\n"
4811 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4812 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4813 "    u64   regs[weight(mask)];\n"
4814 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4815 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4816 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4817 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4818 "};\n"
4819 msgstr ""
4820
4821 #. type: TP
4822 #: build/C/man2/perf_event_open.2:1424
4823 #, no-wrap
4824 msgid "I<ip>"
4825 msgstr ""
4826
4827 #. type: Plain text
4828 #: build/C/man2/perf_event_open.2:1430
4829 msgid ""
4830 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4831 "included."
4832 msgstr ""
4833
4834 #. type: TP
4835 #: build/C/man2/perf_event_open.2:1430
4836 #, no-wrap
4837 msgid "I<pid>, I<tid>"
4838 msgstr ""
4839
4840 #. type: Plain text
4841 #: build/C/man2/perf_event_open.2:1436
4842 msgid ""
4843 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4844 "ID are included."
4845 msgstr ""
4846
4847 #. type: TP
4848 #: build/C/man2/perf_event_open.2:1436
4849 #, no-wrap
4850 msgid "I<time>"
4851 msgstr ""
4852
4853 #. type: Plain text
4854 #: build/C/man2/perf_event_open.2:1444
4855 msgid ""
4856 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4857 "This is obtained via local_clock() which is a hardware timestamp if "
4858 "available and the jiffies value if not."
4859 msgstr ""
4860
4861 #. type: TP
4862 #: build/C/man2/perf_event_open.2:1444
4863 #, no-wrap
4864 msgid "I<addr>"
4865 msgstr ""
4866
4867 #. type: Plain text
4868 #: build/C/man2/perf_event_open.2:1451
4869 msgid ""
4870 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4871 "is usually the address of a tracepoint, breakpoint, or software event; "
4872 "otherwise the value is 0."
4873 msgstr ""
4874
4875 #. type: Plain text
4876 #: build/C/man2/perf_event_open.2:1459
4877 msgid ""
4878 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4879 "event is a member of an event group, the group leader ID is returned.  This "
4880 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4881 msgstr ""
4882
4883 #. type: TP
4884 #: build/C/man2/perf_event_open.2:1459
4885 #, no-wrap
4886 msgid "I<stream_id>"
4887 msgstr ""
4888
4889 #. type: Plain text
4890 #: build/C/man2/perf_event_open.2:1469
4891 msgid ""
4892 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4893 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4894 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4895 msgstr ""
4896
4897 #. type: TP
4898 #: build/C/man2/perf_event_open.2:1469
4899 #, no-wrap
4900 msgid "I<cpu>, I<res>"
4901 msgstr ""
4902
4903 #. type: Plain text
4904 #: build/C/man2/perf_event_open.2:1476
4905 msgid ""
4906 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4907 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4908 msgstr ""
4909
4910 #. type: TP
4911 #: build/C/man2/perf_event_open.2:1476
4912 #, no-wrap
4913 msgid "I<period>"
4914 msgstr ""
4915
4916 #. type: Plain text
4917 #: build/C/man2/perf_event_open.2:1482
4918 msgid ""
4919 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4920 "sampling period is written."
4921 msgstr ""
4922
4923 #. type: TP
4924 #: build/C/man2/perf_event_open.2:1482
4925 #, no-wrap
4926 msgid "I<v>"
4927 msgstr ""
4928
4929 #. type: Plain text
4930 #: build/C/man2/perf_event_open.2:1493
4931 msgid ""
4932 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4933 "included which has values for all events in the event group.  The values "
4934 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4935 "time."
4936 msgstr ""
4937
4938 #. type: TP
4939 #: build/C/man2/perf_event_open.2:1493
4940 #, no-wrap
4941 msgid "I<nr>, I<ips[nr]>"
4942 msgstr ""
4943
4944 #. type: Plain text
4945 #: build/C/man2/perf_event_open.2:1501
4946 msgid ""
4947 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4948 "which indicates how many following 64-bit instruction pointers will follow.  "
4949 "This is the current callchain."
4950 msgstr ""
4951
4952 #. type: TP
4953 #: build/C/man2/perf_event_open.2:1501
4954 #, no-wrap
4955 msgid "I<size>, I<data[size]>"
4956 msgstr ""
4957
4958 #. type: Plain text
4959 #: build/C/man2/perf_event_open.2:1508
4960 msgid ""
4961 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4962 "included followed by an array of 8-bit values of length size.  The values "
4963 "are padded with 0 to have 64-bit alignment."
4964 msgstr ""
4965
4966 #. type: Plain text
4967 #: build/C/man2/perf_event_open.2:1513
4968 msgid ""
4969 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4970 "make any promises with respect to the stability of its content, it may vary "
4971 "depending on event, hardware, and kernel version."
4972 msgstr ""
4973
4974 #. type: TP
4975 #: build/C/man2/perf_event_open.2:1513
4976 #, no-wrap
4977 msgid "I<bnr>, I<lbr[bnr]>"
4978 msgstr ""
4979
4980 #. type: Plain text
4981 #: build/C/man2/perf_event_open.2:1524
4982 msgid ""
4983 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
4984 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
4985 "structures.  These structures have from, to, and flags values indicating the "
4986 "from and to addresses from the branches on the callstack."
4987 msgstr ""
4988
4989 #. type: TP
4990 #: build/C/man2/perf_event_open.2:1524
4991 #, no-wrap
4992 msgid "I<abi>, I<regs[weight(mask)]>"
4993 msgstr ""
4994
4995 #. type: Plain text
4996 #: build/C/man2/perf_event_open.2:1530
4997 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
4998 msgstr ""
4999
5000 #. type: Plain text
5001 #: build/C/man2/perf_event_open.2:1536
5002 msgid ""
5003 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5004 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5005 msgstr ""
5006
5007 #. type: TP
5008 #: build/C/man2/perf_event_open.2:1536
5009 #, no-wrap
5010 msgid "I<size>, I<data[size]>, I<dyn_size>"
5011 msgstr ""
5012
5013 #. type: Plain text
5014 #: build/C/man2/perf_event_open.2:1542
5015 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
5016 msgstr ""
5017
5018 #. type: TP
5019 #: build/C/man2/perf_event_open.2:1544
5020 #, no-wrap
5021 msgid "I<misc>"
5022 msgstr ""
5023
5024 #. type: Plain text
5025 #: build/C/man2/perf_event_open.2:1549
5026 msgid "The I<misc> field contains additional information about the sample."
5027 msgstr ""
5028
5029 #. type: Plain text
5030 #: build/C/man2/perf_event_open.2:1554
5031 msgid ""
5032 "The CPU mode can be determined from this value by masking with "
5033 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5034 "these are not bit masks, only one can be set at a time):"
5035 msgstr ""
5036
5037 #. type: TP
5038 #: build/C/man2/perf_event_open.2:1555
5039 #, no-wrap
5040 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5041 msgstr ""
5042
5043 #. type: Plain text
5044 #: build/C/man2/perf_event_open.2:1558
5045 msgid "Unknown CPU mode."
5046 msgstr ""
5047
5048 #. type: TP
5049 #: build/C/man2/perf_event_open.2:1558
5050 #, no-wrap
5051 msgid "B<PERF_RECORD_MISC_KERNEL>"
5052 msgstr ""
5053
5054 #. type: Plain text
5055 #: build/C/man2/perf_event_open.2:1561
5056 msgid "Sample happened in the kernel."
5057 msgstr ""
5058
5059 #. type: TP
5060 #: build/C/man2/perf_event_open.2:1561
5061 #, no-wrap
5062 msgid "B<PERF_RECORD_MISC_USER>"
5063 msgstr ""
5064
5065 #. type: Plain text
5066 #: build/C/man2/perf_event_open.2:1564
5067 msgid "Sample happened in user code."
5068 msgstr ""
5069
5070 #. type: TP
5071 #: build/C/man2/perf_event_open.2:1564
5072 #, no-wrap
5073 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5074 msgstr ""
5075
5076 #. type: Plain text
5077 #: build/C/man2/perf_event_open.2:1567
5078 msgid "Sample happened in the hypervisor."
5079 msgstr ""
5080
5081 #. type: TP
5082 #: build/C/man2/perf_event_open.2:1567
5083 #, no-wrap
5084 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5085 msgstr ""
5086
5087 #. type: Plain text
5088 #: build/C/man2/perf_event_open.2:1570
5089 msgid "Sample happened in the guest kernel."
5090 msgstr ""
5091
5092 #. type: TP
5093 #: build/C/man2/perf_event_open.2:1570
5094 #, no-wrap
5095 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5096 msgstr ""
5097
5098 #. type: Plain text
5099 #: build/C/man2/perf_event_open.2:1573
5100 msgid "Sample happened in guest user code."
5101 msgstr ""
5102
5103 #. type: Plain text
5104 #: build/C/man2/perf_event_open.2:1576
5105 msgid "In addition, one of the following bits can be set:"
5106 msgstr ""
5107
5108 #. type: TP
5109 #: build/C/man2/perf_event_open.2:1577
5110 #, no-wrap
5111 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5112 msgstr ""
5113
5114 #. type: Plain text
5115 #: build/C/man2/perf_event_open.2:1585
5116 msgid ""
5117 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5118 "instruction that triggered the event.  See also I<perf_event_attr."
5119 "precise_ip>."
5120 msgstr ""
5121
5122 #. type: TP
5123 #: build/C/man2/perf_event_open.2:1585
5124 #, no-wrap
5125 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5126 msgstr ""
5127
5128 #. type: Plain text
5129 #: build/C/man2/perf_event_open.2:1588
5130 msgid "This indicates there is extended data available (currently not used)."
5131 msgstr ""
5132
5133 #. type: Plain text
5134 #: build/C/man2/perf_event_open.2:1591
5135 msgid "This indicates the size of the record."
5136 msgstr ""
5137
5138 #. type: SS
5139 #: build/C/man2/perf_event_open.2:1592
5140 #, no-wrap
5141 msgid "Signal overflow"
5142 msgstr ""
5143
5144 #. type: Plain text
5145 #: build/C/man2/perf_event_open.2:1601
5146 msgid ""
5147 "Events can be set to deliver a signal when a threshold is crossed.  The "
5148 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5149 "and B<fcntl>(2), system calls."
5150 msgstr ""
5151
5152 #. type: Plain text
5153 #: build/C/man2/perf_event_open.2:1605
5154 msgid ""
5155 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5156 "non-zero value)."
5157 msgstr ""
5158
5159 #. type: Plain text
5160 #: build/C/man2/perf_event_open.2:1607
5161 msgid "There are two ways to generate signals."
5162 msgstr ""
5163
5164 #. type: Plain text
5165 #: build/C/man2/perf_event_open.2:1617
5166 msgid ""
5167 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5168 "will generate a signal if a certain number of samples or bytes have been "
5169 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5170 "is sent."
5171 msgstr ""
5172
5173 #. type: Plain text
5174 #: build/C/man2/perf_event_open.2:1629
5175 msgid ""
5176 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5177 "adds to a counter that decrements each time the event overflows.  When non-"
5178 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5179 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5180 msgstr ""
5181
5182 #.  FIXME(Vince) : Find out when this was introduced
5183 #. type: Plain text
5184 #: build/C/man2/perf_event_open.2:1635
5185 msgid ""
5186 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5187 "for every overflow, even if I<wakeup_events> is not set."
5188 msgstr ""
5189
5190 #. type: SS
5191 #: build/C/man2/perf_event_open.2:1635
5192 #, no-wrap
5193 msgid "rdpmc instruction"
5194 msgstr ""
5195
5196 #. type: Plain text
5197 #: build/C/man2/perf_event_open.2:1642
5198 msgid ""
5199 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5200 "low-latency reads without having to enter the kernel.  Note that using "
5201 "I<rdpmc> is not necessarily faster than other methods for reading event "
5202 "values."
5203 msgstr ""
5204
5205 #. type: Plain text
5206 #: build/C/man2/perf_event_open.2:1647
5207 msgid ""
5208 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5209 "page; documentation on how to calculate event values can be found in that "
5210 "section."
5211 msgstr ""
5212
5213 #. type: SS
5214 #: build/C/man2/perf_event_open.2:1647
5215 #, no-wrap
5216 msgid "perf_event ioctl calls"
5217 msgstr ""
5218
5219 #. type: Plain text
5220 #: build/C/man2/perf_event_open.2:1652
5221 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5222 msgstr ""
5223
5224 #. type: TP
5225 #: build/C/man2/perf_event_open.2:1652
5226 #, fuzzy, no-wrap
5227 #| msgid "B<PTRACE_EVENT_CLONE>"
5228 msgid "B<PERF_EVENT_IOC_ENABLE>"
5229 msgstr "B<PTRACE_EVENT_CLONE>"
5230
5231 #. type: Plain text
5232 #: build/C/man2/perf_event_open.2:1656
5233 msgid ""
5234 "Enables the individual event or event group specified by the file descriptor "
5235 "argument."
5236 msgstr ""
5237
5238 #. type: Plain text
5239 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5240 #: build/C/man2/perf_event_open.2:1699
5241 msgid "The ioctl argument is ignored."
5242 msgstr ""
5243
5244 #. type: TP
5245 #: build/C/man2/perf_event_open.2:1658
5246 #, fuzzy, no-wrap
5247 #| msgid "B<PTRACE_EVENT_CLONE>"
5248 msgid "B<PERF_EVENT_IOC_DISABLE>"
5249 msgstr "B<PTRACE_EVENT_CLONE>"
5250
5251 #. type: Plain text
5252 #: build/C/man2/perf_event_open.2:1662
5253 msgid ""
5254 "Disables the individual counter or event group specified by the file "
5255 "descriptor argument."
5256 msgstr ""
5257
5258 #. type: Plain text
5259 #: build/C/man2/perf_event_open.2:1669
5260 msgid ""
5261 "Enabling or disabling the leader of a group enables or disables the entire "
5262 "group; that is, while the group leader is disabled, none of the counters in "
5263 "the group will count.  Enabling or disabling a member of a group other than "
5264 "the leader only affects that counter; disabling a non-leader stops that "
5265 "counter from counting but doesn't affect any other counter."
5266 msgstr ""
5267
5268 #. type: TP
5269 #: build/C/man2/perf_event_open.2:1671
5270 #, fuzzy, no-wrap
5271 #| msgid "B<PTRACE_EVENT_FORK>"
5272 msgid "B<PERF_EVENT_IOC_REFRESH>"
5273 msgstr "B<PTRACE_EVENT_FORK>"
5274
5275 #. type: Plain text
5276 #: build/C/man2/perf_event_open.2:1685
5277 msgid ""
5278 "Non-inherited overflow counters can use this to enable a counter for a "
5279 "number of overflows specified by the argument, after which it is disabled.  "
5280 "Subsequent calls of this ioctl add the argument value to the current count.  "
5281 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5282 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5283 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5284 msgstr ""
5285
5286 #. type: TP
5287 #: build/C/man2/perf_event_open.2:1685
5288 #, fuzzy, no-wrap
5289 #| msgid "B<PTRACE_EVENT_FORK>"
5290 msgid "B<PERF_EVENT_IOC_RESET>"
5291 msgstr "B<PTRACE_EVENT_FORK>"
5292
5293 #. type: Plain text
5294 #: build/C/man2/perf_event_open.2:1697
5295 msgid ""
5296 "Reset the event count specified by the file descriptor argumentto zero.  "
5297 "This only resets the counts; there is no way to reset the multiplexing "
5298 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5299 "only the leader is reset (child events are not)."
5300 msgstr ""
5301
5302 #. type: TP
5303 #: build/C/man2/perf_event_open.2:1699
5304 #, fuzzy, no-wrap
5305 #| msgid "B<PTRACE_EVENT_FORK>"
5306 msgid "B<PERF_EVENT_IOC_PERIOD>"
5307 msgstr "B<PTRACE_EVENT_FORK>"
5308
5309 #. type: Plain text
5310 #: build/C/man2/perf_event_open.2:1703
5311 msgid ""
5312 "IOC_PERIOD is the command to update the period; it does not update the "
5313 "current period but instead defers until next."
5314 msgstr ""
5315
5316 #. type: Plain text
5317 #: build/C/man2/perf_event_open.2:1706
5318 msgid ""
5319 "The argument is a pointer to a 64-bit value containing the desired new "
5320 "period."
5321 msgstr ""
5322
5323 #. type: TP
5324 #: build/C/man2/perf_event_open.2:1706
5325 #, no-wrap
5326 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5327 msgstr ""
5328
5329 #. type: Plain text
5330 #: build/C/man2/perf_event_open.2:1711
5331 msgid ""
5332 "This tells the kernel to report event notifications to the specified file "
5333 "descriptor rather than the default one.  The file descriptors must all be on "
5334 "the same CPU."
5335 msgstr ""
5336
5337 #. type: Plain text
5338 #: build/C/man2/perf_event_open.2:1714
5339 msgid ""
5340 "The argument specifies the desired file descriptor, or -1 if output should "
5341 "be ignored."
5342 msgstr ""
5343
5344 #. type: TP
5345 #: build/C/man2/perf_event_open.2:1714
5346 #, fuzzy, no-wrap
5347 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5348 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5349 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5350
5351 #. type: Plain text
5352 #: build/C/man2/perf_event_open.2:1717
5353 msgid "This adds an ftrace filter to this event."
5354 msgstr ""
5355
5356 #. type: Plain text
5357 #: build/C/man2/perf_event_open.2:1719
5358 msgid "The argument is a pointer to the desired ftrace filter."
5359 msgstr ""
5360
5361 #. type: SS
5362 #: build/C/man2/perf_event_open.2:1719
5363 #, no-wrap
5364 msgid "Using prctl"
5365 msgstr ""
5366
5367 #. type: Plain text
5368 #: build/C/man2/perf_event_open.2:1732
5369 msgid ""
5370 "A process can enable or disable all the event groups that are attached to it "
5371 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5372 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5373 "the current process, whether created by this process or by another, and does "
5374 "not affect any counters that this process has created on other processes.  "
5375 "It only enables or disables the group leaders, not any other members in the "
5376 "groups."
5377 msgstr ""
5378
5379 #. type: SS
5380 #: build/C/man2/perf_event_open.2:1732
5381 #, no-wrap
5382 msgid "perf_event related configuration files"
5383 msgstr ""
5384
5385 #. type: Plain text
5386 #: build/C/man2/perf_event_open.2:1735
5387 msgid "Files in I</proc/sys/kernel/>"
5388 msgstr ""
5389
5390 #. type: TP
5391 #: build/C/man2/perf_event_open.2:1736
5392 #, no-wrap
5393 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5394 msgstr ""
5395
5396 #. type: Plain text
5397 #: build/C/man2/perf_event_open.2:1742
5398 msgid ""
5399 "The I<perf_event_paranoid> file can be set to restrict access to the "
5400 "performance counters."
5401 msgstr ""
5402
5403 #. type: Plain text
5404 #: build/C/man2/perf_event_open.2:1744
5405 msgid "2 - only allow user-space measurements"
5406 msgstr ""
5407
5408 #. type: Plain text
5409 #: build/C/man2/perf_event_open.2:1746
5410 msgid "1 - (default) allow both kernel and user measurements"
5411 msgstr ""
5412
5413 #. type: Plain text
5414 #: build/C/man2/perf_event_open.2:1748
5415 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5416 msgstr ""
5417
5418 #. type: Plain text
5419 #: build/C/man2/perf_event_open.2:1750
5420 msgid "-1 - no restrictions"
5421 msgstr ""
5422
5423 #. type: Plain text
5424 #: build/C/man2/perf_event_open.2:1755
5425 msgid ""
5426 "The existence of the I<perf_event_paranoid> file is the official method for "
5427 "determining if a kernel supports B<perf_event_open>()."
5428 msgstr ""
5429
5430 #. type: TP
5431 #: build/C/man2/perf_event_open.2:1755
5432 #, no-wrap
5433 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5434 msgstr ""
5435
5436 #. type: Plain text
5437 #: build/C/man2/perf_event_open.2:1764
5438 msgid ""
5439 "This sets the maximum sample rate.  Setting this too high can allow users to "
5440 "sample at a rate that impacts overall machine performance and potentially "
5441 "lock up the machine.  The default value is 100000 (samples per second)."
5442 msgstr ""
5443
5444 #. type: TP
5445 #: build/C/man2/perf_event_open.2:1764
5446 #, no-wrap
5447 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5448 msgstr ""
5449
5450 #. type: Plain text
5451 #: build/C/man2/perf_event_open.2:1769
5452 msgid ""
5453 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5454 "516 (kB)."
5455 msgstr ""
5456
5457 #. type: Plain text
5458 #: build/C/man2/perf_event_open.2:1772
5459 msgid "Files in I</sys/bus/event_source/devices/>"
5460 msgstr ""
5461
5462 #. type: Plain text
5463 #: build/C/man2/perf_event_open.2:1778
5464 msgid ""
5465 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5466 "monitoring.  Information on how to program these PMUs can be found under I</"
5467 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5468 "different PMU."
5469 msgstr ""
5470
5471 #. type: TP
5472 #: build/C/man2/perf_event_open.2:1778
5473 #, no-wrap
5474 msgid "I</sys/bus/event_source/devices/*/type>"
5475 msgstr ""
5476
5477 #. type: Plain text
5478 #: build/C/man2/perf_event_open.2:1783
5479 msgid ""
5480 "This contains an integer that can be used in the I<type> field of "
5481 "perf_event_attr to indicate you wish to use this PMU."
5482 msgstr ""
5483
5484 #. type: TP
5485 #: build/C/man2/perf_event_open.2:1783
5486 #, no-wrap
5487 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5488 msgstr ""
5489
5490 #. type: TP
5491 #: build/C/man2/perf_event_open.2:1786
5492 #, no-wrap
5493 msgid "I</sys/bus/event_source/devices/*/format/>"
5494 msgstr ""
5495
5496 #. type: Plain text
5497 #: build/C/man2/perf_event_open.2:1791
5498 msgid ""
5499 "This sub-directory contains information on what bits in the I<config> field "
5500 "of perf_event_attr correspond to."
5501 msgstr ""
5502
5503 #. type: TP
5504 #: build/C/man2/perf_event_open.2:1791
5505 #, no-wrap
5506 msgid "I</sys/bus/event_source/devices/*/events/>"
5507 msgstr ""
5508
5509 #. type: Plain text
5510 #: build/C/man2/perf_event_open.2:1800
5511 msgid ""
5512 "This sub-directory contains files with pre-defined events.  The contents are "
5513 "strings describing the event settings expressed in terms of the fields found "
5514 "in the I<./format/> directory.  These are not necessarily complete lists of "
5515 "all events supported by a PMU, but usually a subset of events deemed useful "
5516 "or interesting."
5517 msgstr ""
5518
5519 #. type: TP
5520 #: build/C/man2/perf_event_open.2:1800
5521 #, no-wrap
5522 msgid "I</sys/bus/event_source/devices/*/uevent>"
5523 msgstr ""
5524
5525 #. type: Plain text
5526 #: build/C/man2/perf_event_open.2:1810
5527 msgid ""
5528 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5529 "occurred (in which case, I<errno> is set appropriately)."
5530 msgstr ""
5531
5532 #. type: Plain text
5533 #: build/C/man2/perf_event_open.2:1814
5534 msgid "Returned if the specified event is not available."
5535 msgstr ""
5536
5537 #. type: TP
5538 #: build/C/man2/perf_event_open.2:1814
5539 #, fuzzy, no-wrap
5540 #| msgid "B<ENOSYS>"
5541 msgid "B<ENOSPC>"
5542 msgstr "B<ENOSYS>"
5543
5544 #. type: Plain text
5545 #: build/C/man2/perf_event_open.2:1824
5546 msgid ""
5547 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5548 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5549 "B<ENOSPC> is still returned if you try to read results into too small of a "
5550 "buffer."
5551 msgstr ""
5552
5553 #. type: SH
5554 #: build/C/man2/perf_event_open.2:1824
5555 #, fuzzy, no-wrap
5556 #| msgid "VERSIONS"
5557 msgid "VERSION"
5558 msgstr "バージョン"
5559
5560 #. type: Plain text
5561 #: build/C/man2/perf_event_open.2:1829
5562 msgid ""
5563 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5564 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5565 msgstr ""
5566
5567 #. type: Plain text
5568 #: build/C/man2/perf_event_open.2:1834
5569 #, fuzzy
5570 #| msgid ""
5571 #| "B<personality>()  is Linux-specific and should not be used in programs "
5572 #| "intended to be portable."
5573 msgid ""
5574 "This B<perf_event_open>()  system call Linux- specific and should not be "
5575 "used in programs intended to be portable."
5576 msgstr ""
5577 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5578 "はない。"
5579
5580 #. type: Plain text
5581 #: build/C/man2/perf_event_open.2:1838
5582 #, fuzzy
5583 #| msgid ""
5584 #| "Glibc does not provide a wrapper for this system call; call it using "
5585 #| "B<syscall>(2)."
5586 msgid ""
5587 "Glibc does not provide a wrapper for this system call; call it using "
5588 "B<syscall>(2).  See the example below."
5589 msgstr ""
5590 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5591 "(2)  を使って呼び出すこと。"
5592
5593 #. type: Plain text
5594 #: build/C/man2/perf_event_open.2:1844
5595 msgid ""
5596 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5597 "checking for the existence of the file I</proc/sys/kernel/"
5598 "perf_event_paranoid>."
5599 msgstr ""
5600
5601 #. type: SH
5602 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5603 #: build/C/man2/ptrace.2:1810
5604 #, no-wrap
5605 msgid "BUGS"
5606 msgstr "バグ"
5607
5608 #. type: Plain text
5609 #: build/C/man2/perf_event_open.2:1851
5610 msgid ""
5611 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5612 "signals in threads.  This was introduced in Linux 2.6.32."
5613 msgstr ""
5614
5615 #. type: Plain text
5616 #: build/C/man2/perf_event_open.2:1859
5617 msgid ""
5618 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5619 "could be scheduled together until read time.  The same happens on all known "
5620 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5621 "events works you have to B<perf_event_open>(), start, then read before you "
5622 "know for sure you can get valid measurements."
5623 msgstr ""
5624
5625 #. type: Plain text
5626 #: build/C/man2/perf_event_open.2:1863
5627 msgid ""
5628 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5629 "that case, some events would silently return \"0\" if the kernel scheduled "
5630 "them in an improper counter slot."
5631 msgstr ""
5632
5633 #. type: Plain text
5634 #: build/C/man2/perf_event_open.2:1866
5635 msgid ""
5636 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5637 "results could be returned."
5638 msgstr ""
5639
5640 #. type: Plain text
5641 #: build/C/man2/perf_event_open.2:1869
5642 msgid ""
5643 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5644 "\"inherit\" is enabled and many threads are started."
5645 msgstr ""
5646
5647 #. type: Plain text
5648 #: build/C/man2/perf_event_open.2:1873
5649 msgid ""
5650 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5651 "processes."
5652 msgstr ""
5653
5654 #. type: Plain text
5655 #: build/C/man2/perf_event_open.2:1878
5656 msgid ""
5657 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5658 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5659 "This behavior is unsupported and should not be relied on."
5660 msgstr ""
5661
5662 #. type: Plain text
5663 #: build/C/man2/perf_event_open.2:1884
5664 msgid ""
5665 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5666 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5667 "the union has a non-zero value in it."
5668 msgstr ""
5669
5670 #. type: Plain text
5671 #: build/C/man2/perf_event_open.2:1889
5672 msgid ""
5673 "Always double-check your results! Various generalized events have had wrong "
5674 "values.  For example, retired branches measured the wrong thing on AMD "
5675 "machines until Linux 2.6.35."
5676 msgstr ""
5677
5678 #. type: SH
5679 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5680 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5681 #, no-wrap
5682 msgid "EXAMPLE"
5683 msgstr "例"
5684
5685 #. type: Plain text
5686 #: build/C/man2/perf_event_open.2:1893
5687 msgid ""
5688 "The following is a short example that measures the total instruction count "
5689 "of a call to B<printf>(3)."
5690 msgstr ""
5691
5692 #. type: Plain text
5693 #: build/C/man2/perf_event_open.2:1902
5694 #, fuzzy, no-wrap
5695 #| msgid ""
5696 #| "#define _GNU_SOURCE\n"
5697 #| "#include E<lt>fcntl.hE<gt>\n"
5698 #| "#include E<lt>stdio.hE<gt>\n"
5699 #| "#include E<lt>stdlib.hE<gt>\n"
5700 #| "#include E<lt>unistd.hE<gt>\n"
5701 #| "#include E<lt>errno.hE<gt>\n"
5702 #| "#include E<lt>limits.hE<gt>\n"
5703 msgid ""
5704 "#include E<lt>stdlib.hE<gt>\n"
5705 "#include E<lt>stdio.hE<gt>\n"
5706 "#include E<lt>unistd.hE<gt>\n"
5707 "#include E<lt>string.hE<gt>\n"
5708 "#include E<lt>sys/ioctl.hE<gt>\n"
5709 "#include E<lt>linux/perf_event.hE<gt>\n"
5710 "#include E<lt>asm/unistd.hE<gt>\n"
5711 msgstr ""
5712 "#define _GNU_SOURCE\n"
5713 "#include E<lt>fcntl.hE<gt>\n"
5714 "#include E<lt>stdio.hE<gt>\n"
5715 "#include E<lt>stdlib.hE<gt>\n"
5716 "#include E<lt>unistd.hE<gt>\n"
5717 "#include E<lt>errno.hE<gt>\n"
5718 "#include E<lt>limits.hE<gt>\n"
5719
5720 #. type: Plain text
5721 #: build/C/man2/perf_event_open.2:1908
5722 #, no-wrap
5723 msgid ""
5724 "long\n"
5725 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5726 "                int cpu, int group_fd, unsigned long flags)\n"
5727 "{\n"
5728 "    int ret;\n"
5729 msgstr ""
5730
5731 #. type: Plain text
5732 #: build/C/man2/perf_event_open.2:1913
5733 #, no-wrap
5734 msgid ""
5735 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5736 "                   group_fd, flags);\n"
5737 "    return ret;\n"
5738 "}\n"
5739 msgstr ""
5740
5741 #. type: Plain text
5742 #: build/C/man2/perf_event_open.2:1920
5743 #, fuzzy, no-wrap
5744 #| msgid ""
5745 #| "int\n"
5746 #| "main(int argc, char *argv[])\n"
5747 #| "{\n"
5748 #| "    int fd;\n"
5749 #| "    int len, slen;\n"
5750 msgid ""
5751 "int\n"
5752 "main(int argc, char **argv)\n"
5753 "{\n"
5754 "    struct perf_event_attr pe;\n"
5755 "    long long count;\n"
5756 "    int fd;\n"
5757 msgstr ""
5758 "int\n"
5759 "main(int argc, char *argv[])\n"
5760 "{\n"
5761 "    int fd;\n"
5762 "    int len, slen;\n"
5763
5764 #. type: Plain text
5765 #: build/C/man2/perf_event_open.2:1928
5766 #, no-wrap
5767 msgid ""
5768 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5769 "    pe.type = PERF_TYPE_HARDWARE;\n"
5770 "    pe.size = sizeof(struct perf_event_attr);\n"
5771 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5772 "    pe.disabled = 1;\n"
5773 "    pe.exclude_kernel = 1;\n"
5774 "    pe.exclude_hv = 1;\n"
5775 msgstr ""
5776
5777 #. type: Plain text
5778 #: build/C/man2/perf_event_open.2:1934
5779 #, fuzzy, no-wrap
5780 #| msgid ""
5781 #| "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5782 #| "    if (fd == -1) {\n"
5783 #| "        perror(\"open\");\n"
5784 #| "        exit(EXIT_FAILURE);\n"
5785 #| "    }\n"
5786 msgid ""
5787 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5788 "    if (fd == -1) {\n"
5789 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5790 "       exit(EXIT_FAILURE);\n"
5791 "    }\n"
5792 msgstr ""
5793 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5794 "    if (fd == -1) {\n"
5795 "        perror(\"open\");\n"
5796 "        exit(EXIT_FAILURE);\n"
5797 "    }\n"
5798
5799 #. type: Plain text
5800 #: build/C/man2/perf_event_open.2:1937
5801 #, no-wrap
5802 msgid ""
5803 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5804 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5805 msgstr ""
5806
5807 #. type: Plain text
5808 #: build/C/man2/perf_event_open.2:1939
5809 #, no-wrap
5810 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5811 msgstr ""
5812
5813 #. type: Plain text
5814 #: build/C/man2/perf_event_open.2:1942
5815 #, no-wrap
5816 msgid ""
5817 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5818 "    read(fd, &count, sizeof(long long));\n"
5819 msgstr ""
5820
5821 #. type: Plain text
5822 #: build/C/man2/perf_event_open.2:1944
5823 #, no-wrap
5824 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5825 msgstr ""
5826
5827 #. type: Plain text
5828 #: build/C/man2/perf_event_open.2:1947
5829 #, no-wrap
5830 msgid ""
5831 "    close(fd);\n"
5832 "}\n"
5833 msgstr ""
5834
5835 #. type: Plain text
5836 #: build/C/man2/perf_event_open.2:1954
5837 #, fuzzy
5838 #| msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5839 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5840 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5841
5842 #. type: TH
5843 #: build/C/man2/perfmonctl.2:27
5844 #, no-wrap
5845 msgid "PERFMONCTL"
5846 msgstr ""
5847
5848 #. type: Plain text
5849 #: build/C/man2/perfmonctl.2:30
5850 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5851 msgstr ""
5852
5853 #. type: Plain text
5854 #: build/C/man2/perfmonctl.2:34
5855 #, fuzzy, no-wrap
5856 #| msgid ""
5857 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
5858 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5859 msgid ""
5860 "B<#include E<lt>syscall.hE<gt>>\n"
5861 "B<#include E<lt>perfmon.hE<gt>>\n"
5862 msgstr ""
5863 "B<#include E<lt>sys/quota.hE<gt>>\n"
5864 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5865
5866 #. type: Plain text
5867 #: build/C/man2/perfmonctl.2:36
5868 #, fuzzy, no-wrap
5869 #| msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5870 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5871 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5872
5873 #. type: Plain text
5874 #: build/C/man2/perfmonctl.2:47
5875 msgid ""
5876 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5877 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5878 "monitoring data) registers and PMC (performance monitoring control) "
5879 "registers, which gather hardware statistics."
5880 msgstr ""
5881
5882 #. type: Plain text
5883 #: build/C/man2/perfmonctl.2:57
5884 msgid ""
5885 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5886 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5887 "I<fd> argument specifies the perfmon context to operate on."
5888 msgstr ""
5889
5890 #. type: Plain text
5891 #: build/C/man2/perfmonctl.2:61
5892 msgid "Supported values for I<cmd> are:"
5893 msgstr ""
5894
5895 #. type: TP
5896 #: build/C/man2/perfmonctl.2:61
5897 #, fuzzy, no-wrap
5898 #| msgid "B<PTRACE_CONT>"
5899 msgid "B<PFM_CREATE_CONTEXT>"
5900 msgstr "B<PTRACE_CONT>"
5901
5902 #. type: Plain text
5903 #: build/C/man2/perfmonctl.2:65
5904 #, no-wrap
5905 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5906 msgstr ""
5907
5908 #. type: Plain text
5909 #: build/C/man2/perfmonctl.2:67
5910 msgid "Set up a context."
5911 msgstr ""
5912
5913 #. type: Plain text
5914 #: build/C/man2/perfmonctl.2:74
5915 msgid ""
5916 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5917 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5918 "E<gt>ctx_fd>."
5919 msgstr ""
5920
5921 #. type: Plain text
5922 #: build/C/man2/perfmonctl.2:86
5923 msgid ""
5924 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5925 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5926 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5927 "B<epoll>(7)."
5928 msgstr ""
5929
5930 #. type: Plain text
5931 #: build/C/man2/perfmonctl.2:90
5932 msgid ""
5933 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5934 msgstr ""
5935
5936 #. type: TP
5937 #: build/C/man2/perfmonctl.2:90
5938 #, no-wrap
5939 msgid "B<PFM_WRITE_PMCS>"
5940 msgstr ""
5941
5942 #. type: Plain text
5943 #: build/C/man2/perfmonctl.2:95
5944 #, no-wrap
5945 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5946 msgstr ""
5947
5948 #. type: Plain text
5949 #: build/C/man2/perfmonctl.2:97
5950 msgid "Set PMC registers."
5951 msgstr ""
5952
5953 #. type: TP
5954 #: build/C/man2/perfmonctl.2:97
5955 #, no-wrap
5956 msgid "B<PFM_WRITE_PMDS>"
5957 msgstr ""
5958
5959 #. type: Plain text
5960 #: build/C/man2/perfmonctl.2:101
5961 #, no-wrap
5962 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5963 msgstr ""
5964
5965 #.  pfm_write_pmds()
5966 #. type: Plain text
5967 #: build/C/man2/perfmonctl.2:104
5968 msgid "Set PMD registers."
5969 msgstr ""
5970
5971 #. type: TP
5972 #: build/C/man2/perfmonctl.2:104
5973 #, no-wrap
5974 msgid "B<PFM_READ_PMDS>"
5975 msgstr ""
5976
5977 #. type: Plain text
5978 #: build/C/man2/perfmonctl.2:109
5979 #, no-wrap
5980 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5981 msgstr ""
5982
5983 #. type: Plain text
5984 #: build/C/man2/perfmonctl.2:111
5985 msgid "Read PMD registers."
5986 msgstr ""
5987
5988 #. type: TP
5989 #: build/C/man2/perfmonctl.2:111
5990 #, no-wrap
5991 msgid "B<PFM_START>"
5992 msgstr ""
5993
5994 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
5995 #. type: Plain text
5996 #: build/C/man2/perfmonctl.2:117
5997 #, no-wrap
5998 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
5999 msgstr ""
6000
6001 #. type: Plain text
6002 #: build/C/man2/perfmonctl.2:119
6003 msgid "Start monitoring."
6004 msgstr ""
6005
6006 #. type: TP
6007 #: build/C/man2/perfmonctl.2:119
6008 #, no-wrap
6009 msgid "B<PFM_STOP>"
6010 msgstr ""
6011
6012 #. type: Plain text
6013 #: build/C/man2/perfmonctl.2:124
6014 #, no-wrap
6015 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6016 msgstr ""
6017
6018 #. type: Plain text
6019 #: build/C/man2/perfmonctl.2:126
6020 msgid "Stop monitoring."
6021 msgstr ""
6022
6023 #. type: TP
6024 #: build/C/man2/perfmonctl.2:126
6025 #, fuzzy, no-wrap
6026 #| msgid "B<PTRACE_CONT>"
6027 msgid "B<PFM_LOAD_CONTEXT>"
6028 msgstr "B<PTRACE_CONT>"
6029
6030 #. type: Plain text
6031 #: build/C/man2/perfmonctl.2:131
6032 #, no-wrap
6033 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6034 msgstr ""
6035
6036 #. type: Plain text
6037 #: build/C/man2/perfmonctl.2:133
6038 msgid "Attach the context to a thread."
6039 msgstr ""
6040
6041 #. type: TP
6042 #: build/C/man2/perfmonctl.2:133
6043 #, no-wrap
6044 msgid "B<PFM_UNLOAD_CONTEXT>"
6045 msgstr ""
6046
6047 #. type: Plain text
6048 #: build/C/man2/perfmonctl.2:138
6049 #, no-wrap
6050 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6051 msgstr ""
6052
6053 #. type: Plain text
6054 #: build/C/man2/perfmonctl.2:140
6055 msgid "Detach the context from a thread."
6056 msgstr ""
6057
6058 #. type: TP
6059 #: build/C/man2/perfmonctl.2:140
6060 #, no-wrap
6061 msgid "B<PFM_RESTART>"
6062 msgstr ""
6063
6064 #. type: Plain text
6065 #: build/C/man2/perfmonctl.2:145
6066 #, no-wrap
6067 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6068 msgstr ""
6069
6070 #. type: Plain text
6071 #: build/C/man2/perfmonctl.2:147
6072 msgid "Restart monitoring after receiving an overflow notification."
6073 msgstr ""
6074
6075 #. type: TP
6076 #: build/C/man2/perfmonctl.2:147
6077 #, fuzzy, no-wrap
6078 #| msgid "B<Q_GETSTATS>"
6079 msgid "B<PFM_GET_FEATURES>"
6080 msgstr "B<Q_GETSTATS>"
6081
6082 #. type: Plain text
6083 #: build/C/man2/perfmonctl.2:152
6084 #, no-wrap
6085 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6086 msgstr ""
6087
6088 #. type: TP
6089 #: build/C/man2/perfmonctl.2:153
6090 #, no-wrap
6091 msgid "B<PFM_DEBUG>"
6092 msgstr ""
6093
6094 #. type: Plain text
6095 #: build/C/man2/perfmonctl.2:158
6096 #, no-wrap
6097 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6098 msgstr ""
6099
6100 #. type: Plain text
6101 #: build/C/man2/perfmonctl.2:162
6102 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6103 msgstr ""
6104
6105 #. type: TP
6106 #: build/C/man2/perfmonctl.2:162
6107 #, no-wrap
6108 msgid "B<PFM_GET_PMC_RESET_VAL>"
6109 msgstr ""
6110
6111 #. type: Plain text
6112 #: build/C/man2/perfmonctl.2:167
6113 #, no-wrap
6114 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6115 msgstr ""
6116
6117 #
6118 #
6119 #
6120 #.  .TP
6121 #.  .B PFM_CREATE_EVTSETS
6122 #.  create or modify event sets
6123 #.  .nf
6124 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6125 #.  .fi
6126 #.  .TP
6127 #.  .B PFM_DELETE_EVTSETS
6128 #.  delete event sets
6129 #.  .nf
6130 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6131 #.  .fi
6132 #.  .TP
6133 #.  .B PFM_GETINFO_EVTSETS
6134 #.  get information about event sets
6135 #.  .nf
6136 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6137 #.  .fi
6138 #. type: Plain text
6139 #: build/C/man2/perfmonctl.2:190
6140 msgid "Reset PMC registers to default values."
6141 msgstr ""
6142
6143 #. type: Plain text
6144 #: build/C/man2/perfmonctl.2:196
6145 #, fuzzy
6146 #| msgid ""
6147 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6148 #| "I<errno> is set to indicate the error."
6149 msgid ""
6150 "B<performctl>()  returns zero when the operation is successful.  On error, "
6151 "-1 is returned and I<errno> is set to indicate the cause of the error."
6152 msgstr ""
6153 "成功すると、 B<kexec_load> は 0 を返す。\n"
6154 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6155
6156 #. type: Plain text
6157 #: build/C/man2/perfmonctl.2:199
6158 #, fuzzy
6159 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6160 msgid "B<perfmonctl>()  is available since Linux 2.4."
6161 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6162
6163 #. type: Plain text
6164 #: build/C/man2/perfmonctl.2:202
6165 msgid ""
6166 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6167 "architecture."
6168 msgstr ""
6169
6170 #. type: Plain text
6171 #: build/C/man2/perfmonctl.2:207
6172 msgid "B<gprof>(1)"
6173 msgstr ""
6174
6175 #. type: Plain text
6176 #: build/C/man2/perfmonctl.2:209
6177 msgid "The perfmon2 interface specification"
6178 msgstr ""
6179
6180 #. type: TH
6181 #: build/C/man2/personality.2:32
6182 #, no-wrap
6183 msgid "PERSONALITY"
6184 msgstr "PERSONALITY"
6185
6186 #. type: TH
6187 #: build/C/man2/personality.2:32
6188 #, no-wrap
6189 msgid "2003-01-01"
6190 msgstr "2003-01-01"
6191
6192 #. type: Plain text
6193 #: build/C/man2/personality.2:35
6194 msgid "personality - set the process execution domain"
6195 msgstr "personality - プロセスを実行するドメインを設定する"
6196
6197 #. type: Plain text
6198 #: build/C/man2/personality.2:37
6199 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6200 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6201
6202 #. type: Plain text
6203 #: build/C/man2/personality.2:39
6204 msgid "B<int personality(unsigned long >I<persona>B<);>"
6205 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6206
6207 #. type: Plain text
6208 #: build/C/man2/personality.2:47
6209 msgid ""
6210 "Linux supports different execution domains, or personalities, for each "
6211 "process.  Among other things, execution domains tell Linux how to map signal "
6212 "numbers into signal actions.  The execution domain system allows Linux to "
6213 "provide limited support for binaries compiled under other UNIX-like "
6214 "operating systems."
6215 msgstr ""
6216 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6217 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6218 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6219 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6220 "対する限定的なサポートを提供している。"
6221
6222 #. type: Plain text
6223 #: build/C/man2/personality.2:57
6224 msgid ""
6225 "This function will return the current B<personality>()  when I<persona> "
6226 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6227 "by I<persona> the new execution domain of the calling process."
6228 msgstr ""
6229 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6230 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6231 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6232
6233 #. type: Plain text
6234 #: build/C/man2/personality.2:64
6235 msgid ""
6236 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6237 "and I<errno> is set appropriately."
6238 msgstr ""
6239 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6240 "I<errno> が適切に設定される。"
6241
6242 #. type: Plain text
6243 #: build/C/man2/personality.2:68
6244 msgid "The kernel was unable to change the personality."
6245 msgstr "カーネルがパーソナリティを変更できなかった。"
6246
6247 #. type: Plain text
6248 #: build/C/man2/personality.2:72
6249 msgid ""
6250 "B<personality>()  is Linux-specific and should not be used in programs "
6251 "intended to be portable."
6252 msgstr ""
6253 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6254 "はない。"
6255
6256 #. type: TH
6257 #: build/C/man2/pivot_root.2:10
6258 #, no-wrap
6259 msgid "PIVOT_ROOT"
6260 msgstr "PIVOT_ROOT"
6261
6262 #. type: Plain text
6263 #: build/C/man2/pivot_root.2:13
6264 msgid "pivot_root - change the root file system"
6265 msgstr "pivot_root - root ファイルシステムを変更する"
6266
6267 #. type: Plain text
6268 #: build/C/man2/pivot_root.2:15
6269 msgid ""
6270 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6271 msgstr ""
6272 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6273
6274 #.  The
6275 #.  .B CAP_SYS_ADMIN
6276 #.  capability is required.
6277 #. type: Plain text
6278 #: build/C/man2/pivot_root.2:27
6279 msgid ""
6280 "B<pivot_root>()  moves the root file system of the calling process to the "
6281 "directory I<put_old> and makes I<new_root> the new root file system of the "
6282 "calling process."
6283 msgstr ""
6284 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6285 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6286 "ルシステムにする。"
6287
6288 #. type: Plain text
6289 #: build/C/man2/pivot_root.2:34
6290 msgid ""
6291 "The typical use of B<pivot_root>()  is during system startup, when the "
6292 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6293 "the real root file system, and eventually turns the latter into the current "
6294 "root of all relevant processes or threads."
6295 msgstr ""
6296 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6297 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6298 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6299 "レント root に変更するような場合である。"
6300
6301 #. type: Plain text
6302 #: build/C/man2/pivot_root.2:46
6303 msgid ""
6304 "B<pivot_root>()  may or may not change the current root and the current "
6305 "working directory of any processes or threads which use the old root "
6306 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6307 "root or current working directory at the old root operate correctly in "
6308 "either case.  An easy way to ensure this is to change their root and current "
6309 "working directory to I<new_root> before invoking B<pivot_root>()."
6310 msgstr ""
6311 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6312 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6313 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6314 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6315 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6316 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6317 "更しておくことである。"
6318
6319 #. type: Plain text
6320 #: build/C/man2/pivot_root.2:64
6321 msgid ""
6322 "The paragraph above is intentionally vague because the implementation of "
6323 "B<pivot_root>()  may change in the future.  At the time of writing, "
6324 "B<pivot_root>()  changes root and current working directory of each process "
6325 "or thread to I<new_root> if they point to the old root directory.  This is "
6326 "necessary in order to prevent kernel threads from keeping the old root "
6327 "directory busy with their root and current working directory, even if they "
6328 "never access the file system in any way.  In the future, there may be a "
6329 "mechanism for kernel threads to explicitly relinquish any access to the file "
6330 "system, such that this fairly intrusive mechanism can be removed from "
6331 "B<pivot_root>()."
6332 msgstr ""
6333 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6334 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6335 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6336 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6337 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6338 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6339 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6340 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6341 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6342 "除されるかもしれない。"
6343
6344 #. type: Plain text
6345 #: build/C/man2/pivot_root.2:72
6346 msgid ""
6347 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6348 "may not affect its current working directory.  It is therefore recommended "
6349 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6350 msgstr ""
6351 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6352 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6353 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6354
6355 #. type: Plain text
6356 #: build/C/man2/pivot_root.2:74
6357 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6358 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6359
6360 #. type: IP
6361 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6362 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6363 #, no-wrap
6364 msgid "-"
6365 msgstr "-"
6366
6367 #. type: Plain text
6368 #: build/C/man2/pivot_root.2:76
6369 msgid "They must be directories."
6370 msgstr "ディレクトリでなければならない。"
6371
6372 #. type: Plain text
6373 #: build/C/man2/pivot_root.2:79
6374 msgid ""
6375 "I<new_root> and I<put_old> must not be on the same file system as the "
6376 "current root."
6377 msgstr ""
6378 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6379 "ない。"
6380
6381 #. type: Plain text
6382 #: build/C/man2/pivot_root.2:83
6383 msgid ""
6384 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6385 "of I</..> to the string pointed to by I<put_old> must yield the same "
6386 "directory as I<new_root>."
6387 msgstr ""
6388 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6389 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6390 "リが得られなければならない。"
6391
6392 #. type: Plain text
6393 #: build/C/man2/pivot_root.2:85
6394 msgid "No other file system may be mounted on I<put_old>."
6395 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6396
6397 #. type: Plain text
6398 #: build/C/man2/pivot_root.2:89
6399 msgid "See also B<pivot_root>(8)  for additional usage examples."
6400 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6401
6402 #. type: Plain text
6403 #: build/C/man2/pivot_root.2:96
6404 msgid ""
6405 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6406 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6407 "point of that file system is mounted on I<put_old>."
6408 msgstr ""
6409 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6410 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6411 "テムのマウントポイントが I<put_old> にマウントされる。"
6412
6413 #. type: Plain text
6414 #: build/C/man2/pivot_root.2:101
6415 msgid ""
6416 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6417 "mounts> will show the mount point of the file system containing I<new_root> "
6418 "as root (I</>)."
6419 msgstr ""
6420 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6421 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6422 "る。"
6423
6424 #. type: Plain text
6425 #: build/C/man2/pivot_root.2:110
6426 msgid ""
6427 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6428 "B<stat>(2).  Additionally, it may return:"
6429 msgstr ""
6430 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6431 "性がある。さらに以下を返すことがある:"
6432
6433 #. type: Plain text
6434 #: build/C/man2/pivot_root.2:114
6435 msgid ""
6436 "I<new_root> or I<put_old> are on the current root file system, or a file "
6437 "system is already mounted on I<put_old>."
6438 msgstr ""
6439 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6440 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6441
6442 #. type: Plain text
6443 #: build/C/man2/pivot_root.2:117
6444 msgid "I<put_old> is not underneath I<new_root>."
6445 msgstr "I<put_old> が I<new_root> の下層にない。"
6446
6447 #. type: TP
6448 #: build/C/man2/pivot_root.2:117
6449 #, no-wrap
6450 msgid "B<ENOTDIR>"
6451 msgstr "B<ENOTDIR>"
6452
6453 #. type: Plain text
6454 #: build/C/man2/pivot_root.2:120
6455 msgid "I<new_root> or I<put_old> is not a directory."
6456 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6457
6458 #. type: Plain text
6459 #: build/C/man2/pivot_root.2:125
6460 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6461 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6462
6463 #. type: Plain text
6464 #: build/C/man2/pivot_root.2:128
6465 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6466 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6467
6468 #. type: Plain text
6469 #: build/C/man2/pivot_root.2:131
6470 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6471 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6472
6473 #. type: Plain text
6474 #: build/C/man2/pivot_root.2:138
6475 msgid ""
6476 "B<pivot_root>()  should not have to change root and current working "
6477 "directory of all other processes in the system."
6478 msgstr ""
6479 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6480 "ディレクトリとを変更しなくてもよいはずである。"
6481
6482 #. type: Plain text
6483 #: build/C/man2/pivot_root.2:143
6484 msgid ""
6485 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6486 "insanity."
6487 msgstr ""
6488 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6489 "からない状態になってしまうだろう"
6490
6491 #. type: Plain text
6492 #: build/C/man2/pivot_root.2:149
6493 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6494 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6495
6496 #. type: TH
6497 #: build/C/man2/process_vm_readv.2:29
6498 #, no-wrap
6499 msgid "PROCESS_VM_READV"
6500 msgstr ""
6501
6502 #. type: TH
6503 #: build/C/man2/process_vm_readv.2:29
6504 #, no-wrap
6505 msgid "2012-04-25"
6506 msgstr "2012-04-25"
6507
6508 #. type: Plain text
6509 #: build/C/man2/process_vm_readv.2:32
6510 msgid ""
6511 "process_vm_readv, process_vm_writev - transfer data between process address "
6512 "spaces"
6513 msgstr ""
6514
6515 #. type: Plain text
6516 #: build/C/man2/process_vm_readv.2:35
6517 #, no-wrap
6518 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6519 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6520
6521 #. type: Plain text
6522 #: build/C/man2/process_vm_readv.2:42
6523 #, no-wrap
6524 msgid ""
6525 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6526 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6527 "B<                         unsigned long >I<liovcnt>B<,>\n"
6528 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6529 "B<                         unsigned long >I<riovcnt>B<,>\n"
6530 "B<                         unsigned long >I<flags>B<);>\n"
6531 msgstr ""
6532
6533 #. type: Plain text
6534 #: build/C/man2/process_vm_readv.2:49
6535 #, no-wrap
6536 msgid ""
6537 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6538 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6539 "B<                          unsigned long >I<liovcnt>B<,>\n"
6540 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6541 "B<                          unsigned long >I<riovcnt>B<,>\n"
6542 "B<                          unsigned long >I<flags>B<);>\n"
6543 msgstr ""
6544
6545 #. type: Plain text
6546 #: build/C/man2/process_vm_readv.2:57
6547 msgid ""
6548 "These system calls transfer data between the address space of the calling "
6549 "process (\"the local process\") and the process identified by I<pid> (\"the "
6550 "remote process\").  The data moves directly between the address spaces of "
6551 "the two processes, without passing through kernel space."
6552 msgstr ""
6553
6554 #. type: Plain text
6555 #: build/C/man2/process_vm_readv.2:82
6556 msgid ""
6557 "The B<process_vm_readv>()  system call transfers data from the remote "
6558 "process to the local process.  The data to be transferred is identified by "
6559 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6560 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6561 "the number of elements in I<remote_iov>.  The data is transferred to the "
6562 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6563 "pointer to an array describing address ranges in the calling process, and "
6564 "I<liovcnt> specifies the number of elements in I<local_iov>."
6565 msgstr ""
6566
6567 #. type: Plain text
6568 #: build/C/man2/process_vm_readv.2:96
6569 msgid ""
6570 "The B<process_vm_writev>()  system call is the converse of "
6571 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6572 "remote process.  Other than the direction of the transfer, the arguments "
6573 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6574 "meaning as for B<process_vm_readv>()."
6575 msgstr ""
6576
6577 #. type: Plain text
6578 #: build/C/man2/process_vm_readv.2:106
6579 msgid ""
6580 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6581 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6582 msgstr ""
6583 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6584 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6585 "されている:"
6586
6587 #. type: Plain text
6588 #: build/C/man2/process_vm_readv.2:113
6589 #, no-wrap
6590 msgid ""
6591 "struct iovec {\n"
6592 "    void  *iov_base;    /* Starting address */\n"
6593 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6594 "};\n"
6595 msgstr ""
6596 "struct iovec {\n"
6597 "    void  *iov_base;    /* Starting address */\n"
6598 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6599 "};\n"
6600
6601 #. type: Plain text
6602 #: build/C/man2/process_vm_readv.2:129
6603 msgid ""
6604 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6605 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6606 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6607 "to I<remote_iov[1]>, and so on."
6608 msgstr ""
6609 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6610 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6611 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6612 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6613 "以降も同様である。"
6614
6615 #. type: Plain text
6616 #: build/C/man2/process_vm_readv.2:140
6617 msgid ""
6618 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6619 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6620 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6621 msgstr ""
6622
6623 #. type: Plain text
6624 #: build/C/man2/process_vm_readv.2:148
6625 msgid ""
6626 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6627 "have to be the same.  Thus, it is possible to split a single local buffer "
6628 "into multiple remote buffers, or vice versa."
6629 msgstr ""
6630
6631 #. type: Plain text
6632 #: build/C/man2/process_vm_readv.2:152
6633 msgid "The I<flags> argument is currently unused and must be set to 0."
6634 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6635
6636 #.  In time, glibc might provide a wrapper that works around this limit,
6637 #.  as is done for readv()/writev()
6638 #. type: Plain text
6639 #: build/C/man2/process_vm_readv.2:165
6640 msgid ""
6641 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6642 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6643 "via the call I<sysconf(_SC_IOV_MAX)>)."
6644 msgstr ""
6645
6646 #. type: Plain text
6647 #: build/C/man2/process_vm_readv.2:175
6648 msgid ""
6649 "The count arguments and I<local_iov> are checked before doing any "
6650 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6651 "addresses refer to regions that are inaccessible to the local process, none "
6652 "of the vectors will be processed and an error will be returned immediately."
6653 msgstr ""
6654
6655 #. type: Plain text
6656 #: build/C/man2/process_vm_readv.2:195
6657 msgid ""
6658 "Note, however, that these system calls do not check the memory regions in "
6659 "the remote process until just before doing the read/write.  Consequently, a "
6660 "partial read/write (see RETURN VALUE)  may result if one of the "
6661 "I<remote_iov> elements points to an invalid memory region in the remote "
6662 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6663 "this in mind when attempting to read data of unknown length (such as C "
6664 "strings that are null-terminated) from a remote process, by avoiding "
6665 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6666 "(Instead, split the remote read into two I<remote_iov> elements and have "
6667 "them merge back into a single write I<local_iov> entry.  The first read "
6668 "entry goes up to the page boundary, while the second starts on the next page "
6669 "boundary.)"
6670 msgstr ""
6671
6672 #. type: Plain text
6673 #: build/C/man2/process_vm_readv.2:209
6674 msgid ""
6675 "In order to read from or write to another process, either the caller must "
6676 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6677 "ID, and saved set-user-ID of the remote process must match the real user ID "
6678 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6679 "group-ID of the remote process must match the real group ID of the caller.  "
6680 "(The permission required is exactly the same as that required to perform a "
6681 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6682 msgstr ""
6683
6684 #. type: Plain text
6685 #: build/C/man2/process_vm_readv.2:225
6686 msgid ""
6687 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6688 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6689 "value may be less than the total number of requested bytes, if a partial "
6690 "read/write occurred.  (Partial transfers apply at the granularity of "
6691 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6692 "splits a single I<iovec> element.)  The caller should check the return value "
6693 "to determine whether a partial read/write occurred."
6694 msgstr ""
6695
6696 #. type: Plain text
6697 #: build/C/man2/process_vm_readv.2:229
6698 msgid "On error, -1 is returned and I<errno> is set appropriately."
6699 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6700
6701 #. type: Plain text
6702 #: build/C/man2/process_vm_readv.2:241
6703 msgid ""
6704 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6705 "overflows a I<ssize_t> value."
6706 msgstr ""
6707
6708 #. type: Plain text
6709 #: build/C/man2/process_vm_readv.2:245
6710 msgid "I<flags> is not 0."
6711 msgstr "I<flags> が 0 でない。"
6712
6713 #. type: Plain text
6714 #: build/C/man2/process_vm_readv.2:251
6715 msgid "I<liovcnt> or I<riovcnt> is too large."
6716 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6717
6718 #. type: Plain text
6719 #: build/C/man2/process_vm_readv.2:256
6720 msgid ""
6721 "The memory described by I<local_iov> is outside the caller's accessible "
6722 "address space."
6723 msgstr ""
6724 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6725 "アドレス空間の外にある。"
6726
6727 #. type: Plain text
6728 #: build/C/man2/process_vm_readv.2:262
6729 msgid ""
6730 "The memory described by I<remote_iov> is outside the accessible address "
6731 "space of the process I<pid>."
6732 msgstr ""
6733
6734 #. type: Plain text
6735 #: build/C/man2/process_vm_readv.2:267
6736 msgid ""
6737 "Could not allocate memory for internal copies of the I<iovec> structures."
6738 msgstr ""
6739
6740 #. type: Plain text
6741 #: build/C/man2/process_vm_readv.2:271
6742 msgid ""
6743 "The caller does not have permission to access the address space of the "
6744 "process I<pid>."
6745 msgstr ""
6746 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6747 "持っていない。"
6748
6749 #. type: Plain text
6750 #: build/C/man2/process_vm_readv.2:276
6751 msgid "No process with ID I<pid> exists."
6752 msgstr "ID が I<pid> のプロセスが存在しない。"
6753
6754 #. type: Plain text
6755 #: build/C/man2/process_vm_readv.2:279
6756 msgid ""
6757 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6758 "since version 2.15."
6759 msgstr ""
6760 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6761 "サポートは glibc バージョン 2.15 以降で提供されている。"
6762
6763 #. type: Plain text
6764 #: build/C/man2/process_vm_readv.2:281
6765 msgid "These system calls are nonstandard Linux extensions."
6766 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6767
6768 #. type: Plain text
6769 #: build/C/man2/process_vm_readv.2:287
6770 msgid ""
6771 "The data transfers performed by B<process_vm_readv>()  and "
6772 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6773 msgstr ""
6774
6775 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6776 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6777 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6778 #. type: Plain text
6779 #: build/C/man2/process_vm_readv.2:295
6780 msgid ""
6781 "These system calls were designed to permit fast message passing by allowing "
6782 "messages to be exchanged with a single copy operation (rather than the "
6783 "double copy that would be required when using, for example, shared memory or "
6784 "pipes)."
6785 msgstr ""
6786
6787 #. type: Plain text
6788 #: build/C/man2/process_vm_readv.2:303
6789 msgid ""
6790 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6791 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6792 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6793 msgstr ""
6794
6795 #. type: Plain text
6796 #: build/C/man2/process_vm_readv.2:306
6797 #, no-wrap
6798 msgid "#include E<lt>sys/uio.hE<gt>\n"
6799 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6800
6801 #. type: Plain text
6802 #: build/C/man2/process_vm_readv.2:316
6803 #, no-wrap
6804 msgid ""
6805 "int\n"
6806 "main(void)\n"
6807 "{\n"
6808 "    struct iovec local[2];\n"
6809 "    struct iovec remote[1];\n"
6810 "    char buf1[10];\n"
6811 "    char buf2[10];\n"
6812 "    ssize_t nread;\n"
6813 "    pid_t pid = 10;             /* PID of remote process */\n"
6814 msgstr ""
6815 "int\n"
6816 "main(void)\n"
6817 "{\n"
6818 "    struct iovec local[2];\n"
6819 "    struct iovec remote[1];\n"
6820 "    char buf1[10];\n"
6821 "    char buf2[10];\n"
6822 "    ssize_t nread;\n"
6823 "    pid_t pid = 10;             /* PID of remote process */\n"
6824
6825 #. type: Plain text
6826 #: build/C/man2/process_vm_readv.2:323
6827 #, no-wrap
6828 msgid ""
6829 "    local[0].iov_base = buf1;\n"
6830 "    local[0].iov_len = 10;\n"
6831 "    local[1].iov_base = buf2;\n"
6832 "    local[1].iov_len = 10;\n"
6833 "    remote[0].iov_base = (void *) 0x10000;\n"
6834 "    remote[1].iov_len = 20;\n"
6835 msgstr ""
6836 "    local[0].iov_base = buf1;\n"
6837 "    local[0].iov_len = 10;\n"
6838 "    local[1].iov_base = buf2;\n"
6839 "    local[1].iov_len = 10;\n"
6840 "    remote[0].iov_base = (void *) 0x10000;\n"
6841 "    remote[1].iov_len = 20;\n"
6842
6843 #. type: Plain text
6844 #: build/C/man2/process_vm_readv.2:330
6845 #, no-wrap
6846 msgid ""
6847 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6848 "    if (nread != 20)\n"
6849 "        return 1;\n"
6850 "    else\n"
6851 "        return 0;\n"
6852 "}\n"
6853 msgstr ""
6854 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6855 "    if (nread != 20)\n"
6856 "        return 1;\n"
6857 "    else\n"
6858 "        return 0;\n"
6859 "}\n"
6860
6861 #. type: Plain text
6862 #: build/C/man2/process_vm_readv.2:334
6863 msgid "B<readv>(2), B<writev>(2)"
6864 msgstr "B<readv>(2), B<writev>(2)"
6865
6866 #. type: TH
6867 #: build/C/man2/ptrace.2:44
6868 #, no-wrap
6869 msgid "PTRACE"
6870 msgstr "PTRACE"
6871
6872 #. type: TH
6873 #: build/C/man2/ptrace.2:44
6874 #, fuzzy, no-wrap
6875 #| msgid "2009-02-20"
6876 msgid "2013-02-16"
6877 msgstr "2009-02-20"
6878
6879 #. type: Plain text
6880 #: build/C/man2/ptrace.2:47
6881 msgid "ptrace - process trace"
6882 msgstr "ptrace - プロセスのトレース"
6883
6884 #. type: Plain text
6885 #: build/C/man2/ptrace.2:50
6886 #, no-wrap
6887 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6888 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6889
6890 #. type: Plain text
6891 #: build/C/man2/ptrace.2:53
6892 #, no-wrap
6893 msgid ""
6894 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6895 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6896 msgstr ""
6897 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6898 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6899
6900 #. type: Plain text
6901 #: build/C/man2/ptrace.2:62
6902 #, fuzzy
6903 #| msgid ""
6904 #| "The B<ptrace>()  system call provides a means by which a parent process "
6905 #| "may observe and control the execution of another process, and examine and "
6906 #| "change its core image and registers.  It is primarily used to implement "
6907 #| "breakpoint debugging and system call tracing."
6908 msgid ""
6909 "The B<ptrace>()  system call provides a means by which one process (the "
6910 "\"tracer\")  may observe and control the execution of another process (the "
6911 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6912 "is primarily used to implement breakpoint debugging and system call tracing."
6913 msgstr ""
6914 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6915 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6916 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6917 "コールのトレースを 実装するのに用いられる。"
6918
6919 #. type: Plain text
6920 #: build/C/man2/ptrace.2:73
6921 msgid ""
6922 "A tracee first needs to be attached to the tracer.  Attachment and "
6923 "subsequent commands are per thread: in a multithreaded process, every thread "
6924 "can be individually attached to a (potentially different) tracer, or left "
6925 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6926 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6927 "commands are always sent to a specific tracee using a call of the form"
6928 msgstr ""
6929
6930 #. type: Plain text
6931 #: build/C/man2/ptrace.2:75
6932 #, no-wrap
6933 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6934 msgstr ""
6935
6936 #. type: Plain text
6937 #: build/C/man2/ptrace.2:79
6938 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6939 msgstr ""
6940
6941 #. type: Plain text
6942 #: build/C/man2/ptrace.2:85
6943 msgid ""
6944 "(Note that in this page, a \"multithreaded process\" means a thread group "
6945 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6946 msgstr ""
6947
6948 #. type: Plain text
6949 #: build/C/man2/ptrace.2:96
6950 #, fuzzy
6951 #| msgid ""
6952 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6953 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6954 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6955 #| "using B<PTRACE_ATTACH>."
6956 msgid ""
6957 "A process can initiate a trace by calling B<fork>(2)  and having the "
6958 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6959 "(2).  Alternatively, one process may commence tracing another process using "
6960 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6961 msgstr ""
6962 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
6963 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
6964 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
6965 "を使用し、トレースを開始する。"
6966
6967 #. type: Plain text
6968 #: build/C/man2/ptrace.2:113
6969 #, fuzzy
6970 #| msgid ""
6971 #| "While being traced, the child will stop each time a signal is delivered, "
6972 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
6973 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
6974 #| "(2)  and may inspect and modify the child process while it is stopped.  "
6975 #| "The parent then causes the child to continue, optionally ignoring the "
6976 #| "delivered signal (or even delivering a different signal instead)."
6977 msgid ""
6978 "While being traced, the tracee will stop each time a signal is delivered, "
6979 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
6980 "its usual effect.)  The tracer will be notified at its next call to "
6981 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
6982 "return a I<status> value containing information that indicates the cause of "
6983 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
6984 "various ptrace requests to inspect and modify the tracee.  The tracer then "
6985 "causes the tracee to continue, optionally ignoring the delivered signal (or "
6986 "even delivering a different signal instead)."
6987 msgstr ""
6988 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
6989 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
6990 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
6991 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
6992 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
6993 "シグナルを 配送することもできる) 。"
6994
6995 #. type: Plain text
6996 #: build/C/man2/ptrace.2:123
6997 msgid ""
6998 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
6999 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7000 "signal, giving the parent a chance to gain control before the new program "
7001 "begins execution."
7002 msgstr ""
7003
7004 #. type: Plain text
7005 #: build/C/man2/ptrace.2:127
7006 #, fuzzy
7007 #| msgid ""
7008 #| "When the parent is finished tracing, it can terminate the child with "
7009 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7010 #| "mode via B<PTRACE_DETACH>."
7011 msgid ""
7012 "When the tracer is finished tracing, it can cause the tracee to continue "
7013 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7014 msgstr ""
7015 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7016 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7017 "ドにして、 実行を継続させることもできる。"
7018
7019 #. type: Plain text
7020 #: build/C/man2/ptrace.2:131
7021 msgid "The value of I<request> determines the action to be performed:"
7022 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7023
7024 #. type: TP
7025 #: build/C/man2/ptrace.2:131
7026 #, no-wrap
7027 msgid "B<PTRACE_TRACEME>"
7028 msgstr "B<PTRACE_TRACEME>"
7029
7030 #. type: Plain text
7031 #: build/C/man2/ptrace.2:141
7032 msgid ""
7033 "Indicate that this process is to be traced by its parent.  A process "
7034 "probably shouldn't make this request if its parent isn't expecting to trace "
7035 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7036 msgstr ""
7037
7038 #. type: Plain text
7039 #: build/C/man2/ptrace.2:156
7040 #, fuzzy
7041 #| msgid ""
7042 #| "The above request is used only by the child process; the rest are used "
7043 #| "only by the parent.  In the following requests, I<pid> specifies the "
7044 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7045 #| "the child process must be stopped."
7046 msgid ""
7047 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7048 "requests are used only by the tracer.  In the following requests, I<pid> "
7049 "specifies the thread ID of the tracee to be acted on.  For requests other "
7050 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7051 "B<PTRACE_KILL>, the tracee must be stopped."
7052 msgstr ""
7053 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7054 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7055 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7056 "らない。"
7057
7058 #. type: TP
7059 #: build/C/man2/ptrace.2:156
7060 #, no-wrap
7061 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7062 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7063
7064 #. type: Plain text
7065 #: build/C/man2/ptrace.2:167
7066 #, fuzzy
7067 #| msgid ""
7068 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7069 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7070 #| "separate text and data address spaces, so the two requests are currently "
7071 #| "equivalent.  (The argument I<data> is ignored.)"
7072 msgid ""
7073 "Read a word at the address I<addr> in the tracee's memory, returning the "
7074 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7075 "text and data address spaces, so these two requests are currently "
7076 "equivalent.  (I<data> is ignored.)"
7077 msgstr ""
7078 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7079 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7080 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7081 "ものである。 (引き数 I<data> は無視される。)"
7082
7083 #. type: TP
7084 #: build/C/man2/ptrace.2:167
7085 #, no-wrap
7086 msgid "B<PTRACE_PEEKUSER>"
7087 msgstr "B<PTRACE_PEEKUSER>"
7088
7089 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7090 #.  and that is the name that seems common on other systems.
7091 #. type: Plain text
7092 #: build/C/man2/ptrace.2:185
7093 #, fuzzy
7094 #| msgid ""
7095 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7096 #| "registers and other information about the process (see I<E<lt>sys/user."
7097 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7098 #| "Typically the offset must be word-aligned, though this might vary by "
7099 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7100 msgid ""
7101 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7102 "registers and other information about the process (see I<E<lt>sys/user."
7103 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7104 "Typically, the offset must be word-aligned, though this might vary by "
7105 "architecture.  See NOTES.  (I<data> is ignored.)"
7106 msgstr ""
7107 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7108 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7109 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7110 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7111 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7112 "される。 )"
7113
7114 #. type: TP
7115 #: build/C/man2/ptrace.2:185
7116 #, no-wrap
7117 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7118 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7119
7120 #. type: Plain text
7121 #: build/C/man2/ptrace.2:197
7122 #, fuzzy
7123 #| msgid ""
7124 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7125 #| "above, the two requests are currently equivalent."
7126 msgid ""
7127 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7128 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7129 "equivalent."
7130 msgstr ""
7131 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7132 "に、現在のところ二つの 要求は同じものである。"
7133
7134 #. type: TP
7135 #: build/C/man2/ptrace.2:197
7136 #, no-wrap
7137 msgid "B<PTRACE_POKEUSER>"
7138 msgstr "B<PTRACE_POKEUSER>"
7139
7140 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7141 #.  and that is the name that seems common on other systems.
7142 #.  FIXME In the preceding sentence, which modifications are disallowed,
7143 #.  and when they are disallowed, how does user space discover that fact?
7144 #. type: Plain text
7145 #: build/C/man2/ptrace.2:213
7146 #, fuzzy
7147 #| msgid ""
7148 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7149 #| "above, the offset must typically be word-aligned.  In order to maintain "
7150 #| "the integrity of the kernel, some modifications to the USER area are "
7151 #| "disallowed."
7152 msgid ""
7153 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7154 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7155 "maintain the integrity of the kernel, some modifications to the USER area "
7156 "are disallowed."
7157 msgstr ""
7158 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7159 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7160 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7161 "されている。"
7162
7163 #. type: TP
7164 #: build/C/man2/ptrace.2:213
7165 #, no-wrap
7166 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7167 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7168
7169 #. type: Plain text
7170 #: build/C/man2/ptrace.2:236
7171 #, fuzzy
7172 #| msgid ""
7173 #| "Copies the child's general purpose or floating-point registers, "
7174 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7175 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7176 msgid ""
7177 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7178 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7179 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7180 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7181 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7182 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7183 "architectures."
7184 msgstr ""
7185 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7186 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7187 "すること。(I<addr> は無視される。)"
7188
7189 #. type: TP
7190 #: build/C/man2/ptrace.2:236
7191 #, fuzzy, no-wrap
7192 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7193 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7194 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7195
7196 #. type: Plain text
7197 #: build/C/man2/ptrace.2:257
7198 msgid ""
7199 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7200 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7201 "numerical value 1)  usually results in reading of general-purpose "
7202 "registers.  If the CPU has, for example, floating-point and/or vector "
7203 "registers, they can be retrieved by setting I<addr> to the corresponding "
7204 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7205 "the destination buffer's location and length.  On return, the kernel "
7206 "modifies B<iov.len> to indicate the actual number of bytes returned."
7207 msgstr ""
7208
7209 #. type: TP
7210 #: build/C/man2/ptrace.2:257
7211 #, no-wrap
7212 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7213 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7214
7215 #. type: Plain text
7216 #: build/C/man2/ptrace.2:269
7217 #, fuzzy
7218 #| msgid ""
7219 #| "Retrieve information about the signal that caused the stop.  Copies a "
7220 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7221 #| "I<data> in the parent.  (I<addr> is ignored.)"
7222 msgid ""
7223 "Retrieve information about the signal that caused the stop.  Copy a "
7224 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7225 "I<data> in the tracer.  (I<addr> is ignored.)"
7226 msgstr ""
7227 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7228 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7229 "る。 (I<addr> は無視される。)"
7230
7231 #. type: TP
7232 #: build/C/man2/ptrace.2:269
7233 #, no-wrap
7234 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7235 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7236
7237 #.  FIXME In the preceding sentence, which modifications are disallowed,
7238 #.  and when they are disallowed, how does user space discover that fact?
7239 #. type: Plain text
7240 #: build/C/man2/ptrace.2:294
7241 #, fuzzy
7242 #| msgid ""
7243 #| "Copies the child's general purpose or floating-point registers, "
7244 #| "respectively, from location I<data> in the parent.  As for "
7245 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7246 #| "disallowed.  (I<addr> is ignored.)"
7247 msgid ""
7248 "Modify the tracee's general-purpose or floating-point registers, "
7249 "respectively, from the address I<data> in the tracer.  As for "
7250 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7251 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7252 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7253 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7254 "B<PTRACE_SETFPREGS> are not present on all architectures."
7255 msgstr ""
7256 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7257 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7258 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7259
7260 #. type: TP
7261 #: build/C/man2/ptrace.2:294
7262 #, fuzzy, no-wrap
7263 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7264 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7265 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7266
7267 #. type: Plain text
7268 #: build/C/man2/ptrace.2:303
7269 msgid ""
7270 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7271 "analogous to B<PTRACE_GETREGSET>."
7272 msgstr ""
7273
7274 #. type: TP
7275 #: build/C/man2/ptrace.2:303
7276 #, no-wrap
7277 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7278 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7279
7280 #. type: Plain text
7281 #: build/C/man2/ptrace.2:319
7282 #, fuzzy
7283 #| msgid ""
7284 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7285 #| "I<data> in the parent to the child.  This will only affect signals that "
7286 #| "would normally be delivered to the child and were caught by the tracer.  "
7287 #| "It may be difficult to tell these normal signals from synthetic signals "
7288 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7289 msgid ""
7290 "Set signal information: copy a I<siginfo_t> structure from the address "
7291 "I<data> in the tracer to the tracee.  This will affect only signals that "
7292 "would normally be delivered to the tracee and were caught by the tracer.  It "
7293 "may be difficult to tell these normal signals from synthetic signals "
7294 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7295 msgstr ""
7296 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7297 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7298 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7299 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7300 "かもしれない。 (I<addr> は無視される。)"
7301
7302 #. type: TP
7303 #: build/C/man2/ptrace.2:319
7304 #, no-wrap
7305 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7306 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7307
7308 #. type: Plain text
7309 #: build/C/man2/ptrace.2:328
7310 #, fuzzy
7311 #| msgid ""
7312 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7313 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7314 #| "the following flags:"
7315 msgid ""
7316 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7317 "interpreted as a bit mask of options, which are specified by the following "
7318 "flags:"
7319 msgstr ""
7320 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7321 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7322 "下のフラグを指定できる:"
7323
7324 #. type: TP
7325 #: build/C/man2/ptrace.2:329
7326 #, fuzzy, no-wrap
7327 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7328 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7329 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7330
7331 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7332 #. type: Plain text
7333 #: build/C/man2/ptrace.2:337
7334 msgid ""
7335 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7336 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7337 "ensure that tracees can never escape the tracer's control."
7338 msgstr ""
7339
7340 #. type: TP
7341 #: build/C/man2/ptrace.2:337
7342 #, no-wrap
7343 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7344 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7345
7346 #. type: Plain text
7347 #: build/C/man2/ptrace.2:349
7348 #, fuzzy
7349 #| msgid ""
7350 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7351 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7352 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7353 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7354 msgid ""
7355 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7356 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7357 "by the tracer will return a I<status> value such that"
7358 msgstr ""
7359 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7360 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7361 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7362 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7363
7364 #. type: Plain text
7365 #: build/C/man2/ptrace.2:352
7366 #, no-wrap
7367 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7368 msgstr ""
7369
7370 #. type: Plain text
7371 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7372 #: build/C/man2/ptrace.2:465
7373 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7374 msgstr ""
7375
7376 #. type: Plain text
7377 #: build/C/man2/ptrace.2:377
7378 #, fuzzy
7379 #| msgid ""
7380 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7381 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7382 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7383 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7384 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7385 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7386 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7387 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7388 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7389 msgid ""
7390 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7391 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7392 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7393 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7394 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7395 msgstr ""
7396 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7397 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7398 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7399 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7400 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7401 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7402 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7403 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7404 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7405
7406 #. type: TP
7407 #: build/C/man2/ptrace.2:377
7408 #, no-wrap
7409 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7410 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7411
7412 #. type: Plain text
7413 #: build/C/man2/ptrace.2:386
7414 msgid ""
7415 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7416 "will return a I<status> value such that"
7417 msgstr ""
7418
7419 #. type: Plain text
7420 #: build/C/man2/ptrace.2:389
7421 #, no-wrap
7422 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7423 msgstr ""
7424
7425 #. type: Plain text
7426 #: build/C/man2/ptrace.2:395
7427 msgid ""
7428 "If the execing thread is not a thread group leader, the thread ID is reset "
7429 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7430 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7431 msgstr ""
7432
7433 #. type: TP
7434 #: build/C/man2/ptrace.2:395
7435 #, no-wrap
7436 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7437 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7438
7439 #. type: Plain text
7440 #: build/C/man2/ptrace.2:403
7441 msgid ""
7442 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7443 "I<status> value such that"
7444 msgstr ""
7445
7446 #. type: Plain text
7447 #: build/C/man2/ptrace.2:406
7448 #, no-wrap
7449 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7450 msgstr ""
7451
7452 #. type: Plain text
7453 #: build/C/man2/ptrace.2:410
7454 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7455 msgstr ""
7456
7457 #. type: Plain text
7458 #: build/C/man2/ptrace.2:418
7459 #, fuzzy
7460 #| msgid ""
7461 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7462 #| "8>.  The child's exit status can be retrieved with "
7463 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7464 #| "when registers are still available, allowing the tracer to see where the "
7465 #| "exit occurred, whereas the normal exit notification is done after the "
7466 #| "process is finished exiting.  Even though context is available, the "
7467 #| "tracer cannot prevent the exit from happening at this point."
7468 msgid ""
7469 "The tracee is stopped early during process exit, when registers are still "
7470 "available, allowing the tracer to see where the exit occurred, whereas the "
7471 "normal exit notification is done after the process is finished exiting.  "
7472 "Even though context is available, the tracer cannot prevent the exit from "
7473 "happening at this point."
7474 msgstr ""
7475 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7476 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7477 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7478 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7479 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7480 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7481 "できない。"
7482
7483 #. type: TP
7484 #: build/C/man2/ptrace.2:418
7485 #, no-wrap
7486 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7487 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7488
7489 #. type: Plain text
7490 #: build/C/man2/ptrace.2:430
7491 #, fuzzy
7492 #| msgid ""
7493 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7494 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7495 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7496 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7497 msgid ""
7498 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7499 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7500 "by the tracer will return a I<status> value such that"
7501 msgstr ""
7502 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7503 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7504 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7505 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7506
7507 #. type: Plain text
7508 #: build/C/man2/ptrace.2:433
7509 #, no-wrap
7510 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7511 msgstr ""
7512
7513 #. type: TP
7514 #: build/C/man2/ptrace.2:437
7515 #, no-wrap
7516 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7517 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7518
7519 #. type: Plain text
7520 #: build/C/man2/ptrace.2:446
7521 #, fuzzy
7522 #| msgid ""
7523 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7524 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7525 #| "the difference between normal traps and those caused by a syscall.  "
7526 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7527 msgid ""
7528 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7529 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7530 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7531 "may not work on all architectures.)"
7532 msgstr ""
7533 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7534 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7535 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7536 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7537
7538 #. type: TP
7539 #: build/C/man2/ptrace.2:446
7540 #, no-wrap
7541 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7542 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7543
7544 #. type: Plain text
7545 #: build/C/man2/ptrace.2:458
7546 #, fuzzy
7547 #| msgid ""
7548 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7549 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7550 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7551 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7552 msgid ""
7553 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7554 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7555 "by the tracer will return a I<status> value such that"
7556 msgstr ""
7557 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7558 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7559 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7560 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7561
7562 #. type: Plain text
7563 #: build/C/man2/ptrace.2:461
7564 #, no-wrap
7565 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7566 msgstr ""
7567
7568 #. type: TP
7569 #: build/C/man2/ptrace.2:465
7570 #, no-wrap
7571 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7572 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7573
7574 #. type: Plain text
7575 #: build/C/man2/ptrace.2:474
7576 msgid ""
7577 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7578 "by the tracer will return a I<status> value such that"
7579 msgstr ""
7580
7581 #. type: Plain text
7582 #: build/C/man2/ptrace.2:477
7583 #, no-wrap
7584 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7585 msgstr ""
7586
7587 #. type: Plain text
7588 #: build/C/man2/ptrace.2:481
7589 msgid ""
7590 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7591 "B<PTRACE_GETEVENTMSG>."
7592 msgstr ""
7593
7594 #. type: TP
7595 #: build/C/man2/ptrace.2:482
7596 #, no-wrap
7597 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7598 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7599
7600 #. type: Plain text
7601 #: build/C/man2/ptrace.2:502
7602 #, fuzzy
7603 #| msgid ""
7604 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7605 #| "just happened, placing it in the location I<data> in the parent.  For "
7606 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7607 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7608 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7609 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7610 #| "is ignored.)"
7611 msgid ""
7612 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7613 "just happened, placing it at the address I<data> in the tracer.  For "
7614 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7615 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7616 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7617 "ignored.)"
7618 msgstr ""
7619 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7620 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7621 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7622 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7623 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7624 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7625
7626 #. type: TP
7627 #: build/C/man2/ptrace.2:502
7628 #, no-wrap
7629 msgid "B<PTRACE_CONT>"
7630 msgstr "B<PTRACE_CONT>"
7631
7632 #. type: Plain text
7633 #: build/C/man2/ptrace.2:514
7634 #, fuzzy
7635 #| msgid ""
7636 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7637 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7638 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7639 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7640 #| "is ignored.)"
7641 msgid ""
7642 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7643 "interpreted as the number of a signal to be delivered to the tracee; "
7644 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7645 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7646 "is ignored.)"
7647 msgstr ""
7648 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7649 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7650 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7651 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7652 "は無視される。)"
7653
7654 #. type: TP
7655 #: build/C/man2/ptrace.2:514
7656 #, no-wrap
7657 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7658 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7659
7660 #. type: Plain text
7661 #: build/C/man2/ptrace.2:538
7662 #, fuzzy
7663 #| msgid ""
7664 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7665 #| "child to be stopped at the next entry to or exit from a system call, or "
7666 #| "after execution of a single instruction, respectively.  (The child will "
7667 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7668 #| "perspective, the child will appear to have been stopped by receipt of a "
7669 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7670 #| "inspect the arguments to the system call at the first stop, then do "
7671 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7672 #| "at the second stop.  The I<data> argument is treated as for "
7673 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7674 msgid ""
7675 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7676 "to be stopped at the next entry to or exit from a system call, or after "
7677 "execution of a single instruction, respectively.  (The tracee will also, as "
7678 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7679 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7680 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7681 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7682 "inspect the return value of the system call at the second stop.  The I<data> "
7683 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7684 msgstr ""
7685 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7686 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7687 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7688 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7689 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7690 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7691 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7692 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7693 "同じ様に解釈される。 (I<addr> は無視される。)"
7694
7695 #. type: TP
7696 #: build/C/man2/ptrace.2:538
7697 #, no-wrap
7698 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7699 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7700
7701 #.  As at 3.7
7702 #. type: Plain text
7703 #: build/C/man2/ptrace.2:559
7704 #, fuzzy
7705 #| msgid ""
7706 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7707 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7708 #| "but also singlestep if not a syscall.  This call is used by programs like "
7709 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7710 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7711 #| "not supported on all architectures.)"
7712 msgid ""
7713 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7714 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7715 "but also singlestep if not a system call.  This call is used by programs "
7716 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7717 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7718 "is ignored.  These requests are currently supported only on x86."
7719 msgstr ""
7720 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7721 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7722 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7723 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7724 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7725 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7726 "ポートされているわけではない。)"
7727
7728 #. type: TP
7729 #: build/C/man2/ptrace.2:559
7730 #, fuzzy, no-wrap
7731 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7732 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7733 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7734
7735 #. type: Plain text
7736 #: build/C/man2/ptrace.2:570
7737 msgid ""
7738 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7739 "state of the tracee is similar to a process which has been stopped by a "
7740 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7741 "for additional information.  B<PTRACE_LISTEN> only works on tracees attached "
7742 "by B<PTRACE_SEIZE>."
7743 msgstr ""
7744
7745 #. type: TP
7746 #: build/C/man2/ptrace.2:570
7747 #, no-wrap
7748 msgid "B<PTRACE_KILL>"
7749 msgstr "B<PTRACE_KILL>"
7750
7751 #. type: Plain text
7752 #: build/C/man2/ptrace.2:579
7753 #, fuzzy
7754 #| msgid ""
7755 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7756 #| "ignored.)"
7757 msgid ""
7758 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7759 "ignored.)"
7760 msgstr ""
7761 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7762
7763 #.  [Note from Denys Vlasenko:
7764 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7765 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7766 #. type: Plain text
7767 #: build/C/man2/ptrace.2:598
7768 msgid ""
7769 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7770 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7771 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7772 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7773 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7774 msgstr ""
7775
7776 #. type: TP
7777 #: build/C/man2/ptrace.2:598
7778 #, fuzzy, no-wrap
7779 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7780 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7781 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7782
7783 #. type: Plain text
7784 #: build/C/man2/ptrace.2:612
7785 msgid ""
7786 "Stop a tracee.  If the tracee is running, it will stop with "
7787 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7788 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7789 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7790 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7791 msgstr ""
7792
7793 #. type: TP
7794 #: build/C/man2/ptrace.2:612
7795 #, no-wrap
7796 msgid "B<PTRACE_ATTACH>"
7797 msgstr "B<PTRACE_ATTACH>"
7798
7799 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7800 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7801 #.          Basically, it's not true for any Linux in practical use.
7802 #.  ; the behavior of the tracee is as if it had done a
7803 #.  .BR PTRACE_TRACEME .
7804 #.  The calling process actually becomes the parent of the tracee
7805 #.  process for most purposes (e.g., it will receive
7806 #.  notification of tracee events and appears in
7807 #.  .BR ps (1)
7808 #.  output as the tracee's parent), but a
7809 #.  .BR getppid (2)
7810 #.  by the tracee will still return the PID of the original parent.
7811 #. type: Plain text
7812 #: build/C/man2/ptrace.2:640
7813 msgid ""
7814 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7815 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7816 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7817 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7818 "additional information.  (I<addr> and I<data> are ignored.)"
7819 msgstr ""
7820
7821 #. type: TP
7822 #: build/C/man2/ptrace.2:640
7823 #, fuzzy, no-wrap
7824 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7825 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7826 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7827
7828 #. type: Plain text
7829 #: build/C/man2/ptrace.2:660
7830 msgid ""
7831 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7832 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7833 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7834 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7835 "mask of ptrace options to activate immediately."
7836 msgstr ""
7837
7838 #. type: TP
7839 #: build/C/man2/ptrace.2:660
7840 #, no-wrap
7841 msgid "B<PTRACE_DETACH>"
7842 msgstr "B<PTRACE_DETACH>"
7843
7844 #. type: Plain text
7845 #: build/C/man2/ptrace.2:669
7846 #, fuzzy
7847 #| msgid ""
7848 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7849 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7850 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7851 #| "a traced child can be detached in this way regardless of which method was "
7852 #| "used to initiate tracing.  (I<addr> is ignored.)"
7853 msgid ""
7854 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7855 "Under Linux, a tracee can be detached in this way regardless of which method "
7856 "was used to initiate tracing.  (I<addr> is ignored.)"
7857 msgstr ""
7858 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7859 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7860 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7861 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7862 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7863
7864 #. type: SS
7865 #: build/C/man2/ptrace.2:669
7866 #, no-wrap
7867 msgid "Death under ptrace"
7868 msgstr ""
7869
7870 #. type: Plain text
7871 #: build/C/man2/ptrace.2:678
7872 msgid ""
7873 "When a (possibly multithreaded) process receives a killing signal (one whose "
7874 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7875 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7876 "Notification of this event is delivered via B<waitpid>(2)."
7877 msgstr ""
7878
7879 #. type: Plain text
7880 #: build/C/man2/ptrace.2:687
7881 msgid ""
7882 "Note that the killing signal will first cause signal-delivery-stop (on one "
7883 "tracee only), and only after it is injected by the tracer (or after it was "
7884 "dispatched to a thread which isn't traced), will death from the signal "
7885 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7886 "delivery-stop\" is explained below.)"
7887 msgstr ""
7888
7889 #. type: Plain text
7890 #: build/C/man2/ptrace.2:699
7891 msgid ""
7892 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7893 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7894 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7895 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7896 "of the process are ptraced."
7897 msgstr ""
7898
7899 #. type: Plain text
7900 #: build/C/man2/ptrace.2:704
7901 msgid ""
7902 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7903 "Other threads are not affected."
7904 msgstr ""
7905
7906 #. type: Plain text
7907 #: build/C/man2/ptrace.2:708
7908 msgid ""
7909 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7910 "reports its death to its tracer."
7911 msgstr ""
7912
7913 #. type: Plain text
7914 #: build/C/man2/ptrace.2:722
7915 msgid ""
7916 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7917 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7918 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7919 "on B<execve>(2)  in a multithreaded process."
7920 msgstr ""
7921
7922 #. type: Plain text
7923 #: build/C/man2/ptrace.2:747
7924 msgid ""
7925 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7926 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7927 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7928 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7929 "exists but is not ptrace-stopped (for commands which require a stopped "
7930 "tracee), or if it is not traced by the process which issued the ptrace "
7931 "call.  The tracer needs to keep track of the stopped/running state of the "
7932 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7933 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7934 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7935 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7936 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7937 "yet fully dead\", but already refusing ptrace requests."
7938 msgstr ""
7939
7940 #. type: Plain text
7941 #: build/C/man2/ptrace.2:761
7942 msgid ""
7943 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7944 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7945 "does not occur.  For example, if a thread other than thread group leader "
7946 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7947 "any subsequent ptrace stops will be reported under the thread group leader's "
7948 "PID."
7949 msgstr ""
7950
7951 #. type: SS
7952 #: build/C/man2/ptrace.2:761
7953 #, no-wrap
7954 msgid "Stopped states"
7955 msgstr ""
7956
7957 #. type: Plain text
7958 #: build/C/man2/ptrace.2:763
7959 msgid "A tracee can be in two states: running or stopped."
7960 msgstr ""
7961
7962 #. type: Plain text
7963 #: build/C/man2/ptrace.2:767
7964 msgid ""
7965 "There are many kinds of states when the tracee is stopped, and in ptrace "
7966 "discussions they are often conflated.  Therefore, it is important to use "
7967 "precise terms."
7968 msgstr ""
7969
7970 #. type: Plain text
7971 #: build/C/man2/ptrace.2:778
7972 msgid ""
7973 "In this manual page, any stopped state in which the tracee is ready to "
7974 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
7975 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
7976 "I<syscall-stop>, and so on.  These stopped states are described in detail "
7977 "below."
7978 msgstr ""
7979
7980 #. type: Plain text
7981 #: build/C/man2/ptrace.2:783
7982 msgid ""
7983 "When the running tracee enters ptrace-stop, it notifies its tracer using "
7984 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
7985 "manual page assumes that the tracer waits with:"
7986 msgstr ""
7987
7988 #. type: Plain text
7989 #: build/C/man2/ptrace.2:785
7990 #, no-wrap
7991 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
7992 msgstr ""
7993
7994 #.  Denys Vlasenko:
7995 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
7996 #.      I am not 100% sure there aren't ugly corner cases.) Are the
7997 #.      rules different if user wants to use waitid? Will waitid require
7998 #.      WEXITED?
7999 #. type: Plain text
8000 #: build/C/man2/ptrace.2:797
8001 msgid ""
8002 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8003 "and I<WIFSTOPPED(status)> true."
8004 msgstr ""
8005
8006 #. type: Plain text
8007 #: build/C/man2/ptrace.2:805
8008 msgid ""
8009 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8010 "but implies their functionality."
8011 msgstr ""
8012
8013 #. type: Plain text
8014 #: build/C/man2/ptrace.2:812
8015 msgid ""
8016 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8017 "recommended: the \"continued\" state is per-process and consuming it can "
8018 "confuse the real parent of the tracee."
8019 msgstr ""
8020
8021 #. type: Plain text
8022 #: build/C/man2/ptrace.2:820
8023 msgid ""
8024 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8025 "results available yet\")  even if the tracer knows there should be a "
8026 "notification.  Example:"
8027 msgstr ""
8028
8029 #. type: Plain text
8030 #: build/C/man2/ptrace.2:829
8031 #, no-wrap
8032 msgid ""
8033 "    errno = 0;\n"
8034 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8035 "    if (errno == ESRCH) {\n"
8036 "        /* tracee is dead */\n"
8037 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8038 "        /* r can still be 0 here! */\n"
8039 "    }\n"
8040 msgstr ""
8041
8042 #. type: Plain text
8043 #: build/C/man2/ptrace.2:852
8044 msgid ""
8045 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8046 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8047 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8048 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8049 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8050 "> macro can't be used to perform this examination, because it returns the "
8051 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8052 msgstr ""
8053
8054 #. type: SS
8055 #: build/C/man2/ptrace.2:852
8056 #, no-wrap
8057 msgid "Signal-delivery-stop"
8058 msgstr ""
8059
8060 #. type: Plain text
8061 #: build/C/man2/ptrace.2:872
8062 msgid ""
8063 "When a (possibly multithreaded) process receives any signal except "
8064 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8065 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8066 "can be explicitly selected by the caller.)  If the selected thread is "
8067 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8068 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8069 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8070 "the next ptrace restart request.  This second step of signal delivery is "
8071 "called I<signal injection> in this manual page.  Note that if the signal is "
8072 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8073 "with the usual exception that B<SIGSTOP> can't be blocked."
8074 msgstr ""
8075
8076 #. type: Plain text
8077 #: build/C/man2/ptrace.2:886
8078 msgid ""
8079 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8080 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8081 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8082 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8083 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8084 "group-stop; see below."
8085 msgstr ""
8086
8087 #. type: SS
8088 #: build/C/man2/ptrace.2:886
8089 #, no-wrap
8090 msgid "Signal injection and suppression"
8091 msgstr ""
8092
8093 #. type: Plain text
8094 #: build/C/man2/ptrace.2:889
8095 msgid ""
8096 "After signal-delivery-stop is observed by the tracer, the tracer should "
8097 "restart the tracee with the call"
8098 msgstr ""
8099
8100 #. type: Plain text
8101 #: build/C/man2/ptrace.2:891
8102 #, no-wrap
8103 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8104 msgstr ""
8105
8106 #. type: Plain text
8107 #: build/C/man2/ptrace.2:904
8108 msgid ""
8109 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8110 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8111 "delivered.  This operation is called I<signal injection> in this manual "
8112 "page, to distinguish it from signal-delivery-stop."
8113 msgstr ""
8114
8115 #. type: Plain text
8116 #: build/C/man2/ptrace.2:910
8117 msgid ""
8118 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8119 "tracer can cause a different signal to be injected."
8120 msgstr ""
8121
8122 #. type: Plain text
8123 #: build/C/man2/ptrace.2:926
8124 msgid ""
8125 "Note that a suppressed signal still causes system calls to return "
8126 "prematurely.  In this case system calls will be restarted: the tracer will "
8127 "observe the tracee to reexecute the interrupted system call (or "
8128 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8129 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8130 "calls (such as B<poll>(2))  which are not restartable after signal are "
8131 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8132 "some syscalls to fail with B<EINTR> even though no observable signal is "
8133 "injected to the tracee."
8134 msgstr ""
8135
8136 #. type: Plain text
8137 #: build/C/man2/ptrace.2:937
8138 msgid ""
8139 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8140 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8141 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8142 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8143 "instead."
8144 msgstr ""
8145
8146 #. type: Plain text
8147 #: build/C/man2/ptrace.2:944
8148 msgid ""
8149 "The fact that signal injection requests may be ignored when restarting the "
8150 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8151 "confusion among ptrace users.  One typical scenario is that the tracer "
8152 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8153 "tracee with"
8154 msgstr ""
8155
8156 #. type: Plain text
8157 #: build/C/man2/ptrace.2:946
8158 #, no-wrap
8159 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8160 msgstr ""
8161
8162 #. type: Plain text
8163 #: build/C/man2/ptrace.2:952
8164 msgid ""
8165 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8166 "the tracee continues to run."
8167 msgstr ""
8168
8169 #. type: Plain text
8170 #: build/C/man2/ptrace.2:972
8171 msgid ""
8172 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8173 "group-stopped process.  This side effect happens before signal-delivery-"
8174 "stop.  The tracer can't suppress this side effect (it can only suppress "
8175 "signal injection, which only causes the B<SIGCONT> handler to not be "
8176 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8177 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8178 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8179 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8180 "by the tracee after it was sent."
8181 msgstr ""
8182
8183 #. type: Plain text
8184 #: build/C/man2/ptrace.2:976
8185 msgid ""
8186 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8187 "side effect happens after signal injection, and therefore can be suppressed "
8188 "by the tracer."
8189 msgstr ""
8190
8191 #
8192 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8193 #.  there is:
8194 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8195 #.              if (signr == SIGSTOP)
8196 #.                      continue;
8197 #. type: Plain text
8198 #: build/C/man2/ptrace.2:986
8199 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8200 msgstr ""
8201
8202 #. type: Plain text
8203 #: build/C/man2/ptrace.2:1003
8204 msgid ""
8205 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8206 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8207 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8208 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8209 "match, otherwise the result is undefined."
8210 msgstr ""
8211
8212 #. type: SS
8213 #: build/C/man2/ptrace.2:1003
8214 #, no-wrap
8215 msgid "Group-stop"
8216 msgstr ""
8217
8218 #. type: Plain text
8219 #: build/C/man2/ptrace.2:1015
8220 msgid ""
8221 "When a (possibly multithreaded) process receives a stopping signal, all "
8222 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8223 "that the stopping signal will first cause signal-delivery-stop (on one "
8224 "tracee only), and only after it is injected by the tracer (or after it was "
8225 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8226 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8227 "reports its group-stop separately to the corresponding tracer."
8228 msgstr ""
8229
8230 #. type: Plain text
8231 #: build/C/man2/ptrace.2:1024
8232 msgid ""
8233 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8234 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8235 "(status)>.  The same result is returned by some other classes of ptrace-"
8236 "stops, therefore the recommended practice is to perform the call"
8237 msgstr ""
8238
8239 #. type: Plain text
8240 #: build/C/man2/ptrace.2:1026
8241 #, no-wrap
8242 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8243 msgstr ""
8244
8245 #. type: Plain text
8246 #: build/C/man2/ptrace.2:1047
8247 msgid ""
8248 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8249 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8250 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8251 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8252 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8253 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8254 "the tracee.)"
8255 msgstr ""
8256
8257 #. type: Plain text
8258 #: build/C/man2/ptrace.2:1056
8259 msgid ""
8260 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8261 "it restarts or kills it, the tracee will not run, and will not send "
8262 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8263 "enters into another B<waitpid>(2)  call."
8264 msgstr ""
8265
8266 #. type: Plain text
8267 #: build/C/man2/ptrace.2:1070
8268 msgid ""
8269 "The kernel behavior described in the previous paragraph causes a problem "
8270 "with transparent handling of stopping signals.  If the tracer restarts the "
8271 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8272 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8273 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8274 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8275 "signals to have no effect on the tracee."
8276 msgstr ""
8277
8278 #. type: Plain text
8279 #: build/C/man2/ptrace.2:1081
8280 msgid ""
8281 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8282 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8283 "in a way where it does not execute, but waits for a new event which it can "
8284 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8285 msgstr ""
8286
8287 #. type: SS
8288 #: build/C/man2/ptrace.2:1081
8289 #, no-wrap
8290 msgid "PTRACE_EVENT stops"
8291 msgstr ""
8292
8293 #. type: Plain text
8294 #: build/C/man2/ptrace.2:1087
8295 msgid ""
8296 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8297 "stops called B<PTRACE_EVENT> stops."
8298 msgstr ""
8299
8300 #. type: Plain text
8301 #: build/C/man2/ptrace.2:1101
8302 msgid ""
8303 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8304 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8305 "additional bit is set in the higher byte of the status word: the value "
8306 "I<statusE<gt>E<gt>8> will be"
8307 msgstr ""
8308
8309 #. type: Plain text
8310 #: build/C/man2/ptrace.2:1103
8311 #, no-wrap
8312 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8313 msgstr ""
8314
8315 #. type: Plain text
8316 #: build/C/man2/ptrace.2:1105
8317 msgid "The following events exist:"
8318 msgstr ""
8319
8320 #. type: TP
8321 #: build/C/man2/ptrace.2:1105
8322 #, no-wrap
8323 msgid "B<PTRACE_EVENT_VFORK>"
8324 msgstr "B<PTRACE_EVENT_VFORK>"
8325
8326 #. type: Plain text
8327 #: build/C/man2/ptrace.2:1118
8328 msgid ""
8329 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8330 "flag.  When the tracee is continued after this stop, it will wait for child "
8331 "to exit/exec before continuing its execution (in other words, the usual "
8332 "behavior on B<vfork>(2))."
8333 msgstr ""
8334
8335 #. type: TP
8336 #: build/C/man2/ptrace.2:1118
8337 #, no-wrap
8338 msgid "B<PTRACE_EVENT_FORK>"
8339 msgstr "B<PTRACE_EVENT_FORK>"
8340
8341 #. type: Plain text
8342 #: build/C/man2/ptrace.2:1126
8343 msgid ""
8344 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8345 "to B<SIGCHLD>."
8346 msgstr ""
8347
8348 #. type: TP
8349 #: build/C/man2/ptrace.2:1126
8350 #, no-wrap
8351 msgid "B<PTRACE_EVENT_CLONE>"
8352 msgstr "B<PTRACE_EVENT_CLONE>"
8353
8354 #. type: Plain text
8355 #: build/C/man2/ptrace.2:1130
8356 msgid "Stop before return from B<clone>(2)."
8357 msgstr ""
8358
8359 #. type: TP
8360 #: build/C/man2/ptrace.2:1130
8361 #, no-wrap
8362 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8363 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8364
8365 #. type: Plain text
8366 #: build/C/man2/ptrace.2:1140
8367 msgid ""
8368 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8369 "flag, but after the child unblocked this tracee by exiting or execing."
8370 msgstr ""
8371
8372 #. type: Plain text
8373 #: build/C/man2/ptrace.2:1146
8374 msgid ""
8375 "For all four stops described above, the stop occurs in the parent (i.e., the "
8376 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8377 "to retrieve the new thread's ID."
8378 msgstr ""
8379
8380 #. type: TP
8381 #: build/C/man2/ptrace.2:1146
8382 #, no-wrap
8383 msgid "B<PTRACE_EVENT_EXEC>"
8384 msgstr "B<PTRACE_EVENT_EXEC>"
8385
8386 #. type: Plain text
8387 #: build/C/man2/ptrace.2:1153
8388 msgid ""
8389 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8390 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8391 msgstr ""
8392
8393 #. type: TP
8394 #: build/C/man2/ptrace.2:1153
8395 #, no-wrap
8396 msgid "B<PTRACE_EVENT_EXIT>"
8397 msgstr "B<PTRACE_EVENT_EXIT>"
8398
8399 #. type: Plain text
8400 #: build/C/man2/ptrace.2:1169
8401 msgid ""
8402 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8403 "exit caused by B<execve>(2)  in a multithreaded process.  "
8404 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8405 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8406 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8407 msgstr ""
8408
8409 #. type: TP
8410 #: build/C/man2/ptrace.2:1169
8411 #, fuzzy, no-wrap
8412 #| msgid "B<PTRACE_EVENT_FORK>"
8413 msgid "B<PTRACE_EVENT_STOP>"
8414 msgstr "B<PTRACE_EVENT_FORK>"
8415
8416 #. type: Plain text
8417 #: build/C/man2/ptrace.2:1174
8418 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8419 msgstr ""
8420
8421 #. type: Plain text
8422 #: build/C/man2/ptrace.2:1186
8423 msgid ""
8424 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8425 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8426 msgstr ""
8427
8428 #. type: SS
8429 #: build/C/man2/ptrace.2:1186
8430 #, no-wrap
8431 msgid "Syscall-stops"
8432 msgstr ""
8433
8434 #. type: Plain text
8435 #: build/C/man2/ptrace.2:1199
8436 msgid ""
8437 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8438 "enter-stop just prior to entering any system call.  If the tracer restarts "
8439 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8440 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8441 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8442 "exit-stop; it happens I<after> syscall-exit-stop.)"
8443 msgstr ""
8444
8445 #. type: Plain text
8446 #: build/C/man2/ptrace.2:1213
8447 msgid ""
8448 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8449 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8450 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8451 "(2)  happened in another thread, and that thread is not traced by the same "
8452 "tracer; this situation is discussed later)."
8453 msgstr ""
8454
8455 #. type: Plain text
8456 #: build/C/man2/ptrace.2:1228
8457 msgid ""
8458 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8459 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8460 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8461 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8462 "0x80)>."
8463 msgstr ""
8464
8465 #. type: Plain text
8466 #: build/C/man2/ptrace.2:1234
8467 msgid ""
8468 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8469 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8470 msgstr ""
8471
8472 #. type: TP
8473 #: build/C/man2/ptrace.2:1234
8474 #, no-wrap
8475 msgid "I<si_code> E<lt>= 0"
8476 msgstr ""
8477
8478 #. type: Plain text
8479 #: build/C/man2/ptrace.2:1246
8480 msgid ""
8481 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8482 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8483 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8484 "asynchronous I/O request."
8485 msgstr ""
8486
8487 #. type: TP
8488 #: build/C/man2/ptrace.2:1246
8489 #, no-wrap
8490 msgid "I<si_code> == SI_KERNEL (0x80)"
8491 msgstr ""
8492
8493 #. type: Plain text
8494 #: build/C/man2/ptrace.2:1250
8495 msgid "B<SIGTRAP> was sent by the kernel."
8496 msgstr ""
8497
8498 #. type: TP
8499 #: build/C/man2/ptrace.2:1250
8500 #, no-wrap
8501 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8502 msgstr ""
8503
8504 #. type: Plain text
8505 #: build/C/man2/ptrace.2:1253
8506 msgid "This is a syscall-stop."
8507 msgstr ""
8508
8509 #. type: Plain text
8510 #: build/C/man2/ptrace.2:1258
8511 msgid ""
8512 "However, syscall-stops happen very often (twice per system call), and "
8513 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8514 "expensive."
8515 msgstr ""
8516
8517 #. type: Plain text
8518 #: build/C/man2/ptrace.2:1281
8519 msgid ""
8520 "Some architectures allow the cases to be distinguished by examining "
8521 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8522 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8523 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8524 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8525 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8526 "and can be detected this way.  But such detection is fragile and is best "
8527 "avoided."
8528 msgstr ""
8529
8530 #. type: Plain text
8531 #: build/C/man2/ptrace.2:1287
8532 msgid ""
8533 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8534 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8535 "reliable and does not incur a performance penalty."
8536 msgstr ""
8537
8538 #. type: Plain text
8539 #: build/C/man2/ptrace.2:1298
8540 msgid ""
8541 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8542 "other by the tracer.  The tracer needs to keep track of the sequence of "
8543 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8544 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8545 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8546 "kinds of ptrace-stop can occur in between."
8547 msgstr ""
8548
8549 #. type: Plain text
8550 #: build/C/man2/ptrace.2:1303
8551 msgid ""
8552 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8553 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8554 msgstr ""
8555
8556 #. type: Plain text
8557 #: build/C/man2/ptrace.2:1315
8558 msgid ""
8559 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8560 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8561 msgstr ""
8562
8563 #. type: SS
8564 #: build/C/man2/ptrace.2:1315
8565 #, no-wrap
8566 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8567 msgstr ""
8568
8569 #
8570 #.  FIXME
8571 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8572 #.  PTRACE_SYSEMU_SINGLESTEP
8573 #. type: Plain text
8574 #: build/C/man2/ptrace.2:1321
8575 msgid "[Details of these kinds of stops are yet to be documented.]"
8576 msgstr ""
8577
8578 #. type: SS
8579 #: build/C/man2/ptrace.2:1321
8580 #, no-wrap
8581 msgid "Informational and restarting ptrace commands"
8582 msgstr ""
8583
8584 #. type: Plain text
8585 #: build/C/man2/ptrace.2:1331
8586 msgid ""
8587 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8588 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8589 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8590 msgstr ""
8591
8592 #. type: Plain text
8593 #: build/C/man2/ptrace.2:1336
8594 msgid ""
8595 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8596 "tracee using informational commands.  These commands leave the tracee in "
8597 "ptrace-stopped state:"
8598 msgstr ""
8599
8600 #. type: Plain text
8601 #: build/C/man2/ptrace.2:1348
8602 #, no-wrap
8603 msgid ""
8604 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8605 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8606 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8607 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8608 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8609 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8610 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8611 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8612 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8613 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8614 msgstr ""
8615
8616 #. type: Plain text
8617 #: build/C/man2/ptrace.2:1360
8618 msgid ""
8619 "Note that some errors are not reported.  For example, setting signal "
8620 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8621 "call may succeed (return 0 and not set I<errno>); querying "
8622 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8623 "ptrace-stop is not documented as returning a meaningful event message."
8624 msgstr ""
8625
8626 #. type: Plain text
8627 #: build/C/man2/ptrace.2:1362
8628 msgid "The call"
8629 msgstr ""
8630
8631 #. type: Plain text
8632 #: build/C/man2/ptrace.2:1364
8633 #, no-wrap
8634 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8635 msgstr ""
8636
8637 #. type: Plain text
8638 #: build/C/man2/ptrace.2:1373
8639 msgid ""
8640 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8641 "inherited by new tracees created and \"auto-attached\" via active "
8642 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8643 "options."
8644 msgstr ""
8645
8646 #. type: Plain text
8647 #: build/C/man2/ptrace.2:1376
8648 msgid ""
8649 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8650 "the form:"
8651 msgstr ""
8652
8653 #. type: Plain text
8654 #: build/C/man2/ptrace.2:1378
8655 #, no-wrap
8656 msgid "    ptrace(cmd, pid, 0, sig);\n"
8657 msgstr ""
8658
8659 #. type: Plain text
8660 #: build/C/man2/ptrace.2:1399
8661 msgid ""
8662 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8663 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8664 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8665 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8666 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8667 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8668 msgstr ""
8669
8670 #. type: SS
8671 #: build/C/man2/ptrace.2:1399
8672 #, no-wrap
8673 msgid "Attaching and detaching"
8674 msgstr ""
8675
8676 #. type: Plain text
8677 #: build/C/man2/ptrace.2:1401
8678 msgid "A thread can be attached to the tracer using the call"
8679 msgstr ""
8680
8681 #. type: Plain text
8682 #: build/C/man2/ptrace.2:1403
8683 #, no-wrap
8684 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8685 msgstr ""
8686
8687 #. type: Plain text
8688 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1894
8689 msgid "or"
8690 msgstr ""
8691
8692 #. type: Plain text
8693 #: build/C/man2/ptrace.2:1407
8694 #, no-wrap
8695 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8696 msgstr ""
8697
8698 #
8699 #.  FIXME: Describe how to attach to a thread which is already
8700 #.         group-stopped.
8701 #. type: Plain text
8702 #: build/C/man2/ptrace.2:1432
8703 msgid ""
8704 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8705 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8706 "signals are concurrently sent to this thread during attach, the tracer may "
8707 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8708 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8709 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8710 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8711 "B<SIGSTOP> may be lost."
8712 msgstr ""
8713
8714 #. type: Plain text
8715 #: build/C/man2/ptrace.2:1439
8716 msgid ""
8717 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8718 "may cause a stray B<EINTR> return from the currently executing system call "
8719 "in the tracee, as described in the \"Signal injection and suppression\" "
8720 "section."
8721 msgstr ""
8722
8723 #. type: Plain text
8724 #: build/C/man2/ptrace.2:1450
8725 msgid ""
8726 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8727 "B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it "
8728 "after attach (or at any other time) without sending it any signals, use "
8729 "B<PTRACE_INTERRUPT> command."
8730 msgstr ""
8731
8732 #. type: Plain text
8733 #: build/C/man2/ptrace.2:1452
8734 msgid "The request"
8735 msgstr ""
8736
8737 #. type: Plain text
8738 #: build/C/man2/ptrace.2:1454
8739 #, no-wrap
8740 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8741 msgstr ""
8742
8743 #. type: Plain text
8744 #: build/C/man2/ptrace.2:1460
8745 msgid ""
8746 "turns the calling thread into a tracee.  The thread continues to run "
8747 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8748 "B<PTRACE_TRACEME> with"
8749 msgstr ""
8750
8751 #. type: Plain text
8752 #: build/C/man2/ptrace.2:1462
8753 #, no-wrap
8754 msgid "    raise(SIGSTOP);\n"
8755 msgstr ""
8756
8757 #. type: Plain text
8758 #: build/C/man2/ptrace.2:1465
8759 msgid ""
8760 "and allow the parent (which is our tracer now) to observe our signal-"
8761 "delivery-stop."
8762 msgstr ""
8763
8764 #. type: Plain text
8765 #: build/C/man2/ptrace.2:1489
8766 msgid ""
8767 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8768 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8769 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8770 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8771 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8772 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8773 "them to enter signal-delivery-stop after they exit the system call which "
8774 "created them."
8775 msgstr ""
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:1491
8779 msgid "Detaching of the tracee is performed by:"
8780 msgstr ""
8781
8782 #. type: Plain text
8783 #: build/C/man2/ptrace.2:1493
8784 #, no-wrap
8785 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8786 msgstr ""
8787
8788 #. type: Plain text
8789 #: build/C/man2/ptrace.2:1501
8790 msgid ""
8791 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8792 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8793 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8794 msgstr ""
8795
8796 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8797 #.         doesn't run, but continues to wait for SIGCONT.
8798 #. type: Plain text
8799 #: build/C/man2/ptrace.2:1525
8800 msgid ""
8801 "If the tracee is running when the tracer wants to detach it, the usual "
8802 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8803 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8804 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8805 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8806 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8807 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8808 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8809 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8810 msgstr ""
8811
8812 #. type: Plain text
8813 #: build/C/man2/ptrace.2:1533
8814 msgid ""
8815 "If the tracer dies, all tracees are automatically detached and restarted, "
8816 "unless they were in group-stop.  Handling of restart from group-stop is "
8817 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8818 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8819 "stop, the pending signal is injected."
8820 msgstr ""
8821
8822 #. type: SS
8823 #: build/C/man2/ptrace.2:1533
8824 #, no-wrap
8825 msgid "execve(2) under ptrace"
8826 msgstr ""
8827
8828 #
8829 #.  clone(2) CLONE_THREAD says:
8830 #.      If  any  of the threads in a thread group performs an execve(2),
8831 #.      then all threads other than the thread group leader are terminated,
8832 #.      and the new program is executed in the thread group leader.
8833 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8834 #. type: Plain text
8835 #: build/C/man2/ptrace.2:1552
8836 msgid ""
8837 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8838 "destroys all other threads in the process, and resets the thread ID of the "
8839 "execing thread to the thread group ID (process ID).  (Or, to put things "
8840 "another way, when a multithreaded process does an B<execve>(2), at "
8841 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8842 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8843 "This resetting of the thread ID looks very confusing to tracers:"
8844 msgstr ""
8845
8846 #. type: Plain text
8847 #: build/C/man2/ptrace.2:1562
8848 msgid ""
8849 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8850 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8851 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8852 "exit code 0."
8853 msgstr ""
8854
8855 #. type: Plain text
8856 #: build/C/man2/ptrace.2:1570
8857 msgid ""
8858 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8859 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8860 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8861 "ID is reset to be the same as its process ID, which is the same as the "
8862 "thread group leader's thread ID."
8863 msgstr ""
8864
8865 #. type: Plain text
8866 #: build/C/man2/ptrace.2:1576
8867 msgid ""
8868 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8869 "option was turned on."
8870 msgstr ""
8871
8872 #. type: Plain text
8873 #: build/C/man2/ptrace.2:1597
8874 msgid ""
8875 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8876 "this time, it appears to the tracer that the dead thread leader \"reappears "
8877 "from nowhere\".  (Note: the thread group leader does not report death via "
8878 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8879 "eliminates the possibility that the tracer will see it dying and then "
8880 "reappearing.)  If the thread group leader was still alive, for the tracer "
8881 "this may look as if thread group leader returns from a different system call "
8882 "than it entered, or even \"returned from a system call even though it was "
8883 "not in any system call\".  If the thread group leader was not traced (or was "
8884 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8885 "if it has become a tracee of the tracer of the execing tracee."
8886 msgstr ""
8887
8888 #. type: Plain text
8889 #: build/C/man2/ptrace.2:1600
8890 msgid ""
8891 "All of the above effects are the artifacts of the thread ID change in the "
8892 "tracee."
8893 msgstr ""
8894
8895 #. type: Plain text
8896 #: build/C/man2/ptrace.2:1620
8897 msgid ""
8898 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8899 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8900 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8901 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8902 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8903 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8904 msgstr ""
8905
8906 #. type: Plain text
8907 #: build/C/man2/ptrace.2:1626
8908 msgid ""
8909 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8910 "guaranteed that except this tracee and the thread group leader, no other "
8911 "threads from the process are alive."
8912 msgstr ""
8913
8914 #. type: Plain text
8915 #: build/C/man2/ptrace.2:1634
8916 msgid ""
8917 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8918 "clean up all its internal data structures describing the threads of this "
8919 "process, and retain only one data structure\\(emone which describes the "
8920 "single still running tracee, with"
8921 msgstr ""
8922
8923 #. type: Plain text
8924 #: build/C/man2/ptrace.2:1636
8925 #, no-wrap
8926 msgid "    thread ID == thread group ID == process ID.\n"
8927 msgstr ""
8928
8929 #. type: Plain text
8930 #: build/C/man2/ptrace.2:1640
8931 msgid "Example: two threads call B<execve>(2)  at the same time:"
8932 msgstr ""
8933
8934 #. type: Plain text
8935 #: build/C/man2/ptrace.2:1651
8936 #, no-wrap
8937 msgid ""
8938 "*** we get syscall-enter-stop in thread 1: **\n"
8939 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8940 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8941 "*** we get syscall-enter-stop in thread 2: **\n"
8942 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8943 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8944 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8945 "*** we get syscall-exit-stop for PID0: **\n"
8946 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8947 msgstr ""
8948
8949 #. type: Plain text
8950 #: build/C/man2/ptrace.2:1674
8951 msgid ""
8952 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8953 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8954 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8955 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8956 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8957 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8958 "delivered (much) later."
8959 msgstr ""
8960
8961 #. type: Plain text
8962 #: build/C/man2/ptrace.2:1693
8963 msgid ""
8964 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
8965 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
8966 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
8967 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
8968 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
8969 "B<SIGTRAP> is the recommended approach."
8970 msgstr ""
8971
8972 #. type: SS
8973 #: build/C/man2/ptrace.2:1693
8974 #, no-wrap
8975 msgid "Real parent"
8976 msgstr ""
8977
8978 #. type: Plain text
8979 #: build/C/man2/ptrace.2:1700
8980 msgid ""
8981 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
8982 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
8983 "receiving several kinds of B<waitpid>(2)  notifications when the child "
8984 "process is traced by some other process."
8985 msgstr ""
8986
8987 #. type: Plain text
8988 #: build/C/man2/ptrace.2:1703
8989 msgid ""
8990 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
8991 "exist; see BUGS below."
8992 msgstr ""
8993
8994 #. type: Plain text
8995 #: build/C/man2/ptrace.2:1705
8996 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
8997 msgstr ""
8998
8999 #. type: Plain text
9000 #: build/C/man2/ptrace.2:1713
9001 msgid ""
9002 "exit/death by signal is reported first to the tracer, then, when the tracer "
9003 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9004 "only when the whole multithreaded process exits).  If the tracer and the "
9005 "real parent are the same process, the report is sent only once."
9006 msgstr ""
9007
9008 #. type: Plain text
9009 #: build/C/man2/ptrace.2:1727
9010 #, fuzzy
9011 #| msgid ""
9012 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9013 #| "other requests return zero.  On error, all requests return -1, and "
9014 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9015 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9016 #| "such requests to determine whether or not an error occurred."
9017 msgid ""
9018 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9019 "requests return zero.  On error, all requests return -1, and I<errno> is set "
9020 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
9021 "request may be -1, the caller must clear I<errno> before the call, and then "
9022 "check it afterward to determine whether or not an error occurred."
9023 msgstr ""
9024 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9025 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9026 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9027 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9028 "なければならない。"
9029
9030 #. type: Plain text
9031 #: build/C/man2/ptrace.2:1731
9032 msgid ""
9033 "(i386 only) There was an error with allocating or freeing a debug register."
9034 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9035
9036 #. type: Plain text
9037 #: build/C/man2/ptrace.2:1742
9038 #, fuzzy
9039 #| msgid ""
9040 #| "There was an attempt to read from or write to an invalid area in the "
9041 #| "parent's or child's memory, probably because the area wasn't mapped or "
9042 #| "accessible.  Unfortunately, under Linux, different variations of this "
9043 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9044 msgid ""
9045 "There was an attempt to read from or write to an invalid area in the "
9046 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9047 "accessible.  Unfortunately, under Linux, different variations of this fault "
9048 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9049 msgstr ""
9050 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9051 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9052 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9053 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9054
9055 #. type: Plain text
9056 #: build/C/man2/ptrace.2:1745
9057 msgid "An attempt was made to set an invalid option."
9058 msgstr "不正なオプションを設定しようとした。"
9059
9060 #. type: Plain text
9061 #: build/C/man2/ptrace.2:1752
9062 #, fuzzy
9063 #| msgid ""
9064 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9065 #| "invalid area in the parent's or child's memory, or there was a word-"
9066 #| "alignment violation, or an invalid signal was specified during a restart "
9067 #| "request."
9068 msgid ""
9069 "I<request> is invalid, or an attempt was made to read from or write to an "
9070 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9071 "alignment violation, or an invalid signal was specified during a restart "
9072 "request."
9073 msgstr ""
9074 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9075 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9076 "開の要求で不正なシグナルを指定した。"
9077
9078 #. type: Plain text
9079 #: build/C/man2/ptrace.2:1765
9080 #, fuzzy
9081 #| msgid ""
9082 #| "The specified process cannot be traced.  This could be because the parent "
9083 #| "has insufficient privileges (the required capability is "
9084 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9085 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9086 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9087 #| "being traced, or be B<init>(8)  (PID 1)."
9088 msgid ""
9089 "The specified process cannot be traced.  This could be because the tracer "
9090 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9091 "unprivileged processes cannot trace processes that they cannot send signals "
9092 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9093 "Alternatively, the process may already be being traced, or (on kernels "
9094 "before 2.6.26) be B<init>(8)  (PID 1)."
9095 msgstr ""
9096 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9097 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9098 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9099 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9100 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9101 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9102
9103 #. type: Plain text
9104 #: build/C/man2/ptrace.2:1770
9105 #, fuzzy
9106 #| msgid ""
9107 #| "The specified process does not exist, or is not currently being traced by "
9108 #| "the caller, or is not stopped (for requests that require that)."
9109 msgid ""
9110 "The specified process does not exist, or is not currently being traced by "
9111 "the caller, or is not stopped (for requests that require a stopped tracee)."
9112 msgstr ""
9113 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9114 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9115 "ない (停止していることが必要な要求の場合)。"
9116
9117 #. type: Plain text
9118 #: build/C/man2/ptrace.2:1772
9119 msgid "SVr4, 4.3BSD."
9120 msgstr "SVr4, 4.3BSD."
9121
9122 #. type: Plain text
9123 #: build/C/man2/ptrace.2:1787
9124 #, fuzzy
9125 #| msgid ""
9126 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9127 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9128 #| "function with only the I<request> argument fixed.  This means that "
9129 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9130 #| "undocumented B<gcc>(1)  behavior."
9131 msgid ""
9132 "Although arguments to B<ptrace>()  are interpreted according to the "
9133 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9134 "function with only the I<request> argument fixed.  It is recommended to "
9135 "always supply four arguments, even if the requested operation does not use "
9136 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9137 msgstr ""
9138 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9139 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9140 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9141 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9142 "になる。"
9143
9144 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9145 #. type: Plain text
9146 #: build/C/man2/ptrace.2:1792
9147 #, fuzzy
9148 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9149 msgid ""
9150 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9151 "be traced."
9152 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9153
9154 #.  See http://lkml.org/lkml/2008/5/8/375
9155 #. type: Plain text
9156 #: build/C/man2/ptrace.2:1799
9157 #, fuzzy
9158 #| msgid ""
9159 #| "The layout of the contents of memory and the USER area are quite OS- and "
9160 #| "architecture-specific.  The offset supplied, and the data returned, might "
9161 #| "not entirely match with the definition of I<struct user>."
9162 msgid ""
9163 "The layout of the contents of memory and the USER area are quite operating-"
9164 "system- and architecture-specific.  The offset supplied, and the data "
9165 "returned, might not entirely match with the definition of I<struct user>."
9166 msgstr ""
9167 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9168 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9169 "に一致しないこともありえる。"
9170
9171 #. type: Plain text
9172 #: build/C/man2/ptrace.2:1802
9173 #, fuzzy
9174 #| msgid ""
9175 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9176 #| "Linux it is 32 bits, etc.)."
9177 msgid ""
9178 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9179 "for 32-bit Linux it is 32 bits)."
9180 msgstr ""
9181 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9182 "では 32 ビットである、など。)"
9183
9184 #. type: Plain text
9185 #: build/C/man2/ptrace.2:1810
9186 #, fuzzy
9187 #| msgid ""
9188 #| "This page documents the way the B<ptrace>()  call works currently in "
9189 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9190 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9191 msgid ""
9192 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9193 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9194 "of B<ptrace>()  is highly specific to the operating system and architecture."
9195 msgstr ""
9196 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9197 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9198 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9199
9200 #. type: Plain text
9201 #: build/C/man2/ptrace.2:1821
9202 #, fuzzy
9203 #| msgid ""
9204 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9205 #| "different value than the one for 2.4.  This leads to applications "
9206 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9207 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9208 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9209 msgid ""
9210 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9211 "different value than the one for 2.4.  This leads to applications compiled "
9212 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9213 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9214 "that is defined."
9215 msgstr ""
9216 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9217 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9218 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9219 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9220 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9221
9222 #. type: Plain text
9223 #: build/C/man2/ptrace.2:1824
9224 msgid ""
9225 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9226 "Last confirmed on 2.6.38.6."
9227 msgstr ""
9228
9229 #.  Note from Denys Vlasenko:
9230 #.      Here "exits" means any kind of death - _exit, exit_group,
9231 #.      signal death. Signal death and exit_group cases are trivial,
9232 #.      though: since signal death and exit_group kill all other threads
9233 #.      too, "until all other threads exit" thing happens rather soon
9234 #.      in these cases. Therefore, only _exit presents observably
9235 #.      puzzling behavior to ptrace users: thread leader _exit's,
9236 #.      but WIFEXITED isn't reported! We are trying to explain here
9237 #.      why it is so.
9238 #.   FIXME: ^^^ need to test/verify this scenario
9239 #. type: Plain text
9240 #: build/C/man2/ptrace.2:1855
9241 msgid ""
9242 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9243 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9244 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9245 "threads exit.  As explained above, if one of other threads calls B<execve>"
9246 "(2), the death of the thread group leader will I<never> be reported.  If the "
9247 "execed thread is not traced by this tracer, the tracer will never know that "
9248 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9249 "thread group leader instead of restarting it in this case.  Last confirmed "
9250 "on 2.6.38.6."
9251 msgstr ""
9252
9253 #. type: Plain text
9254 #: build/C/man2/ptrace.2:1865
9255 msgid ""
9256 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9257 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9258 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9259 "2.6.38.6."
9260 msgstr ""
9261
9262 #. type: Plain text
9263 #: build/C/man2/ptrace.2:1883
9264 msgid ""
9265 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9266 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9267 "is usually done by debuggers on every attach, in order to not introduce a "
9268 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9269 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9270 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9271 "that when you attach to a quiescent process with the command"
9272 msgstr ""
9273
9274 #. type: Plain text
9275 #: build/C/man2/ptrace.2:1885
9276 #, no-wrap
9277 msgid "    strace -p E<lt>process-IDE<gt>\n"
9278 msgstr ""
9279
9280 #. type: Plain text
9281 #: build/C/man2/ptrace.2:1888
9282 msgid "then, instead of the usual and expected one-line output such as"
9283 msgstr ""
9284
9285 #. type: Plain text
9286 #: build/C/man2/ptrace.2:1891
9287 #, no-wrap
9288 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9289 msgstr ""
9290
9291 #. type: Plain text
9292 #: build/C/man2/ptrace.2:1897
9293 #, no-wrap
9294 msgid "    select(6, [5], NULL, [5], NULL_\n"
9295 msgstr ""
9296
9297 #. type: Plain text
9298 #: build/C/man2/ptrace.2:1901
9299 msgid ""
9300 "('_' denotes the cursor position), you observe more than one line.  For "
9301 "example:"
9302 msgstr ""
9303
9304 #. type: Plain text
9305 #: build/C/man2/ptrace.2:1905
9306 #, no-wrap
9307 msgid ""
9308 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9309 "    epoll_wait(4,_\n"
9310 msgstr ""
9311
9312 #. type: Plain text
9313 #: build/C/man2/ptrace.2:1926
9314 msgid ""
9315 "What is not visible here is that the process was blocked in B<epoll_wait>"
9316 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9317 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9318 "case, the program reacted to B<EINTR> by checking the current time, and then "
9319 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9320 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9321 "(1)  attach.)"
9322 msgstr ""
9323
9324 #. type: Plain text
9325 #: build/C/man2/ptrace.2:1940
9326 msgid ""
9327 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9328 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9329 "B<capabilities>(7), B<signal>(7)"
9330 msgstr ""
9331 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9332 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9333 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9334
9335 #. type: TH
9336 #: build/C/man2/quotactl.2:27
9337 #, no-wrap
9338 msgid "QUOTACTL"
9339 msgstr "QUOTACTL"
9340
9341 #. type: TH
9342 #: build/C/man2/quotactl.2:27
9343 #, no-wrap
9344 msgid "2010-06-16"
9345 msgstr "2010-06-16"
9346
9347 #. type: Plain text
9348 #: build/C/man2/quotactl.2:30
9349 msgid "quotactl - manipulate disk quotas"
9350 msgstr "quotactl - ディスク quota を操作する"
9351
9352 #. type: Plain text
9353 #: build/C/man2/quotactl.2:34
9354 #, no-wrap
9355 msgid ""
9356 "B<#include E<lt>sys/quota.hE<gt>>\n"
9357 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9358 msgstr ""
9359 "B<#include E<lt>sys/quota.hE<gt>>\n"
9360 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9361
9362 #. type: Plain text
9363 #: build/C/man2/quotactl.2:37
9364 #, no-wrap
9365 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9366 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9367
9368 #. type: Plain text
9369 #: build/C/man2/quotactl.2:49
9370 #, fuzzy
9371 #| msgid ""
9372 #| "The quota system defines for each user and/or group a soft limit and a "
9373 #| "hard limit bounding the amount of disk space that can be used on a given "
9374 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9375 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9376 #| "soft limit for more than one week (by default)  at a time: after this "
9377 #| "week the soft limit counts as hard limit."
9378 msgid ""
9379 "The quota system can be used to set per-user and per-group limits on the "
9380 "amount of disk space used on a file system.  For each user and/or group, a "
9381 "soft limit and a hard limit can be set for each file system.  The hard limit "
9382 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9383 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9384 "week (by default) at a time; after this time, the soft limit counts as a "
9385 "hard limit."
9386 msgstr ""
9387 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9388 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9389 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9390 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9391 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9392 "過した後はハード・リミットを超過したと みなされる。"
9393
9394 #. type: Plain text
9395 #: build/C/man2/quotactl.2:74
9396 #, fuzzy
9397 #| msgid ""
9398 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9399 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9400 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9401 #| "respectively), and I<subcmd> is described below."
9402 msgid ""
9403 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9404 "indicates a command to be applied to the user or group ID specified in "
9405 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9406 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9407 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9408 msgstr ""
9409 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9410 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9411 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9412 "を指定する。 I<subcmd> は以下で説明する。"
9413
9414 #. type: Plain text
9415 #: build/C/man2/quotactl.2:79
9416 msgid ""
9417 "The I<special> argument is a pointer to a null-terminated string containing "
9418 "the pathname of the (mounted) block special device for the file system being "
9419 "manipulated."
9420 msgstr ""
9421
9422 #. type: Plain text
9423 #: build/C/man2/quotactl.2:87
9424 msgid ""
9425 "The I<addr> argument is the address of an optional, command-specific, data "
9426 "structure that is copied in or out of the system.  The interpretation of "
9427 "I<addr> is given with each command below."
9428 msgstr ""
9429
9430 #. type: Plain text
9431 #: build/C/man2/quotactl.2:91
9432 msgid "The I<subcmd> value is one of the following:"
9433 msgstr "I<subcmd> の値は以下のいずれかである"
9434
9435 #. type: TP
9436 #: build/C/man2/quotactl.2:91
9437 #, no-wrap
9438 msgid "B<Q_QUOTAON>"
9439 msgstr "B<Q_QUOTAON>"
9440
9441 #. type: Plain text
9442 #: build/C/man2/quotactl.2:98
9443 msgid ""
9444 "Turn on quotas for a file system.  The I<id> argument is the identification "
9445 "number of the quota format to be used.  Currently, there are three supported "
9446 "quota formats:"
9447 msgstr ""
9448
9449 #. type: TP
9450 #: build/C/man2/quotactl.2:99
9451 #, no-wrap
9452 msgid "B<QFMT_VFS_OLD>"
9453 msgstr ""
9454
9455 #. type: Plain text
9456 #: build/C/man2/quotactl.2:102
9457 msgid "The original quota format."
9458 msgstr ""
9459
9460 #. type: TP
9461 #: build/C/man2/quotactl.2:102
9462 #, no-wrap
9463 msgid "B<QFMT_VFS_V0>"
9464 msgstr ""
9465
9466 #. type: Plain text
9467 #: build/C/man2/quotactl.2:106
9468 msgid ""
9469 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9470 "quota limits up to 2^42 bytes and 2^32 inodes."
9471 msgstr ""
9472
9473 #. type: TP
9474 #: build/C/man2/quotactl.2:106
9475 #, no-wrap
9476 msgid "B<QFMT_VFS_V1>"
9477 msgstr ""
9478
9479 #. type: Plain text
9480 #: build/C/man2/quotactl.2:110
9481 msgid ""
9482 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9483 "bytes and 2^64 inodes."
9484 msgstr ""
9485
9486 #. type: Plain text
9487 #: build/C/man2/quotactl.2:121
9488 msgid ""
9489 "The I<addr> argument points to the pathname of a file containing the quotas "
9490 "for the file system.  The quota file must exist; it is normally created with "
9491 "the B<quotacheck>(8)  program.  This operation requires privilege "
9492 "(B<CAP_SYS_ADMIN>)."
9493 msgstr ""
9494
9495 #. type: TP
9496 #: build/C/man2/quotactl.2:121
9497 #, no-wrap
9498 msgid "B<Q_QUOTAOFF>"
9499 msgstr "B<Q_QUOTAOFF>"
9500
9501 #. type: Plain text
9502 #: build/C/man2/quotactl.2:131
9503 msgid ""
9504 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9505 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9506 msgstr ""
9507
9508 #. type: TP
9509 #: build/C/man2/quotactl.2:131
9510 #, no-wrap
9511 msgid "B<Q_GETQUOTA>"
9512 msgstr "B<Q_GETQUOTA>"
9513
9514 #. type: Plain text
9515 #: build/C/man2/quotactl.2:142
9516 #, fuzzy
9517 #| msgid ""
9518 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9519 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9520 msgid ""
9521 "Get disk quota limits and current usage for user or group I<id>.  The "
9522 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9523 "quota.hE<gt>> as follows:"
9524 msgstr ""
9525 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9526 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9527
9528 #. type: Plain text
9529 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9530 #, no-wrap
9531 msgid ""
9532 "/* uint64_t is an unsigned 64-bit integer;\n"
9533 "   uint32_t is an unsigned 32-bit integer */\n"
9534 msgstr ""
9535
9536 #. type: Plain text
9537 #: build/C/man2/quotactl.2:167
9538 #, no-wrap
9539 msgid ""
9540 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9541 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9542 "                                  quota blocks alloc */\n"
9543 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9544 "                                  disk quota blocks */\n"
9545 "    uint64_t dqb_curspace;     /* current quota block\n"
9546 "                                  count */\n"
9547 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9548 "                                  allocated inodes */\n"
9549 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9550 "    uint64_t dqb_curinodes;    /* current number of\n"
9551 "                                  allocated inodes */\n"
9552 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9553 "                                  disk use */\n"
9554 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9555 "                                  files */\n"
9556 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9557 "                                  constants */\n"
9558 "};\n"
9559 msgstr ""
9560
9561 #. type: Plain text
9562 #: build/C/man2/quotactl.2:170
9563 #, no-wrap
9564 msgid ""
9565 "/* Flags in dqb_valid that indicate which fields in\n"
9566 "   dqblk structure are valid. */\n"
9567 msgstr ""
9568
9569 #. type: Plain text
9570 #: build/C/man2/quotactl.2:181
9571 #, no-wrap
9572 msgid ""
9573 "#define QIF_BLIMITS   1\n"
9574 "#define QIF_SPACE     2\n"
9575 "#define QIF_ILIMITS   4\n"
9576 "#define QIF_INODES    8\n"
9577 "#define QIF_BTIME     16\n"
9578 "#define QIF_ITIME     32\n"
9579 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9580 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9581 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9582 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9583 msgstr ""
9584
9585 #. type: Plain text
9586 #: build/C/man2/quotactl.2:198
9587 msgid ""
9588 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9589 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9590 "entries of the I<dqblk> structure and marks them as valid in the "
9591 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9592 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9593 msgstr ""
9594
9595 #. type: TP
9596 #: build/C/man2/quotactl.2:198
9597 #, no-wrap
9598 msgid "B<Q_SETQUOTA>"
9599 msgstr "B<Q_SETQUOTA>"
9600
9601 #. type: Plain text
9602 #: build/C/man2/quotactl.2:218
9603 msgid ""
9604 "Set quota information for user or group I<id>, using the information "
9605 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9606 "field of the I<dqblk> structure indicates which entries in the structure "
9607 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9608 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9609 "requires privilege (B<CAP_SYS_ADMIN>)."
9610 msgstr ""
9611
9612 #. type: TP
9613 #: build/C/man2/quotactl.2:218
9614 #, no-wrap
9615 msgid "B<Q_GETINFO>"
9616 msgstr "B<Q_GETINFO>"
9617
9618 #. type: Plain text
9619 #: build/C/man2/quotactl.2:229
9620 #, fuzzy
9621 #| msgid ""
9622 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9623 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9624 msgid ""
9625 "Get information (like grace times) about quotafile.  The I<addr> argument "
9626 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9627 "I<E<lt>sys/quota.hE<gt>> as follows:"
9628 msgstr ""
9629 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9630 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9631
9632 #. type: Plain text
9633 #: build/C/man2/quotactl.2:238
9634 #, no-wrap
9635 msgid ""
9636 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9637 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9638 "                               becomes hard limit */\n"
9639 msgstr ""
9640
9641 #. type: Plain text
9642 #: build/C/man2/quotactl.2:245
9643 #, no-wrap
9644 msgid ""
9645 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9646 "                               becomes hard limit */\n"
9647 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9648 "                               (DQF_*) */\n"
9649 "    uint32_t dqi_valid;\n"
9650 "};\n"
9651 msgstr ""
9652
9653 #. type: Plain text
9654 #: build/C/man2/quotactl.2:247
9655 #, no-wrap
9656 msgid "/* Bits for dqi_flags */\n"
9657 msgstr ""
9658
9659 #. type: Plain text
9660 #: build/C/man2/quotactl.2:249
9661 #, no-wrap
9662 msgid "/* Quota format QFMT_VFS_OLD */\n"
9663 msgstr ""
9664
9665 #. type: Plain text
9666 #: build/C/man2/quotactl.2:251
9667 #, no-wrap
9668 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9669 msgstr ""
9670
9671 #. type: Plain text
9672 #: build/C/man2/quotactl.2:253
9673 #, no-wrap
9674 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9675 msgstr ""
9676
9677 #. type: Plain text
9678 #: build/C/man2/quotactl.2:256
9679 #, no-wrap
9680 msgid ""
9681 "/* Flags in dqi_valid that indicate which fields in\n"
9682 "   dqinfo structure are valid. */\n"
9683 msgstr ""
9684
9685 #. type: Plain text
9686 #: build/C/man2/quotactl.2:261
9687 #, no-wrap
9688 msgid ""
9689 "# define IIF_BGRACE\t1\n"
9690 "# define IIF_IGRACE\t2\n"
9691 "# define IIF_FLAGS\t4\n"
9692 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9693 msgstr ""
9694
9695 #. type: Plain text
9696 #: build/C/man2/quotactl.2:277
9697 msgid ""
9698 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9699 "the structure that are valid.  Currently, the kernel fills in all entries of "
9700 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9701 "field.  The I<id> argument is ignored."
9702 msgstr ""
9703
9704 #. type: TP
9705 #: build/C/man2/quotactl.2:277
9706 #, no-wrap
9707 msgid "B<Q_SETINFO>"
9708 msgstr "B<Q_SETINFO>"
9709
9710 #. type: Plain text
9711 #: build/C/man2/quotactl.2:301
9712 msgid ""
9713 "Set information about quotafile.  The I<addr> argument should be a pointer "
9714 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9715 "indicates the entries in the structure that have been set by the caller.  "
9716 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9717 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9718 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9719 msgstr ""
9720
9721 #. type: TP
9722 #: build/C/man2/quotactl.2:301
9723 #, no-wrap
9724 msgid "B<Q_GETFMT>"
9725 msgstr "B<Q_GETFMT>"
9726
9727 #. type: Plain text
9728 #: build/C/man2/quotactl.2:308
9729 msgid ""
9730 "Get quota format used on the specified file system.  The I<addr> argument "
9731 "should be a pointer to a 4-byte buffer where the format number will be "
9732 "stored."
9733 msgstr ""
9734
9735 #. type: TP
9736 #: build/C/man2/quotactl.2:308
9737 #, no-wrap
9738 msgid "B<Q_SYNC>"
9739 msgstr "B<Q_SYNC>"
9740
9741 #. type: Plain text
9742 #: build/C/man2/quotactl.2:319
9743 msgid ""
9744 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9745 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9746 "I<id> arguments are ignored."
9747 msgstr ""
9748
9749 #. type: TP
9750 #: build/C/man2/quotactl.2:319
9751 #, no-wrap
9752 msgid "B<Q_GETSTATS>"
9753 msgstr "B<Q_GETSTATS>"
9754
9755 #.  Q_GETSTATS was removed in kernel 2.4.22.
9756 #. type: Plain text
9757 #: build/C/man2/quotactl.2:339
9758 msgid ""
9759 "Get statistics and other generic information about the quota subsystem.  The "
9760 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9761 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9762 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9763 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9764 "the information instead."
9765 msgstr ""
9766
9767 #. type: Plain text
9768 #: build/C/man2/quotactl.2:342
9769 msgid ""
9770 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9771 "commands are bypassed and the following commands are used:"
9772 msgstr ""
9773
9774 #. type: TP
9775 #: build/C/man2/quotactl.2:342
9776 #, no-wrap
9777 msgid "B<Q_XQUOTAON>"
9778 msgstr "B<Q_XQUOTAON>"
9779
9780 #. type: Plain text
9781 #: build/C/man2/quotactl.2:363
9782 msgid ""
9783 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9784 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9785 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9786 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9787 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9788 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9789 "(B<CAP_SYS_ADMIN>)."
9790 msgstr ""
9791
9792 #. type: TP
9793 #: build/C/man2/quotactl.2:363
9794 #, no-wrap
9795 msgid "B<Q_XQUOTAOFF>"
9796 msgstr "B<Q_XQUOTAOFF>"
9797
9798 #. type: Plain text
9799 #: build/C/man2/quotactl.2:374
9800 msgid ""
9801 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9802 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9803 "accounting and/or limit enforcement need to be turned off.  This operation "
9804 "requires privilege (B<CAP_SYS_ADMIN>)."
9805 msgstr ""
9806
9807 #. type: TP
9808 #: build/C/man2/quotactl.2:374
9809 #, no-wrap
9810 msgid "B<Q_XGETQUOTA>"
9811 msgstr "B<Q_XGETQUOTA>"
9812
9813 #. type: Plain text
9814 #: build/C/man2/quotactl.2:388
9815 msgid ""
9816 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9817 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9818 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9819 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9820 "user."
9821 msgstr ""
9822
9823 #. type: TP
9824 #: build/C/man2/quotactl.2:388
9825 #, no-wrap
9826 msgid "B<Q_XSETQLIM>"
9827 msgstr "B<Q_XSETQLIM>"
9828
9829 #. type: Plain text
9830 #: build/C/man2/quotactl.2:400
9831 msgid ""
9832 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9833 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9834 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9835 msgstr ""
9836
9837 #. type: TP
9838 #: build/C/man2/quotactl.2:400
9839 #, no-wrap
9840 msgid "B<Q_XGETQSTAT>"
9841 msgstr "B<Q_XGETQSTAT>"
9842
9843 #. type: Plain text
9844 #: build/C/man2/quotactl.2:408
9845 msgid ""
9846 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9847 "quota information.  This is useful for finding out how much space is used to "
9848 "store quota information, and also to get quotaon/off status of a given local "
9849 "XFS file system."
9850 msgstr ""
9851
9852 #. type: TP
9853 #: build/C/man2/quotactl.2:408
9854 #, no-wrap
9855 msgid "B<Q_XQUOTARM>"
9856 msgstr "B<Q_XQUOTARM>"
9857
9858 #. type: Plain text
9859 #: build/C/man2/quotactl.2:412
9860 msgid ""
9861 "Free the disk space taken by disk quotas.  Quotas must have already been "
9862 "turned off."
9863 msgstr ""
9864
9865 #. type: Plain text
9866 #: build/C/man2/quotactl.2:419
9867 msgid ""
9868 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9869 "quota information to disk (in addition to the other file system metadata "
9870 "that it writes out)."
9871 msgstr ""
9872
9873 #. type: SH
9874 #: build/C/man2/quotactl.2:419
9875 #, no-wrap
9876 msgid "RETURN VALUES"
9877 msgstr "返り値"
9878
9879 #. type: Plain text
9880 #: build/C/man2/quotactl.2:427
9881 msgid ""
9882 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9883 "is set to indicate the error."
9884 msgstr ""
9885 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9886 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9887
9888 #. type: Plain text
9889 #: build/C/man2/quotactl.2:434
9890 msgid "I<addr> or I<special> is invalid."
9891 msgstr ""
9892
9893 #. type: Plain text
9894 #: build/C/man2/quotactl.2:440
9895 msgid "I<cmd> or I<type> is invalid."
9896 msgstr ""
9897
9898 #. type: TP
9899 #: build/C/man2/quotactl.2:440
9900 #, no-wrap
9901 msgid "B<ENOENT>"
9902 msgstr "B<ENOENT>"
9903
9904 #. type: Plain text
9905 #: build/C/man2/quotactl.2:447
9906 msgid "The file specified by I<special> or I<addr> does not exist."
9907 msgstr ""
9908
9909 #. type: Plain text
9910 #: build/C/man2/quotactl.2:452
9911 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9912 msgstr ""
9913
9914 #. type: TP
9915 #: build/C/man2/quotactl.2:452
9916 #, no-wrap
9917 msgid "B<ENOTBLK>"
9918 msgstr "B<ENOTBLK>"
9919
9920 #. type: Plain text
9921 #: build/C/man2/quotactl.2:456
9922 msgid "I<special> is not a block device."
9923 msgstr "I<special> がブロックデバイスではない。"
9924
9925 #. type: Plain text
9926 #: build/C/man2/quotactl.2:461
9927 msgid ""
9928 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9929 "specified operation."
9930 msgstr ""
9931
9932 #. type: Plain text
9933 #: build/C/man2/quotactl.2:465
9934 msgid ""
9935 "No disk quota is found for the indicated user.  Quotas have not been turned "
9936 "on for this file system."
9937 msgstr ""
9938
9939 #. type: Plain text
9940 #: build/C/man2/quotactl.2:474
9941 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9942 msgstr ""
9943
9944 #. type: Plain text
9945 #: build/C/man2/quotactl.2:477
9946 msgid "Specified limits are out of range allowed by quota format."
9947 msgstr ""
9948
9949 #. type: Plain text
9950 #: build/C/man2/quotactl.2:486
9951 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9952 msgstr ""
9953
9954 #. type: Plain text
9955 #: build/C/man2/quotactl.2:495
9956 msgid ""
9957 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9958 "the quota file pointed to by I<addr> exists, but is not on the file system "
9959 "pointed to by I<special>."
9960 msgstr ""
9961
9962 #. type: Plain text
9963 #: build/C/man2/quotactl.2:501
9964 msgid ""
9965 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9966 msgstr ""
9967
9968 #. type: Plain text
9969 #: build/C/man2/quotactl.2:504
9970 msgid "The quota file is corrupted."
9971 msgstr "quota ファイルが壊れている。"
9972
9973 #. type: Plain text
9974 #: build/C/man2/quotactl.2:507
9975 msgid "Specified quota format was not found."
9976 msgstr ""
9977
9978 #. type: Plain text
9979 #: build/C/man2/quotactl.2:512
9980 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9981 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9982
9983 #. type: TH
9984 #: build/C/man2/sendfile.2:19
9985 #, no-wrap
9986 msgid "SENDFILE"
9987 msgstr "SENDFILE"
9988
9989 #. type: TH
9990 #: build/C/man2/sendfile.2:19
9991 #, no-wrap
9992 msgid "2011-09-14"
9993 msgstr "2011-09-14"
9994
9995 #. type: Plain text
9996 #: build/C/man2/sendfile.2:22
9997 msgid "sendfile - transfer data between file descriptors"
9998 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
9999
10000 #. type: Plain text
10001 #: build/C/man2/sendfile.2:24
10002 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10003 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10004
10005 #.  The below is too ugly. Comments about glibc versions belong
10006 #.  in the notes, not in the header.
10007 #.  .B #include <features.h>
10008 #.  .br
10009 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10010 #.  .br
10011 #.  .B #include <sys/sendfile.h>
10012 #.  .br
10013 #.  #else
10014 #.  .br
10015 #.  .B #include <sys/types.h>
10016 #.  .br
10017 #.  .B /* No system prototype before glibc 2.1. */
10018 #.  .br
10019 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10020 #.  .br
10021 #.  .B #endif
10022 #. type: Plain text
10023 #: build/C/man2/sendfile.2:47
10024 msgid ""
10025 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10026 "size_t>I< count>B<);>"
10027 msgstr ""
10028 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10029 "size_t>I< count>B<);>"
10030
10031 #. type: Plain text
10032 #: build/C/man2/sendfile.2:57
10033 msgid ""
10034 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10035 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10036 "than the combination of B<read>(2)  and B<write>(2), which would require "
10037 "transferring data to and from user space."
10038 msgstr ""
10039 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10040 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10041 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10042 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10043 "るからである。"
10044
10045 #. type: Plain text
10046 #: build/C/man2/sendfile.2:62
10047 msgid ""
10048 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10049 "be a descriptor opened for writing."
10050 msgstr ""
10051 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10052 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10053
10054 #. type: Plain text
10055 #: build/C/man2/sendfile.2:83
10056 msgid ""
10057 "If I<offset> is not NULL, then it points to a variable holding the file "
10058 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10059 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10060 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10061 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10062 "otherwise the current file offset is adjusted to reflect the number of bytes "
10063 "read from I<in_fd>."
10064 msgstr ""
10065 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10066 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10067 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10068 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10069 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10070 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10071 "整する。"
10072
10073 #. type: Plain text
10074 #: build/C/man2/sendfile.2:90
10075 msgid ""
10076 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10077 "current file offset, and the file offset will be updated by the call."
10078 msgstr ""
10079 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10080 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10081
10082 #. type: Plain text
10083 #: build/C/man2/sendfile.2:93
10084 msgid "I<count> is the number of bytes to copy between the file descriptors."
10085 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10086
10087 #. type: Plain text
10088 #: build/C/man2/sendfile.2:100
10089 msgid ""
10090 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10091 "like operations (i.e., it cannot be a socket)."
10092 msgstr ""
10093 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10094 "な\n"
10095 "い (ソケットを指定することはできない)。"
10096
10097 #. type: Plain text
10098 #: build/C/man2/sendfile.2:108
10099 msgid ""
10100 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10101 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10102 "()  changes the file offset appropriately."
10103 msgstr ""
10104 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10105 "な\n"
10106 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10107 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10108
10109 #. type: Plain text
10110 #: build/C/man2/sendfile.2:115
10111 msgid ""
10112 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10113 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10114 msgstr ""
10115 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10116 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10117
10118 #. type: Plain text
10119 #: build/C/man2/sendfile.2:121
10120 msgid ""
10121 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10122 "block."
10123 msgstr ""
10124 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10125 "た。"
10126
10127 #. type: TP
10128 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10129 #: build/C/man2/vmsplice.2:123
10130 #, no-wrap
10131 msgid "B<EBADF>"
10132 msgstr "B<EBADF>"
10133
10134 #. type: Plain text
10135 #: build/C/man2/sendfile.2:125
10136 msgid ""
10137 "The input file was not opened for reading or the output file was not opened "
10138 "for writing."
10139 msgstr ""
10140 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10141 "のためにオープンされていない。"
10142
10143 #. type: Plain text
10144 #: build/C/man2/sendfile.2:128
10145 msgid "Bad address."
10146 msgstr "アドレスがおかしい。"
10147
10148 #. type: Plain text
10149 #: build/C/man2/sendfile.2:134
10150 msgid ""
10151 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10152 "available for I<in_fd>."
10153 msgstr ""
10154 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10155 "が I<in_fd> では利用できない。"
10156
10157 #. type: Plain text
10158 #: build/C/man2/sendfile.2:138
10159 msgid "Unspecified error while reading from I<in_fd>."
10160 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10161
10162 #. type: Plain text
10163 #: build/C/man2/sendfile.2:142
10164 msgid "Insufficient memory to read from I<in_fd>."
10165 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10166
10167 #. type: Plain text
10168 #: build/C/man2/sendfile.2:148
10169 msgid ""
10170 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10171 "sendfile.hE<gt>> is present since glibc 2.1."
10172 msgstr ""
10173 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10174 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10175
10176 #. type: Plain text
10177 #: build/C/man2/sendfile.2:150
10178 msgid "Not specified in POSIX.1-2001, or other standards."
10179 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10180
10181 #. type: Plain text
10182 #: build/C/man2/sendfile.2:155
10183 msgid ""
10184 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10185 "prototypes.  It should not be used in portable programs."
10186 msgstr ""
10187 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10188 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10189
10190 #. type: Plain text
10191 #: build/C/man2/sendfile.2:165
10192 msgid ""
10193 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10194 "need to send some header data in front of the file contents, you will find "
10195 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10196 "minimize the number of packets and to tune performance."
10197 msgstr ""
10198 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10199 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10200 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10201 "いいだろう。"
10202
10203 #. type: Plain text
10204 #: build/C/man2/sendfile.2:171
10205 msgid ""
10206 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10207 "B<sendfile>()  changed the current offset of that file."
10208 msgstr ""
10209 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10210 "き、\n"
10211 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10212
10213 #. type: Plain text
10214 #: build/C/man2/sendfile.2:183
10215 msgid ""
10216 "The original Linux B<sendfile>()  system call was not designed to handle "
10217 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10218 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10219 "function transparently deals with the kernel differences."
10220 msgstr ""
10221 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10222 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10223 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10224 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10225
10226 #. type: Plain text
10227 #: build/C/man2/sendfile.2:192
10228 msgid ""
10229 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10230 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10231 msgstr ""
10232 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10233 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10234
10235 #. type: Plain text
10236 #: build/C/man2/sendfile.2:197
10237 msgid ""
10238 "The Linux-specific B<splice>(2)  call supports transferring data between "
10239 "arbitrary files (e.g., a pair of sockets)."
10240 msgstr ""
10241 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10242 "ソケット同士) でのデータ転送をサポートしている。"
10243
10244 #. type: Plain text
10245 #: build/C/man2/sendfile.2:202
10246 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10247 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10248
10249 #. type: TH
10250 #: build/C/man2/set_tid_address.2:25
10251 #, no-wrap
10252 msgid "SET_TID_ADDRESS"
10253 msgstr "SET_TID_ADDRESS"
10254
10255 #. type: TH
10256 #: build/C/man2/set_tid_address.2:25
10257 #, fuzzy, no-wrap
10258 #| msgid "2012-05-03"
10259 msgid "2012-07-19"
10260 msgstr "2012-05-03"
10261
10262 #. type: Plain text
10263 #: build/C/man2/set_tid_address.2:28
10264 msgid "set_tid_address - set pointer to thread ID"
10265 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10266
10267 #. type: Plain text
10268 #: build/C/man2/set_tid_address.2:31
10269 #, no-wrap
10270 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10271 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10272
10273 #. type: Plain text
10274 #: build/C/man2/set_tid_address.2:33
10275 #, no-wrap
10276 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10277 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10278
10279 #. type: Plain text
10280 #: build/C/man2/set_tid_address.2:40
10281 #, fuzzy
10282 #| msgid ""
10283 #| "The kernel keeps for each process two values called I<set_child_tid> and "
10284 #| "I<clear_child_tid> that are NULL by default."
10285 msgid ""
10286 "For each process, the kernel maintains two attributes (addresses) called "
10287 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10288 "value NULL by default."
10289 msgstr ""
10290 "カーネルは各プロセスについて I<set_child_tid> と I<clear_child_tid> という 2 "
10291 "つの値を保持する。 これらはデフォルトでは NULL である。"
10292
10293 #. type: TP
10294 #: build/C/man2/set_tid_address.2:40
10295 #, fuzzy, no-wrap
10296 #| msgid "set_child_tid"
10297 msgid "I<set_child_tid>"
10298 msgstr "set_child_tid"
10299
10300 #. type: Plain text
10301 #: build/C/man2/set_tid_address.2:51
10302 #, fuzzy
10303 #| msgid ""
10304 #| "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10305 #| "flag, I<set_child_tid> is set to I<child_tidptr>, the fifth argument of "
10306 #| "that system call."
10307 msgid ""
10308 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10309 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10310 "that system call."
10311 msgstr ""
10312 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10313 "れた場合、 I<set_child_tid> は I<child_tidptr> に設定される。 これは B<clone>"
10314 "(2)  のシステムコールの 5 番目の引き数である。"
10315
10316 #. type: Plain text
10317 #: build/C/man2/set_tid_address.2:56
10318 msgid ""
10319 "When I<set_child_tid> is set, the very first thing the new process does is "
10320 "writing its PID at this address."
10321 msgstr ""
10322 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10323 "のアドレスに自身の PID を書き込むことである。"
10324
10325 #. type: TP
10326 #: build/C/man2/set_tid_address.2:56
10327 #, fuzzy, no-wrap
10328 #| msgid "clear_child_tid"
10329 msgid "I<clear_child_tid>"
10330 msgstr "clear_child_tid"
10331
10332 #. type: Plain text
10333 #: build/C/man2/set_tid_address.2:67
10334 #, fuzzy
10335 #| msgid ""
10336 #| "If a process is started using B<clone>(2)  with the "
10337 #| "B<CLONE_CHILD_CLEARTID> flag, I<clear_child_tid> is set to "
10338 #| "I<child_tidptr>, the fifth argument of that system call."
10339 msgid ""
10340 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10341 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10342 "of that system call."
10343 msgstr ""
10344 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2)  によって開始"
10345 "された場合、 I<clear_child_tid> は I<child_tidptr> に設定される。 これは "
10346 "B<clone>(2)  のシステムコールの 5 番目の引き数である。"
10347
10348 #. type: Plain text
10349 #: build/C/man2/set_tid_address.2:74
10350 msgid ""
10351 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10352 "the calling process to I<tidptr>."
10353 msgstr ""
10354 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10355 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10356
10357 #. type: Plain text
10358 #: build/C/man2/set_tid_address.2:82
10359 #, fuzzy
10360 #| msgid ""
10361 #| "When I<clear_child_tid> is set, and the process exits, and the process "
10362 #| "was sharing memory with other processes or threads, then 0 is written at "
10363 #| "this address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> "
10364 #| "call is done.  (That is, wake a single process waiting on this futex.)  "
10365 #| "Errors are ignored."
10366 msgid ""
10367 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10368 "process is sharing memory with other processes or threads, then 0 is written "
10369 "at the address specified in I<clear_child_tid> and the kernel performs the "
10370 "following operation:"
10371 msgstr ""
10372 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
10373 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
10374 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
10375 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
10376 "(wake))。 エラーは無視される。"
10377
10378 #. type: Plain text
10379 #: build/C/man2/set_tid_address.2:84
10380 #, no-wrap
10381 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10382 msgstr ""
10383
10384 #. type: Plain text
10385 #: build/C/man2/set_tid_address.2:88
10386 msgid ""
10387 "The effect of this operation is to wake a single process that is performing "
10388 "a futex wait on the memory location.  Errors from the futex wake operation "
10389 "are ignored."
10390 msgstr ""
10391
10392 #. type: Plain text
10393 #: build/C/man2/set_tid_address.2:91
10394 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10395 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10396
10397 #. type: Plain text
10398 #: build/C/man2/set_tid_address.2:94
10399 msgid "B<set_tid_address>()  always succeeds."
10400 msgstr "B<set_tid_address>()  は常に成功する。"
10401
10402 #. type: Plain text
10403 #: build/C/man2/set_tid_address.2:97
10404 msgid ""
10405 "This call is present since Linux 2.5.48.  Details as given here are valid "
10406 "since Linux 2.5.49."
10407 msgstr ""
10408 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10409 "2.5.49 以降で有効である。"
10410
10411 #. type: Plain text
10412 #: build/C/man2/set_tid_address.2:102
10413 msgid "B<clone>(2), B<futex>(2)"
10414 msgstr "B<clone>(2), B<futex>(2)"
10415
10416 #. type: TH
10417 #: build/C/man2/splice.2:26
10418 #, no-wrap
10419 msgid "SPLICE"
10420 msgstr "SPLICE"
10421
10422 #. type: TH
10423 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10424 #, no-wrap
10425 msgid "2012-05-04"
10426 msgstr "2012-05-04"
10427
10428 #. type: Plain text
10429 #: build/C/man2/splice.2:29
10430 msgid "splice - splice data to/from a pipe"
10431 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10432
10433 #. type: Plain text
10434 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10435 #, no-wrap
10436 msgid ""
10437 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10438 "B<#include E<lt>fcntl.hE<gt>>\n"
10439 msgstr ""
10440 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10441 "B<#include E<lt>fcntl.hE<gt>>\n"
10442
10443 #.  Return type was long before glibc 2.7
10444 #. type: Plain text
10445 #: build/C/man2/splice.2:38
10446 #, no-wrap
10447 msgid ""
10448 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10449 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10450 msgstr ""
10451 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10452 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10453
10454 #. type: Plain text
10455 #: build/C/man2/splice.2:50
10456 msgid ""
10457 "B<splice>()  moves data between two file descriptors without copying between "
10458 "kernel address space and user address space.  It transfers up to I<len> "
10459 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10460 "I<fd_out>, where one of the descriptors must refer to a pipe."
10461 msgstr ""
10462 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10463 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10464 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10465 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10466 "ならない。"
10467
10468 #. type: Plain text
10469 #: build/C/man2/splice.2:80
10470 msgid ""
10471 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10472 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10473 "starting from the current file offset, and the current file offset is "
10474 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10475 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10476 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10477 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10478 "apply for I<fd_out> and I<off_out>."
10479 msgstr ""
10480 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10481 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10482 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10483 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10484 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10485 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10486 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10487 "る。"
10488
10489 #. type: Plain text
10490 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10491 msgid ""
10492 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10493 "or more of the following values:"
10494 msgstr ""
10495 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10496
10497 #. type: TP
10498 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10499 #, no-wrap
10500 msgid "B<SPLICE_F_MOVE>"
10501 msgstr "B<SPLICE_F_MOVE>"
10502
10503 #. type: Plain text
10504 #: build/C/man2/splice.2:98
10505 msgid ""
10506 "Attempt to move pages instead of copying.  This is only a hint to the "
10507 "kernel: pages may still be copied if the kernel cannot move the pages from "
10508 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10509 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10510 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10511 "correct implementation may be restored."
10512 msgstr ""
10513 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10514 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10515 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10516 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10517 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10518 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10519
10520 #. type: TP
10521 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10522 #, no-wrap
10523 msgid "B<SPLICE_F_NONBLOCK>"
10524 msgstr "B<SPLICE_F_NONBLOCK>"
10525
10526 #. type: Plain text
10527 #: build/C/man2/splice.2:107
10528 msgid ""
10529 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10530 "B<splice>()  may nevertheless block because the file descriptors that are "
10531 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10532 msgstr ""
10533 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10534 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10535 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10536 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10537 "らである。"
10538
10539 #. type: TP
10540 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10541 #, no-wrap
10542 msgid "B<SPLICE_F_MORE>"
10543 msgstr "B<SPLICE_F_MORE>"
10544
10545 #. type: Plain text
10546 #: build/C/man2/splice.2:121
10547 msgid ""
10548 "More data will be coming in a subsequent splice.  This is a helpful hint "
10549 "when the I<fd_out> refers to a socket (see also the description of "
10550 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10551 msgstr ""
10552 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10553 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10554 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10555
10556 #. type: TP
10557 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10558 #, no-wrap
10559 msgid "B<SPLICE_F_GIFT>"
10560 msgstr "B<SPLICE_F_GIFT>"
10561
10562 #. type: Plain text
10563 #: build/C/man2/splice.2:127
10564 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10565 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10566
10567 #. type: Plain text
10568 #: build/C/man2/splice.2:136
10569 msgid ""
10570 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10571 "to or from the pipe.  A return value of 0 means that there was no data to "
10572 "transfer, and it would not make sense to block, because there are no writers "
10573 "connected to the write end of the pipe referred to by I<fd_in>."
10574 msgstr ""
10575 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10576 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10577 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10578 "れている者がいないからである。"
10579
10580 #. type: Plain text
10581 #: build/C/man2/splice.2:142
10582 msgid ""
10583 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10584 msgstr ""
10585 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10586 "る。"
10587
10588 #. type: Plain text
10589 #: build/C/man2/splice.2:147
10590 msgid ""
10591 "One or both file descriptors are not valid, or do not have proper read-write "
10592 "mode."
10593 msgstr ""
10594 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10595 "write モードではない。"
10596
10597 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10598 #.  splice() in append mode was broken
10599 #. type: Plain text
10600 #: build/C/man2/splice.2:155
10601 msgid ""
10602 "Target file system doesn't support splicing; target file is opened in append "
10603 "mode; neither of the descriptors refers to a pipe; or offset given for "
10604 "nonseekable device."
10605 msgstr ""
10606 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10607 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10608 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10609
10610 #. type: Plain text
10611 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10612 #: build/C/man2/vmsplice.2:138
10613 msgid "Out of memory."
10614 msgstr "メモリ不足。"
10615
10616 #. type: TP
10617 #: build/C/man2/splice.2:158
10618 #, no-wrap
10619 msgid "B<ESPIPE>"
10620 msgstr "B<ESPIPE>"
10621
10622 #. type: Plain text
10623 #: build/C/man2/splice.2:165
10624 msgid ""
10625 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10626 "descriptor refers to a pipe."
10627 msgstr ""
10628 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10629 "クリプタが パイプを参照している。"
10630
10631 #. type: Plain text
10632 #: build/C/man2/splice.2:170
10633 msgid ""
10634 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10635 "was added to glibc in version 2.5."
10636 msgstr ""
10637 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10638 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10639
10640 #. type: Plain text
10641 #: build/C/man2/splice.2:182
10642 #, fuzzy
10643 #| msgid ""
10644 #| "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), "
10645 #| "provide userspace programs with full control over an arbitrary kernel "
10646 #| "buffer, implemented within the kernel using the same type of buffer that "
10647 #| "is used for a pipe.  In overview, these system calls perform the "
10648 #| "following tasks:"
10649 msgid ""
10650 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10651 "user-space programs with full control over an arbitrary kernel buffer, "
10652 "implemented within the kernel using the same type of buffer that is used for "
10653 "a pipe.  In overview, these system calls perform the following tasks:"
10654 msgstr ""
10655 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10656 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10657 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10658 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10659
10660 #. type: TP
10661 #: build/C/man2/splice.2:182
10662 #, no-wrap
10663 msgid "B<splice>()"
10664 msgstr "B<splice>()"
10665
10666 #. type: Plain text
10667 #: build/C/man2/splice.2:186
10668 msgid ""
10669 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10670 "or from one buffer to another."
10671 msgstr ""
10672 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10673 "から別のバッファへの、データ移動を行う。"
10674
10675 #. type: TP
10676 #: build/C/man2/splice.2:186
10677 #, no-wrap
10678 msgid "B<tee>(2)"
10679 msgstr "B<tee>(2)"
10680
10681 #. type: Plain text
10682 #: build/C/man2/splice.2:189
10683 msgid "\"copies\" the data from one buffer to another."
10684 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10685
10686 #. type: TP
10687 #: build/C/man2/splice.2:189
10688 #, no-wrap
10689 msgid "B<vmsplice>(2)"
10690 msgstr "B<vmsplice>(2)"
10691
10692 #. type: Plain text
10693 #: build/C/man2/splice.2:192
10694 msgid "\"copies\" data from user space into the buffer."
10695 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10696
10697 #.  Linus: Now, imagine using the above in a media server, for example.
10698 #.  Let's say that a year or two has passed, so that the video drivers
10699 #.  have been updated to be able to do the splice thing, and what can
10700 #.  you do? You can:
10701 #.  - splice from the (mpeg or whatever - let's just assume that the video
10702 #.    input is either digital or does the encoding on its own - like they
10703 #.    pretty much all do) video input into a pipe (remember: no copies - the
10704 #.    video input will just DMA directly into memory, and splice will just
10705 #.    set up the pages in the pipe buffer)
10706 #.  - tee that pipe to split it up
10707 #.  - splice one end to a file (ie "save the compressed stream to disk")
10708 #.  - splice the other end to a real-time video decoder window for your
10709 #.    real-time viewing pleasure.
10710 #.  Linus: Now, the advantage of splice()/tee() is that you can
10711 #.  do zero-copy movement of data, and unlike sendfile() you can
10712 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10713 #.  than just sending the data to somebody else: you can duplicate
10714 #.  the data and choose to forward it to two or more different
10715 #.  users - for things like logging etc.).
10716 #. type: Plain text
10717 #: build/C/man2/splice.2:223
10718 msgid ""
10719 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10720 "does this by implementing a pipe buffer as a set of reference-counted "
10721 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10722 "in a buffer by creating new pointers (for the output buffer) referring to "
10723 "the pages, and increasing the reference counts for the pages: only pointers "
10724 "are copied, not the pages of the buffer."
10725 msgstr ""
10726 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10727 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10728 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10729 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10730 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10731 "タだけがコピーされ、 バッファのページはコピーされない。"
10732
10733 #. type: Plain text
10734 #: build/C/man2/splice.2:226
10735 msgid "See B<tee>(2)."
10736 msgstr "B<tee>(2)  参照。"
10737
10738 #. type: Plain text
10739 #: build/C/man2/splice.2:230
10740 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10741 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10742
10743 #. type: TH
10744 #: build/C/man2/tee.2:26
10745 #, no-wrap
10746 msgid "TEE"
10747 msgstr "TEE"
10748
10749 #. type: Plain text
10750 #: build/C/man2/tee.2:29
10751 msgid "tee - duplicating pipe content"
10752 msgstr "tee - パイプの中身を複製する"
10753
10754 #. type: Plain text
10755 #: build/C/man2/tee.2:36
10756 #, no-wrap
10757 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"
10758 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"
10759
10760 #.  Example programs http://brick.kernel.dk/snaps
10761 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10762 #.  (again, incrementing their reference count, not copying the data) from
10763 #.  one pipe to two other pipes.
10764 #. type: Plain text
10765 #: build/C/man2/tee.2:56
10766 msgid ""
10767 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10768 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10769 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10770 "therefore, that data can be copied by a subsequent B<splice>(2)."
10771 msgstr ""
10772 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10773 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10774 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10775 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10776
10777 #. type: Plain text
10778 #: build/C/man2/tee.2:62
10779 msgid ""
10780 "I<flags> is a series of modifier flags, which share the name space with "
10781 "B<splice>(2)  and B<vmsplice>(2):"
10782 msgstr ""
10783 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10784 "名前である。"
10785
10786 #. type: Plain text
10787 #: build/C/man2/tee.2:68
10788 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10789 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10790
10791 #.  Not used for vmsplice
10792 #.  May be in the future -- therefore EAGAIN
10793 #. type: Plain text
10794 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10795 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10796 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10797
10798 #. type: Plain text
10799 #: build/C/man2/tee.2:79
10800 msgid ""
10801 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10802 "see B<splice>(2)."
10803 msgstr ""
10804 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10805 "る。 B<splice>(2)  参照。"
10806
10807 #. type: Plain text
10808 #: build/C/man2/tee.2:85
10809 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10810 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10811
10812 #. type: Plain text
10813 #: build/C/man2/tee.2:94
10814 msgid ""
10815 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10816 "duplicated between the input and output.  A return value of 0 means that "
10817 "there was no data to transfer, and it would not make sense to block, because "
10818 "there are no writers connected to the write end of the pipe referred to by "
10819 "I<fd_in>."
10820 msgstr ""
10821 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10822 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10823 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10824 "ている者がいないからである。"
10825
10826 #. type: Plain text
10827 #: build/C/man2/tee.2:100
10828 msgid ""
10829 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10830 msgstr ""
10831 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10832
10833 #. type: Plain text
10834 #: build/C/man2/tee.2:111
10835 msgid ""
10836 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10837 "refer to the same pipe."
10838 msgstr ""
10839 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10840 "と I<fd_out> が同じパイプを参照している。"
10841
10842 #. type: Plain text
10843 #: build/C/man2/tee.2:119
10844 msgid ""
10845 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10846 "was added to glibc in version 2.5."
10847 msgstr ""
10848 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10849 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10850
10851 #. type: Plain text
10852 #: build/C/man2/tee.2:130
10853 msgid ""
10854 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10855 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10856 "data in the output by merely grabbing a reference to the input."
10857 msgstr ""
10858 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10859 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10860 "照だけを作成することで出力側にデータを 追加する。"
10861
10862 #. type: Plain text
10863 #: build/C/man2/tee.2:136
10864 msgid ""
10865 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10866 "()  system call."
10867 msgstr ""
10868 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10869 "ムを実装したものである。"
10870
10871 #. type: Plain text
10872 #: build/C/man2/tee.2:145
10873 #, no-wrap
10874 msgid ""
10875 "#define _GNU_SOURCE\n"
10876 "#include E<lt>fcntl.hE<gt>\n"
10877 "#include E<lt>stdio.hE<gt>\n"
10878 "#include E<lt>stdlib.hE<gt>\n"
10879 "#include E<lt>unistd.hE<gt>\n"
10880 "#include E<lt>errno.hE<gt>\n"
10881 "#include E<lt>limits.hE<gt>\n"
10882 msgstr ""
10883 "#define _GNU_SOURCE\n"
10884 "#include E<lt>fcntl.hE<gt>\n"
10885 "#include E<lt>stdio.hE<gt>\n"
10886 "#include E<lt>stdlib.hE<gt>\n"
10887 "#include E<lt>unistd.hE<gt>\n"
10888 "#include E<lt>errno.hE<gt>\n"
10889 "#include E<lt>limits.hE<gt>\n"
10890
10891 #. type: Plain text
10892 #: build/C/man2/tee.2:151
10893 #, no-wrap
10894 msgid ""
10895 "int\n"
10896 "main(int argc, char *argv[])\n"
10897 "{\n"
10898 "    int fd;\n"
10899 "    int len, slen;\n"
10900 msgstr ""
10901 "int\n"
10902 "main(int argc, char *argv[])\n"
10903 "{\n"
10904 "    int fd;\n"
10905 "    int len, slen;\n"
10906
10907 #. type: Plain text
10908 #: build/C/man2/tee.2:156
10909 #, no-wrap
10910 msgid ""
10911 "    if (argc != 2) {\n"
10912 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10913 "        exit(EXIT_FAILURE);\n"
10914 "    }\n"
10915 msgstr ""
10916 "    if (argc != 2) {\n"
10917 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10918 "        exit(EXIT_FAILURE);\n"
10919 "    }\n"
10920
10921 #. type: Plain text
10922 #: build/C/man2/tee.2:162
10923 #, no-wrap
10924 msgid ""
10925 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10926 "    if (fd == -1) {\n"
10927 "        perror(\"open\");\n"
10928 "        exit(EXIT_FAILURE);\n"
10929 "    }\n"
10930 msgstr ""
10931 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10932 "    if (fd == -1) {\n"
10933 "        perror(\"open\");\n"
10934 "        exit(EXIT_FAILURE);\n"
10935 "    }\n"
10936
10937 #. type: Plain text
10938 #: build/C/man2/tee.2:169
10939 #, no-wrap
10940 msgid ""
10941 "    do {\n"
10942 "        /*\n"
10943 "         * tee stdin to stdout.\n"
10944 "         */\n"
10945 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10946 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10947 msgstr ""
10948 "    do {\n"
10949 "        /*\n"
10950 "         * tee stdin to stdout.\n"
10951 "         */\n"
10952 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10953 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10954
10955 #. type: Plain text
10956 #: build/C/man2/tee.2:178
10957 #, no-wrap
10958 msgid ""
10959 "        if (len E<lt> 0) {\n"
10960 "            if (errno == EAGAIN)\n"
10961 "                continue;\n"
10962 "            perror(\"tee\");\n"
10963 "            exit(EXIT_FAILURE);\n"
10964 "        } else\n"
10965 "            if (len == 0)\n"
10966 "                break;\n"
10967 msgstr ""
10968 "        if (len E<lt> 0) {\n"
10969 "            if (errno == EAGAIN)\n"
10970 "                continue;\n"
10971 "            perror(\"tee\");\n"
10972 "            exit(EXIT_FAILURE);\n"
10973 "        } else\n"
10974 "            if (len == 0)\n"
10975 "                break;\n"
10976
10977 #. type: Plain text
10978 #: build/C/man2/tee.2:192
10979 #, no-wrap
10980 msgid ""
10981 "        /*\n"
10982 "         * Consume stdin by splicing it to a file.\n"
10983 "         */\n"
10984 "        while (len E<gt> 0) {\n"
10985 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10986 "                          len, SPLICE_F_MOVE);\n"
10987 "            if (slen E<lt> 0) {\n"
10988 "                perror(\"splice\");\n"
10989 "                break;\n"
10990 "            }\n"
10991 "            len -= slen;\n"
10992 "        }\n"
10993 "    } while (1);\n"
10994 msgstr ""
10995 "        /*\n"
10996 "         * Consume stdin by splicing it to a file.\n"
10997 "         */\n"
10998 "        while (len E<gt> 0) {\n"
10999 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11000 "                          len, SPLICE_F_MOVE);\n"
11001 "            if (slen E<lt> 0) {\n"
11002 "                perror(\"splice\");\n"
11003 "                break;\n"
11004 "            }\n"
11005 "            len -= slen;\n"
11006 "        }\n"
11007 "    } while (1);\n"
11008
11009 #. type: Plain text
11010 #: build/C/man2/tee.2:196
11011 #, no-wrap
11012 msgid ""
11013 "    close(fd);\n"
11014 "    exit(EXIT_SUCCESS);\n"
11015 "}\n"
11016 msgstr ""
11017 "    close(fd);\n"
11018 "    exit(EXIT_SUCCESS);\n"
11019 "}\n"
11020
11021 #. type: Plain text
11022 #: build/C/man2/tee.2:200
11023 msgid "B<splice>(2), B<vmsplice>(2)"
11024 msgstr "B<splice>(2), B<vmsplice>(2)"
11025
11026 #. type: TH
11027 #: build/C/man2/vm86.2:26
11028 #, no-wrap
11029 msgid "VM86"
11030 msgstr "VM86"
11031
11032 #. type: TH
11033 #: build/C/man2/vm86.2:26
11034 #, no-wrap
11035 msgid "2009-02-20"
11036 msgstr "2009-02-20"
11037
11038 #. type: Plain text
11039 #: build/C/man2/vm86.2:29
11040 msgid "vm86old, vm86 - enter virtual 8086 mode"
11041 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11042
11043 #. type: Plain text
11044 #: build/C/man2/vm86.2:31
11045 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11046 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11047
11048 #. type: Plain text
11049 #: build/C/man2/vm86.2:33
11050 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11051 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11052
11053 #. type: Plain text
11054 #: build/C/man2/vm86.2:35
11055 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11056 msgstr ""
11057 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11058
11059 #. type: Plain text
11060 #: build/C/man2/vm86.2:46
11061 msgid ""
11062 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11063 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11064 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11065 "and 1.1.9."
11066 msgstr ""
11067 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11068 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11069 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11070
11071 #. type: Plain text
11072 #: build/C/man2/vm86.2:50
11073 msgid ""
11074 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11075 "literature), and are used by B<dosemu>."
11076 msgstr ""
11077 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11078 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11079
11080 #. type: Plain text
11081 #: build/C/man2/vm86.2:52
11082 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11083 msgstr ""
11084 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11085 "ある。"
11086
11087 #. type: Plain text
11088 #: build/C/man2/vm86.2:62
11089 #, fuzzy
11090 #| msgid ""
11091 #| "This return value is specific to i386 and indicates a problem with "
11092 #| "getting userspace data."
11093 msgid ""
11094 "This return value is specific to i386 and indicates a problem with getting "
11095 "user-space data."
11096 msgstr ""
11097 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11098 "あったことを示す。"
11099
11100 #. type: Plain text
11101 #: build/C/man2/vm86.2:66
11102 msgid ""
11103 "This return value indicates the call is not implemented on the present "
11104 "architecture."
11105 msgstr ""
11106 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11107
11108 #. type: Plain text
11109 #: build/C/man2/vm86.2:71
11110 msgid ""
11111 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11112 "should only exist within vm86 mode itself.)"
11113 msgstr ""
11114 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11115 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11116 "い。)"
11117
11118 #. type: Plain text
11119 #: build/C/man2/vm86.2:74
11120 msgid ""
11121 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11122 "used in programs intended to be portable."
11123 msgstr ""
11124 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11125 "したプログラムでは使用すべきでない。"
11126
11127 #. type: TH
11128 #: build/C/man2/vmsplice.2:26
11129 #, no-wrap
11130 msgid "VMSPLICE"
11131 msgstr "VMSPLICE"
11132
11133 #. type: Plain text
11134 #: build/C/man2/vmsplice.2:29
11135 msgid "vmsplice - splice user pages into a pipe"
11136 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11137
11138 #. type: Plain text
11139 #: build/C/man2/vmsplice.2:34
11140 #, no-wrap
11141 msgid ""
11142 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11143 "B<#include E<lt>fcntl.hE<gt>>\n"
11144 "B<#include E<lt>sys/uio.hE<gt>>\n"
11145 msgstr ""
11146 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11147 "B<#include E<lt>fcntl.hE<gt>>\n"
11148 "B<#include E<lt>sys/uio.hE<gt>>\n"
11149
11150 #. type: Plain text
11151 #: build/C/man2/vmsplice.2:37
11152 #, no-wrap
11153 msgid ""
11154 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11155 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11156 msgstr ""
11157 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11158 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11159
11160 #.  Linus: vmsplice() system call to basically do a "write to
11161 #.  the buffer", but using the reference counting and VM traversal
11162 #.  to actually fill the buffer. This means that the user needs to
11163 #.  be careful not to reuse the user-space buffer it spliced into
11164 #.  the kernel-space one (contrast this to "write()", which copies
11165 #.  the actual data, and you can thus reuse the buffer immediately
11166 #.  after a successful write), but that is often easy to do.
11167 #. type: Plain text
11168 #: build/C/man2/vmsplice.2:57
11169 msgid ""
11170 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11171 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11172 "pipe."
11173 msgstr ""
11174 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11175 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11176 "ばならない。"
11177
11178 #. type: Plain text
11179 #: build/C/man2/vmsplice.2:64
11180 msgid ""
11181 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11182 "I<E<lt>sys/uio.hE<gt>>:"
11183 msgstr ""
11184 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11185 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11186
11187 #. type: Plain text
11188 #: build/C/man2/vmsplice.2:71
11189 #, no-wrap
11190 msgid ""
11191 "struct iovec {\n"
11192 "    void  *iov_base;            /* Starting address */\n"
11193 "    size_t iov_len;             /* Number of bytes */\n"
11194 "};\n"
11195 msgstr ""
11196 "struct iovec {\n"
11197 "    void  *iov_base;            /* 開始アドレス */\n"
11198 "    size_t iov_len;             /* バイト数 */\n"
11199 "};\n"
11200
11201 #. type: Plain text
11202 #: build/C/man2/vmsplice.2:84
11203 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11204 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11205
11206 #. type: Plain text
11207 #: build/C/man2/vmsplice.2:97
11208 msgid ""
11209 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11210 "future; see B<splice>(2)."
11211 msgstr ""
11212 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11213 "がある。 B<splice>(2)  参照。"
11214
11215 #.  FIXME Explain the following line in a little more detail:
11216 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11217 #. type: Plain text
11218 #: build/C/man2/vmsplice.2:113
11219 msgid ""
11220 "The user pages are a gift to the kernel.  The application may not modify "
11221 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11222 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11223 "successfully move the pages; if this flag is not specified, then a "
11224 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11225 "also be properly page aligned, both in memory and length."
11226 msgstr ""
11227 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11228 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11229 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11230 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11231 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11232 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11233 "なければならず、 長さもページ境界の倍数でなければならない。"
11234
11235 #. type: Plain text
11236 #: build/C/man2/vmsplice.2:122
11237 msgid ""
11238 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11239 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11240 "is set to indicate the error."
11241 msgstr ""
11242 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11243 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11244
11245 #. type: Plain text
11246 #: build/C/man2/vmsplice.2:127
11247 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11248 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11249
11250 #. type: Plain text
11251 #: build/C/man2/vmsplice.2:135
11252 msgid ""
11253 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11254 "B<SPLICE_F_GIFT> set."
11255 msgstr ""
11256 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11257 "設定されたがメモリがページ境界にあっていない。"
11258
11259 #. type: Plain text
11260 #: build/C/man2/vmsplice.2:143
11261 msgid ""
11262 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11263 "support was added to glibc in version 2.5."
11264 msgstr ""
11265 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11266 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11267
11268 #. type: Plain text
11269 #: build/C/man2/vmsplice.2:154
11270 msgid ""
11271 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11272 "it comes to limitations on number of segments being passed in.  This limit "
11273 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11274 "writing, that limit is 1024."
11275 msgstr ""
11276 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11277 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11278 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11279 "は 1024 である。"
11280
11281 #. type: Plain text
11282 #: build/C/man2/vmsplice.2:157
11283 msgid "B<splice>(2), B<tee>(2)"
11284 msgstr "B<splice>(2), B<tee>(2)"
11285
11286 #~ msgid "2010-08-29"
11287 #~ msgstr "2010-08-29"
11288
11289 #~ msgid ""
11290 #~ "Depending on which operation was executed, the returned value for a "
11291 #~ "successful call can have differing meanings."
11292 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11293
11294 #~ msgid ""
11295 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11296 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11297 #~ "was not equal to the expected value, the operation fails with the error "
11298 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11299 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11300 #~ msgstr ""
11301 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11302 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11303 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11304 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11305 #~ "敗する。"
11306
11307 #~ msgid "An operation was not defined or error in page alignment."
11308 #~ msgstr ""
11309 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11310
11311 #~ msgid "2010-11-04"
11312 #~ msgstr "2010-11-04"
11313
11314 #~ msgid "2007-06-01"
11315 #~ msgstr "2007-06-01"
11316
11317 #~ msgid "1995-11-29"
11318 #~ msgstr "1995-11-29"
11319
11320 #~ msgid "2012-04-26"
11321 #~ msgstr "2012-04-26"
11322
11323 #~ msgid "2004-09-10"
11324 #~ msgstr "2004-09-10"
11325
11326 #~ msgid "2009-09-15"
11327 #~ msgstr "2009-09-15"
11328
11329 #~ msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
11330 #~ msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
11331
11332 #~ msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
11333 #~ msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
11334
11335 #, fuzzy
11336 #~| msgid ""
11337 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11338 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11339 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11340 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11341 #~| "giving the parent a chance to gain control before the new program begins "
11342 #~| "execution.  A process probably shouldn't make this request if its parent "
11343 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11344 #~ msgid ""
11345 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11346 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11347 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11348 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11349 #~ "be sent to it, giving the parent a chance to gain control before the new "
11350 #~ "program begins execution.  A process probably shouldn't make this request "
11351 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11352 #~ "are ignored.)"
11353 #~ msgstr ""
11354 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11355 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11356 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11357 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11358 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11359 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11360 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11361 #~ "は無視される。)"
11362
11363 #~ msgid ""
11364 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11365 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11366 #~ msgstr ""
11367 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11368 #~ "\\ 8> で子プロセスの動作を停止させる。"
11369
11370 #~ msgid ""
11371 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11372 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11373 #~ msgstr ""
11374 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11375 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11376
11377 #~ msgid ""
11378 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11379 #~ "of the calling process; the behavior of the child is as if it had done a "
11380 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11381 #~ "the child process for most purposes (e.g., it will receive notification "
11382 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11383 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11384 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11385 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11386 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11387 #~ msgstr ""
11388 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11389 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11390 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11391 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11392 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11393 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11394 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11395 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11396 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11397
11398 #~ msgid ""
11399 #~ "Tracing causes a few subtle differences in the semantics of traced "
11400 #~ "processes.  For example, if a process is attached to with "
11401 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11402 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11403 #~ "effectively simulate this notification."
11404 #~ msgstr ""
11405 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11406 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11407 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11408 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11409
11410 #~ msgid ""
11411 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11412 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11413 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11414 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11415 #~ "child process after receiving one of these messages."
11416 #~ msgstr ""
11417 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11418 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11419 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11420 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11421 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11422 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11423
11424 #~ msgid ""
11425 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11426 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11427 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11428 #~ "and uniform way."
11429 #~ msgstr ""
11430 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11431 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11432 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11433 #~ "るものとなっている。"
11434
11435 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
11436 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
11437
11438 #~ msgid ""
11439 #~ "The second argument I<special> is the block special device these quota "
11440 #~ "apply to.  It must be mounted."
11441 #~ msgstr ""
11442 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11443 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11444
11445 #~ msgid ""
11446 #~ "The third argument I<id> is the user or group ID these quota apply to "
11447 #~ "(when relevant)."
11448 #~ msgstr ""
11449 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11450 #~ "グループの ID を指定する。"
11451
11452 #~ msgid ""
11453 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11454 #~ "on the command."
11455 #~ msgstr ""
11456 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11457 #~ "指定する。"
11458
11459 #~ msgid ""
11460 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11461 #~ "containing the quota for the file system."
11462 #~ msgstr ""
11463 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11464 #~ "記録されているファイルの パス名を指定する。"
11465
11466 #~ msgid "Disable quota."
11467 #~ msgstr "quota を無効にする。"
11468
11469 #~ msgid "Set limits and current usage; I<addr> is as before."
11470 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11471
11472 #~ msgid "Set limits; I<addr> is as before."
11473 #~ msgstr "制限値を設定する; I<addr> は同上。"
11474
11475 #~ msgid "B<Q_SETUSE>"
11476 #~ msgstr "B<Q_SETUSE>"
11477
11478 #~ msgid "Set usage."
11479 #~ msgstr "使用量を設定する。"
11480
11481 #~ msgid "Sync disk copy of a file system's quota."
11482 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11483
11484 #~ msgid "Get collected stats."
11485 #~ msgstr "収集された統計を取得する。"
11486
11487 #~ msgid ""
11488 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11489 #~ "I<errno> is set appropriately."
11490 #~ msgstr ""
11491 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11492 #~ "I<errno> が適切な値に設定される。"
11493
11494 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11495 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11496
11497 #~ msgid "Bad I<addr> value."
11498 #~ msgstr "I<addr> の値に誤りがある。"
11499
11500 #~ msgid ""
11501 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11502 #~ msgstr ""
11503 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11504 #~ "付からなかった。"
11505
11506 #~ msgid "Cannot read or write the quota file."
11507 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11508
11509 #~ msgid "B<EMFILE>"
11510 #~ msgstr "B<EMFILE>"
11511
11512 #~ msgid "Too many open files: cannot open quota file."
11513 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11514
11515 #~ msgid "I<special> cannot be found in the mount table."
11516 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11517
11518 #~ msgid "B<ENOPKG>"
11519 #~ msgstr "B<ENOPKG>"
11520
11521 #~ msgid "The kernel was compiled without quota support."
11522 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11523
11524 #~ msgid ""
11525 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11526 #~ "asked for another I<id> than that of the process itself, or anything "
11527 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11528 #~ msgstr ""
11529 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11530 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11531 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11532
11533 #~ msgid ""
11534 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11535 #~ "for a file system that didn't have quota enabled."
11536 #~ msgstr ""
11537 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11538 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
11539
11540 #~ msgid "BSD."
11541 #~ msgstr "BSD."