OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.50.
[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: 2012-05-29 00:07+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 #, fuzzy
447 #| msgid ""
448 #| "This page is part of release 3.41 of the Linux I<man-pages> project.  A "
449 #| "description of the project, and information about reporting bugs, can be "
450 #| "found at http://www.kernel.org/doc/man-pages/."
451 msgid ""
452 "This page is part of release 3.50 of the Linux I<man-pages> project.  A "
453 "description of the project, and information about reporting bugs, can be "
454 "found at http://www.kernel.org/doc/man-pages/."
455 msgstr ""
456 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.41 の一部\n"
457 "である。プロジェクトの説明とバグ報告に関する情報は\n"
458 "http://www.kernel.org/doc/man-pages/ に書かれている。"
459
460 #. type: TH
461 #: build/C/man2/futex.2:53
462 #, no-wrap
463 msgid "FUTEX"
464 msgstr "FUTEX"
465
466 #. type: TH
467 #: build/C/man2/futex.2:53
468 #, fuzzy, no-wrap
469 #| msgid "2012-03-05"
470 msgid "2013-03-15"
471 msgstr "2012-03-05"
472
473 #. type: Plain text
474 #: build/C/man2/futex.2:56
475 #, fuzzy
476 #| msgid "futex - Fast Userspace Locking system call"
477 msgid "futex - fast user-space locking"
478 msgstr "futex - 高速ユーザ空間ロック機構のシステムコール"
479
480 #. type: Plain text
481 #: build/C/man2/futex.2:61
482 #, no-wrap
483 msgid ""
484 "B<#include E<lt>linux/futex.hE<gt>>\n"
485 "B<#include E<lt>sys/time.hE<gt>>\n"
486 msgstr ""
487 "B<#include E<lt>linux/futex.hE<gt>>\n"
488 "B<#include E<lt>sys/time.hE<gt>>\n"
489
490 #. type: Plain text
491 #: build/C/man2/futex.2:64
492 #, no-wrap
493 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
494 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
495
496 #.  int *? void *? u32 *?
497 #. type: Plain text
498 #: build/C/man2/futex.2:67
499 #, no-wrap
500 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
501 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
502
503 #. type: Plain text
504 #: build/C/man2/futex.2:84
505 msgid ""
506 "The B<futex>()  system call provides a method for a program to wait for a "
507 "value at a given address to change, and a method to wake up anyone waiting "
508 "on a particular address (while the addresses for the same memory in separate "
509 "processes may not be equal, the kernel maps them internally so the same "
510 "memory mapped in different locations will correspond for B<futex>()  "
511 "calls).  This system call is typically used to implement the contended case "
512 "of a lock in shared memory, as described in B<futex>(7)."
513 msgstr ""
514 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
515 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
516 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
517 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
518 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
519 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
520 "る。"
521
522 #. type: Plain text
523 #: build/C/man2/futex.2:91
524 #, fuzzy
525 #| msgid ""
526 #| "When a B<futex>(7)  operation did not finish uncontended in userspace, a "
527 #| "call needs to be made to the kernel to arbitrate.  Arbitration can either "
528 #| "mean putting the calling process to sleep or, conversely, waking a "
529 #| "waiting process."
530 msgid ""
531 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
532 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
533 "mean putting the calling process to sleep or, conversely, waking a waiting "
534 "process."
535 msgstr ""
536 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
537 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
538 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
539 "味する。"
540
541 #. type: Plain text
542 #: build/C/man2/futex.2:98
543 msgid ""
544 "Callers of this function are expected to adhere to the semantics as set out "
545 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
546 "instructions, this in turn probably means that most users will in fact be "
547 "library authors and not general application developers."
548 msgstr ""
549 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
550 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
551 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
552 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
553 "る。"
554
555 #. type: Plain text
556 #: build/C/man2/futex.2:106
557 msgid ""
558 "The I<uaddr> argument needs to point to an aligned integer which stores the "
559 "counter.  The operation to execute is passed via the I<op> argument, along "
560 "with a value I<val>."
561 msgstr ""
562 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
563 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
564 "渡される。"
565
566 #. type: Plain text
567 #: build/C/man2/futex.2:108
568 msgid "Five operations are currently defined:"
569 msgstr "現在のところ 5 つの操作が定義されている:"
570
571 #. type: TP
572 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
573 #, no-wrap
574 msgid "B<FUTEX_WAIT>"
575 msgstr "B<FUTEX_WAIT>"
576
577 #. type: Plain text
578 #: build/C/man2/futex.2:126
579 #, fuzzy
580 #| msgid ""
581 #| "This operation atomically verifies that the futex address I<uaddr> still "
582 #| "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this "
583 #| "futex address.  If the I<timeout> argument is non-NULL, its contents "
584 #| "describe the maximum duration of the wait, which is infinite otherwise.  "
585 #| "The arguments I<uaddr2> and I<val3> are ignored."
586 msgid ""
587 "This operation atomically verifies that the futex address I<uaddr> still "
588 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
589 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
590 "minimum duration of the wait, which is infinite otherwise.  The arguments "
591 "I<uaddr2> and I<val3> are ignored."
592 msgstr ""
593 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
594 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
595 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
596 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
597 "I<uaddr2> と I<val3> は無視される。"
598
599 #. type: Plain text
600 #: build/C/man2/futex.2:134
601 msgid ""
602 "For B<futex>(7), this call is executed if decrementing the count gave a "
603 "negative value (indicating contention), and will sleep until another process "
604 "releases the futex and executes the B<FUTEX_WAKE> operation."
605 msgstr ""
606 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
607 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
608 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
609
610 #. type: TP
611 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
612 #, no-wrap
613 msgid "B<FUTEX_WAKE>"
614 msgstr "B<FUTEX_WAKE>"
615
616 #. type: Plain text
617 #: build/C/man2/futex.2:145
618 msgid ""
619 "This operation wakes at most I<val> processes waiting on this futex address "
620 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
621 "I<val3> are ignored."
622 msgstr ""
623 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
624 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
625 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
626
627 #. type: Plain text
628 #: build/C/man2/futex.2:151
629 msgid ""
630 "For B<futex>(7), this is executed if incrementing the count showed that "
631 "there were waiters, once the futex value has been set to 1 (indicating that "
632 "it is available)."
633 msgstr ""
634 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
635 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
636 "場合に実行される。"
637
638 #. type: TP
639 #: build/C/man2/futex.2:151
640 #, no-wrap
641 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
642 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
643
644 #.  , suitable for .BR poll (2).
645 #. type: Plain text
646 #: build/C/man2/futex.2:167
647 msgid ""
648 "To support asynchronous wakeups, this operation associates a file descriptor "
649 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
650 "receive the signal number that was passed in I<val>.  The calling process "
651 "must close the returned file descriptor after use.  The arguments "
652 "I<timeout>, I<uaddr2> and I<val3> are ignored."
653 msgstr ""
654 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
655 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
656 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
657 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
658 "I<uaddr2>, I<val3> は無視される。"
659
660 #. type: Plain text
661 #: build/C/man2/futex.2:172
662 msgid ""
663 "To prevent race conditions, the caller should test if the futex has been "
664 "upped after B<FUTEX_FD> returns."
665 msgstr ""
666 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
667 "up されたかどうかを確認しなければならない。"
668
669 #. type: Plain text
670 #: build/C/man2/futex.2:176
671 msgid ""
672 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
673 "2.6.26 onward."
674 msgstr ""
675 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
676 "ている。"
677
678 #. type: TP
679 #: build/C/man2/futex.2:176
680 #, no-wrap
681 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
682 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
683
684 #. type: Plain text
685 #: build/C/man2/futex.2:191
686 msgid ""
687 "This operation was introduced in order to avoid a \"thundering herd\" effect "
688 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
689 "another futex.  This call wakes up I<val> processes, and requeues all other "
690 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
691 "I<val3> are ignored."
692 msgstr ""
693 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
694 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
695 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
696 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
697 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
698
699 #. type: TP
700 #: build/C/man2/futex.2:191
701 #, no-wrap
702 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
703 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
704
705 #. type: Plain text
706 #: build/C/man2/futex.2:209
707 msgid ""
708 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
709 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
710 "but first checks whether the location I<uaddr> still contains the value "
711 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
712 "argument I<timeout> is ignored."
713 msgstr ""
714 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
715 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
716 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
717 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
718
719 #. type: Plain text
720 #: build/C/man2/futex.2:216
721 #, fuzzy
722 #| msgid ""
723 #| "In the event of an error, all operations return -1, and set I<errno> to "
724 #| "indicate the error."
725 msgid ""
726 "In the event of an error, all operations return -1, and set I<errno> to "
727 "indicate the error.  The return value on success depends on the operation, "
728 "as described in the following list:"
729 msgstr ""
730 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
731 "される。"
732
733 #. type: Plain text
734 #: build/C/man2/futex.2:222
735 msgid ""
736 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
737 "the various possible error returns."
738 msgstr ""
739
740 #. type: Plain text
741 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
742 msgid "Returns the number of processes woken up."
743 msgstr "wake したプロセスの数を返す。"
744
745 #. type: TP
746 #: build/C/man2/futex.2:225
747 #, no-wrap
748 msgid "B<FUTEX_FD>"
749 msgstr "B<FUTEX_FD>"
750
751 #. type: Plain text
752 #: build/C/man2/futex.2:228
753 msgid "Returns the new file descriptor associated with the futex."
754 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
755
756 #. type: TP
757 #: build/C/man2/futex.2:228
758 #, no-wrap
759 msgid "B<FUTEX_REQUEUE>"
760 msgstr "B<FUTEX_REQUEUE>"
761
762 #. type: TP
763 #: build/C/man2/futex.2:231
764 #, no-wrap
765 msgid "B<FUTEX_CMP_REQUEUE>"
766 msgstr "B<FUTEX_CMP_REQUEUE>"
767
768 #. type: TP
769 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
770 #, no-wrap
771 msgid "B<EACCES>"
772 msgstr "B<EACCES>"
773
774 #. type: Plain text
775 #: build/C/man2/futex.2:238
776 msgid "No read access to futex memory."
777 msgstr "futex メモリに読み込みアクセス権がなかった。"
778
779 #. type: TP
780 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
781 #, no-wrap
782 msgid "B<EAGAIN>"
783 msgstr "B<EAGAIN>"
784
785 #. type: Plain text
786 #: build/C/man2/futex.2:249
787 #, fuzzy
788 #| msgid ""
789 #| "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
790 #| "indicates a race; use the safe B<FUTEX_WAKE> now.)"
791 msgid ""
792 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
793 "equal to the expected value I<val3>.  (This probably indicates a race; use "
794 "the safe B<FUTEX_WAKE> now.)"
795 msgstr ""
796 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
797 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
798
799 #. type: Plain text
800 #: build/C/man2/futex.2:254
801 #, fuzzy
802 #| msgid "Error in getting I<timeout> information from userspace."
803 msgid "Error retrieving I<timeout> information from user space."
804 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
805
806 #. type: TP
807 #: build/C/man2/futex.2:254
808 #, fuzzy, no-wrap
809 #| msgid "B<EIO>"
810 msgid "B<EINTR>"
811 msgstr "B<EIO>"
812
813 #. type: Plain text
814 #: build/C/man2/futex.2:261
815 msgid ""
816 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
817 "a spurious wakeup."
818 msgstr ""
819
820 #. type: Plain text
821 #: build/C/man2/futex.2:264
822 msgid "Invalid argument."
823 msgstr ""
824
825 #. type: TP
826 #: build/C/man2/futex.2:264
827 #, no-wrap
828 msgid "B<ENFILE>"
829 msgstr "B<ENFILE>"
830
831 #. type: Plain text
832 #: build/C/man2/futex.2:267
833 msgid "The system limit on the total number of open files has been reached."
834 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
835
836 #. type: TP
837 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
838 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
839 #: build/C/man2/vm86.2:62
840 #, no-wrap
841 msgid "B<ENOSYS>"
842 msgstr "B<ENOSYS>"
843
844 #. type: Plain text
845 #: build/C/man2/futex.2:271
846 msgid "Invalid operation specified in I<op>."
847 msgstr "I<op> に無効な操作が指定された。"
848
849 #. type: TP
850 #: build/C/man2/futex.2:271
851 #, no-wrap
852 msgid "B<ETIMEDOUT>"
853 msgstr ""
854
855 #. type: Plain text
856 #: build/C/man2/futex.2:276
857 msgid "Timeout during the B<FUTEX_WAIT> operation."
858 msgstr ""
859
860 #. type: TP
861 #: build/C/man2/futex.2:276
862 #, no-wrap
863 msgid "B<EWOULDBLOCK>"
864 msgstr ""
865
866 #. type: Plain text
867 #: build/C/man2/futex.2:286
868 msgid ""
869 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
870 "to the expected value I<val> at the time of the call."
871 msgstr ""
872
873 #. type: SH
874 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
875 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
876 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
877 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
878 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
879 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
880 #: build/C/man2/vmsplice.2:138
881 #, no-wrap
882 msgid "VERSIONS"
883 msgstr "バージョン"
884
885 #. type: Plain text
886 #: build/C/man2/futex.2:296
887 msgid ""
888 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
889 "from what was described above.  A 4-argument system call with the semantics "
890 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
891 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
892 "especially on the s390 architecture."
893 msgstr ""
894 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
895 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
896 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
897 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
898 "上の特別のものである。"
899
900 #. type: Plain text
901 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
902 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
903 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
904 msgid "This system call is Linux-specific."
905 msgstr "このシステムコールは Linux 固有である。"
906
907 #.  .SH "AUTHORS"
908 #.  .PP
909 #.  Futexes were designed and worked on by
910 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
911 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
912 #.  and Rusty Russell (IBM Linux Technology Center).
913 #.  This page written by bert hubert.
914 #. type: Plain text
915 #: build/C/man2/futex.2:312
916 #, fuzzy
917 #| msgid ""
918 #| "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
919 #| "for end-users.  (There is no wrapper function for this system call in "
920 #| "glibc.)  Implementors are expected to be assembly literate and to have "
921 #| "read the sources of the futex userspace library referenced below."
922 msgid ""
923 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
924 "for end-users.  (There is no wrapper function for this system call in "
925 "glibc.)  Implementors are expected to be assembly literate and to have read "
926 "the sources of the futex user-space library referenced below."
927 msgstr ""
928 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
929 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
930 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
931 "ブラリの ソースを読み終えていることが要求される。"
932
933 #. type: Plain text
934 #: build/C/man2/futex.2:314
935 msgid "B<futex>(7)"
936 msgstr "B<futex>(7)"
937
938 #. type: Plain text
939 #: build/C/man2/futex.2:317
940 msgid ""
941 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
942 "of the Ottawa Linux Symposium 2002), online at"
943 msgstr ""
944 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
945 "of the Ottawa Linux Symposium 2002), online at"
946
947 #. type: Plain text
948 #: build/C/man2/futex.2:320
949 #, fuzzy
950 #| msgid "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
951 msgid ""
952 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
953 "E<.UE>"
954 msgstr "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
955
956 #. type: Plain text
957 #: build/C/man2/futex.2:322
958 msgid "Futex example library, futex-*.tar.bz2 at"
959 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
960
961 #. type: Plain text
962 #: build/C/man2/futex.2:325
963 #, fuzzy
964 #| msgid "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
965 msgid ""
966 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
967 "E<.UE>"
968 msgstr "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
969
970 #. type: TH
971 #: build/C/man2/get_robust_list.2:29
972 #, no-wrap
973 msgid "GET_ROBUST_LIST"
974 msgstr ""
975
976 #. type: TH
977 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
978 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
979 #, fuzzy, no-wrap
980 #| msgid "2012-05-03"
981 msgid "2012-07-13"
982 msgstr "2012-05-03"
983
984 #. type: TH
985 #: build/C/man2/get_robust_list.2:29
986 #, no-wrap
987 msgid "Linux System Calls"
988 msgstr ""
989
990 #. type: Plain text
991 #: build/C/man2/get_robust_list.2:32
992 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
993 msgstr ""
994
995 #. type: Plain text
996 #: build/C/man2/get_robust_list.2:36
997 #, no-wrap
998 msgid ""
999 "B<#include E<lt>linux/futex.hE<gt>>\n"
1000 "B<#include E<lt>syscall.hE<gt>>\n"
1001 msgstr ""
1002 "B<#include E<lt>linux/futex.hE<gt>>\n"
1003 "B<#include E<lt>syscall.hE<gt>>\n"
1004
1005 #. type: Plain text
1006 #: build/C/man2/get_robust_list.2:40
1007 #, no-wrap
1008 msgid ""
1009 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
1010 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
1011 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
1012 msgstr ""
1013
1014 #. type: Plain text
1015 #: build/C/man2/get_robust_list.2:44
1016 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
1017 msgstr ""
1018
1019 #. type: Plain text
1020 #: build/C/man2/get_robust_list.2:49
1021 msgid ""
1022 "The robust futex implementation needs to maintain per-thread lists of robust "
1023 "futexes which are unlocked when the thread exits.  These lists are managed "
1024 "in user space; the kernel is only notified about the location of the head of "
1025 "the list."
1026 msgstr ""
1027
1028 #. type: Plain text
1029 #: build/C/man2/get_robust_list.2:65
1030 msgid ""
1031 "The B<get_robust_list>()  system call returns the head of the robust futex "
1032 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1033 "the head of the list for the calling thread is returned.  The list head is "
1034 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1035 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1036 msgstr ""
1037
1038 #. type: Plain text
1039 #: build/C/man2/get_robust_list.2:77
1040 msgid ""
1041 "The B<set_robust_list>()  system call requests the kernel to record the head "
1042 "of the list of robust futexes owned by the calling thread.  The I<head> "
1043 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1044 "(*head)>."
1045 msgstr ""
1046
1047 #. type: Plain text
1048 #: build/C/man2/get_robust_list.2:84
1049 msgid ""
1050 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1051 "when the operation is successful, an error code otherwise."
1052 msgstr ""
1053
1054 #. type: Plain text
1055 #: build/C/man2/get_robust_list.2:88
1056 msgid ""
1057 "The B<set_robust_list>()  system call can fail with the following error:"
1058 msgstr ""
1059
1060 #. type: Plain text
1061 #: build/C/man2/get_robust_list.2:94
1062 msgid ""
1063 "I<len> does not match the size of structure B<struct robust_list_head> "
1064 "expected by kernel."
1065 msgstr ""
1066
1067 #. type: Plain text
1068 #: build/C/man2/get_robust_list.2:98
1069 msgid ""
1070 "The B<get_robust_list>()  system call can fail with the following errors:"
1071 msgstr ""
1072
1073 #. type: Plain text
1074 #: build/C/man2/get_robust_list.2:106
1075 msgid ""
1076 "The calling process does not have permission to see the robust futex list of "
1077 "the thread with the thread ID I<pid>, and does not have the "
1078 "B<CAP_SYS_PTRACE> capability."
1079 msgstr ""
1080
1081 #. type: TP
1082 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1083 #: build/C/man2/ptrace.2:1765 build/C/man2/quotactl.2:461
1084 #: build/C/man2/quotactl.2:504
1085 #, no-wrap
1086 msgid "B<ESRCH>"
1087 msgstr "B<ESRCH>"
1088
1089 #. type: Plain text
1090 #: build/C/man2/get_robust_list.2:111
1091 msgid "No thread with the thread ID I<pid> could be found."
1092 msgstr ""
1093
1094 #. type: Plain text
1095 #: build/C/man2/get_robust_list.2:115
1096 msgid ""
1097 "The head of the robust futex list can't be stored at the location I<head>."
1098 msgstr ""
1099
1100 #. type: Plain text
1101 #: build/C/man2/get_robust_list.2:119
1102 msgid ""
1103 "These system calls were added in Linux 2.6.17.  No library support is "
1104 "provided; use B<syscall>(2)."
1105 msgstr ""
1106 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1107 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1108
1109 #. type: Plain text
1110 #: build/C/man2/get_robust_list.2:124
1111 #, fuzzy
1112 #| msgid ""
1113 #| "These system calls are not needed by normal applications.  No support for "
1114 #| "them is provided in glibc."
1115 msgid ""
1116 "These system calls are not needed by normal applications.  No support for "
1117 "them is provided in glibc.  In the unlikely event that you want to call them "
1118 "directly, use B<syscall>(2)."
1119 msgstr ""
1120 "通常のアプリケーションでは、これらのシステムコールは必要ではない。\n"
1121 "glibc によるサポートは提供されていない。"
1122
1123 #. type: Plain text
1124 #: build/C/man2/get_robust_list.2:128
1125 msgid ""
1126 "A thread can have only one robust futex list; therefore applications that "
1127 "wish to use this functionality should use the robust mutexes provided by "
1128 "glibc."
1129 msgstr ""
1130
1131 #.  .BR pthread_mutexattr_setrobust_np (3)
1132 #. type: Plain text
1133 #: build/C/man2/get_robust_list.2:131
1134 msgid "B<futex>(2)"
1135 msgstr "B<futex>(2)"
1136
1137 #.  http://lwn.net/Articles/172149/
1138 #. type: Plain text
1139 #: build/C/man2/get_robust_list.2:137
1140 msgid ""
1141 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1142 "txt> in the Linux kernel source tree"
1143 msgstr ""
1144
1145 #. type: TH
1146 #: build/C/man2/getunwind.2:27
1147 #, no-wrap
1148 msgid "GETUNWIND"
1149 msgstr ""
1150
1151 #. type: TH
1152 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1153 #, fuzzy, no-wrap
1154 #| msgid "2009-02-20"
1155 msgid "2013-02-13"
1156 msgstr "2009-02-20"
1157
1158 #. type: Plain text
1159 #: build/C/man2/getunwind.2:30
1160 msgid "getunwind - copy the unwind data to caller's buffer"
1161 msgstr ""
1162
1163 #. type: Plain text
1164 #: build/C/man2/getunwind.2:34
1165 #, fuzzy, no-wrap
1166 #| msgid ""
1167 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
1168 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1169 msgid ""
1170 "B<#include E<lt>syscall.hE<gt>>\n"
1171 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1172 msgstr ""
1173 "B<#include E<lt>sys/quota.hE<gt>>\n"
1174 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1175
1176 #. type: Plain text
1177 #: build/C/man2/getunwind.2:36
1178 #, no-wrap
1179 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1180 msgstr ""
1181
1182 #. type: Plain text
1183 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1184 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1185 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1186 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1187 msgstr ""
1188
1189 #. type: Plain text
1190 #: build/C/man2/getunwind.2:42
1191 msgid "I<Note: this function is obsolete.>"
1192 msgstr ""
1193
1194 #. type: Plain text
1195 #: build/C/man2/getunwind.2:52
1196 msgid ""
1197 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1198 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1199 "of the unwind data; this data describes the gate page (kernel code that is "
1200 "mapped into user space)."
1201 msgstr ""
1202
1203 #. type: Plain text
1204 #: build/C/man2/getunwind.2:64
1205 msgid ""
1206 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1207 "copied only if I<buf_size> is greater than or equal to the size of the "
1208 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1209 "call succeeds, returning the size that would be needed to store the unwind "
1210 "data."
1211 msgstr ""
1212
1213 #. type: Plain text
1214 #: build/C/man2/getunwind.2:68
1215 msgid ""
1216 "The first part of the unwind data contains an unwind table.  The rest "
1217 "contains the associated unwind information, in no particular order.  The "
1218 "unwind table contains entries of the following form:"
1219 msgstr ""
1220
1221 #. type: Plain text
1222 #: build/C/man2/getunwind.2:73
1223 #, no-wrap
1224 msgid ""
1225 "\tu64 start;      (64-bit address of start of function)\n"
1226 "\tu64 end;        (64-bit address of end of function)\n"
1227 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1228 msgstr ""
1229
1230 #. type: Plain text
1231 #: build/C/man2/getunwind.2:81
1232 msgid ""
1233 "An entry whose I<start> value is zero indicates the end of the table.  For "
1234 "more information about the format, see the I<IA-64 Software Conventions and "
1235 "Runtime Architecture> manual."
1236 msgstr ""
1237
1238 #. type: Plain text
1239 #: build/C/man2/getunwind.2:88
1240 #, fuzzy
1241 #| msgid ""
1242 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1243 #| "I<errno> is set to indicate the error."
1244 msgid ""
1245 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1246 "is returned and I<errno> is set to indicate the error."
1247 msgstr ""
1248 "成功すると、 B<kexec_load> は 0 を返す。\n"
1249 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1250
1251 #. type: Plain text
1252 #: build/C/man2/getunwind.2:94
1253 msgid ""
1254 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1255 "stored in the space specified by I<buf>."
1256 msgstr ""
1257
1258 #. type: Plain text
1259 #: build/C/man2/getunwind.2:96
1260 #, fuzzy
1261 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1262 msgid "This system call is available since Linux 2.4."
1263 msgstr ""
1264 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1265 "である。"
1266
1267 #. type: Plain text
1268 #: build/C/man2/getunwind.2:99
1269 msgid ""
1270 "This system call is Linux specific, and is available only on the IA-64 "
1271 "architecture."
1272 msgstr ""
1273
1274 #. type: Plain text
1275 #: build/C/man2/getunwind.2:107
1276 msgid ""
1277 "This system call has been deprecated.  The modern way to obtain the kernel's "
1278 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1279 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1280 msgstr ""
1281
1282 #. type: Plain text
1283 #: build/C/man2/getunwind.2:111
1284 #, fuzzy
1285 #| msgid ""
1286 #| "Glibc does not provide a wrapper for this system call; call it using "
1287 #| "B<syscall>(2)."
1288 msgid ""
1289 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1290 "that you want to call it, use B<syscall>(2)."
1291 msgstr ""
1292 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1293 "(2)  を使って呼び出すこと。"
1294
1295 #. type: Plain text
1296 #: build/C/man2/getunwind.2:113
1297 msgid "B<getauxval>(3)"
1298 msgstr ""
1299
1300 #. type: TH
1301 #: build/C/man2/kexec_load.2:26
1302 #, no-wrap
1303 msgid "KEXEC_LOAD"
1304 msgstr "KEXEC_LOAD"
1305
1306 #. type: Plain text
1307 #: build/C/man2/kexec_load.2:29
1308 msgid "kexec_load - load a new kernel for later execution"
1309 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1310
1311 #. type: Plain text
1312 #: build/C/man2/kexec_load.2:31
1313 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1314 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1315
1316 #. type: Plain text
1317 #: build/C/man2/kexec_load.2:33
1318 msgid ""
1319 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1320 ">"
1321 msgstr ""
1322 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1323 ">"
1324
1325 #. type: Plain text
1326 #: build/C/man2/kexec_load.2:36
1327 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1328 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1329
1330 #. type: Plain text
1331 #: build/C/man2/kexec_load.2:44
1332 msgid ""
1333 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1334 "later by B<reboot>(2)."
1335 msgstr ""
1336 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1337 "その後の B<reboot>(2) で実行できるようにする。"
1338
1339 #. type: Plain text
1340 #: build/C/man2/kexec_load.2:50
1341 msgid ""
1342 "The I<flags> argument is a mask whose high-order bits control the operation "
1343 "of the call.  The following values can be specified in I<flags>:"
1344 msgstr ""
1345 "I<flags> 引き数はマスクビットで、\n"
1346 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1347 "I<flags> には以下の値を指定できる。"
1348
1349 #. type: TP
1350 #: build/C/man2/kexec_load.2:50
1351 #, no-wrap
1352 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1353 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1354
1355 #.  FIXME figure out how this is really used
1356 #. type: Plain text
1357 #: build/C/man2/kexec_load.2:54
1358 msgid "Execute the new kernel automatically on a system crash."
1359 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1360
1361 #. type: TP
1362 #: build/C/man2/kexec_load.2:54
1363 #, fuzzy, no-wrap
1364 #| msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
1365 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1366 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.7.27 以降)"
1367
1368 #. type: Plain text
1369 #: build/C/man2/kexec_load.2:64
1370 msgid ""
1371 "Preserve the system hardware and software states before executing the new "
1372 "kernel.  This could be used for system suspend.  This flag is only available "
1373 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
1374 "effective if I<nr_segments> is greater than 0."
1375 msgstr ""
1376 "新しいカーネルを実行する前に、\n"
1377 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1378 "システムの中断時 (suspend) などで使用できる。\n"
1379 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1380 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1381
1382 #. type: Plain text
1383 #: build/C/man2/kexec_load.2:84
1384 msgid ""
1385 "The low-order bits of I<flags> contain the architecture of the to-be-"
1386 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1387 "current architecture, or one of the following architecture constants "
1388 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1389 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1390 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1391 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1392 "the system."
1393 msgstr ""
1394 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1395 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1396 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1397 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1398 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1399 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1400 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1401 "システムの CPU で実行可能なものでなければならない。"
1402
1403 #. type: Plain text
1404 #: build/C/man2/kexec_load.2:98
1405 msgid ""
1406 "The I<entry> argument is the physical entry address in the kernel image.  "
1407 "The I<nr_segments> argument is the number of segments pointed to by the "
1408 "I<segments> pointer.  The I<segments> argument is an array of "
1409 "I<kexec_segment> structures which define the kernel layout:"
1410 msgstr ""
1411 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1412 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1413 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1414 "この構造体によりカーネルの配置が定義される。"
1415
1416 #. type: Plain text
1417 #: build/C/man2/kexec_load.2:107
1418 #, no-wrap
1419 msgid ""
1420 "struct kexec_segment {\n"
1421 "    void   *buf;        /* Buffer in user space */\n"
1422 "    size_t  bufsz;      /* Buffer length in user space */\n"
1423 "    void   *mem;        /* Physical address of kernel */\n"
1424 "    size_t  memsz;      /* Physical address length */\n"
1425 "};\n"
1426 msgstr ""
1427 "struct kexec_segment {\n"
1428 "    void   *buf;        /* Buffer in user space */\n"
1429 "    size_t  bufsz;      /* Buffer length in user space */\n"
1430 "    void   *mem;        /* Physical address of kernel */\n"
1431 "    size_t  memsz;      /* Physical address length */\n"
1432 "};\n"
1433
1434 #.  FIXME elaborate on the following:
1435 #. type: Plain text
1436 #: build/C/man2/kexec_load.2:114
1437 msgid ""
1438 "The kernel image defined by I<segments> is copied from the calling process "
1439 "into previously reserved memory."
1440 msgstr ""
1441 "I<segments> で定義されたカーネルイメージは、\n"
1442 "呼び出したプロセスから予約済みメモリにコピーされる。"
1443
1444 #. type: Plain text
1445 #: build/C/man2/kexec_load.2:121
1446 msgid ""
1447 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1448 "I<errno> is set to indicate the error."
1449 msgstr ""
1450 "成功すると、 B<kexec_load> は 0 を返す。\n"
1451 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1452
1453 #. type: TP
1454 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1455 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:495
1456 #, no-wrap
1457 msgid "B<EBUSY>"
1458 msgstr "B<EBUSY>"
1459
1460 #. type: Plain text
1461 #: build/C/man2/kexec_load.2:126
1462 msgid ""
1463 "Another crash kernel is already being loaded or a crash kernel is already in "
1464 "use."
1465 msgstr ""
1466 "別のクラッシュカーネルがすでにロードされているか、\n"
1467 "クラッシュカーネルがすでに使用されている。"
1468
1469 #.  KEXEC_SEGMENT_MAX == 16
1470 #. type: Plain text
1471 #: build/C/man2/kexec_load.2:133
1472 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1473 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1474
1475 #. type: Plain text
1476 #: build/C/man2/kexec_load.2:138
1477 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1478 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1479
1480 #. type: Plain text
1481 #: build/C/man2/kexec_load.2:142
1482 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1483 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1484
1485 #. type: Plain text
1486 #: build/C/man2/kexec_load.2:149
1487 msgid ""
1488 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1489 "B<syscall>(2)."
1490 msgstr ""
1491 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1492 "B<syscall>(2) を使って呼び出すこと。"
1493
1494 #.  FIXME Andi submitted a patch for this.
1495 #.  Check if it got accepted later.
1496 #. type: Plain text
1497 #: build/C/man2/kexec_load.2:156
1498 #, fuzzy
1499 #| msgid ""
1500 #| "The required constants are in the kernel source file I<linux/kexec.h>, "
1501 #| "which is not currently exported to glibc.  Therefore, these constants "
1502 #| "must be defined manually."
1503 msgid ""
1504 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1505 "which is not currently exported to glibc.  Therefore, these constants must "
1506 "be defined manually."
1507 msgstr ""
1508 "必要な定数はカーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1509 "が、現在のところ glibc には公開されていない。\n"
1510 "そのため、これらの定数は手動で定義しなければならない。"
1511
1512 #. type: Plain text
1513 #: build/C/man2/kexec_load.2:159
1514 msgid ""
1515 "This system call is only available if the kernel was configured with "
1516 "B<CONFIG_KEXEC>."
1517 msgstr ""
1518 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1519 "いる場合にのみ利用できる。"
1520
1521 #. type: Plain text
1522 #: build/C/man2/kexec_load.2:162
1523 msgid "B<reboot>(2), B<syscall>(2)"
1524 msgstr "B<reboot>(2), B<syscall>(2)"
1525
1526 #. type: TH
1527 #: build/C/man2/lookup_dcookie.2:27
1528 #, no-wrap
1529 msgid "LOOKUP_DCOOKIE"
1530 msgstr "LOOKUP_DCOOKIE"
1531
1532 #. type: TH
1533 #: build/C/man2/lookup_dcookie.2:27
1534 #, no-wrap
1535 msgid "2004-06-17"
1536 msgstr "2004-06-17"
1537
1538 #. type: Plain text
1539 #: build/C/man2/lookup_dcookie.2:30
1540 msgid "lookup_dcookie - return a directory entry's path"
1541 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1542
1543 #. type: Plain text
1544 #: build/C/man2/lookup_dcookie.2:32
1545 msgid ""
1546 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1547 ">"
1548 msgstr ""
1549 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1550 ">"
1551
1552 #. type: Plain text
1553 #: build/C/man2/lookup_dcookie.2:38
1554 msgid ""
1555 "Look up the full path of the directory entry specified by the value "
1556 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1557 "particular directory entry.  The buffer given is filled in with the full "
1558 "path of the directory entry."
1559 msgstr ""
1560 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1561 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1562 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1563 "ルパス名が格納される。"
1564
1565 #. type: Plain text
1566 #: build/C/man2/lookup_dcookie.2:43
1567 msgid ""
1568 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1569 "a cookie reference to the directory entry."
1570 msgstr ""
1571 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1572 "リへの cookie 参照を 保持していなければならない。"
1573
1574 #. type: Plain text
1575 #: build/C/man2/lookup_dcookie.2:50
1576 msgid ""
1577 "On success, B<lookup_dcookie>()  returns the length of the path string "
1578 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1579 "appropriately."
1580 msgstr ""
1581 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1582 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1583
1584 #. type: Plain text
1585 #: build/C/man2/lookup_dcookie.2:54
1586 msgid "The buffer was not valid."
1587 msgstr "バッファが有効でなかった。"
1588
1589 #. type: Plain text
1590 #: build/C/man2/lookup_dcookie.2:58
1591 msgid ""
1592 "The kernel has no registered cookie/directory entry mappings at the time of "
1593 "lookup, or the cookie does not refer to a valid directory entry."
1594 msgstr ""
1595 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1596 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1597 "いない。"
1598
1599 #. type: TP
1600 #: build/C/man2/lookup_dcookie.2:58
1601 #, no-wrap
1602 msgid "B<ENAMETOOLONG>"
1603 msgstr "B<ENAMETOOLONG>"
1604
1605 #. type: Plain text
1606 #: build/C/man2/lookup_dcookie.2:61
1607 msgid "The name could not fit in the buffer."
1608 msgstr "名前がバッファに入り切らなかった。"
1609
1610 #. type: TP
1611 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1612 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1613 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1614 #, no-wrap
1615 msgid "B<ENOMEM>"
1616 msgstr "B<ENOMEM>"
1617
1618 #. type: Plain text
1619 #: build/C/man2/lookup_dcookie.2:65
1620 msgid ""
1621 "The kernel could not allocate memory for the temporary buffer holding the "
1622 "path."
1623 msgstr ""
1624 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1625 "かった。"
1626
1627 #. type: Plain text
1628 #: build/C/man2/lookup_dcookie.2:70
1629 msgid ""
1630 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1631 "up cookie values."
1632 msgstr ""
1633 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1634 "持っていない。"
1635
1636 #. type: TP
1637 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1638 #, no-wrap
1639 msgid "B<ERANGE>"
1640 msgstr "B<ERANGE>"
1641
1642 #. type: Plain text
1643 #: build/C/man2/lookup_dcookie.2:73
1644 msgid ""
1645 "The buffer was not large enough to hold the path of the directory entry."
1646 msgstr ""
1647 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1648 "かった。"
1649
1650 #. type: Plain text
1651 #: build/C/man2/lookup_dcookie.2:78
1652 msgid ""
1653 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1654 "2.5.70."
1655 msgstr ""
1656 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1657 "追加された。"
1658
1659 #. type: Plain text
1660 #: build/C/man2/lookup_dcookie.2:81
1661 msgid "B<lookup_dcookie>()  is Linux-specific."
1662 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1663
1664 #. type: Plain text
1665 #: build/C/man2/lookup_dcookie.2:85
1666 msgid ""
1667 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1668 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1669 "for directory entries."
1670 msgstr ""
1671 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1672 "oprofile profiler で 使われているだけである。"
1673
1674 #. type: Plain text
1675 #: build/C/man2/lookup_dcookie.2:88
1676 msgid ""
1677 "The path returned may be suffixed by the string \" (deleted)\" if the "
1678 "directory entry has been removed."
1679 msgstr ""
1680 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1681 "\" (deleted)\" という文字列が付加されることがある。"
1682
1683 #. type: TH
1684 #: build/C/man2/modify_ldt.2:24
1685 #, no-wrap
1686 msgid "MODIFY_LDT"
1687 msgstr "MODIFY_LDT"
1688
1689 #. type: Plain text
1690 #: build/C/man2/modify_ldt.2:27
1691 msgid "modify_ldt - get or set ldt"
1692 msgstr "modify_ldt - ldt を設定または取得する"
1693
1694 #. type: Plain text
1695 #: build/C/man2/modify_ldt.2:30
1696 #, no-wrap
1697 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1698 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1699
1700 #. type: Plain text
1701 #: build/C/man2/modify_ldt.2:32
1702 #, no-wrap
1703 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1704 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1705
1706 #. type: Plain text
1707 #: build/C/man2/modify_ldt.2:41
1708 msgid ""
1709 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1710 "process.  The ldt is a per-process memory management table used by the i386 "
1711 "processor.  For more information on this table, see an Intel 386 processor "
1712 "handbook."
1713 msgstr ""
1714 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1715 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1716 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1717 "は Intel 386 processor handbook を 参照すること。"
1718
1719 #. type: Plain text
1720 #: build/C/man2/modify_ldt.2:51
1721 msgid ""
1722 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1723 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1724 "actual size of the ldt."
1725 msgstr ""
1726 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1727 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1728 "である。"
1729
1730 #.  FIXME ? say something about func == 2 and func == 0x11?
1731 #.  In Linux 2.4, func == 2 returned "the default ldt"
1732 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1733 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1734 #. type: Plain text
1735 #: build/C/man2/modify_ldt.2:69
1736 msgid ""
1737 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1738 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1739 "structure."
1740 msgstr ""
1741 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1742 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1743 "くなければならない。"
1744
1745 #. type: Plain text
1746 #: build/C/man2/modify_ldt.2:73
1747 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1748 msgstr ""
1749 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1750
1751 #. type: Plain text
1752 #: build/C/man2/modify_ldt.2:87
1753 #, no-wrap
1754 msgid ""
1755 "struct user_desc {\n"
1756 "    unsigned int  entry_number;\n"
1757 "    unsigned long base_addr;\n"
1758 "    unsigned int  limit;\n"
1759 "    unsigned int  seg_32bit:1;\n"
1760 "    unsigned int  contents:2;\n"
1761 "    unsigned int  read_exec_only:1;\n"
1762 "    unsigned int  limit_in_pages:1;\n"
1763 "    unsigned int  seg_not_present:1;\n"
1764 "    unsigned int  useable:1;\n"
1765 "};\n"
1766 msgstr ""
1767 "struct user_desc {\n"
1768 "    unsigned int  entry_number;\n"
1769 "    unsigned long base_addr;\n"
1770 "    unsigned int  limit;\n"
1771 "    unsigned int  seg_32bit:1;\n"
1772 "    unsigned int  contents:2;\n"
1773 "    unsigned int  read_exec_only:1;\n"
1774 "    unsigned int  limit_in_pages:1;\n"
1775 "    unsigned int  seg_not_present:1;\n"
1776 "    unsigned int  useable:1;\n"
1777 "};\n"
1778
1779 #.  .PP
1780 #.  The ldt is specific for the calling process. Any attempts to change
1781 #.  the ldt to include the address space of another process or the kernel
1782 #.  will result in a segmentation violation when trying to access the memory
1783 #.  outside of the process address space. The memory protection is enforced
1784 #.  at the paging layer.
1785 #. type: Plain text
1786 #: build/C/man2/modify_ldt.2:98
1787 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1788 msgstr ""
1789 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1790
1791 #. type: Plain text
1792 #: build/C/man2/modify_ldt.2:108
1793 msgid ""
1794 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1795 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1796 "and sets I<errno> to indicate the error."
1797 msgstr ""
1798 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1799 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1800 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1801
1802 #. type: Plain text
1803 #: build/C/man2/modify_ldt.2:113
1804 msgid "I<ptr> points outside the address space."
1805 msgstr "I<ptr> がアドレス空間の外を指している。"
1806
1807 #. type: Plain text
1808 #: build/C/man2/modify_ldt.2:126
1809 msgid ""
1810 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1811 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1812 "invalid values."
1813 msgstr ""
1814 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1815 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1816 "エントリが無効な値である。"
1817
1818 #. type: Plain text
1819 #: build/C/man2/modify_ldt.2:130
1820 msgid "I<func> is neither 0 nor 1."
1821 msgstr "I<func> が 0 でも 1 でもない。"
1822
1823 #. type: Plain text
1824 #: build/C/man2/modify_ldt.2:133
1825 msgid ""
1826 "This call is Linux-specific and should not be used in programs intended to "
1827 "be portable."
1828 msgstr ""
1829 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1830 "い。"
1831
1832 #. type: Plain text
1833 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1834 #: build/C/man2/pivot_root.2:134
1835 msgid ""
1836 "Glibc does not provide a wrapper for this system call; call it using "
1837 "B<syscall>(2)."
1838 msgstr ""
1839 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1840 "(2)  を使って呼び出すこと。"
1841
1842 #. type: Plain text
1843 #: build/C/man2/modify_ldt.2:138
1844 msgid "B<vm86>(2)"
1845 msgstr "B<vm86>(2)"
1846
1847 #. type: TH
1848 #: build/C/man2/nfsservctl.2:8
1849 #, no-wrap
1850 msgid "NFSSERVCTL"
1851 msgstr "NFSSERVCTL"
1852
1853 #. type: TH
1854 #: build/C/man2/nfsservctl.2:8
1855 #, no-wrap
1856 msgid "2012-03-05"
1857 msgstr "2012-03-05"
1858
1859 #. type: Plain text
1860 #: build/C/man2/nfsservctl.2:11
1861 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1862 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1863
1864 #. type: Plain text
1865 #: build/C/man2/nfsservctl.2:14
1866 #, no-wrap
1867 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1868 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1869
1870 #. type: Plain text
1871 #: build/C/man2/nfsservctl.2:17
1872 #, no-wrap
1873 msgid ""
1874 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1875 "B<                union nfsctl_res *>I<resp>B<);>\n"
1876 msgstr ""
1877 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1878 "B<                union nfsctl_res *>I<resp>B<);>\n"
1879
1880 #. type: Plain text
1881 #: build/C/man2/nfsservctl.2:21
1882 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1883 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1884
1885 #. type: Plain text
1886 #: build/C/man2/nfsservctl.2:33
1887 #, no-wrap
1888 msgid ""
1889 "/*\n"
1890 " * These are the commands understood by nfsctl().\n"
1891 " */\n"
1892 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1893 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1894 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1895 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1896 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1897 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1898 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1899 msgstr ""
1900 "/*\n"
1901 " * nfsctl() によって理解されるコマンド\n"
1902 " */\n"
1903 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1904 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1905 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1906 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1907 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1908 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1909 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1910
1911 #. type: Plain text
1912 #: build/C/man2/nfsservctl.2:45
1913 #, no-wrap
1914 msgid ""
1915 "struct nfsctl_arg {\n"
1916 "    int                       ca_version;     /* safeguard */\n"
1917 "    union {\n"
1918 "        struct nfsctl_svc     u_svc;\n"
1919 "        struct nfsctl_client  u_client;\n"
1920 "        struct nfsctl_export  u_export;\n"
1921 "        struct nfsctl_uidmap  u_umap;\n"
1922 "        struct nfsctl_fhparm  u_getfh;\n"
1923 "        unsigned int          u_debug;\n"
1924 "    } u;\n"
1925 "}\n"
1926 msgstr ""
1927 "struct nfsctl_arg {\n"
1928 "    int                       ca_version;     /* safeguard */\n"
1929 "    union {\n"
1930 "        struct nfsctl_svc     u_svc;\n"
1931 "        struct nfsctl_client  u_client;\n"
1932 "        struct nfsctl_export  u_export;\n"
1933 "        struct nfsctl_uidmap  u_umap;\n"
1934 "        struct nfsctl_fhparm  u_getfh;\n"
1935 "        unsigned int          u_debug;\n"
1936 "    } u;\n"
1937 "}\n"
1938
1939 #. type: Plain text
1940 #: build/C/man2/nfsservctl.2:50
1941 #, no-wrap
1942 msgid ""
1943 "union nfsctl_res {\n"
1944 "        struct knfs_fh          cr_getfh;\n"
1945 "        unsigned int            cr_debug;\n"
1946 "};\n"
1947 msgstr ""
1948 "union nfsctl_res {\n"
1949 "        struct knfs_fh          cr_getfh;\n"
1950 "        unsigned int            cr_debug;\n"
1951 "};\n"
1952
1953 #. type: Plain text
1954 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1955 #: build/C/man2/vm86.2:57
1956 msgid ""
1957 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1958 "appropriately."
1959 msgstr ""
1960 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1961 "定される。"
1962
1963 #. type: Plain text
1964 #: build/C/man2/nfsservctl.2:58
1965 msgid "This call is Linux-specific."
1966 msgstr "このコールは Linux 特有である。"
1967
1968 #. type: TH
1969 #: build/C/man2/outb.2:26
1970 #, no-wrap
1971 msgid "OUTB"
1972 msgstr "OUTB"
1973
1974 #. type: TH
1975 #: build/C/man2/outb.2:26
1976 #, fuzzy, no-wrap
1977 #| msgid "2012-05-03"
1978 msgid "2012-12-31"
1979 msgstr "2012-05-03"
1980
1981 #. type: Plain text
1982 #: build/C/man2/outb.2:31
1983 msgid ""
1984 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1985 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1986 msgstr ""
1987 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1988 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1989
1990 #. type: Plain text
1991 #: build/C/man2/outb.2:34
1992 #, fuzzy, no-wrap
1993 #| msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
1994 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1995 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
1996
1997 #. type: Plain text
1998 #: build/C/man2/outb.2:41
1999 #, no-wrap
2000 msgid ""
2001 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
2002 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
2003 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
2004 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
2005 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
2006 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2007 msgstr ""
2008
2009 #. type: Plain text
2010 #: build/C/man2/outb.2:48
2011 #, no-wrap
2012 msgid ""
2013 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2014 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2015 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2016 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2017 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2018 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2019 msgstr ""
2020
2021 #. type: Plain text
2022 #: build/C/man2/outb.2:61
2023 #, no-wrap
2024 msgid ""
2025 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2026 "B<           unsigned long int >I<count>B<);>\n"
2027 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2028 "B<           unsigned long int >I<count>B<);>\n"
2029 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2030 "B<           unsigned long int >I<count>B<);>\n"
2031 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2032 "B<           unsigned long int >I<count>B<);>\n"
2033 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2034 "B<           unsigned long int >I<count>B<);>\n"
2035 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2036 "B<           unsigned long int >I<count>B<);>\n"
2037 msgstr ""
2038
2039 #. type: Plain text
2040 #: build/C/man2/outb.2:67
2041 msgid ""
2042 "This family of functions is used to do low-level port input and output.  The "
2043 "out* functions do port output, the in* functions do port input; the b-suffix "
2044 "functions are byte-width and the w-suffix functions word-width; the _p-"
2045 "suffix functions pause until the I/O completes."
2046 msgstr ""
2047 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2048 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2049 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2050 "待つ。"
2051
2052 #.  , given the following information
2053 #.  in addition to that given in
2054 #.  .BR outb (9).
2055 #. type: Plain text
2056 #: build/C/man2/outb.2:73
2057 msgid ""
2058 "They are primarily designed for internal kernel use, but can be used from "
2059 "user space."
2060 msgstr ""
2061 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2062 "ザー空間からでも使用できる。"
2063
2064 #. type: Plain text
2065 #: build/C/man2/outb.2:78
2066 #, fuzzy
2067 #| msgid ""
2068 #| "You compile with B<-O> or B<-O2> or similar.  The functions are defined "
2069 #| "as inline macros, and will not be substituted in without optimization "
2070 #| "enabled, causing unresolved references at link time."
2071 msgid ""
2072 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2073 "as inline macros, and will not be substituted in without optimization "
2074 "enabled, causing unresolved references at link time."
2075 msgstr ""
2076 "B<-O> や B<-O2> などを指定してコンパイルすること。 これらの関数はインライン・"
2077 "マクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンク"
2078 "の時に「解決できない参照(unresolved reference)」が発生する。"
2079
2080 #. type: Plain text
2081 #: build/C/man2/outb.2:87
2082 msgid ""
2083 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2084 "allow the user space application to access the I/O ports in question.  "
2085 "Failure to do this will cause the application to receive a segmentation "
2086 "fault."
2087 msgstr ""
2088 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2089 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2090 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2091 "になる。"
2092
2093 #. type: Plain text
2094 #: build/C/man2/outb.2:96
2095 msgid ""
2096 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2097 "passed first and the I<port> argument is passed second, which is the "
2098 "opposite order from most DOS implementations."
2099 msgstr ""
2100 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2101 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2102 "である。"
2103
2104 #. type: Plain text
2105 #: build/C/man2/outb.2:99
2106 msgid "B<ioperm>(2), B<iopl>(2)"
2107 msgstr "B<ioperm>(2), B<iopl>(2)"
2108
2109 #. type: TH
2110 #: build/C/man2/pciconfig_read.2:8
2111 #, no-wrap
2112 msgid "PCICONFIG_READ"
2113 msgstr "PCICONFIG_READ"
2114
2115 #. type: TH
2116 #: build/C/man2/pciconfig_read.2:8
2117 #, no-wrap
2118 msgid "2003-07-14"
2119 msgstr "2003-07-14"
2120
2121 #. type: Plain text
2122 #: build/C/man2/pciconfig_read.2:11
2123 msgid ""
2124 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2125 "handling"
2126 msgstr ""
2127 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2128
2129 #. type: Plain text
2130 #: build/C/man2/pciconfig_read.2:14
2131 #, no-wrap
2132 msgid "B<#include E<lt>pci.hE<gt>>\n"
2133 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2134
2135 #. type: Plain text
2136 #: build/C/man2/pciconfig_read.2:21
2137 #, no-wrap
2138 msgid ""
2139 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2140 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2141 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2142 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2143 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2144 "B<          unsigned long >I<devfn>B<);>\n"
2145 msgstr ""
2146 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2147 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2148 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2149 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2150 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2151 "B<          unsigned long >I<devfn>B<);>\n"
2152
2153 #. type: Plain text
2154 #: build/C/man2/pciconfig_read.2:27
2155 #, fuzzy
2156 #| msgid ""
2157 #| "Most of the interaction with PCI devices is already handled by the kernel "
2158 #| "PCI layer, and thus these calls should not normally need to be accessed "
2159 #| "from userspace."
2160 msgid ""
2161 "Most of the interaction with PCI devices is already handled by the kernel "
2162 "PCI layer, and thus these calls should not normally need to be accessed from "
2163 "user space."
2164 msgstr ""
2165 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2166 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2167
2168 #. type: TP
2169 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2170 #, no-wrap
2171 msgid "B<pciconfig_read>()"
2172 msgstr "B<pciconfig_read>()"
2173
2174 #. type: Plain text
2175 #: build/C/man2/pciconfig_read.2:36
2176 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2177 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2178
2179 #. type: TP
2180 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2181 #, no-wrap
2182 msgid "B<pciconfig_write>()"
2183 msgstr "B<pciconfig_write>()"
2184
2185 #. type: Plain text
2186 #: build/C/man2/pciconfig_read.2:45
2187 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2188 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2189
2190 #. type: TP
2191 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2192 #, no-wrap
2193 msgid "B<pciconfig_iobase>()"
2194 msgstr "B<pciconfig_iobase>()"
2195
2196 #. type: Plain text
2197 #: build/C/man2/pciconfig_read.2:50
2198 msgid ""
2199 "You pass it a bus/devfn pair and get a physical address for either the "
2200 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2201 "PIO cycles, or the ISA holes if any."
2202 msgstr ""
2203 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2204 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2205 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2206
2207 #. type: Plain text
2208 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2209 msgid ""
2210 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2211 "appropriately."
2212 msgstr ""
2213 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2214 "定される。"
2215
2216 #. type: Plain text
2217 #: build/C/man2/pciconfig_read.2:77
2218 msgid ""
2219 "Returns information on locations of various I/O regions in physical memory "
2220 "according to the I<which> value.  Values for I<which> are: "
2221 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2222 "B<IOBASE_ISA_MEM>."
2223 msgstr ""
2224 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2225 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2226 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2227
2228 #. type: Plain text
2229 #: build/C/man2/pciconfig_read.2:84
2230 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2231 msgstr ""
2232 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2233 "い。"
2234
2235 #. type: TP
2236 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1745
2237 #: build/C/man2/sendfile.2:134
2238 #, no-wrap
2239 msgid "B<EIO>"
2240 msgstr "B<EIO>"
2241
2242 #. type: Plain text
2243 #: build/C/man2/pciconfig_read.2:87
2244 msgid "I/O error."
2245 msgstr "I/O エラー。"
2246
2247 #. type: TP
2248 #: build/C/man2/pciconfig_read.2:87
2249 #, no-wrap
2250 msgid "B<ENODEV>"
2251 msgstr "B<ENODEV>"
2252
2253 #. type: Plain text
2254 #: build/C/man2/pciconfig_read.2:93
2255 msgid ""
2256 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2257 "could not find a slot."
2258 msgstr ""
2259 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2260 "出しの場合、スロット (slot) が見つからない。"
2261
2262 #. type: Plain text
2263 #: build/C/man2/pciconfig_read.2:98
2264 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2265 msgstr ""
2266 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2267 "いない)。"
2268
2269 #. type: TP
2270 #: build/C/man2/pciconfig_read.2:98
2271 #, no-wrap
2272 msgid "B<EOPNOTSUPP>"
2273 msgstr "B<EOPNOTSUPP>"
2274
2275 #. type: Plain text
2276 #: build/C/man2/pciconfig_read.2:105
2277 msgid ""
2278 "This return value is only valid for B<pciconfig_iobase>().  It is returned "
2279 "if the value for I<which> is invalid."
2280 msgstr ""
2281 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2282 "の値が無効であるときに返される。"
2283
2284 #. type: Plain text
2285 #: build/C/man2/pciconfig_read.2:110
2286 msgid ""
2287 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2288 "B<pciconfig_iobase>()."
2289 msgstr ""
2290 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2291 "B<pciconfig_iobase>()  には適用されない。"
2292
2293 #. type: Plain text
2294 #: build/C/man2/pciconfig_read.2:112
2295 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2296 msgstr ""
2297 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2298 "である。"
2299
2300 #. type: Plain text
2301 #: build/C/man2/pciconfig_read.2:114
2302 msgid "B<capabilities>(7)"
2303 msgstr "B<capabilities>(7)"
2304
2305 #. type: TH
2306 #: build/C/man2/perf_event_open.2:27
2307 #, fuzzy, no-wrap
2308 #| msgid "B<PTRACE_EVENT_CLONE>"
2309 msgid "PERF_EVENT_OPEN"
2310 msgstr "B<PTRACE_EVENT_CLONE>"
2311
2312 #. type: TH
2313 #: build/C/man2/perf_event_open.2:27
2314 #, fuzzy, no-wrap
2315 #| msgid "2012-04-25"
2316 msgid "2013-02-04"
2317 msgstr "2012-04-25"
2318
2319 #. type: Plain text
2320 #: build/C/man2/perf_event_open.2:30
2321 msgid "perf_event_open - set up performance monitoring"
2322 msgstr ""
2323
2324 #. type: Plain text
2325 #: build/C/man2/perf_event_open.2:34
2326 #, fuzzy, no-wrap
2327 #| msgid ""
2328 #| "B<#include E<lt>linux/futex.hE<gt>>\n"
2329 #| "B<#include E<lt>sys/time.hE<gt>>\n"
2330 msgid ""
2331 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2332 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2333 msgstr ""
2334 "B<#include E<lt>linux/futex.hE<gt>>\n"
2335 "B<#include E<lt>sys/time.hE<gt>>\n"
2336
2337 #. type: Plain text
2338 #: build/C/man2/perf_event_open.2:38
2339 #, no-wrap
2340 msgid ""
2341 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2342 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2343 "B<                    unsigned long >I<flags>B<);>\n"
2344 msgstr ""
2345
2346 #. type: Plain text
2347 #: build/C/man2/perf_event_open.2:47
2348 msgid ""
2349 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2350 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2351 "B<fcntl>(2), etc.)."
2352 msgstr ""
2353
2354 #. type: Plain text
2355 #: build/C/man2/perf_event_open.2:55
2356 msgid ""
2357 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2358 "measuring performance information.  Each file descriptor corresponds to one "
2359 "event that is measured; these can be grouped together to measure multiple "
2360 "events simultaneously."
2361 msgstr ""
2362
2363 #. type: Plain text
2364 #: build/C/man2/perf_event_open.2:62
2365 msgid ""
2366 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2367 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2368 "overflows but does continue to exist and maintain its count value."
2369 msgstr ""
2370
2371 #. type: Plain text
2372 #: build/C/man2/perf_event_open.2:76
2373 msgid ""
2374 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2375 "one that is used for counting the aggregate number of events that occur.  In "
2376 "general, counting event results are gathered with a B<read>(2)  call.  A "
2377 "I<sampling> event periodically writes measurements to a buffer that can then "
2378 "be accessed via B<mmap>(2)B<.>"
2379 msgstr ""
2380
2381 #. type: SS
2382 #: build/C/man2/perf_event_open.2:76
2383 #, no-wrap
2384 msgid "Arguments"
2385 msgstr ""
2386
2387 #. type: Plain text
2388 #: build/C/man2/perf_event_open.2:90
2389 msgid ""
2390 "The argument I<pid> allows events to be attached to processes in various "
2391 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2392 "is greater than 0, the process indicated by I<pid> is measured, and if "
2393 "I<pid> is -1, all processes are counted."
2394 msgstr ""
2395
2396 #. type: Plain text
2397 #: build/C/man2/perf_event_open.2:101
2398 msgid ""
2399 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2400 "is greater than or equal to 0, measurements are restricted to the specified "
2401 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2402 msgstr ""
2403
2404 #. type: Plain text
2405 #: build/C/man2/perf_event_open.2:107
2406 msgid ""
2407 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2408 msgstr ""
2409
2410 #. type: Plain text
2411 #: build/C/man2/perf_event_open.2:115
2412 msgid ""
2413 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2414 "that process to whatever CPU the process gets scheduled to.  Per-process "
2415 "events can be created by any user."
2416 msgstr ""
2417
2418 #. type: Plain text
2419 #: build/C/man2/perf_event_open.2:126
2420 msgid ""
2421 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2422 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2423 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2424 msgstr ""
2425
2426 #. type: Plain text
2427 #: build/C/man2/perf_event_open.2:148
2428 msgid ""
2429 "The I<group_fd> argument allows event groups to be created.  An event group "
2430 "has one event which is the group leader.  The leader is created first, with "
2431 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2432 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2433 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2434 "and is considered to be a group with only 1 member.)  An event group is "
2435 "scheduled onto the CPU as a unit: it will only be put onto the CPU if all of "
2436 "the events in the group can be put onto the CPU.  This means that the values "
2437 "of the member events can be meaningfully compared, added, divided (to get "
2438 "ratios), etc., with each other, since they have counted events for the same "
2439 "set of executed instructions."
2440 msgstr ""
2441
2442 #. type: Plain text
2443 #: build/C/man2/perf_event_open.2:152
2444 #, fuzzy
2445 #| msgid "The I<subcmd> value is one of the following:"
2446 msgid "The I<flags> argument takes one of the following values:"
2447 msgstr "I<subcmd> の値は以下のいずれかである"
2448
2449 #. type: TP
2450 #: build/C/man2/perf_event_open.2:152
2451 #, no-wrap
2452 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2453 msgstr ""
2454
2455 #.  FIXME The following sentence is unclear
2456 #.  FIXME So, why is it useful?
2457 #. type: Plain text
2458 #: build/C/man2/perf_event_open.2:159
2459 msgid ""
2460 "This flag allows creating an event as part of an event group but having no "
2461 "group leader.  It is unclear why this is useful."
2462 msgstr ""
2463
2464 #. type: TP
2465 #: build/C/man2/perf_event_open.2:159
2466 #, no-wrap
2467 msgid "B<PERF_FLAG_FD_OUTPUT>"
2468 msgstr ""
2469
2470 #. type: Plain text
2471 #: build/C/man2/perf_event_open.2:162
2472 msgid "This flag re-routes the output from an event to the group leader."
2473 msgstr ""
2474
2475 #. type: TP
2476 #: build/C/man2/perf_event_open.2:162
2477 #, fuzzy, no-wrap
2478 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2479 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2480 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2481
2482 #. type: Plain text
2483 #: build/C/man2/perf_event_open.2:185
2484 msgid ""
2485 "This flag activates per-container system-wide monitoring.  A container is an "
2486 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2487 "memory, etc...).  In this mode, the event is measured only if the thread "
2488 "running on the monitored CPU belongs to the designated container (cgroup).  "
2489 "The cgroup is identified by passing a file descriptor opened on its "
2490 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2491 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2492 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2493 "the I<pid> parameter.  cgroup monitoring is only available for system-wide "
2494 "events and may therefore require extra permissions."
2495 msgstr ""
2496
2497 #. type: Plain text
2498 #: build/C/man2/perf_event_open.2:190
2499 msgid ""
2500 "The I<perf_event_attr> structure provides detailed configuration information "
2501 "for the event being created."
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man2/perf_event_open.2:197
2506 #, no-wrap
2507 msgid ""
2508 "struct perf_event_attr {\n"
2509 "    __u32     type;         /* Type of event */\n"
2510 "    __u32     size;         /* Size of attribute structure */\n"
2511 "    __u64     config;       /* Type-specific configuration */\n"
2512 msgstr ""
2513
2514 #. type: Plain text
2515 #: build/C/man2/perf_event_open.2:202
2516 #, no-wrap
2517 msgid ""
2518 "    union {\n"
2519 "        __u64 sample_period;    /* Period of sampling */\n"
2520 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2521 "    };\n"
2522 msgstr ""
2523
2524 #. type: Plain text
2525 #: build/C/man2/perf_event_open.2:205
2526 #, no-wrap
2527 msgid ""
2528 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2529 "    __u64     read_format;  /* Specifies values returned in read */\n"
2530 msgstr ""
2531
2532 #. type: Plain text
2533 #: build/C/man2/perf_event_open.2:231
2534 #, no-wrap
2535 msgid ""
2536 "    __u64     disabled       : 1,   /* off by default */\n"
2537 "              inherit        : 1,   /* children inherit it */\n"
2538 "              pinned         : 1,   /* must always be on PMU */\n"
2539 "              exclusive      : 1,   /* only group on PMU */\n"
2540 "              exclude_user   : 1,   /* don't count user */\n"
2541 "              exclude_kernel : 1,   /* don't count kernel */\n"
2542 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2543 "              exclude_idle   : 1,   /* don't count when idle */\n"
2544 "              mmap           : 1,   /* include mmap data */\n"
2545 "              comm           : 1,   /* include comm data */\n"
2546 "              freq           : 1,   /* use freq, not period */\n"
2547 "              inherit_stat   : 1,   /* per task counts */\n"
2548 "              enable_on_exec : 1,   /* next exec enables */\n"
2549 "              task           : 1,   /* trace fork/exit */\n"
2550 "              watermark      : 1,   /* wakeup_watermark */\n"
2551 "              precise_ip     : 2,   /* skid constraint */\n"
2552 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2553 "              sample_id_all  : 1,   /* sample_type all events */\n"
2554 "              exclude_host   : 1,   /* don't count in host */\n"
2555 "              exclude_guest  : 1,   /* don't count in guest */\n"
2556 "              exclude_callchain_kernel : 1,\n"
2557 "                                    /* exclude kernel callchains */\n"
2558 "              exclude_callchain_user   : 1,\n"
2559 "\t                            /* exclude user callchains */\n"
2560 "              __reserved_1   : 41;\n"
2561 msgstr ""
2562
2563 #. type: Plain text
2564 #: build/C/man2/perf_event_open.2:236
2565 #, no-wrap
2566 msgid ""
2567 "    union {\n"
2568 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2569 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2570 "    };\n"
2571 msgstr ""
2572
2573 #. type: Plain text
2574 #: build/C/man2/perf_event_open.2:238
2575 #, no-wrap
2576 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2577 msgstr ""
2578
2579 #. type: Plain text
2580 #: build/C/man2/perf_event_open.2:243
2581 #, no-wrap
2582 msgid ""
2583 "    union {\n"
2584 "        __u64 bp_addr;          /* breakpoint address */\n"
2585 "        __u64 config1;          /* extension of config */\n"
2586 "    };\n"
2587 msgstr ""
2588
2589 #. type: Plain text
2590 #: build/C/man2/perf_event_open.2:253
2591 #, no-wrap
2592 msgid ""
2593 "    union {\n"
2594 "        __u64 bp_len;           /* breakpoint length */\n"
2595 "        __u64 config2;          /* extension of config1 */\n"
2596 "    };\n"
2597 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2598 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2599 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2600 "                                   samples */\n"
2601 "    __u32   __reserved_2;       /* Align to u64 */\n"
2602 msgstr ""
2603
2604 #. type: Plain text
2605 #: build/C/man2/perf_event_open.2:255
2606 #, no-wrap
2607 msgid "};\n"
2608 msgstr ""
2609
2610 #. type: Plain text
2611 #: build/C/man2/perf_event_open.2:261
2612 msgid ""
2613 "The fields of the I<perf_event_attr> structure are described in more detail "
2614 "below:"
2615 msgstr ""
2616
2617 #. type: TP
2618 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2619 #, no-wrap
2620 msgid "I<type>"
2621 msgstr ""
2622
2623 #. type: Plain text
2624 #: build/C/man2/perf_event_open.2:265
2625 msgid ""
2626 "This field specifies the overall event type.  It has one of the following "
2627 "values:"
2628 msgstr ""
2629
2630 #. type: TP
2631 #: build/C/man2/perf_event_open.2:266
2632 #, no-wrap
2633 msgid "B<PERF_TYPE_HARDWARE>"
2634 msgstr ""
2635
2636 #. type: Plain text
2637 #: build/C/man2/perf_event_open.2:273
2638 msgid ""
2639 "This indicates one of the \"generalized\" hardware events provided by the "
2640 "kernel.  See the I<config> field definition for more details."
2641 msgstr ""
2642
2643 #. type: TP
2644 #: build/C/man2/perf_event_open.2:273
2645 #, no-wrap
2646 msgid "B<PERF_TYPE_SOFTWARE>"
2647 msgstr ""
2648
2649 #. type: Plain text
2650 #: build/C/man2/perf_event_open.2:277
2651 msgid ""
2652 "This indicates one of the software-defined events provided by the kernel "
2653 "(even if no hardware support is available)."
2654 msgstr ""
2655
2656 #. type: TP
2657 #: build/C/man2/perf_event_open.2:277
2658 #, fuzzy, no-wrap
2659 #| msgid "B<PTRACE_CONT>"
2660 msgid "B<PERF_TYPE_TRACEPOINT>"
2661 msgstr "B<PTRACE_CONT>"
2662
2663 #. type: Plain text
2664 #: build/C/man2/perf_event_open.2:281
2665 msgid ""
2666 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2667 msgstr ""
2668
2669 #. type: TP
2670 #: build/C/man2/perf_event_open.2:281
2671 #, no-wrap
2672 msgid "B<PERF_TYPE_HW_CACHE>"
2673 msgstr ""
2674
2675 #. type: Plain text
2676 #: build/C/man2/perf_event_open.2:287
2677 msgid ""
2678 "This indicates a hardware cache event.  This has a special encoding, "
2679 "described in the I<config> field definition."
2680 msgstr ""
2681
2682 #. type: TP
2683 #: build/C/man2/perf_event_open.2:287
2684 #, no-wrap
2685 msgid "B<PERF_TYPE_RAW>"
2686 msgstr ""
2687
2688 #. type: Plain text
2689 #: build/C/man2/perf_event_open.2:291
2690 msgid ""
2691 "This indicates a \"raw\" implementation-specific event in the I<config> "
2692 "field."
2693 msgstr ""
2694
2695 #. type: TP
2696 #: build/C/man2/perf_event_open.2:291
2697 #, fuzzy, no-wrap
2698 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2699 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2700 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2701
2702 #. type: Plain text
2703 #: build/C/man2/perf_event_open.2:296
2704 msgid ""
2705 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2706 "can be read/write accesses to an address as well as execution of an "
2707 "instruction address."
2708 msgstr ""
2709
2710 #. type: TP
2711 #: build/C/man2/perf_event_open.2:296
2712 #, no-wrap
2713 msgid "dynamic PMU"
2714 msgstr ""
2715
2716 #. type: Plain text
2717 #: build/C/man2/perf_event_open.2:315
2718 msgid ""
2719 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2720 "enable this, a value exported by the kernel can be used in the I<type> field "
2721 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2722 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2723 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2724 "content is an integer that can be used in the I<type> field.  For instance, "
2725 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2726 "CPU PMU, which is usually 4."
2727 msgstr ""
2728
2729 #. type: TP
2730 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2731 #, no-wrap
2732 msgid "I<size>"
2733 msgstr ""
2734
2735 #. type: Plain text
2736 #: build/C/man2/perf_event_open.2:325
2737 msgid ""
2738 "The size of the I<perf_event_attr> structure for forward/backward "
2739 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2740 "the kernel to see the struct size at the time of compilation."
2741 msgstr ""
2742
2743 #. type: Plain text
2744 #: build/C/man2/perf_event_open.2:340
2745 msgid ""
2746 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2747 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2748 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2749 "corresponding to the addition of branch sampling in Linux 3.4.  "
2750 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2751 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2752 msgstr ""
2753
2754 #. type: TP
2755 #: build/C/man2/perf_event_open.2:340
2756 #, no-wrap
2757 msgid "I<config>"
2758 msgstr ""
2759
2760 #. type: Plain text
2761 #: build/C/man2/perf_event_open.2:351
2762 msgid ""
2763 "This specifies which event you want, in conjunction with the I<type> field.  "
2764 "The I<config1> and I<config2> fields are also taken into account in cases "
2765 "where 64 bits is not enough to fully specify the event.  The encoding of "
2766 "these fields are event dependent."
2767 msgstr ""
2768
2769 #. type: Plain text
2770 #: build/C/man2/perf_event_open.2:357
2771 msgid ""
2772 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2773 "counter configuration data; if the most significant bit is unset, the next 7 "
2774 "bits are an event type and the rest of the bits are the event identifier."
2775 msgstr ""
2776
2777 #. type: Plain text
2778 #: build/C/man2/perf_event_open.2:368
2779 msgid ""
2780 "There are various ways to set the I<config> field that are dependent on the "
2781 "value of the previously described I<type> field.  What follows are various "
2782 "possible settings for I<config> separated out by I<type>."
2783 msgstr ""
2784
2785 #. type: Plain text
2786 #: build/C/man2/perf_event_open.2:378
2787 msgid ""
2788 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2789 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2790 "I<config> to one of the following:"
2791 msgstr ""
2792
2793 #. type: TP
2794 #: build/C/man2/perf_event_open.2:379
2795 #, no-wrap
2796 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2797 msgstr ""
2798
2799 #. type: Plain text
2800 #: build/C/man2/perf_event_open.2:383
2801 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2802 msgstr ""
2803
2804 #. type: TP
2805 #: build/C/man2/perf_event_open.2:383
2806 #, no-wrap
2807 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2808 msgstr ""
2809
2810 #. type: Plain text
2811 #: build/C/man2/perf_event_open.2:388
2812 msgid ""
2813 "Retired instructions.  Be careful, these can be affected by various issues, "
2814 "most notably hardware interrupt counts"
2815 msgstr ""
2816
2817 #. type: TP
2818 #: build/C/man2/perf_event_open.2:388
2819 #, no-wrap
2820 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2821 msgstr ""
2822
2823 #. type: Plain text
2824 #: build/C/man2/perf_event_open.2:395
2825 msgid ""
2826 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2827 "may vary depending on your CPU.  This may include prefetches and coherency "
2828 "messages; again this depends on the design of your CPU."
2829 msgstr ""
2830
2831 #. type: TP
2832 #: build/C/man2/perf_event_open.2:395
2833 #, no-wrap
2834 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2835 msgstr ""
2836
2837 #. type: Plain text
2838 #: build/C/man2/perf_event_open.2:402
2839 msgid ""
2840 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2841 "intended to be used in conjunction with the "
2842 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2843 msgstr ""
2844
2845 #. type: TP
2846 #: build/C/man2/perf_event_open.2:402
2847 #, no-wrap
2848 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2849 msgstr ""
2850
2851 #. type: Plain text
2852 #: build/C/man2/perf_event_open.2:407
2853 msgid ""
2854 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2855 "event on AMD processors."
2856 msgstr ""
2857
2858 #. type: TP
2859 #: build/C/man2/perf_event_open.2:407
2860 #, no-wrap
2861 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2862 msgstr ""
2863
2864 #. type: Plain text
2865 #: build/C/man2/perf_event_open.2:410
2866 msgid "Mispredicted branch instructions."
2867 msgstr ""
2868
2869 #. type: TP
2870 #: build/C/man2/perf_event_open.2:410
2871 #, no-wrap
2872 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2873 msgstr ""
2874
2875 #. type: Plain text
2876 #: build/C/man2/perf_event_open.2:413
2877 msgid "Bus cycles, which can be different from total cycles."
2878 msgstr ""
2879
2880 #. type: TP
2881 #: build/C/man2/perf_event_open.2:413
2882 #, fuzzy, no-wrap
2883 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2884 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2885 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2886
2887 #. type: Plain text
2888 #: build/C/man2/perf_event_open.2:416
2889 msgid "Stalled cycles during issue."
2890 msgstr ""
2891
2892 #. type: TP
2893 #: build/C/man2/perf_event_open.2:416
2894 #, no-wrap
2895 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2896 msgstr ""
2897
2898 #. type: Plain text
2899 #: build/C/man2/perf_event_open.2:419
2900 msgid "Stalled cycles during retirement."
2901 msgstr ""
2902
2903 #. type: TP
2904 #: build/C/man2/perf_event_open.2:419
2905 #, fuzzy, no-wrap
2906 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2907 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2908 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2909
2910 #. type: Plain text
2911 #: build/C/man2/perf_event_open.2:422
2912 msgid "Total cycles; not affected by CPU frequency scaling."
2913 msgstr ""
2914
2915 #. type: Plain text
2916 #: build/C/man2/perf_event_open.2:432
2917 msgid ""
2918 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2919 "provided by the kernel.  Set I<config> to one of the following:"
2920 msgstr ""
2921
2922 #. type: TP
2923 #: build/C/man2/perf_event_open.2:433
2924 #, no-wrap
2925 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2926 msgstr ""
2927
2928 #. type: Plain text
2929 #: build/C/man2/perf_event_open.2:436
2930 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2931 msgstr ""
2932
2933 #. type: TP
2934 #: build/C/man2/perf_event_open.2:436
2935 #, no-wrap
2936 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2937 msgstr ""
2938
2939 #. type: Plain text
2940 #: build/C/man2/perf_event_open.2:439
2941 msgid "This reports a clock count specific to the task that is running."
2942 msgstr ""
2943
2944 #. type: TP
2945 #: build/C/man2/perf_event_open.2:439
2946 #, no-wrap
2947 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2948 msgstr ""
2949
2950 #. type: Plain text
2951 #: build/C/man2/perf_event_open.2:442
2952 msgid "This reports the number of page faults."
2953 msgstr ""
2954
2955 #. type: TP
2956 #: build/C/man2/perf_event_open.2:442
2957 #, no-wrap
2958 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2959 msgstr ""
2960
2961 #. type: Plain text
2962 #: build/C/man2/perf_event_open.2:447
2963 msgid ""
2964 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2965 "as user-space events, after that they are reported as happening in the "
2966 "kernel."
2967 msgstr ""
2968
2969 #. type: TP
2970 #: build/C/man2/perf_event_open.2:447
2971 #, no-wrap
2972 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2973 msgstr ""
2974
2975 #. type: Plain text
2976 #: build/C/man2/perf_event_open.2:451
2977 msgid "This reports the number of times the process has migrated to a new CPU."
2978 msgstr ""
2979
2980 #. type: TP
2981 #: build/C/man2/perf_event_open.2:451
2982 #, no-wrap
2983 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2984 msgstr ""
2985
2986 #. type: Plain text
2987 #: build/C/man2/perf_event_open.2:455
2988 msgid ""
2989 "This counts the number of minor page faults.  These did not require disk I/O "
2990 "to handle."
2991 msgstr ""
2992
2993 #. type: TP
2994 #: build/C/man2/perf_event_open.2:455
2995 #, no-wrap
2996 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2997 msgstr ""
2998
2999 #. type: Plain text
3000 #: build/C/man2/perf_event_open.2:459
3001 msgid ""
3002 "This counts the number of major page faults.  These required disk I/O to "
3003 "handle."
3004 msgstr ""
3005
3006 #. type: TP
3007 #: build/C/man2/perf_event_open.2:459
3008 #, fuzzy, no-wrap
3009 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3010 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
3011 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3012
3013 #. type: Plain text
3014 #: build/C/man2/perf_event_open.2:465
3015 msgid ""
3016 "This counts the number of alignment faults.  These happen when unaligned "
3017 "memory accesses happen; the kernel can handle these but it reduces "
3018 "performance.  This only happens on some architectures (never on x86)."
3019 msgstr ""
3020
3021 #. type: TP
3022 #: build/C/man2/perf_event_open.2:465
3023 #, fuzzy, no-wrap
3024 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3025 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
3026 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3027
3028 #. type: Plain text
3029 #: build/C/man2/perf_event_open.2:471
3030 msgid ""
3031 "This counts the number of emulation faults.  The kernel sometimes traps on "
3032 "unimplemented instructions and emulates them for user space.  This can "
3033 "negatively impact performance."
3034 msgstr ""
3035
3036 #. type: Plain text
3037 #: build/C/man2/perf_event_open.2:484
3038 msgid ""
3039 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3040 "tracepoints.  The value to use in I<config> can be obtained from under "
3041 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3042 msgstr ""
3043
3044 #. type: Plain text
3045 #: build/C/man2/perf_event_open.2:495
3046 msgid ""
3047 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3048 "cache event.  To calculate the appropriate I<config> value use the following "
3049 "equation:"
3050 msgstr ""
3051
3052 #. type: Plain text
3053 #: build/C/man2/perf_event_open.2:500
3054 #, no-wrap
3055 msgid ""
3056 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3057 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3058 msgstr ""
3059
3060 #. type: Plain text
3061 #: build/C/man2/perf_event_open.2:505
3062 msgid "where I<perf_hw_cache_id> is one of:"
3063 msgstr ""
3064
3065 #. type: TP
3066 #: build/C/man2/perf_event_open.2:506
3067 #, no-wrap
3068 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3069 msgstr ""
3070
3071 #. type: Plain text
3072 #: build/C/man2/perf_event_open.2:509
3073 msgid "for measuring Level 1 Data Cache"
3074 msgstr ""
3075
3076 #. type: TP
3077 #: build/C/man2/perf_event_open.2:509
3078 #, no-wrap
3079 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3080 msgstr ""
3081
3082 #. type: Plain text
3083 #: build/C/man2/perf_event_open.2:512
3084 msgid "for measuring Level 1 Instruction Cache"
3085 msgstr ""
3086
3087 #. type: TP
3088 #: build/C/man2/perf_event_open.2:512
3089 #, no-wrap
3090 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3091 msgstr ""
3092
3093 #. type: Plain text
3094 #: build/C/man2/perf_event_open.2:515
3095 msgid "for measuring Last-Level Cache"
3096 msgstr ""
3097
3098 #. type: TP
3099 #: build/C/man2/perf_event_open.2:515
3100 #, no-wrap
3101 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3102 msgstr ""
3103
3104 #. type: Plain text
3105 #: build/C/man2/perf_event_open.2:518
3106 msgid "for measuring the Data TLB"
3107 msgstr ""
3108
3109 #. type: TP
3110 #: build/C/man2/perf_event_open.2:518
3111 #, no-wrap
3112 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3113 msgstr ""
3114
3115 #. type: Plain text
3116 #: build/C/man2/perf_event_open.2:521
3117 msgid "for measuring the Instruction TLB"
3118 msgstr ""
3119
3120 #. type: TP
3121 #: build/C/man2/perf_event_open.2:521
3122 #, no-wrap
3123 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3124 msgstr ""
3125
3126 #. type: Plain text
3127 #: build/C/man2/perf_event_open.2:524
3128 msgid "for measuring the branch prediction unit"
3129 msgstr ""
3130
3131 #. type: TP
3132 #: build/C/man2/perf_event_open.2:524
3133 #, fuzzy, no-wrap
3134 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3135 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3136 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3137
3138 #. type: Plain text
3139 #: build/C/man2/perf_event_open.2:527
3140 msgid "for measuring local memory accesses"
3141 msgstr ""
3142
3143 #. type: Plain text
3144 #: build/C/man2/perf_event_open.2:532
3145 msgid "and I<perf_hw_cache_op_id> is one of"
3146 msgstr ""
3147
3148 #. type: TP
3149 #: build/C/man2/perf_event_open.2:533
3150 #, no-wrap
3151 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3152 msgstr ""
3153
3154 #. type: Plain text
3155 #: build/C/man2/perf_event_open.2:536
3156 msgid "for read accesses"
3157 msgstr ""
3158
3159 #. type: TP
3160 #: build/C/man2/perf_event_open.2:536
3161 #, no-wrap
3162 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3163 msgstr ""
3164
3165 #. type: Plain text
3166 #: build/C/man2/perf_event_open.2:539
3167 msgid "for write accesses"
3168 msgstr ""
3169
3170 #. type: TP
3171 #: build/C/man2/perf_event_open.2:539
3172 #, no-wrap
3173 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3174 msgstr ""
3175
3176 #. type: Plain text
3177 #: build/C/man2/perf_event_open.2:542
3178 msgid "for prefetch accesses"
3179 msgstr ""
3180
3181 #. type: Plain text
3182 #: build/C/man2/perf_event_open.2:547
3183 msgid "and I<perf_hw_cache_op_result_id> is one of"
3184 msgstr ""
3185
3186 #. type: TP
3187 #: build/C/man2/perf_event_open.2:548
3188 #, no-wrap
3189 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3190 msgstr ""
3191
3192 #. type: Plain text
3193 #: build/C/man2/perf_event_open.2:551
3194 msgid "to measure accesses"
3195 msgstr ""
3196
3197 #. type: TP
3198 #: build/C/man2/perf_event_open.2:551
3199 #, no-wrap
3200 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3201 msgstr ""
3202
3203 #. type: Plain text
3204 #: build/C/man2/perf_event_open.2:554
3205 msgid "to measure misses"
3206 msgstr ""
3207
3208 #. type: Plain text
3209 #: build/C/man2/perf_event_open.2:572
3210 msgid ""
3211 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3212 "needed.  Most CPUs support events that are not covered by the \"generalized"
3213 "\" events.  These are implementation defined; see your CPU manual (for "
3214 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3215 "Developer Guide).  The libpfm4 library can be used to translate from the "
3216 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3217 "expects in this field."
3218 msgstr ""
3219
3220 #. type: Plain text
3221 #: build/C/man2/perf_event_open.2:581
3222 msgid ""
3223 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3224 "Its parameters are set in other places."
3225 msgstr ""
3226
3227 #. type: TP
3228 #: build/C/man2/perf_event_open.2:582
3229 #, no-wrap
3230 msgid "I<sample_period>, I<sample_freq>"
3231 msgstr ""
3232
3233 #. type: Plain text
3234 #: build/C/man2/perf_event_open.2:594
3235 msgid ""
3236 "A \"sampling\" counter is one that generates an interrupt every N events, "
3237 "where N is given by I<sample_period>.  A sampling counter has "
3238 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3239 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3240 "is recorded on each interrupt."
3241 msgstr ""
3242
3243 #. type: Plain text
3244 #: build/C/man2/perf_event_open.2:604
3245 msgid ""
3246 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3247 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3248 "period to try and achieve the desired rate.  The rate of adjustment is a "
3249 "timer tick."
3250 msgstr ""
3251
3252 #. type: TP
3253 #: build/C/man2/perf_event_open.2:604
3254 #, no-wrap
3255 msgid "I<sample_type>"
3256 msgstr ""
3257
3258 #. type: Plain text
3259 #: build/C/man2/perf_event_open.2:616
3260 msgid ""
3261 "The various bits in this field specify which values to include in the "
3262 "sample.  They will be recorded in a ring-buffer, which is available to user "
3263 "space using B<mmap>(2).  The order in which the values are saved in the "
3264 "sample are documented in the MMAP Layout subsection below; it is not the "
3265 "I<enum perf_event_sample_format> order."
3266 msgstr ""
3267
3268 #. type: TP
3269 #: build/C/man2/perf_event_open.2:617
3270 #, no-wrap
3271 msgid "B<PERF_SAMPLE_IP>"
3272 msgstr ""
3273
3274 #. type: Plain text
3275 #: build/C/man2/perf_event_open.2:620
3276 msgid "Records instruction pointer."
3277 msgstr ""
3278
3279 #. type: TP
3280 #: build/C/man2/perf_event_open.2:620
3281 #, no-wrap
3282 msgid "B<PERF_SAMPLE_TID>"
3283 msgstr ""
3284
3285 #. type: Plain text
3286 #: build/C/man2/perf_event_open.2:623
3287 msgid "Records the process and thread IDs."
3288 msgstr ""
3289
3290 #. type: TP
3291 #: build/C/man2/perf_event_open.2:623
3292 #, no-wrap
3293 msgid "B<PERF_SAMPLE_TIME>"
3294 msgstr ""
3295
3296 #. type: Plain text
3297 #: build/C/man2/perf_event_open.2:626
3298 msgid "Records a timestamp."
3299 msgstr ""
3300
3301 #. type: TP
3302 #: build/C/man2/perf_event_open.2:626
3303 #, no-wrap
3304 msgid "B<PERF_SAMPLE_ADDR>"
3305 msgstr ""
3306
3307 #. type: Plain text
3308 #: build/C/man2/perf_event_open.2:629
3309 msgid "Records an address, if applicable."
3310 msgstr ""
3311
3312 #. type: TP
3313 #: build/C/man2/perf_event_open.2:629
3314 #, no-wrap
3315 msgid "B<PERF_SAMPLE_READ>"
3316 msgstr ""
3317
3318 #. type: Plain text
3319 #: build/C/man2/perf_event_open.2:632
3320 msgid ""
3321 "Record counter values for all events in a group, not just the group leader."
3322 msgstr ""
3323
3324 #. type: TP
3325 #: build/C/man2/perf_event_open.2:632
3326 #, no-wrap
3327 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3328 msgstr ""
3329
3330 #. type: Plain text
3331 #: build/C/man2/perf_event_open.2:635
3332 msgid "Records the callchain (stack backtrace)."
3333 msgstr ""
3334
3335 #. type: TP
3336 #: build/C/man2/perf_event_open.2:635
3337 #, no-wrap
3338 msgid "B<PERF_SAMPLE_ID>"
3339 msgstr ""
3340
3341 #. type: Plain text
3342 #: build/C/man2/perf_event_open.2:638
3343 msgid "Records a unique ID for the opened event's group leader."
3344 msgstr ""
3345
3346 #. type: TP
3347 #: build/C/man2/perf_event_open.2:638
3348 #, no-wrap
3349 msgid "B<PERF_SAMPLE_CPU>"
3350 msgstr ""
3351
3352 #. type: Plain text
3353 #: build/C/man2/perf_event_open.2:641
3354 msgid "Records CPU number."
3355 msgstr ""
3356
3357 #. type: TP
3358 #: build/C/man2/perf_event_open.2:641
3359 #, no-wrap
3360 msgid "B<PERF_SAMPLE_PERIOD>"
3361 msgstr ""
3362
3363 #. type: Plain text
3364 #: build/C/man2/perf_event_open.2:644
3365 msgid "Records the current sampling period."
3366 msgstr ""
3367
3368 #. type: TP
3369 #: build/C/man2/perf_event_open.2:644
3370 #, no-wrap
3371 msgid "B<PERF_SAMPLE_STREAM_ID>"
3372 msgstr ""
3373
3374 #. type: Plain text
3375 #: build/C/man2/perf_event_open.2:651
3376 msgid ""
3377 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3378 "actual ID is returned, not the group leader.  This ID is the same as the one "
3379 "returned by PERF_FORMAT_ID."
3380 msgstr ""
3381
3382 #. type: TP
3383 #: build/C/man2/perf_event_open.2:651
3384 #, no-wrap
3385 msgid "B<PERF_SAMPLE_RAW>"
3386 msgstr ""
3387
3388 #. type: Plain text
3389 #: build/C/man2/perf_event_open.2:655
3390 msgid ""
3391 "Records additional data, if applicable.  Usually returned by tracepoint "
3392 "events."
3393 msgstr ""
3394
3395 #. type: TP
3396 #: build/C/man2/perf_event_open.2:655
3397 #, fuzzy, no-wrap
3398 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3399 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3400 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3401
3402 #. type: Plain text
3403 #: build/C/man2/perf_event_open.2:659
3404 msgid "Records the branch stack.  See branch_sample_type."
3405 msgstr ""
3406
3407 #. type: TP
3408 #: build/C/man2/perf_event_open.2:659
3409 #, fuzzy, no-wrap
3410 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3411 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3412 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3413
3414 #. type: Plain text
3415 #: build/C/man2/perf_event_open.2:662
3416 msgid "Records the current register state."
3417 msgstr ""
3418
3419 #. type: TP
3420 #: build/C/man2/perf_event_open.2:662
3421 #, fuzzy, no-wrap
3422 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3423 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3424 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3425
3426 #. type: Plain text
3427 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3428 #: build/C/man2/perf_event_open.2:1803
3429 msgid "[To be documented]"
3430 msgstr ""
3431
3432 #. type: TP
3433 #: build/C/man2/perf_event_open.2:666
3434 #, no-wrap
3435 msgid "I<read_format>"
3436 msgstr ""
3437
3438 #. type: Plain text
3439 #: build/C/man2/perf_event_open.2:673
3440 msgid ""
3441 "This field specifies the format of the data returned by B<read>(2)  on a "
3442 "B<perf_event_open>()  file descriptor."
3443 msgstr ""
3444
3445 #. type: TP
3446 #: build/C/man2/perf_event_open.2:674
3447 #, no-wrap
3448 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3449 msgstr ""
3450
3451 #. type: Plain text
3452 #: build/C/man2/perf_event_open.2:681
3453 msgid ""
3454 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3455 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3456 msgstr ""
3457
3458 #. type: TP
3459 #: build/C/man2/perf_event_open.2:681
3460 #, no-wrap
3461 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3462 msgstr ""
3463
3464 #. type: Plain text
3465 #: build/C/man2/perf_event_open.2:688
3466 msgid ""
3467 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3468 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3469 msgstr ""
3470
3471 #. type: TP
3472 #: build/C/man2/perf_event_open.2:688
3473 #, no-wrap
3474 msgid "B<PERF_FORMAT_ID>"
3475 msgstr ""
3476
3477 #. type: Plain text
3478 #: build/C/man2/perf_event_open.2:691
3479 msgid "Adds a 64-bit unique value that corresponds to the event group."
3480 msgstr ""
3481
3482 #. type: TP
3483 #: build/C/man2/perf_event_open.2:691
3484 #, no-wrap
3485 msgid "B<PERF_FORMAT_GROUP>"
3486 msgstr ""
3487
3488 #. type: Plain text
3489 #: build/C/man2/perf_event_open.2:694
3490 msgid "Allows all counter values in an event group to be read with one read."
3491 msgstr ""
3492
3493 #. type: TP
3494 #: build/C/man2/perf_event_open.2:695
3495 #, no-wrap
3496 msgid "I<disabled>"
3497 msgstr ""
3498
3499 #. type: Plain text
3500 #: build/C/man2/perf_event_open.2:705
3501 msgid ""
3502 "The I<disabled> bit specifies whether the counter starts out disabled or "
3503 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3504 "B<prctl>(2), or I<enable_on_exec>."
3505 msgstr ""
3506
3507 #. type: TP
3508 #: build/C/man2/perf_event_open.2:705
3509 #, no-wrap
3510 msgid "I<inherit>"
3511 msgstr ""
3512
3513 #. type: Plain text
3514 #: build/C/man2/perf_event_open.2:714
3515 msgid ""
3516 "The I<inherit> bit specifies that this counter should count events of child "
3517 "tasks as well as the task specified.  This only applies to new children, not "
3518 "to any existing children at the time the counter is created (nor to any new "
3519 "children of existing children)."
3520 msgstr ""
3521
3522 #. type: Plain text
3523 #: build/C/man2/perf_event_open.2:719
3524 msgid ""
3525 "Inherit does not work for some combinations of I<read_format>s, such as "
3526 "B<PERF_FORMAT_GROUP>."
3527 msgstr ""
3528
3529 #. type: TP
3530 #: build/C/man2/perf_event_open.2:719
3531 #, no-wrap
3532 msgid "I<pinned>"
3533 msgstr ""
3534
3535 #. type: Plain text
3536 #: build/C/man2/perf_event_open.2:732
3537 msgid ""
3538 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3539 "at all possible.  It only applies to hardware counters and only to group "
3540 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3541 "there are not enough hardware counters or because of a conflict with some "
3542 "other event), then the counter goes into an 'error' state, where reads "
3543 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3544 "subsequently enabled or disabled."
3545 msgstr ""
3546
3547 #. type: TP
3548 #: build/C/man2/perf_event_open.2:732
3549 #, no-wrap
3550 msgid "I<exclusive>"
3551 msgstr ""
3552
3553 #. type: Plain text
3554 #: build/C/man2/perf_event_open.2:741
3555 msgid ""
3556 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3557 "it should be the only group using the CPU's counters.  In the future this "
3558 "may allow monitoring programs to support PMU features that need to run alone "
3559 "so that they do not disrupt other hardware counters."
3560 msgstr ""
3561
3562 #. type: TP
3563 #: build/C/man2/perf_event_open.2:741
3564 #, no-wrap
3565 msgid "I<exclude_user>"
3566 msgstr ""
3567
3568 #. type: Plain text
3569 #: build/C/man2/perf_event_open.2:744
3570 msgid ""
3571 "If this bit is set, the count excludes events that happen in user space."
3572 msgstr ""
3573
3574 #. type: TP
3575 #: build/C/man2/perf_event_open.2:744
3576 #, no-wrap
3577 msgid "I<exclude_kernel>"
3578 msgstr ""
3579
3580 #. type: Plain text
3581 #: build/C/man2/perf_event_open.2:747
3582 msgid ""
3583 "If this bit is set, the count excludes events that happen in kernel-space."
3584 msgstr ""
3585
3586 #. type: TP
3587 #: build/C/man2/perf_event_open.2:747
3588 #, no-wrap
3589 msgid "I<exclude_hv>"
3590 msgstr ""
3591
3592 #. type: Plain text
3593 #: build/C/man2/perf_event_open.2:755
3594 msgid ""
3595 "If this bit is set, the count excludes events that happen in the "
3596 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3597 "this (such as POWER).  Extra support is needed for handling hypervisor "
3598 "measurements on most machines."
3599 msgstr ""
3600
3601 #. type: TP
3602 #: build/C/man2/perf_event_open.2:755
3603 #, no-wrap
3604 msgid "I<exclude_idle>"
3605 msgstr ""
3606
3607 #. type: Plain text
3608 #: build/C/man2/perf_event_open.2:758
3609 msgid "If set, don't count when the CPU is idle."
3610 msgstr ""
3611
3612 #. type: TP
3613 #: build/C/man2/perf_event_open.2:758
3614 #, no-wrap
3615 msgid "I<mmap>"
3616 msgstr ""
3617
3618 #. type: Plain text
3619 #: build/C/man2/perf_event_open.2:763
3620 msgid "The I<mmap> bit enables recording of exec mmap events."
3621 msgstr ""
3622
3623 #. type: TP
3624 #: build/C/man2/perf_event_open.2:763
3625 #, no-wrap
3626 msgid "I<comm>"
3627 msgstr ""
3628
3629 #. type: Plain text
3630 #: build/C/man2/perf_event_open.2:774
3631 msgid ""
3632 "The I<comm> bit enables tracking of process command name as modified by the "
3633 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3634 "tools, there is no way to distinguish one system call versus the other."
3635 msgstr ""
3636
3637 #. type: TP
3638 #: build/C/man2/perf_event_open.2:774
3639 #, no-wrap
3640 msgid "I<freq>"
3641 msgstr ""
3642
3643 #. type: Plain text
3644 #: build/C/man2/perf_event_open.2:781
3645 msgid ""
3646 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3647 "when setting up the sampling interval."
3648 msgstr ""
3649
3650 #. type: TP
3651 #: build/C/man2/perf_event_open.2:781
3652 #, no-wrap
3653 msgid "I<inherit_stat>"
3654 msgstr ""
3655
3656 #. type: Plain text
3657 #: build/C/man2/perf_event_open.2:788
3658 msgid ""
3659 "This bit enables saving of event counts on context switch for inherited "
3660 "tasks.  This is only meaningful if the I<inherit> field is set."
3661 msgstr ""
3662
3663 #. type: TP
3664 #: build/C/man2/perf_event_open.2:788
3665 #, no-wrap
3666 msgid "I<enable_on_exec>"
3667 msgstr ""
3668
3669 #. type: Plain text
3670 #: build/C/man2/perf_event_open.2:793
3671 msgid ""
3672 "If this bit is set, a counter is automatically enabled after a call to "
3673 "B<exec>(2)."
3674 msgstr ""
3675
3676 #. type: TP
3677 #: build/C/man2/perf_event_open.2:793
3678 #, no-wrap
3679 msgid "I<task>"
3680 msgstr ""
3681
3682 #. type: Plain text
3683 #: build/C/man2/perf_event_open.2:797
3684 msgid ""
3685 "If this bit is set, then fork/exit notifications are included in the ring "
3686 "buffer."
3687 msgstr ""
3688
3689 #. type: TP
3690 #: build/C/man2/perf_event_open.2:797
3691 #, no-wrap
3692 msgid "I<watermark>"
3693 msgstr ""
3694
3695 #. type: Plain text
3696 #: build/C/man2/perf_event_open.2:805
3697 msgid ""
3698 "If set, have a sampling interrupt happen when we cross the "
3699 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3700 "I<wakeup_events> samples."
3701 msgstr ""
3702
3703 #. type: TP
3704 #: build/C/man2/perf_event_open.2:805
3705 #, fuzzy, no-wrap
3706 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3707 msgid "I<precise_ip> (Since Linux 2.6.35)"
3708 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3709
3710 #. type: Plain text
3711 #: build/C/man2/perf_event_open.2:815
3712 msgid ""
3713 "This controls the amount of skid.  Skid is how many instructions execute "
3714 "between an event of interest happening and the kernel being able to stop and "
3715 "record the event.  Smaller skid is better and allows more accurate reporting "
3716 "of which events correspond to which instructions, but hardware is often "
3717 "limited with how small this can be."
3718 msgstr ""
3719
3720 #. type: Plain text
3721 #: build/C/man2/perf_event_open.2:817
3722 #, fuzzy
3723 #| msgid "The I<subcmd> value is one of the following:"
3724 msgid "The values of this are the following:"
3725 msgstr "I<subcmd> の値は以下のいずれかである"
3726
3727 #. type: TP
3728 #: build/C/man2/perf_event_open.2:818
3729 #, no-wrap
3730 msgid "0 -"
3731 msgstr ""
3732
3733 #. type: Plain text
3734 #: build/C/man2/perf_event_open.2:822
3735 msgid "B<SAMPLE_IP> can have arbitrary skid"
3736 msgstr ""
3737
3738 #. type: TP
3739 #: build/C/man2/perf_event_open.2:822
3740 #, no-wrap
3741 msgid "1 -"
3742 msgstr ""
3743
3744 #. type: Plain text
3745 #: build/C/man2/perf_event_open.2:826
3746 msgid "B<SAMPLE_IP> must have constant skid"
3747 msgstr ""
3748
3749 #. type: TP
3750 #: build/C/man2/perf_event_open.2:826
3751 #, no-wrap
3752 msgid "2 -"
3753 msgstr ""
3754
3755 #. type: Plain text
3756 #: build/C/man2/perf_event_open.2:830
3757 msgid "B<SAMPLE_IP> requested to have 0 skid"
3758 msgstr ""
3759
3760 #. type: TP
3761 #: build/C/man2/perf_event_open.2:830
3762 #, no-wrap
3763 msgid "3 -"
3764 msgstr ""
3765
3766 #. type: Plain text
3767 #: build/C/man2/perf_event_open.2:836
3768 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3769 msgstr ""
3770
3771 #. type: TP
3772 #: build/C/man2/perf_event_open.2:837
3773 #, fuzzy, no-wrap
3774 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3775 msgid "I<mmap_data> (Since Linux 2.6.36)"
3776 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3777
3778 #. type: Plain text
3779 #: build/C/man2/perf_event_open.2:843
3780 msgid ""
3781 "The counterpart of the I<mmap> field, but enables including data mmap events "
3782 "in the ring-buffer."
3783 msgstr ""
3784
3785 #. type: TP
3786 #: build/C/man2/perf_event_open.2:843
3787 #, fuzzy, no-wrap
3788 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3789 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3790 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3791
3792 #. type: Plain text
3793 #: build/C/man2/perf_event_open.2:851
3794 msgid ""
3795 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3796 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3797 "selected."
3798 msgstr ""
3799
3800 #. type: TP
3801 #: build/C/man2/perf_event_open.2:851
3802 #, no-wrap
3803 msgid "I<exclude_host> (Since Linux 3.2)"
3804 msgstr ""
3805
3806 #. type: Plain text
3807 #: build/C/man2/perf_event_open.2:854
3808 msgid "Do not measure time spent in VM host"
3809 msgstr ""
3810
3811 #. type: TP
3812 #: build/C/man2/perf_event_open.2:854
3813 #, no-wrap
3814 msgid "I<exclude_guest> (Since Linux 3.2)"
3815 msgstr ""
3816
3817 #. type: Plain text
3818 #: build/C/man2/perf_event_open.2:857
3819 msgid "Do not measure time spent in VM guest"
3820 msgstr ""
3821
3822 #. type: TP
3823 #: build/C/man2/perf_event_open.2:857
3824 #, no-wrap
3825 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3826 msgstr ""
3827
3828 #. type: Plain text
3829 #: build/C/man2/perf_event_open.2:860
3830 msgid "Do not include kernel callchains."
3831 msgstr ""
3832
3833 #. type: TP
3834 #: build/C/man2/perf_event_open.2:860
3835 #, no-wrap
3836 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3837 msgstr ""
3838
3839 #. type: Plain text
3840 #: build/C/man2/perf_event_open.2:863
3841 msgid "Do not include user callchains."
3842 msgstr ""
3843
3844 #. type: TP
3845 #: build/C/man2/perf_event_open.2:863
3846 #, no-wrap
3847 msgid "I<wakeup_events>, I<wakeup_watermark>"
3848 msgstr ""
3849
3850 #. type: Plain text
3851 #: build/C/man2/perf_event_open.2:873
3852 msgid ""
3853 "This union sets how many samples (I<wakeup_events>)  or bytes "
3854 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3855 "is used is selected by the I<watermark> bitflag."
3856 msgstr ""
3857
3858 #. type: TP
3859 #: build/C/man2/perf_event_open.2:873
3860 #, fuzzy, no-wrap
3861 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3862 msgid "I<bp_type> (Since Linux 2.6.33)"
3863 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3864
3865 #. type: Plain text
3866 #: build/C/man2/perf_event_open.2:877
3867 msgid "This chooses the breakpoint type.  It is one of:"
3868 msgstr ""
3869
3870 #. type: TP
3871 #: build/C/man2/perf_event_open.2:878
3872 #, no-wrap
3873 msgid "B<HW_BREAKPOINT_EMPTY>"
3874 msgstr ""
3875
3876 #. type: Plain text
3877 #: build/C/man2/perf_event_open.2:881
3878 msgid "no breakpoint"
3879 msgstr ""
3880
3881 #. type: TP
3882 #: build/C/man2/perf_event_open.2:881
3883 #, no-wrap
3884 msgid "B<HW_BREAKPOINT_R>"
3885 msgstr ""
3886
3887 #. type: Plain text
3888 #: build/C/man2/perf_event_open.2:884
3889 msgid "count when we read the memory location"
3890 msgstr ""
3891
3892 #. type: TP
3893 #: build/C/man2/perf_event_open.2:884
3894 #, no-wrap
3895 msgid "B<HW_BREAKPOINT_W>"
3896 msgstr ""
3897
3898 #. type: Plain text
3899 #: build/C/man2/perf_event_open.2:887
3900 msgid "count when we write the memory location"
3901 msgstr ""
3902
3903 #. type: TP
3904 #: build/C/man2/perf_event_open.2:887
3905 #, no-wrap
3906 msgid "B<HW_BREAKPOINT_RW>"
3907 msgstr ""
3908
3909 #. type: Plain text
3910 #: build/C/man2/perf_event_open.2:890
3911 msgid "count when we read or write the memory location"
3912 msgstr ""
3913
3914 #. type: TP
3915 #: build/C/man2/perf_event_open.2:890
3916 #, no-wrap
3917 msgid "B<HW_BREAKPOINT_X>"
3918 msgstr ""
3919
3920 #. type: Plain text
3921 #: build/C/man2/perf_event_open.2:893
3922 msgid "count when we execute code at the memory location"
3923 msgstr ""
3924
3925 #. type: Plain text
3926 #: build/C/man2/perf_event_open.2:902
3927 msgid ""
3928 "The values can be combined via a bitwise or, but the combination of "
3929 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3930 "allowed."
3931 msgstr ""
3932
3933 #. type: TP
3934 #: build/C/man2/perf_event_open.2:903
3935 #, fuzzy, no-wrap
3936 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3937 msgid "I<bp_addr> (Since Linux 2.6.33)"
3938 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3939
3940 #. type: Plain text
3941 #: build/C/man2/perf_event_open.2:910
3942 msgid ""
3943 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3944 "memory address of the instruction of interest; for read and write "
3945 "breakpoints it is the memory address of the memory location of interest."
3946 msgstr ""
3947
3948 #. type: TP
3949 #: build/C/man2/perf_event_open.2:910
3950 #, fuzzy, no-wrap
3951 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3952 msgid "I<config1> (Since Linux 2.6.39)"
3953 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3954
3955 #. type: Plain text
3956 #: build/C/man2/perf_event_open.2:917
3957 msgid ""
3958 "I<config1> is used for setting events that need an extra register or "
3959 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3960 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3961 msgstr ""
3962
3963 #. type: TP
3964 #: build/C/man2/perf_event_open.2:917
3965 #, fuzzy, no-wrap
3966 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3967 msgid "I<bp_len> (Since Linux 2.6.33)"
3968 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3969
3970 #. type: Plain text
3971 #: build/C/man2/perf_event_open.2:931
3972 msgid ""
3973 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3974 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3975 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3976 "an execution breakpoint, set this to I<sizeof(long)>."
3977 msgstr ""
3978
3979 #. type: TP
3980 #: build/C/man2/perf_event_open.2:931
3981 #, fuzzy, no-wrap
3982 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3983 msgid "I<config2> (Since Linux 2.6.39)"
3984 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3985
3986 #. type: Plain text
3987 #: build/C/man2/perf_event_open.2:938
3988 msgid "I<config2> is a further extension of the I<config1> field."
3989 msgstr ""
3990
3991 #. type: TP
3992 #: build/C/man2/perf_event_open.2:938
3993 #, no-wrap
3994 msgid "I<branch_sample_type> (Since Linux 3.4)"
3995 msgstr ""
3996
3997 #. type: Plain text
3998 #: build/C/man2/perf_event_open.2:942
3999 msgid ""
4000 "This is used with the CPUs hardware branch sampling, if available.  It can "
4001 "have one of the following values:"
4002 msgstr ""
4003
4004 #. type: TP
4005 #: build/C/man2/perf_event_open.2:943
4006 #, no-wrap
4007 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4008 msgstr ""
4009
4010 #. type: Plain text
4011 #: build/C/man2/perf_event_open.2:946
4012 msgid "Branch target is in user space"
4013 msgstr ""
4014
4015 #. type: TP
4016 #: build/C/man2/perf_event_open.2:946
4017 #, no-wrap
4018 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4019 msgstr ""
4020
4021 #. type: Plain text
4022 #: build/C/man2/perf_event_open.2:949
4023 msgid "Branch target is in kernel space"
4024 msgstr ""
4025
4026 #. type: TP
4027 #: build/C/man2/perf_event_open.2:949
4028 #, no-wrap
4029 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4030 msgstr ""
4031
4032 #. type: Plain text
4033 #: build/C/man2/perf_event_open.2:952
4034 msgid "Branch target is in hypervisor"
4035 msgstr ""
4036
4037 #. type: TP
4038 #: build/C/man2/perf_event_open.2:952
4039 #, no-wrap
4040 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4041 msgstr ""
4042
4043 #. type: Plain text
4044 #: build/C/man2/perf_event_open.2:955
4045 msgid "Any branch type."
4046 msgstr ""
4047
4048 #. type: TP
4049 #: build/C/man2/perf_event_open.2:955
4050 #, no-wrap
4051 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4052 msgstr ""
4053
4054 #. type: Plain text
4055 #: build/C/man2/perf_event_open.2:958
4056 msgid "Any call branch"
4057 msgstr ""
4058
4059 #. type: TP
4060 #: build/C/man2/perf_event_open.2:958
4061 #, no-wrap
4062 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4063 msgstr ""
4064
4065 #. type: Plain text
4066 #: build/C/man2/perf_event_open.2:961
4067 msgid "Any return branch"
4068 msgstr ""
4069
4070 #. type: TP
4071 #: build/C/man2/perf_event_open.2:961
4072 #, no-wrap
4073 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4074 msgstr ""
4075
4076 #. type: Plain text
4077 #: build/C/man2/perf_event_open.2:964
4078 msgid "Indirect calls"
4079 msgstr ""
4080
4081 #. type: TP
4082 #: build/C/man2/perf_event_open.2:964
4083 #, no-wrap
4084 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4085 msgstr ""
4086
4087 #. type: Plain text
4088 #: build/C/man2/perf_event_open.2:967
4089 msgid "User, kernel, and hv"
4090 msgstr ""
4091
4092 #. type: TP
4093 #: build/C/man2/perf_event_open.2:968
4094 #, no-wrap
4095 msgid "I<sample_regs_user> (Since Linux 3.7)"
4096 msgstr ""
4097
4098 #.  FIXME: The following reference seems to be not quite right:
4099 #. type: Plain text
4100 #: build/C/man2/perf_event_open.2:974
4101 msgid ""
4102 "This defines the set of user registers to dump on samples.  See I<asm/"
4103 "perf_regs.h>."
4104 msgstr ""
4105
4106 #. type: TP
4107 #: build/C/man2/perf_event_open.2:974
4108 #, no-wrap
4109 msgid "I<sample_stack_user> (Since Linux 3.7)"
4110 msgstr ""
4111
4112 #. type: Plain text
4113 #: build/C/man2/perf_event_open.2:977
4114 msgid "This defines the size of the user stack to dump on samples."
4115 msgstr ""
4116
4117 #. type: SS
4118 #: build/C/man2/perf_event_open.2:977
4119 #, no-wrap
4120 msgid "Reading results"
4121 msgstr ""
4122
4123 #. type: Plain text
4124 #: build/C/man2/perf_event_open.2:987
4125 msgid ""
4126 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4127 "the events can be read from the file descriptor.  The values that are there "
4128 "are specified by the I<read_format> field in the I<attr> structure at open "
4129 "time."
4130 msgstr ""
4131
4132 #. type: Plain text
4133 #: build/C/man2/perf_event_open.2:992
4134 msgid ""
4135 "If you attempt to read into a buffer that is not big enough to hold the data "
4136 "B<ENOSPC> is returned"
4137 msgstr ""
4138
4139 #. type: Plain text
4140 #: build/C/man2/perf_event_open.2:994
4141 msgid "Here is the layout of the data returned by a read:"
4142 msgstr ""
4143
4144 #. type: IP
4145 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4146 #: build/C/man2/ptrace.2:1552 build/C/man2/ptrace.2:1562
4147 #: build/C/man2/ptrace.2:1570 build/C/man2/ptrace.2:1576
4148 #: build/C/man2/ptrace.2:1705
4149 #, no-wrap
4150 msgid "*"
4151 msgstr ""
4152
4153 #. type: Plain text
4154 #: build/C/man2/perf_event_open.2:998
4155 msgid ""
4156 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4157 "at once:"
4158 msgstr ""
4159
4160 #. type: Plain text
4161 #: build/C/man2/perf_event_open.2:1010
4162 #, no-wrap
4163 msgid ""
4164 "struct read_format {\n"
4165 "    u64 nr;            /* The number of events */\n"
4166 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4167 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4168 "    struct\n"
4169 "        u64 value;     /* The value of the event */\n"
4170 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4171 "    } values[nr];\n"
4172 "};\n"
4173 msgstr ""
4174
4175 #. type: Plain text
4176 #: build/C/man2/perf_event_open.2:1018
4177 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4178 msgstr ""
4179
4180 #. type: Plain text
4181 #: build/C/man2/perf_event_open.2:1027
4182 #, no-wrap
4183 msgid ""
4184 "struct read_format {\n"
4185 "    u64 value;         /* The value of the event */\n"
4186 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4187 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4188 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4189 "};\n"
4190 msgstr ""
4191
4192 #. type: Plain text
4193 #: build/C/man2/perf_event_open.2:1031
4194 msgid "The values read are as follows:"
4195 msgstr ""
4196
4197 #. type: TP
4198 #: build/C/man2/perf_event_open.2:1031
4199 #, no-wrap
4200 msgid "I<nr>"
4201 msgstr ""
4202
4203 #. type: Plain text
4204 #: build/C/man2/perf_event_open.2:1037
4205 msgid ""
4206 "The number of events in this file descriptor.  Only available if "
4207 "B<PERF_FORMAT_GROUP> was specified."
4208 msgstr ""
4209
4210 #. type: TP
4211 #: build/C/man2/perf_event_open.2:1037
4212 #, no-wrap
4213 msgid "I<time_enabled>, I<time_running>"
4214 msgstr ""
4215
4216 #. type: Plain text
4217 #: build/C/man2/perf_event_open.2:1049
4218 msgid ""
4219 "Total time the event was enabled and running.  Normally these are the same.  "
4220 "If more events are started than available counter slots on the PMU, then "
4221 "multiplexing happens and events only run part of the time.  In that case the "
4222 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4223 "value for the count."
4224 msgstr ""
4225
4226 #. type: TP
4227 #: build/C/man2/perf_event_open.2:1049
4228 #, no-wrap
4229 msgid "I<value>"
4230 msgstr ""
4231
4232 #. type: Plain text
4233 #: build/C/man2/perf_event_open.2:1052
4234 msgid "An unsigned 64-bit value containing the counter result."
4235 msgstr ""
4236
4237 #. type: TP
4238 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4239 #: build/C/man2/perf_event_open.2:1451
4240 #, no-wrap
4241 msgid "I<id>"
4242 msgstr ""
4243
4244 #. type: Plain text
4245 #: build/C/man2/perf_event_open.2:1058
4246 msgid ""
4247 "A globally unique value for this particular event, only there if "
4248 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4249 msgstr ""
4250
4251 #. type: SS
4252 #: build/C/man2/perf_event_open.2:1058
4253 #, no-wrap
4254 msgid "MMAP layout"
4255 msgstr ""
4256
4257 #. type: Plain text
4258 #: build/C/man2/perf_event_open.2:1068
4259 msgid ""
4260 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4261 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4262 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4263 msgstr ""
4264
4265 #. type: Plain text
4266 #: build/C/man2/perf_event_open.2:1074
4267 msgid ""
4268 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4269 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4270 "such as where the ring-buffer head is."
4271 msgstr ""
4272
4273 #. type: Plain text
4274 #: build/C/man2/perf_event_open.2:1077
4275 msgid ""
4276 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4277 "ring buffer when sampling even if you do not plan to access it."
4278 msgstr ""
4279
4280 #. type: Plain text
4281 #: build/C/man2/perf_event_open.2:1079
4282 msgid "The structure of the first metadata mmap page is as follows:"
4283 msgstr ""
4284
4285 #. type: Plain text
4286 #: build/C/man2/perf_event_open.2:1103
4287 #, no-wrap
4288 msgid ""
4289 "struct perf_event_mmap_page {\n"
4290 "    __u32 version;          /* version number of this structure */\n"
4291 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4292 "    __u32 lock;             /* seqlock for synchronization */\n"
4293 "    __u32 index;            /* hardware counter identifier */\n"
4294 "    __s64 offset;           /* add to hardware counter value */\n"
4295 "    __u64 time_enabled;     /* time event active */\n"
4296 "    __u64 time_running;     /* time event on CPU */\n"
4297 "    union {\n"
4298 "        __u64   capabilities;\n"
4299 "        __u64   cap_usr_time  : 1,\n"
4300 "                cap_usr_rdpmc : 1,\n"
4301 "    };\n"
4302 "    __u16   pmc_width;\n"
4303 "    __u16   time_shift;\n"
4304 "    __u32   time_mult;\n"
4305 "    __u64   time_offset;\n"
4306 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4307 "    __u64   data_head;         /* head in the data section */\n"
4308 "    __u64   data_tail;         /* user-space written tail */\n"
4309 "}\n"
4310 msgstr ""
4311
4312 #. type: Plain text
4313 #: build/C/man2/perf_event_open.2:1109
4314 msgid ""
4315 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4316 "in more detail:"
4317 msgstr ""
4318
4319 #. type: TP
4320 #: build/C/man2/perf_event_open.2:1109
4321 #, no-wrap
4322 msgid "I<version>"
4323 msgstr ""
4324
4325 #. type: Plain text
4326 #: build/C/man2/perf_event_open.2:1112
4327 msgid "Version number of this structure."
4328 msgstr ""
4329
4330 #. type: TP
4331 #: build/C/man2/perf_event_open.2:1112
4332 #, no-wrap
4333 msgid "I<compat_version>"
4334 msgstr ""
4335
4336 #. type: Plain text
4337 #: build/C/man2/perf_event_open.2:1115
4338 msgid "The lowest version this is compatible with."
4339 msgstr ""
4340
4341 #. type: TP
4342 #: build/C/man2/perf_event_open.2:1115
4343 #, no-wrap
4344 msgid "I<lock>"
4345 msgstr ""
4346
4347 #. type: Plain text
4348 #: build/C/man2/perf_event_open.2:1118
4349 msgid "A seqlock for synchronization."
4350 msgstr ""
4351
4352 #. type: TP
4353 #: build/C/man2/perf_event_open.2:1118
4354 #, no-wrap
4355 msgid "I<index>"
4356 msgstr ""
4357
4358 #. type: Plain text
4359 #: build/C/man2/perf_event_open.2:1121
4360 msgid "A unique hardware counter identifier."
4361 msgstr ""
4362
4363 #. type: TP
4364 #: build/C/man2/perf_event_open.2:1121
4365 #, no-wrap
4366 msgid "I<offset>"
4367 msgstr ""
4368
4369 #.  FIXME clarify
4370 #. type: Plain text
4371 #: build/C/man2/perf_event_open.2:1125
4372 msgid "Add this to hardware counter value??"
4373 msgstr ""
4374
4375 #. type: TP
4376 #: build/C/man2/perf_event_open.2:1125
4377 #, no-wrap
4378 msgid "I<time_enabled>"
4379 msgstr ""
4380
4381 #. type: Plain text
4382 #: build/C/man2/perf_event_open.2:1128
4383 msgid "Time the event was active."
4384 msgstr ""
4385
4386 #. type: TP
4387 #: build/C/man2/perf_event_open.2:1128
4388 #, no-wrap
4389 msgid "I<time_running>"
4390 msgstr ""
4391
4392 #. type: Plain text
4393 #: build/C/man2/perf_event_open.2:1131
4394 msgid "Time the event was running."
4395 msgstr ""
4396
4397 #. type: TP
4398 #: build/C/man2/perf_event_open.2:1131
4399 #, no-wrap
4400 msgid "I<cap_usr_time>"
4401 msgstr ""
4402
4403 #. type: Plain text
4404 #: build/C/man2/perf_event_open.2:1134
4405 msgid "User time capability"
4406 msgstr ""
4407
4408 #. type: TP
4409 #: build/C/man2/perf_event_open.2:1134
4410 #, no-wrap
4411 msgid "I<cap_usr_rdpmc>"
4412 msgstr ""
4413
4414 #. type: Plain text
4415 #: build/C/man2/perf_event_open.2:1139
4416 msgid ""
4417 "If the hardware supports user-space read of performance counters without "
4418 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4419 "can be used to do a read:"
4420 msgstr ""
4421
4422 #. type: Plain text
4423 #: build/C/man2/perf_event_open.2:1146
4424 #, no-wrap
4425 msgid ""
4426 "u32 seq, time_mult, time_shift, idx, width;\n"
4427 "u64 count, enabled, running;\n"
4428 "u64 cyc, time_offset;\n"
4429 "s64 pmc = 0;\n"
4430 msgstr ""
4431
4432 #. type: Plain text
4433 #: build/C/man2/perf_event_open.2:1152
4434 #, no-wrap
4435 msgid ""
4436 "do {\n"
4437 "    seq = pc-E<gt>lock;\n"
4438 "    barrier();\n"
4439 "    enabled = pc-E<gt>time_enabled;\n"
4440 "    running = pc-E<gt>time_running;\n"
4441 msgstr ""
4442
4443 #. type: Plain text
4444 #: build/C/man2/perf_event_open.2:1159
4445 #, no-wrap
4446 msgid ""
4447 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4448 "        cyc = rdtsc();\n"
4449 "        time_offset = pc-E<gt>time_offset;\n"
4450 "        time_mult   = pc-E<gt>time_mult;\n"
4451 "        time_shift  = pc-E<gt>time_shift;\n"
4452 "    }\n"
4453 msgstr ""
4454
4455 #. type: Plain text
4456 #: build/C/man2/perf_event_open.2:1162
4457 #, no-wrap
4458 msgid ""
4459 "    idx = pc-E<gt>index;\n"
4460 "    count = pc-E<gt>offset;\n"
4461 msgstr ""
4462
4463 #. type: Plain text
4464 #: build/C/man2/perf_event_open.2:1167
4465 #, no-wrap
4466 msgid ""
4467 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4468 "        width = pc-E<gt>pmc_width;\n"
4469 "        pmc = rdpmc(idx - 1);\n"
4470 "    }\n"
4471 msgstr ""
4472
4473 #. type: Plain text
4474 #: build/C/man2/perf_event_open.2:1170
4475 #, no-wrap
4476 msgid ""
4477 "    barrier();\n"
4478 "} while (pc-E<gt>lock != seq);\n"
4479 msgstr ""
4480
4481 #. type: TP
4482 #: build/C/man2/perf_event_open.2:1172
4483 #, no-wrap
4484 msgid "I<pmc_width>"
4485 msgstr ""
4486
4487 #. type: Plain text
4488 #: build/C/man2/perf_event_open.2:1179
4489 msgid ""
4490 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4491 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4492 "the result like:"
4493 msgstr ""
4494
4495 #. type: Plain text
4496 #: build/C/man2/perf_event_open.2:1185
4497 #, no-wrap
4498 msgid ""
4499 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4500 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4501 "count += pmc;\n"
4502 msgstr ""
4503
4504 #. type: TP
4505 #: build/C/man2/perf_event_open.2:1187
4506 #, no-wrap
4507 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4508 msgstr ""
4509
4510 #. type: Plain text
4511 #: build/C/man2/perf_event_open.2:1194
4512 msgid ""
4513 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4514 "time_enabled (in nanoseconds) using rdtsc or similar."
4515 msgstr ""
4516
4517 #. type: Plain text
4518 #: build/C/man2/perf_event_open.2:1202
4519 #, no-wrap
4520 msgid ""
4521 "    u64 quot, rem;\n"
4522 "    u64 delta;\n"
4523 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4524 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4525 "    delta = time_offset + quot * time_mult +\n"
4526 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4527 msgstr ""
4528
4529 #. type: Plain text
4530 #: build/C/man2/perf_event_open.2:1214
4531 msgid ""
4532 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4533 "the seqcount loop described above.  This delta can then be added to enabled "
4534 "and possible running (if idx), improving the scaling:"
4535 msgstr ""
4536
4537 #. type: Plain text
4538 #: build/C/man2/perf_event_open.2:1222
4539 #, no-wrap
4540 msgid ""
4541 "    enabled += delta;\n"
4542 "    if (idx)\n"
4543 "        running += delta;\n"
4544 "    quot = count / running;\n"
4545 "    rem  = count % running;\n"
4546 "    count = quot * enabled + (rem * enabled) / running;\n"
4547 msgstr ""
4548
4549 #. type: TP
4550 #: build/C/man2/perf_event_open.2:1223
4551 #, no-wrap
4552 msgid "I<data_head>"
4553 msgstr ""
4554
4555 #. type: Plain text
4556 #: build/C/man2/perf_event_open.2:1229
4557 msgid ""
4558 "This points to the head of the data section.  The value continuously "
4559 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4560 "size of the mmap buffer before accessing the samples."
4561 msgstr ""
4562
4563 #. type: Plain text
4564 #: build/C/man2/perf_event_open.2:1232
4565 msgid ""
4566 "On SMP-capable platforms, after reading the data_head value, user space "
4567 "should issue an rmb()."
4568 msgstr ""
4569
4570 #. type: TP
4571 #: build/C/man2/perf_event_open.2:1232
4572 #, no-wrap
4573 msgid "I<data_tail;>"
4574 msgstr ""
4575
4576 #. type: Plain text
4577 #: build/C/man2/perf_event_open.2:1240
4578 msgid ""
4579 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4580 "by user space to reflect the last read data.  In this case the kernel will "
4581 "not over-write unread data."
4582 msgstr ""
4583
4584 #. type: Plain text
4585 #: build/C/man2/perf_event_open.2:1242
4586 msgid "The following 2^n ring-buffer pages have the layout described below."
4587 msgstr ""
4588
4589 #. type: Plain text
4590 #: build/C/man2/perf_event_open.2:1256
4591 msgid ""
4592 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4593 "the sample_type selected fields related to where/when (identity)  an event "
4594 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4595 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4596 "I<perf_event_header> and the fields already present for the existing fields, "
4597 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4598 "supported by older perf tools, with these new optional fields being ignored."
4599 msgstr ""
4600
4601 #. type: Plain text
4602 #: build/C/man2/perf_event_open.2:1258
4603 msgid "The mmap values start with a header:"
4604 msgstr ""
4605
4606 #. type: Plain text
4607 #: build/C/man2/perf_event_open.2:1266
4608 #, no-wrap
4609 msgid ""
4610 "struct perf_event_header {\n"
4611 "    __u32   type;\n"
4612 "    __u16   misc;\n"
4613 "    __u16   size;\n"
4614 "};\n"
4615 msgstr ""
4616
4617 #. type: Plain text
4618 #: build/C/man2/perf_event_open.2:1272
4619 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4620 msgstr ""
4621
4622 #. type: Plain text
4623 #: build/C/man2/perf_event_open.2:1281
4624 msgid ""
4625 "The I<type> value is one of the below.  The values in the corresponding "
4626 "record (that follows the header)  depend on the I<type> selected as shown."
4627 msgstr ""
4628
4629 #. type: TP
4630 #: build/C/man2/perf_event_open.2:1282
4631 #, no-wrap
4632 msgid "B<PERF_RECORD_MMAP>"
4633 msgstr ""
4634
4635 #. type: Plain text
4636 #: build/C/man2/perf_event_open.2:1289
4637 msgid ""
4638 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4639 "user-space IPs to code.  They have the following structure:"
4640 msgstr ""
4641
4642 #. type: Plain text
4643 #: build/C/man2/perf_event_open.2:1300
4644 #, no-wrap
4645 msgid ""
4646 "struct {\n"
4647 "    struct perf_event_header header;\n"
4648 "    u32    pid, tid;\n"
4649 "    u64    addr;\n"
4650 "    u64    len;\n"
4651 "    u64    pgoff;\n"
4652 "    char   filename[];\n"
4653 "};\n"
4654 msgstr ""
4655
4656 #. type: TP
4657 #: build/C/man2/perf_event_open.2:1302
4658 #, no-wrap
4659 msgid "B<PERF_RECORD_LOST>"
4660 msgstr ""
4661
4662 #. type: Plain text
4663 #: build/C/man2/perf_event_open.2:1305
4664 msgid "This record indicates when events are lost."
4665 msgstr ""
4666
4667 #. type: Plain text
4668 #: build/C/man2/perf_event_open.2:1313
4669 #, no-wrap
4670 msgid ""
4671 "struct {\n"
4672 "    struct perf_event_header header;\n"
4673 "    u64 id;\n"
4674 "    u64 lost;\n"
4675 "};\n"
4676 msgstr ""
4677
4678 #. type: Plain text
4679 #: build/C/man2/perf_event_open.2:1319
4680 msgid "is the unique event ID for the samples that were lost."
4681 msgstr ""
4682
4683 #. type: TP
4684 #: build/C/man2/perf_event_open.2:1319
4685 #, no-wrap
4686 msgid "I<lost>"
4687 msgstr ""
4688
4689 #. type: Plain text
4690 #: build/C/man2/perf_event_open.2:1322
4691 #, fuzzy
4692 #| msgid "Returns the number of processes woken up."
4693 msgid "is the number of events that were lost."
4694 msgstr "wake したプロセスの数を返す。"
4695
4696 #. type: TP
4697 #: build/C/man2/perf_event_open.2:1323
4698 #, no-wrap
4699 msgid "B<PERF_RECORD_COMM>"
4700 msgstr ""
4701
4702 #. type: Plain text
4703 #: build/C/man2/perf_event_open.2:1326
4704 msgid "This record indicates a change in the process name."
4705 msgstr ""
4706
4707 #. type: Plain text
4708 #: build/C/man2/perf_event_open.2:1334
4709 #, no-wrap
4710 msgid ""
4711 "struct {\n"
4712 "    struct perf_event_header header;\n"
4713 "    u32 pid, tid;\n"
4714 "    char comm[];\n"
4715 "};\n"
4716 msgstr ""
4717
4718 #. type: TP
4719 #: build/C/man2/perf_event_open.2:1336
4720 #, fuzzy, no-wrap
4721 #| msgid "B<PTRACE_EVENT_EXIT>"
4722 msgid "B<PERF_RECORD_EXIT>"
4723 msgstr "B<PTRACE_EVENT_EXIT>"
4724
4725 #. type: Plain text
4726 #: build/C/man2/perf_event_open.2:1339
4727 msgid "This record indicates a process exit event."
4728 msgstr ""
4729
4730 #. type: Plain text
4731 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4732 #, no-wrap
4733 msgid ""
4734 "struct {\n"
4735 "    struct perf_event_header header;\n"
4736 "    u32 pid, ppid;\n"
4737 "    u32 tid, ptid;\n"
4738 "    u64 time;\n"
4739 "};\n"
4740 msgstr ""
4741
4742 #. type: TP
4743 #: build/C/man2/perf_event_open.2:1350
4744 #, no-wrap
4745 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4746 msgstr ""
4747
4748 #. type: Plain text
4749 #: build/C/man2/perf_event_open.2:1353
4750 msgid "This record indicates a throttle/unthrottle event."
4751 msgstr ""
4752
4753 #. type: Plain text
4754 #: build/C/man2/perf_event_open.2:1362
4755 #, no-wrap
4756 msgid ""
4757 "struct {\n"
4758 "    struct perf_event_header header;\n"
4759 "    u64 time;\n"
4760 "    u64 id;\n"
4761 "    u64 stream_id;\n"
4762 "};\n"
4763 msgstr ""
4764
4765 #. type: TP
4766 #: build/C/man2/perf_event_open.2:1364
4767 #, fuzzy, no-wrap
4768 #| msgid "B<PTRACE_EVENT_FORK>"
4769 msgid "B<PERF_RECORD_FORK>"
4770 msgstr "B<PTRACE_EVENT_FORK>"
4771
4772 #. type: Plain text
4773 #: build/C/man2/perf_event_open.2:1367
4774 msgid "This record indicates a fork event."
4775 msgstr ""
4776
4777 #. type: TP
4778 #: build/C/man2/perf_event_open.2:1378
4779 #, no-wrap
4780 msgid "B<PERF_RECORD_READ>"
4781 msgstr ""
4782
4783 #. type: Plain text
4784 #: build/C/man2/perf_event_open.2:1381
4785 msgid "This record indicates a read event."
4786 msgstr ""
4787
4788 #. type: Plain text
4789 #: build/C/man2/perf_event_open.2:1389
4790 #, no-wrap
4791 msgid ""
4792 "struct {\n"
4793 "    struct perf_event_header header;\n"
4794 "    u32 pid, tid;\n"
4795 "    struct read_format values;\n"
4796 "};\n"
4797 msgstr ""
4798
4799 #. type: TP
4800 #: build/C/man2/perf_event_open.2:1391
4801 #, no-wrap
4802 msgid "B<PERF_RECORD_SAMPLE>"
4803 msgstr ""
4804
4805 #. type: Plain text
4806 #: build/C/man2/perf_event_open.2:1394
4807 msgid "This record indicates a sample."
4808 msgstr ""
4809
4810 #. type: Plain text
4811 #: build/C/man2/perf_event_open.2:1422
4812 #, no-wrap
4813 msgid ""
4814 "struct {\n"
4815 "    struct perf_event_header header;\n"
4816 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4817 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4818 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4819 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4820 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4821 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4822 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4823 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4824 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4825 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4826 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4827 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4828 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4829 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4830 "    struct perf_branch_entry lbr[bnr];\n"
4831 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4832 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4833 "    u64   regs[weight(mask)];\n"
4834 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4835 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4836 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4837 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4838 "};\n"
4839 msgstr ""
4840
4841 #. type: TP
4842 #: build/C/man2/perf_event_open.2:1424
4843 #, no-wrap
4844 msgid "I<ip>"
4845 msgstr ""
4846
4847 #. type: Plain text
4848 #: build/C/man2/perf_event_open.2:1430
4849 msgid ""
4850 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4851 "included."
4852 msgstr ""
4853
4854 #. type: TP
4855 #: build/C/man2/perf_event_open.2:1430
4856 #, no-wrap
4857 msgid "I<pid>, I<tid>"
4858 msgstr ""
4859
4860 #. type: Plain text
4861 #: build/C/man2/perf_event_open.2:1436
4862 msgid ""
4863 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4864 "ID are included."
4865 msgstr ""
4866
4867 #. type: TP
4868 #: build/C/man2/perf_event_open.2:1436
4869 #, no-wrap
4870 msgid "I<time>"
4871 msgstr ""
4872
4873 #. type: Plain text
4874 #: build/C/man2/perf_event_open.2:1444
4875 msgid ""
4876 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4877 "This is obtained via local_clock() which is a hardware timestamp if "
4878 "available and the jiffies value if not."
4879 msgstr ""
4880
4881 #. type: TP
4882 #: build/C/man2/perf_event_open.2:1444
4883 #, no-wrap
4884 msgid "I<addr>"
4885 msgstr ""
4886
4887 #. type: Plain text
4888 #: build/C/man2/perf_event_open.2:1451
4889 msgid ""
4890 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4891 "is usually the address of a tracepoint, breakpoint, or software event; "
4892 "otherwise the value is 0."
4893 msgstr ""
4894
4895 #. type: Plain text
4896 #: build/C/man2/perf_event_open.2:1459
4897 msgid ""
4898 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4899 "event is a member of an event group, the group leader ID is returned.  This "
4900 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4901 msgstr ""
4902
4903 #. type: TP
4904 #: build/C/man2/perf_event_open.2:1459
4905 #, no-wrap
4906 msgid "I<stream_id>"
4907 msgstr ""
4908
4909 #. type: Plain text
4910 #: build/C/man2/perf_event_open.2:1469
4911 msgid ""
4912 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4913 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4914 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4915 msgstr ""
4916
4917 #. type: TP
4918 #: build/C/man2/perf_event_open.2:1469
4919 #, no-wrap
4920 msgid "I<cpu>, I<res>"
4921 msgstr ""
4922
4923 #. type: Plain text
4924 #: build/C/man2/perf_event_open.2:1476
4925 msgid ""
4926 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4927 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4928 msgstr ""
4929
4930 #. type: TP
4931 #: build/C/man2/perf_event_open.2:1476
4932 #, no-wrap
4933 msgid "I<period>"
4934 msgstr ""
4935
4936 #. type: Plain text
4937 #: build/C/man2/perf_event_open.2:1482
4938 msgid ""
4939 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4940 "sampling period is written."
4941 msgstr ""
4942
4943 #. type: TP
4944 #: build/C/man2/perf_event_open.2:1482
4945 #, no-wrap
4946 msgid "I<v>"
4947 msgstr ""
4948
4949 #. type: Plain text
4950 #: build/C/man2/perf_event_open.2:1493
4951 msgid ""
4952 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4953 "included which has values for all events in the event group.  The values "
4954 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4955 "time."
4956 msgstr ""
4957
4958 #. type: TP
4959 #: build/C/man2/perf_event_open.2:1493
4960 #, no-wrap
4961 msgid "I<nr>, I<ips[nr]>"
4962 msgstr ""
4963
4964 #. type: Plain text
4965 #: build/C/man2/perf_event_open.2:1501
4966 msgid ""
4967 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4968 "which indicates how many following 64-bit instruction pointers will follow.  "
4969 "This is the current callchain."
4970 msgstr ""
4971
4972 #. type: TP
4973 #: build/C/man2/perf_event_open.2:1501
4974 #, no-wrap
4975 msgid "I<size>, I<data[size]>"
4976 msgstr ""
4977
4978 #. type: Plain text
4979 #: build/C/man2/perf_event_open.2:1508
4980 msgid ""
4981 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4982 "included followed by an array of 8-bit values of length size.  The values "
4983 "are padded with 0 to have 64-bit alignment."
4984 msgstr ""
4985
4986 #. type: Plain text
4987 #: build/C/man2/perf_event_open.2:1513
4988 msgid ""
4989 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4990 "make any promises with respect to the stability of its content, it may vary "
4991 "depending on event, hardware, and kernel version."
4992 msgstr ""
4993
4994 #. type: TP
4995 #: build/C/man2/perf_event_open.2:1513
4996 #, no-wrap
4997 msgid "I<bnr>, I<lbr[bnr]>"
4998 msgstr ""
4999
5000 #. type: Plain text
5001 #: build/C/man2/perf_event_open.2:1524
5002 msgid ""
5003 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5004 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5005 "structures.  These structures have from, to, and flags values indicating the "
5006 "from and to addresses from the branches on the callstack."
5007 msgstr ""
5008
5009 #. type: TP
5010 #: build/C/man2/perf_event_open.2:1524
5011 #, no-wrap
5012 msgid "I<abi>, I<regs[weight(mask)]>"
5013 msgstr ""
5014
5015 #. type: Plain text
5016 #: build/C/man2/perf_event_open.2:1530
5017 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
5018 msgstr ""
5019
5020 #. type: Plain text
5021 #: build/C/man2/perf_event_open.2:1536
5022 msgid ""
5023 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5024 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5025 msgstr ""
5026
5027 #. type: TP
5028 #: build/C/man2/perf_event_open.2:1536
5029 #, no-wrap
5030 msgid "I<size>, I<data[size]>, I<dyn_size>"
5031 msgstr ""
5032
5033 #. type: Plain text
5034 #: build/C/man2/perf_event_open.2:1542
5035 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
5036 msgstr ""
5037
5038 #. type: TP
5039 #: build/C/man2/perf_event_open.2:1544
5040 #, no-wrap
5041 msgid "I<misc>"
5042 msgstr ""
5043
5044 #. type: Plain text
5045 #: build/C/man2/perf_event_open.2:1549
5046 msgid "The I<misc> field contains additional information about the sample."
5047 msgstr ""
5048
5049 #. type: Plain text
5050 #: build/C/man2/perf_event_open.2:1554
5051 msgid ""
5052 "The CPU mode can be determined from this value by masking with "
5053 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5054 "these are not bit masks, only one can be set at a time):"
5055 msgstr ""
5056
5057 #. type: TP
5058 #: build/C/man2/perf_event_open.2:1555
5059 #, no-wrap
5060 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5061 msgstr ""
5062
5063 #. type: Plain text
5064 #: build/C/man2/perf_event_open.2:1558
5065 msgid "Unknown CPU mode."
5066 msgstr ""
5067
5068 #. type: TP
5069 #: build/C/man2/perf_event_open.2:1558
5070 #, no-wrap
5071 msgid "B<PERF_RECORD_MISC_KERNEL>"
5072 msgstr ""
5073
5074 #. type: Plain text
5075 #: build/C/man2/perf_event_open.2:1561
5076 msgid "Sample happened in the kernel."
5077 msgstr ""
5078
5079 #. type: TP
5080 #: build/C/man2/perf_event_open.2:1561
5081 #, no-wrap
5082 msgid "B<PERF_RECORD_MISC_USER>"
5083 msgstr ""
5084
5085 #. type: Plain text
5086 #: build/C/man2/perf_event_open.2:1564
5087 msgid "Sample happened in user code."
5088 msgstr ""
5089
5090 #. type: TP
5091 #: build/C/man2/perf_event_open.2:1564
5092 #, no-wrap
5093 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5094 msgstr ""
5095
5096 #. type: Plain text
5097 #: build/C/man2/perf_event_open.2:1567
5098 msgid "Sample happened in the hypervisor."
5099 msgstr ""
5100
5101 #. type: TP
5102 #: build/C/man2/perf_event_open.2:1567
5103 #, no-wrap
5104 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5105 msgstr ""
5106
5107 #. type: Plain text
5108 #: build/C/man2/perf_event_open.2:1570
5109 msgid "Sample happened in the guest kernel."
5110 msgstr ""
5111
5112 #. type: TP
5113 #: build/C/man2/perf_event_open.2:1570
5114 #, no-wrap
5115 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5116 msgstr ""
5117
5118 #. type: Plain text
5119 #: build/C/man2/perf_event_open.2:1573
5120 msgid "Sample happened in guest user code."
5121 msgstr ""
5122
5123 #. type: Plain text
5124 #: build/C/man2/perf_event_open.2:1576
5125 msgid "In addition, one of the following bits can be set:"
5126 msgstr ""
5127
5128 #. type: TP
5129 #: build/C/man2/perf_event_open.2:1577
5130 #, no-wrap
5131 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5132 msgstr ""
5133
5134 #. type: Plain text
5135 #: build/C/man2/perf_event_open.2:1585
5136 msgid ""
5137 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5138 "instruction that triggered the event.  See also I<perf_event_attr."
5139 "precise_ip>."
5140 msgstr ""
5141
5142 #. type: TP
5143 #: build/C/man2/perf_event_open.2:1585
5144 #, no-wrap
5145 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5146 msgstr ""
5147
5148 #. type: Plain text
5149 #: build/C/man2/perf_event_open.2:1588
5150 msgid "This indicates there is extended data available (currently not used)."
5151 msgstr ""
5152
5153 #. type: Plain text
5154 #: build/C/man2/perf_event_open.2:1591
5155 msgid "This indicates the size of the record."
5156 msgstr ""
5157
5158 #. type: SS
5159 #: build/C/man2/perf_event_open.2:1592
5160 #, no-wrap
5161 msgid "Signal overflow"
5162 msgstr ""
5163
5164 #. type: Plain text
5165 #: build/C/man2/perf_event_open.2:1601
5166 msgid ""
5167 "Events can be set to deliver a signal when a threshold is crossed.  The "
5168 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5169 "and B<fcntl>(2), system calls."
5170 msgstr ""
5171
5172 #. type: Plain text
5173 #: build/C/man2/perf_event_open.2:1605
5174 msgid ""
5175 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5176 "non-zero value)."
5177 msgstr ""
5178
5179 #. type: Plain text
5180 #: build/C/man2/perf_event_open.2:1607
5181 msgid "There are two ways to generate signals."
5182 msgstr ""
5183
5184 #. type: Plain text
5185 #: build/C/man2/perf_event_open.2:1617
5186 msgid ""
5187 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5188 "will generate a signal if a certain number of samples or bytes have been "
5189 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5190 "is sent."
5191 msgstr ""
5192
5193 #. type: Plain text
5194 #: build/C/man2/perf_event_open.2:1629
5195 msgid ""
5196 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5197 "adds to a counter that decrements each time the event overflows.  When non-"
5198 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5199 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5200 msgstr ""
5201
5202 #.  FIXME(Vince) : Find out when this was introduced
5203 #. type: Plain text
5204 #: build/C/man2/perf_event_open.2:1635
5205 msgid ""
5206 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5207 "for every overflow, even if I<wakeup_events> is not set."
5208 msgstr ""
5209
5210 #. type: SS
5211 #: build/C/man2/perf_event_open.2:1635
5212 #, no-wrap
5213 msgid "rdpmc instruction"
5214 msgstr ""
5215
5216 #. type: Plain text
5217 #: build/C/man2/perf_event_open.2:1642
5218 msgid ""
5219 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5220 "low-latency reads without having to enter the kernel.  Note that using "
5221 "I<rdpmc> is not necessarily faster than other methods for reading event "
5222 "values."
5223 msgstr ""
5224
5225 #. type: Plain text
5226 #: build/C/man2/perf_event_open.2:1647
5227 msgid ""
5228 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5229 "page; documentation on how to calculate event values can be found in that "
5230 "section."
5231 msgstr ""
5232
5233 #. type: SS
5234 #: build/C/man2/perf_event_open.2:1647
5235 #, no-wrap
5236 msgid "perf_event ioctl calls"
5237 msgstr ""
5238
5239 #. type: Plain text
5240 #: build/C/man2/perf_event_open.2:1652
5241 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5242 msgstr ""
5243
5244 #. type: TP
5245 #: build/C/man2/perf_event_open.2:1652
5246 #, fuzzy, no-wrap
5247 #| msgid "B<PTRACE_EVENT_CLONE>"
5248 msgid "B<PERF_EVENT_IOC_ENABLE>"
5249 msgstr "B<PTRACE_EVENT_CLONE>"
5250
5251 #. type: Plain text
5252 #: build/C/man2/perf_event_open.2:1656
5253 msgid ""
5254 "Enables the individual event or event group specified by the file descriptor "
5255 "argument."
5256 msgstr ""
5257
5258 #. type: Plain text
5259 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5260 #: build/C/man2/perf_event_open.2:1699
5261 msgid "The ioctl argument is ignored."
5262 msgstr ""
5263
5264 #. type: TP
5265 #: build/C/man2/perf_event_open.2:1658
5266 #, fuzzy, no-wrap
5267 #| msgid "B<PTRACE_EVENT_CLONE>"
5268 msgid "B<PERF_EVENT_IOC_DISABLE>"
5269 msgstr "B<PTRACE_EVENT_CLONE>"
5270
5271 #. type: Plain text
5272 #: build/C/man2/perf_event_open.2:1662
5273 msgid ""
5274 "Disables the individual counter or event group specified by the file "
5275 "descriptor argument."
5276 msgstr ""
5277
5278 #. type: Plain text
5279 #: build/C/man2/perf_event_open.2:1669
5280 msgid ""
5281 "Enabling or disabling the leader of a group enables or disables the entire "
5282 "group; that is, while the group leader is disabled, none of the counters in "
5283 "the group will count.  Enabling or disabling a member of a group other than "
5284 "the leader only affects that counter; disabling a non-leader stops that "
5285 "counter from counting but doesn't affect any other counter."
5286 msgstr ""
5287
5288 #. type: TP
5289 #: build/C/man2/perf_event_open.2:1671
5290 #, fuzzy, no-wrap
5291 #| msgid "B<PTRACE_EVENT_FORK>"
5292 msgid "B<PERF_EVENT_IOC_REFRESH>"
5293 msgstr "B<PTRACE_EVENT_FORK>"
5294
5295 #. type: Plain text
5296 #: build/C/man2/perf_event_open.2:1685
5297 msgid ""
5298 "Non-inherited overflow counters can use this to enable a counter for a "
5299 "number of overflows specified by the argument, after which it is disabled.  "
5300 "Subsequent calls of this ioctl add the argument value to the current count.  "
5301 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5302 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5303 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5304 msgstr ""
5305
5306 #. type: TP
5307 #: build/C/man2/perf_event_open.2:1685
5308 #, fuzzy, no-wrap
5309 #| msgid "B<PTRACE_EVENT_FORK>"
5310 msgid "B<PERF_EVENT_IOC_RESET>"
5311 msgstr "B<PTRACE_EVENT_FORK>"
5312
5313 #. type: Plain text
5314 #: build/C/man2/perf_event_open.2:1697
5315 msgid ""
5316 "Reset the event count specified by the file descriptor argumentto zero.  "
5317 "This only resets the counts; there is no way to reset the multiplexing "
5318 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5319 "only the leader is reset (child events are not)."
5320 msgstr ""
5321
5322 #. type: TP
5323 #: build/C/man2/perf_event_open.2:1699
5324 #, fuzzy, no-wrap
5325 #| msgid "B<PTRACE_EVENT_FORK>"
5326 msgid "B<PERF_EVENT_IOC_PERIOD>"
5327 msgstr "B<PTRACE_EVENT_FORK>"
5328
5329 #. type: Plain text
5330 #: build/C/man2/perf_event_open.2:1703
5331 msgid ""
5332 "IOC_PERIOD is the command to update the period; it does not update the "
5333 "current period but instead defers until next."
5334 msgstr ""
5335
5336 #. type: Plain text
5337 #: build/C/man2/perf_event_open.2:1706
5338 msgid ""
5339 "The argument is a pointer to a 64-bit value containing the desired new "
5340 "period."
5341 msgstr ""
5342
5343 #. type: TP
5344 #: build/C/man2/perf_event_open.2:1706
5345 #, no-wrap
5346 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5347 msgstr ""
5348
5349 #. type: Plain text
5350 #: build/C/man2/perf_event_open.2:1711
5351 msgid ""
5352 "This tells the kernel to report event notifications to the specified file "
5353 "descriptor rather than the default one.  The file descriptors must all be on "
5354 "the same CPU."
5355 msgstr ""
5356
5357 #. type: Plain text
5358 #: build/C/man2/perf_event_open.2:1714
5359 msgid ""
5360 "The argument specifies the desired file descriptor, or -1 if output should "
5361 "be ignored."
5362 msgstr ""
5363
5364 #. type: TP
5365 #: build/C/man2/perf_event_open.2:1714
5366 #, fuzzy, no-wrap
5367 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5368 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5369 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5370
5371 #. type: Plain text
5372 #: build/C/man2/perf_event_open.2:1717
5373 msgid "This adds an ftrace filter to this event."
5374 msgstr ""
5375
5376 #. type: Plain text
5377 #: build/C/man2/perf_event_open.2:1719
5378 msgid "The argument is a pointer to the desired ftrace filter."
5379 msgstr ""
5380
5381 #. type: SS
5382 #: build/C/man2/perf_event_open.2:1719
5383 #, no-wrap
5384 msgid "Using prctl"
5385 msgstr ""
5386
5387 #. type: Plain text
5388 #: build/C/man2/perf_event_open.2:1732
5389 msgid ""
5390 "A process can enable or disable all the event groups that are attached to it "
5391 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5392 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5393 "the current process, whether created by this process or by another, and does "
5394 "not affect any counters that this process has created on other processes.  "
5395 "It only enables or disables the group leaders, not any other members in the "
5396 "groups."
5397 msgstr ""
5398
5399 #. type: SS
5400 #: build/C/man2/perf_event_open.2:1732
5401 #, no-wrap
5402 msgid "perf_event related configuration files"
5403 msgstr ""
5404
5405 #. type: Plain text
5406 #: build/C/man2/perf_event_open.2:1735
5407 msgid "Files in I</proc/sys/kernel/>"
5408 msgstr ""
5409
5410 #. type: TP
5411 #: build/C/man2/perf_event_open.2:1736
5412 #, no-wrap
5413 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5414 msgstr ""
5415
5416 #. type: Plain text
5417 #: build/C/man2/perf_event_open.2:1742
5418 msgid ""
5419 "The I<perf_event_paranoid> file can be set to restrict access to the "
5420 "performance counters."
5421 msgstr ""
5422
5423 #. type: Plain text
5424 #: build/C/man2/perf_event_open.2:1744
5425 msgid "2 - only allow user-space measurements"
5426 msgstr ""
5427
5428 #. type: Plain text
5429 #: build/C/man2/perf_event_open.2:1746
5430 msgid "1 - (default) allow both kernel and user measurements"
5431 msgstr ""
5432
5433 #. type: Plain text
5434 #: build/C/man2/perf_event_open.2:1748
5435 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5436 msgstr ""
5437
5438 #. type: Plain text
5439 #: build/C/man2/perf_event_open.2:1750
5440 msgid "-1 - no restrictions"
5441 msgstr ""
5442
5443 #. type: Plain text
5444 #: build/C/man2/perf_event_open.2:1755
5445 msgid ""
5446 "The existence of the I<perf_event_paranoid> file is the official method for "
5447 "determining if a kernel supports B<perf_event_open>()."
5448 msgstr ""
5449
5450 #. type: TP
5451 #: build/C/man2/perf_event_open.2:1755
5452 #, no-wrap
5453 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5454 msgstr ""
5455
5456 #. type: Plain text
5457 #: build/C/man2/perf_event_open.2:1764
5458 msgid ""
5459 "This sets the maximum sample rate.  Setting this too high can allow users to "
5460 "sample at a rate that impacts overall machine performance and potentially "
5461 "lock up the machine.  The default value is 100000 (samples per second)."
5462 msgstr ""
5463
5464 #. type: TP
5465 #: build/C/man2/perf_event_open.2:1764
5466 #, no-wrap
5467 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5468 msgstr ""
5469
5470 #. type: Plain text
5471 #: build/C/man2/perf_event_open.2:1769
5472 msgid ""
5473 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5474 "516 (kB)."
5475 msgstr ""
5476
5477 #. type: Plain text
5478 #: build/C/man2/perf_event_open.2:1772
5479 msgid "Files in I</sys/bus/event_source/devices/>"
5480 msgstr ""
5481
5482 #. type: Plain text
5483 #: build/C/man2/perf_event_open.2:1778
5484 msgid ""
5485 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5486 "monitoring.  Information on how to program these PMUs can be found under I</"
5487 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5488 "different PMU."
5489 msgstr ""
5490
5491 #. type: TP
5492 #: build/C/man2/perf_event_open.2:1778
5493 #, no-wrap
5494 msgid "I</sys/bus/event_source/devices/*/type>"
5495 msgstr ""
5496
5497 #. type: Plain text
5498 #: build/C/man2/perf_event_open.2:1783
5499 msgid ""
5500 "This contains an integer that can be used in the I<type> field of "
5501 "perf_event_attr to indicate you wish to use this PMU."
5502 msgstr ""
5503
5504 #. type: TP
5505 #: build/C/man2/perf_event_open.2:1783
5506 #, no-wrap
5507 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5508 msgstr ""
5509
5510 #. type: TP
5511 #: build/C/man2/perf_event_open.2:1786
5512 #, no-wrap
5513 msgid "I</sys/bus/event_source/devices/*/format/>"
5514 msgstr ""
5515
5516 #. type: Plain text
5517 #: build/C/man2/perf_event_open.2:1791
5518 msgid ""
5519 "This sub-directory contains information on what bits in the I<config> field "
5520 "of perf_event_attr correspond to."
5521 msgstr ""
5522
5523 #. type: TP
5524 #: build/C/man2/perf_event_open.2:1791
5525 #, no-wrap
5526 msgid "I</sys/bus/event_source/devices/*/events/>"
5527 msgstr ""
5528
5529 #. type: Plain text
5530 #: build/C/man2/perf_event_open.2:1800
5531 msgid ""
5532 "This sub-directory contains files with pre-defined events.  The contents are "
5533 "strings describing the event settings expressed in terms of the fields found "
5534 "in the I<./format/> directory.  These are not necessarily complete lists of "
5535 "all events supported by a PMU, but usually a subset of events deemed useful "
5536 "or interesting."
5537 msgstr ""
5538
5539 #. type: TP
5540 #: build/C/man2/perf_event_open.2:1800
5541 #, no-wrap
5542 msgid "I</sys/bus/event_source/devices/*/uevent>"
5543 msgstr ""
5544
5545 #. type: Plain text
5546 #: build/C/man2/perf_event_open.2:1810
5547 msgid ""
5548 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5549 "occurred (in which case, I<errno> is set appropriately)."
5550 msgstr ""
5551
5552 #. type: Plain text
5553 #: build/C/man2/perf_event_open.2:1814
5554 msgid "Returned if the specified event is not available."
5555 msgstr ""
5556
5557 #. type: TP
5558 #: build/C/man2/perf_event_open.2:1814
5559 #, fuzzy, no-wrap
5560 #| msgid "B<ENOSYS>"
5561 msgid "B<ENOSPC>"
5562 msgstr "B<ENOSYS>"
5563
5564 #. type: Plain text
5565 #: build/C/man2/perf_event_open.2:1824
5566 msgid ""
5567 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5568 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5569 "B<ENOSPC> is still returned if you try to read results into too small of a "
5570 "buffer."
5571 msgstr ""
5572
5573 #. type: SH
5574 #: build/C/man2/perf_event_open.2:1824
5575 #, fuzzy, no-wrap
5576 #| msgid "VERSIONS"
5577 msgid "VERSION"
5578 msgstr "バージョン"
5579
5580 #. type: Plain text
5581 #: build/C/man2/perf_event_open.2:1829
5582 msgid ""
5583 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5584 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5585 msgstr ""
5586
5587 #. type: Plain text
5588 #: build/C/man2/perf_event_open.2:1834
5589 #, fuzzy
5590 #| msgid ""
5591 #| "B<personality>()  is Linux-specific and should not be used in programs "
5592 #| "intended to be portable."
5593 msgid ""
5594 "This B<perf_event_open>()  system call Linux- specific and should not be "
5595 "used in programs intended to be portable."
5596 msgstr ""
5597 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5598 "はない。"
5599
5600 #. type: Plain text
5601 #: build/C/man2/perf_event_open.2:1838
5602 #, fuzzy
5603 #| msgid ""
5604 #| "Glibc does not provide a wrapper for this system call; call it using "
5605 #| "B<syscall>(2)."
5606 msgid ""
5607 "Glibc does not provide a wrapper for this system call; call it using "
5608 "B<syscall>(2).  See the example below."
5609 msgstr ""
5610 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5611 "(2)  を使って呼び出すこと。"
5612
5613 #. type: Plain text
5614 #: build/C/man2/perf_event_open.2:1844
5615 msgid ""
5616 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5617 "checking for the existence of the file I</proc/sys/kernel/"
5618 "perf_event_paranoid>."
5619 msgstr ""
5620
5621 #. type: SH
5622 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5623 #: build/C/man2/ptrace.2:1810
5624 #, no-wrap
5625 msgid "BUGS"
5626 msgstr "バグ"
5627
5628 #. type: Plain text
5629 #: build/C/man2/perf_event_open.2:1851
5630 msgid ""
5631 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5632 "signals in threads.  This was introduced in Linux 2.6.32."
5633 msgstr ""
5634
5635 #. type: Plain text
5636 #: build/C/man2/perf_event_open.2:1859
5637 msgid ""
5638 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5639 "could be scheduled together until read time.  The same happens on all known "
5640 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5641 "events works you have to B<perf_event_open>(), start, then read before you "
5642 "know for sure you can get valid measurements."
5643 msgstr ""
5644
5645 #. type: Plain text
5646 #: build/C/man2/perf_event_open.2:1863
5647 msgid ""
5648 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5649 "that case, some events would silently return \"0\" if the kernel scheduled "
5650 "them in an improper counter slot."
5651 msgstr ""
5652
5653 #. type: Plain text
5654 #: build/C/man2/perf_event_open.2:1866
5655 msgid ""
5656 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5657 "results could be returned."
5658 msgstr ""
5659
5660 #. type: Plain text
5661 #: build/C/man2/perf_event_open.2:1869
5662 msgid ""
5663 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5664 "\"inherit\" is enabled and many threads are started."
5665 msgstr ""
5666
5667 #. type: Plain text
5668 #: build/C/man2/perf_event_open.2:1873
5669 msgid ""
5670 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5671 "processes."
5672 msgstr ""
5673
5674 #. type: Plain text
5675 #: build/C/man2/perf_event_open.2:1878
5676 msgid ""
5677 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5678 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5679 "This behavior is unsupported and should not be relied on."
5680 msgstr ""
5681
5682 #. type: Plain text
5683 #: build/C/man2/perf_event_open.2:1884
5684 msgid ""
5685 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5686 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5687 "the union has a non-zero value in it."
5688 msgstr ""
5689
5690 #. type: Plain text
5691 #: build/C/man2/perf_event_open.2:1889
5692 msgid ""
5693 "Always double-check your results! Various generalized events have had wrong "
5694 "values.  For example, retired branches measured the wrong thing on AMD "
5695 "machines until Linux 2.6.35."
5696 msgstr ""
5697
5698 #. type: SH
5699 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5700 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5701 #, no-wrap
5702 msgid "EXAMPLE"
5703 msgstr "例"
5704
5705 #. type: Plain text
5706 #: build/C/man2/perf_event_open.2:1893
5707 msgid ""
5708 "The following is a short example that measures the total instruction count "
5709 "of a call to B<printf>(3)."
5710 msgstr ""
5711
5712 #. type: Plain text
5713 #: build/C/man2/perf_event_open.2:1902
5714 #, fuzzy, no-wrap
5715 #| msgid ""
5716 #| "#define _GNU_SOURCE\n"
5717 #| "#include E<lt>fcntl.hE<gt>\n"
5718 #| "#include E<lt>stdio.hE<gt>\n"
5719 #| "#include E<lt>stdlib.hE<gt>\n"
5720 #| "#include E<lt>unistd.hE<gt>\n"
5721 #| "#include E<lt>errno.hE<gt>\n"
5722 #| "#include E<lt>limits.hE<gt>\n"
5723 msgid ""
5724 "#include E<lt>stdlib.hE<gt>\n"
5725 "#include E<lt>stdio.hE<gt>\n"
5726 "#include E<lt>unistd.hE<gt>\n"
5727 "#include E<lt>string.hE<gt>\n"
5728 "#include E<lt>sys/ioctl.hE<gt>\n"
5729 "#include E<lt>linux/perf_event.hE<gt>\n"
5730 "#include E<lt>asm/unistd.hE<gt>\n"
5731 msgstr ""
5732 "#define _GNU_SOURCE\n"
5733 "#include E<lt>fcntl.hE<gt>\n"
5734 "#include E<lt>stdio.hE<gt>\n"
5735 "#include E<lt>stdlib.hE<gt>\n"
5736 "#include E<lt>unistd.hE<gt>\n"
5737 "#include E<lt>errno.hE<gt>\n"
5738 "#include E<lt>limits.hE<gt>\n"
5739
5740 #. type: Plain text
5741 #: build/C/man2/perf_event_open.2:1908
5742 #, no-wrap
5743 msgid ""
5744 "long\n"
5745 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5746 "                int cpu, int group_fd, unsigned long flags)\n"
5747 "{\n"
5748 "    int ret;\n"
5749 msgstr ""
5750
5751 #. type: Plain text
5752 #: build/C/man2/perf_event_open.2:1913
5753 #, no-wrap
5754 msgid ""
5755 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5756 "                   group_fd, flags);\n"
5757 "    return ret;\n"
5758 "}\n"
5759 msgstr ""
5760
5761 #. type: Plain text
5762 #: build/C/man2/perf_event_open.2:1920
5763 #, fuzzy, no-wrap
5764 #| msgid ""
5765 #| "int\n"
5766 #| "main(int argc, char *argv[])\n"
5767 #| "{\n"
5768 #| "    int fd;\n"
5769 #| "    int len, slen;\n"
5770 msgid ""
5771 "int\n"
5772 "main(int argc, char **argv)\n"
5773 "{\n"
5774 "    struct perf_event_attr pe;\n"
5775 "    long long count;\n"
5776 "    int fd;\n"
5777 msgstr ""
5778 "int\n"
5779 "main(int argc, char *argv[])\n"
5780 "{\n"
5781 "    int fd;\n"
5782 "    int len, slen;\n"
5783
5784 #. type: Plain text
5785 #: build/C/man2/perf_event_open.2:1928
5786 #, no-wrap
5787 msgid ""
5788 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5789 "    pe.type = PERF_TYPE_HARDWARE;\n"
5790 "    pe.size = sizeof(struct perf_event_attr);\n"
5791 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5792 "    pe.disabled = 1;\n"
5793 "    pe.exclude_kernel = 1;\n"
5794 "    pe.exclude_hv = 1;\n"
5795 msgstr ""
5796
5797 #. type: Plain text
5798 #: build/C/man2/perf_event_open.2:1934
5799 #, fuzzy, no-wrap
5800 #| msgid ""
5801 #| "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5802 #| "    if (fd == -1) {\n"
5803 #| "        perror(\"open\");\n"
5804 #| "        exit(EXIT_FAILURE);\n"
5805 #| "    }\n"
5806 msgid ""
5807 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5808 "    if (fd == -1) {\n"
5809 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5810 "       exit(EXIT_FAILURE);\n"
5811 "    }\n"
5812 msgstr ""
5813 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5814 "    if (fd == -1) {\n"
5815 "        perror(\"open\");\n"
5816 "        exit(EXIT_FAILURE);\n"
5817 "    }\n"
5818
5819 #. type: Plain text
5820 #: build/C/man2/perf_event_open.2:1937
5821 #, no-wrap
5822 msgid ""
5823 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5824 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5825 msgstr ""
5826
5827 #. type: Plain text
5828 #: build/C/man2/perf_event_open.2:1939
5829 #, no-wrap
5830 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5831 msgstr ""
5832
5833 #. type: Plain text
5834 #: build/C/man2/perf_event_open.2:1942
5835 #, no-wrap
5836 msgid ""
5837 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5838 "    read(fd, &count, sizeof(long long));\n"
5839 msgstr ""
5840
5841 #. type: Plain text
5842 #: build/C/man2/perf_event_open.2:1944
5843 #, no-wrap
5844 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5845 msgstr ""
5846
5847 #. type: Plain text
5848 #: build/C/man2/perf_event_open.2:1947
5849 #, no-wrap
5850 msgid ""
5851 "    close(fd);\n"
5852 "}\n"
5853 msgstr ""
5854
5855 #. type: Plain text
5856 #: build/C/man2/perf_event_open.2:1954
5857 #, fuzzy
5858 #| msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5859 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5860 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5861
5862 #. type: TH
5863 #: build/C/man2/perfmonctl.2:27
5864 #, no-wrap
5865 msgid "PERFMONCTL"
5866 msgstr ""
5867
5868 #. type: Plain text
5869 #: build/C/man2/perfmonctl.2:30
5870 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5871 msgstr ""
5872
5873 #. type: Plain text
5874 #: build/C/man2/perfmonctl.2:34
5875 #, fuzzy, no-wrap
5876 #| msgid ""
5877 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
5878 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5879 msgid ""
5880 "B<#include E<lt>syscall.hE<gt>>\n"
5881 "B<#include E<lt>perfmon.hE<gt>>\n"
5882 msgstr ""
5883 "B<#include E<lt>sys/quota.hE<gt>>\n"
5884 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5885
5886 #. type: Plain text
5887 #: build/C/man2/perfmonctl.2:36
5888 #, fuzzy, no-wrap
5889 #| msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5890 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5891 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5892
5893 #. type: Plain text
5894 #: build/C/man2/perfmonctl.2:47
5895 msgid ""
5896 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5897 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5898 "monitoring data) registers and PMC (performance monitoring control) "
5899 "registers, which gather hardware statistics."
5900 msgstr ""
5901
5902 #. type: Plain text
5903 #: build/C/man2/perfmonctl.2:57
5904 msgid ""
5905 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5906 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5907 "I<fd> argument specifies the perfmon context to operate on."
5908 msgstr ""
5909
5910 #. type: Plain text
5911 #: build/C/man2/perfmonctl.2:61
5912 msgid "Supported values for I<cmd> are:"
5913 msgstr ""
5914
5915 #. type: TP
5916 #: build/C/man2/perfmonctl.2:61
5917 #, fuzzy, no-wrap
5918 #| msgid "B<PTRACE_CONT>"
5919 msgid "B<PFM_CREATE_CONTEXT>"
5920 msgstr "B<PTRACE_CONT>"
5921
5922 #. type: Plain text
5923 #: build/C/man2/perfmonctl.2:65
5924 #, no-wrap
5925 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5926 msgstr ""
5927
5928 #. type: Plain text
5929 #: build/C/man2/perfmonctl.2:67
5930 msgid "Set up a context."
5931 msgstr ""
5932
5933 #. type: Plain text
5934 #: build/C/man2/perfmonctl.2:74
5935 msgid ""
5936 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5937 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5938 "E<gt>ctx_fd>."
5939 msgstr ""
5940
5941 #. type: Plain text
5942 #: build/C/man2/perfmonctl.2:86
5943 msgid ""
5944 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5945 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5946 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5947 "B<epoll>(7)."
5948 msgstr ""
5949
5950 #. type: Plain text
5951 #: build/C/man2/perfmonctl.2:90
5952 msgid ""
5953 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5954 msgstr ""
5955
5956 #. type: TP
5957 #: build/C/man2/perfmonctl.2:90
5958 #, no-wrap
5959 msgid "B<PFM_WRITE_PMCS>"
5960 msgstr ""
5961
5962 #. type: Plain text
5963 #: build/C/man2/perfmonctl.2:95
5964 #, no-wrap
5965 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5966 msgstr ""
5967
5968 #. type: Plain text
5969 #: build/C/man2/perfmonctl.2:97
5970 msgid "Set PMC registers."
5971 msgstr ""
5972
5973 #. type: TP
5974 #: build/C/man2/perfmonctl.2:97
5975 #, no-wrap
5976 msgid "B<PFM_WRITE_PMDS>"
5977 msgstr ""
5978
5979 #. type: Plain text
5980 #: build/C/man2/perfmonctl.2:101
5981 #, no-wrap
5982 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5983 msgstr ""
5984
5985 #.  pfm_write_pmds()
5986 #. type: Plain text
5987 #: build/C/man2/perfmonctl.2:104
5988 msgid "Set PMD registers."
5989 msgstr ""
5990
5991 #. type: TP
5992 #: build/C/man2/perfmonctl.2:104
5993 #, no-wrap
5994 msgid "B<PFM_READ_PMDS>"
5995 msgstr ""
5996
5997 #. type: Plain text
5998 #: build/C/man2/perfmonctl.2:109
5999 #, no-wrap
6000 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6001 msgstr ""
6002
6003 #. type: Plain text
6004 #: build/C/man2/perfmonctl.2:111
6005 msgid "Read PMD registers."
6006 msgstr ""
6007
6008 #. type: TP
6009 #: build/C/man2/perfmonctl.2:111
6010 #, no-wrap
6011 msgid "B<PFM_START>"
6012 msgstr ""
6013
6014 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6015 #. type: Plain text
6016 #: build/C/man2/perfmonctl.2:117
6017 #, no-wrap
6018 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6019 msgstr ""
6020
6021 #. type: Plain text
6022 #: build/C/man2/perfmonctl.2:119
6023 msgid "Start monitoring."
6024 msgstr ""
6025
6026 #. type: TP
6027 #: build/C/man2/perfmonctl.2:119
6028 #, no-wrap
6029 msgid "B<PFM_STOP>"
6030 msgstr ""
6031
6032 #. type: Plain text
6033 #: build/C/man2/perfmonctl.2:124
6034 #, no-wrap
6035 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6036 msgstr ""
6037
6038 #. type: Plain text
6039 #: build/C/man2/perfmonctl.2:126
6040 msgid "Stop monitoring."
6041 msgstr ""
6042
6043 #. type: TP
6044 #: build/C/man2/perfmonctl.2:126
6045 #, fuzzy, no-wrap
6046 #| msgid "B<PTRACE_CONT>"
6047 msgid "B<PFM_LOAD_CONTEXT>"
6048 msgstr "B<PTRACE_CONT>"
6049
6050 #. type: Plain text
6051 #: build/C/man2/perfmonctl.2:131
6052 #, no-wrap
6053 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6054 msgstr ""
6055
6056 #. type: Plain text
6057 #: build/C/man2/perfmonctl.2:133
6058 msgid "Attach the context to a thread."
6059 msgstr ""
6060
6061 #. type: TP
6062 #: build/C/man2/perfmonctl.2:133
6063 #, no-wrap
6064 msgid "B<PFM_UNLOAD_CONTEXT>"
6065 msgstr ""
6066
6067 #. type: Plain text
6068 #: build/C/man2/perfmonctl.2:138
6069 #, no-wrap
6070 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6071 msgstr ""
6072
6073 #. type: Plain text
6074 #: build/C/man2/perfmonctl.2:140
6075 msgid "Detach the context from a thread."
6076 msgstr ""
6077
6078 #. type: TP
6079 #: build/C/man2/perfmonctl.2:140
6080 #, no-wrap
6081 msgid "B<PFM_RESTART>"
6082 msgstr ""
6083
6084 #. type: Plain text
6085 #: build/C/man2/perfmonctl.2:145
6086 #, no-wrap
6087 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6088 msgstr ""
6089
6090 #. type: Plain text
6091 #: build/C/man2/perfmonctl.2:147
6092 msgid "Restart monitoring after receiving an overflow notification."
6093 msgstr ""
6094
6095 #. type: TP
6096 #: build/C/man2/perfmonctl.2:147
6097 #, fuzzy, no-wrap
6098 #| msgid "B<Q_GETSTATS>"
6099 msgid "B<PFM_GET_FEATURES>"
6100 msgstr "B<Q_GETSTATS>"
6101
6102 #. type: Plain text
6103 #: build/C/man2/perfmonctl.2:152
6104 #, no-wrap
6105 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6106 msgstr ""
6107
6108 #. type: TP
6109 #: build/C/man2/perfmonctl.2:153
6110 #, no-wrap
6111 msgid "B<PFM_DEBUG>"
6112 msgstr ""
6113
6114 #. type: Plain text
6115 #: build/C/man2/perfmonctl.2:158
6116 #, no-wrap
6117 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6118 msgstr ""
6119
6120 #. type: Plain text
6121 #: build/C/man2/perfmonctl.2:162
6122 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6123 msgstr ""
6124
6125 #. type: TP
6126 #: build/C/man2/perfmonctl.2:162
6127 #, no-wrap
6128 msgid "B<PFM_GET_PMC_RESET_VAL>"
6129 msgstr ""
6130
6131 #. type: Plain text
6132 #: build/C/man2/perfmonctl.2:167
6133 #, no-wrap
6134 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6135 msgstr ""
6136
6137 #
6138 #
6139 #
6140 #.  .TP
6141 #.  .B PFM_CREATE_EVTSETS
6142 #.  create or modify event sets
6143 #.  .nf
6144 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6145 #.  .fi
6146 #.  .TP
6147 #.  .B PFM_DELETE_EVTSETS
6148 #.  delete event sets
6149 #.  .nf
6150 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6151 #.  .fi
6152 #.  .TP
6153 #.  .B PFM_GETINFO_EVTSETS
6154 #.  get information about event sets
6155 #.  .nf
6156 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6157 #.  .fi
6158 #. type: Plain text
6159 #: build/C/man2/perfmonctl.2:190
6160 msgid "Reset PMC registers to default values."
6161 msgstr ""
6162
6163 #. type: Plain text
6164 #: build/C/man2/perfmonctl.2:196
6165 #, fuzzy
6166 #| msgid ""
6167 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6168 #| "I<errno> is set to indicate the error."
6169 msgid ""
6170 "B<performctl>()  returns zero when the operation is successful.  On error, "
6171 "-1 is returned and I<errno> is set to indicate the cause of the error."
6172 msgstr ""
6173 "成功すると、 B<kexec_load> は 0 を返す。\n"
6174 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6175
6176 #. type: Plain text
6177 #: build/C/man2/perfmonctl.2:199
6178 #, fuzzy
6179 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6180 msgid "B<perfmonctl>()  is available since Linux 2.4."
6181 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6182
6183 #. type: Plain text
6184 #: build/C/man2/perfmonctl.2:202
6185 msgid ""
6186 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6187 "architecture."
6188 msgstr ""
6189
6190 #. type: Plain text
6191 #: build/C/man2/perfmonctl.2:207
6192 msgid "B<gprof>(1)"
6193 msgstr ""
6194
6195 #. type: Plain text
6196 #: build/C/man2/perfmonctl.2:209
6197 msgid "The perfmon2 interface specification"
6198 msgstr ""
6199
6200 #. type: TH
6201 #: build/C/man2/personality.2:32
6202 #, no-wrap
6203 msgid "PERSONALITY"
6204 msgstr "PERSONALITY"
6205
6206 #. type: TH
6207 #: build/C/man2/personality.2:32
6208 #, no-wrap
6209 msgid "2003-01-01"
6210 msgstr "2003-01-01"
6211
6212 #. type: Plain text
6213 #: build/C/man2/personality.2:35
6214 msgid "personality - set the process execution domain"
6215 msgstr "personality - プロセスを実行するドメインを設定する"
6216
6217 #. type: Plain text
6218 #: build/C/man2/personality.2:37
6219 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6220 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6221
6222 #. type: Plain text
6223 #: build/C/man2/personality.2:39
6224 msgid "B<int personality(unsigned long >I<persona>B<);>"
6225 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6226
6227 #. type: Plain text
6228 #: build/C/man2/personality.2:47
6229 msgid ""
6230 "Linux supports different execution domains, or personalities, for each "
6231 "process.  Among other things, execution domains tell Linux how to map signal "
6232 "numbers into signal actions.  The execution domain system allows Linux to "
6233 "provide limited support for binaries compiled under other UNIX-like "
6234 "operating systems."
6235 msgstr ""
6236 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6237 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6238 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6239 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6240 "対する限定的なサポートを提供している。"
6241
6242 #. type: Plain text
6243 #: build/C/man2/personality.2:57
6244 msgid ""
6245 "This function will return the current B<personality>()  when I<persona> "
6246 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6247 "by I<persona> the new execution domain of the calling process."
6248 msgstr ""
6249 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6250 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6251 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6252
6253 #. type: Plain text
6254 #: build/C/man2/personality.2:64
6255 msgid ""
6256 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6257 "and I<errno> is set appropriately."
6258 msgstr ""
6259 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6260 "I<errno> が適切に設定される。"
6261
6262 #. type: Plain text
6263 #: build/C/man2/personality.2:68
6264 msgid "The kernel was unable to change the personality."
6265 msgstr "カーネルがパーソナリティを変更できなかった。"
6266
6267 #. type: Plain text
6268 #: build/C/man2/personality.2:72
6269 msgid ""
6270 "B<personality>()  is Linux-specific and should not be used in programs "
6271 "intended to be portable."
6272 msgstr ""
6273 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6274 "はない。"
6275
6276 #. type: TH
6277 #: build/C/man2/pivot_root.2:10
6278 #, no-wrap
6279 msgid "PIVOT_ROOT"
6280 msgstr "PIVOT_ROOT"
6281
6282 #. type: Plain text
6283 #: build/C/man2/pivot_root.2:13
6284 msgid "pivot_root - change the root file system"
6285 msgstr "pivot_root - root ファイルシステムを変更する"
6286
6287 #. type: Plain text
6288 #: build/C/man2/pivot_root.2:15
6289 msgid ""
6290 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6291 msgstr ""
6292 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6293
6294 #.  The
6295 #.  .B CAP_SYS_ADMIN
6296 #.  capability is required.
6297 #. type: Plain text
6298 #: build/C/man2/pivot_root.2:27
6299 msgid ""
6300 "B<pivot_root>()  moves the root file system of the calling process to the "
6301 "directory I<put_old> and makes I<new_root> the new root file system of the "
6302 "calling process."
6303 msgstr ""
6304 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6305 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6306 "ルシステムにする。"
6307
6308 #. type: Plain text
6309 #: build/C/man2/pivot_root.2:34
6310 msgid ""
6311 "The typical use of B<pivot_root>()  is during system startup, when the "
6312 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6313 "the real root file system, and eventually turns the latter into the current "
6314 "root of all relevant processes or threads."
6315 msgstr ""
6316 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6317 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6318 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6319 "レント root に変更するような場合である。"
6320
6321 #. type: Plain text
6322 #: build/C/man2/pivot_root.2:46
6323 msgid ""
6324 "B<pivot_root>()  may or may not change the current root and the current "
6325 "working directory of any processes or threads which use the old root "
6326 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6327 "root or current working directory at the old root operate correctly in "
6328 "either case.  An easy way to ensure this is to change their root and current "
6329 "working directory to I<new_root> before invoking B<pivot_root>()."
6330 msgstr ""
6331 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6332 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6333 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6334 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6335 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6336 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6337 "更しておくことである。"
6338
6339 #. type: Plain text
6340 #: build/C/man2/pivot_root.2:64
6341 msgid ""
6342 "The paragraph above is intentionally vague because the implementation of "
6343 "B<pivot_root>()  may change in the future.  At the time of writing, "
6344 "B<pivot_root>()  changes root and current working directory of each process "
6345 "or thread to I<new_root> if they point to the old root directory.  This is "
6346 "necessary in order to prevent kernel threads from keeping the old root "
6347 "directory busy with their root and current working directory, even if they "
6348 "never access the file system in any way.  In the future, there may be a "
6349 "mechanism for kernel threads to explicitly relinquish any access to the file "
6350 "system, such that this fairly intrusive mechanism can be removed from "
6351 "B<pivot_root>()."
6352 msgstr ""
6353 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6354 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6355 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6356 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6357 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6358 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6359 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6360 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6361 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6362 "除されるかもしれない。"
6363
6364 #. type: Plain text
6365 #: build/C/man2/pivot_root.2:72
6366 msgid ""
6367 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6368 "may not affect its current working directory.  It is therefore recommended "
6369 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6370 msgstr ""
6371 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6372 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6373 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6374
6375 #. type: Plain text
6376 #: build/C/man2/pivot_root.2:74
6377 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6378 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6379
6380 #. type: IP
6381 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6382 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6383 #, no-wrap
6384 msgid "-"
6385 msgstr "-"
6386
6387 #. type: Plain text
6388 #: build/C/man2/pivot_root.2:76
6389 msgid "They must be directories."
6390 msgstr "ディレクトリでなければならない。"
6391
6392 #. type: Plain text
6393 #: build/C/man2/pivot_root.2:79
6394 msgid ""
6395 "I<new_root> and I<put_old> must not be on the same file system as the "
6396 "current root."
6397 msgstr ""
6398 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6399 "ない。"
6400
6401 #. type: Plain text
6402 #: build/C/man2/pivot_root.2:83
6403 msgid ""
6404 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6405 "of I</..> to the string pointed to by I<put_old> must yield the same "
6406 "directory as I<new_root>."
6407 msgstr ""
6408 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6409 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6410 "リが得られなければならない。"
6411
6412 #. type: Plain text
6413 #: build/C/man2/pivot_root.2:85
6414 msgid "No other file system may be mounted on I<put_old>."
6415 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6416
6417 #. type: Plain text
6418 #: build/C/man2/pivot_root.2:89
6419 msgid "See also B<pivot_root>(8)  for additional usage examples."
6420 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6421
6422 #. type: Plain text
6423 #: build/C/man2/pivot_root.2:96
6424 msgid ""
6425 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6426 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6427 "point of that file system is mounted on I<put_old>."
6428 msgstr ""
6429 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6430 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6431 "テムのマウントポイントが I<put_old> にマウントされる。"
6432
6433 #. type: Plain text
6434 #: build/C/man2/pivot_root.2:101
6435 msgid ""
6436 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6437 "mounts> will show the mount point of the file system containing I<new_root> "
6438 "as root (I</>)."
6439 msgstr ""
6440 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6441 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6442 "る。"
6443
6444 #. type: Plain text
6445 #: build/C/man2/pivot_root.2:110
6446 msgid ""
6447 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6448 "B<stat>(2).  Additionally, it may return:"
6449 msgstr ""
6450 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6451 "性がある。さらに以下を返すことがある:"
6452
6453 #. type: Plain text
6454 #: build/C/man2/pivot_root.2:114
6455 msgid ""
6456 "I<new_root> or I<put_old> are on the current root file system, or a file "
6457 "system is already mounted on I<put_old>."
6458 msgstr ""
6459 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6460 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6461
6462 #. type: Plain text
6463 #: build/C/man2/pivot_root.2:117
6464 msgid "I<put_old> is not underneath I<new_root>."
6465 msgstr "I<put_old> が I<new_root> の下層にない。"
6466
6467 #. type: TP
6468 #: build/C/man2/pivot_root.2:117
6469 #, no-wrap
6470 msgid "B<ENOTDIR>"
6471 msgstr "B<ENOTDIR>"
6472
6473 #. type: Plain text
6474 #: build/C/man2/pivot_root.2:120
6475 msgid "I<new_root> or I<put_old> is not a directory."
6476 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6477
6478 #. type: Plain text
6479 #: build/C/man2/pivot_root.2:125
6480 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6481 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6482
6483 #. type: Plain text
6484 #: build/C/man2/pivot_root.2:128
6485 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6486 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6487
6488 #. type: Plain text
6489 #: build/C/man2/pivot_root.2:131
6490 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6491 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6492
6493 #. type: Plain text
6494 #: build/C/man2/pivot_root.2:138
6495 msgid ""
6496 "B<pivot_root>()  should not have to change root and current working "
6497 "directory of all other processes in the system."
6498 msgstr ""
6499 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6500 "ディレクトリとを変更しなくてもよいはずである。"
6501
6502 #. type: Plain text
6503 #: build/C/man2/pivot_root.2:143
6504 msgid ""
6505 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6506 "insanity."
6507 msgstr ""
6508 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6509 "からない状態になってしまうだろう"
6510
6511 #. type: Plain text
6512 #: build/C/man2/pivot_root.2:149
6513 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6514 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6515
6516 #. type: TH
6517 #: build/C/man2/process_vm_readv.2:29
6518 #, no-wrap
6519 msgid "PROCESS_VM_READV"
6520 msgstr ""
6521
6522 #. type: TH
6523 #: build/C/man2/process_vm_readv.2:29
6524 #, no-wrap
6525 msgid "2012-04-25"
6526 msgstr "2012-04-25"
6527
6528 #. type: Plain text
6529 #: build/C/man2/process_vm_readv.2:32
6530 msgid ""
6531 "process_vm_readv, process_vm_writev - transfer data between process address "
6532 "spaces"
6533 msgstr ""
6534
6535 #. type: Plain text
6536 #: build/C/man2/process_vm_readv.2:35
6537 #, no-wrap
6538 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6539 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6540
6541 #. type: Plain text
6542 #: build/C/man2/process_vm_readv.2:42
6543 #, no-wrap
6544 msgid ""
6545 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6546 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6547 "B<                         unsigned long >I<liovcnt>B<,>\n"
6548 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6549 "B<                         unsigned long >I<riovcnt>B<,>\n"
6550 "B<                         unsigned long >I<flags>B<);>\n"
6551 msgstr ""
6552
6553 #. type: Plain text
6554 #: build/C/man2/process_vm_readv.2:49
6555 #, no-wrap
6556 msgid ""
6557 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6558 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6559 "B<                          unsigned long >I<liovcnt>B<,>\n"
6560 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6561 "B<                          unsigned long >I<riovcnt>B<,>\n"
6562 "B<                          unsigned long >I<flags>B<);>\n"
6563 msgstr ""
6564
6565 #. type: Plain text
6566 #: build/C/man2/process_vm_readv.2:57
6567 msgid ""
6568 "These system calls transfer data between the address space of the calling "
6569 "process (\"the local process\") and the process identified by I<pid> (\"the "
6570 "remote process\").  The data moves directly between the address spaces of "
6571 "the two processes, without passing through kernel space."
6572 msgstr ""
6573
6574 #. type: Plain text
6575 #: build/C/man2/process_vm_readv.2:82
6576 msgid ""
6577 "The B<process_vm_readv>()  system call transfers data from the remote "
6578 "process to the local process.  The data to be transferred is identified by "
6579 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6580 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6581 "the number of elements in I<remote_iov>.  The data is transferred to the "
6582 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6583 "pointer to an array describing address ranges in the calling process, and "
6584 "I<liovcnt> specifies the number of elements in I<local_iov>."
6585 msgstr ""
6586
6587 #. type: Plain text
6588 #: build/C/man2/process_vm_readv.2:96
6589 msgid ""
6590 "The B<process_vm_writev>()  system call is the converse of "
6591 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6592 "remote process.  Other than the direction of the transfer, the arguments "
6593 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6594 "meaning as for B<process_vm_readv>()."
6595 msgstr ""
6596
6597 #. type: Plain text
6598 #: build/C/man2/process_vm_readv.2:106
6599 msgid ""
6600 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6601 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6602 msgstr ""
6603 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6604 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6605 "されている:"
6606
6607 #. type: Plain text
6608 #: build/C/man2/process_vm_readv.2:113
6609 #, no-wrap
6610 msgid ""
6611 "struct iovec {\n"
6612 "    void  *iov_base;    /* Starting address */\n"
6613 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6614 "};\n"
6615 msgstr ""
6616 "struct iovec {\n"
6617 "    void  *iov_base;    /* Starting address */\n"
6618 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6619 "};\n"
6620
6621 #. type: Plain text
6622 #: build/C/man2/process_vm_readv.2:129
6623 msgid ""
6624 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6625 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6626 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6627 "to I<remote_iov[1]>, and so on."
6628 msgstr ""
6629 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6630 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6631 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6632 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6633 "以降も同様である。"
6634
6635 #. type: Plain text
6636 #: build/C/man2/process_vm_readv.2:140
6637 msgid ""
6638 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6639 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6640 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6641 msgstr ""
6642
6643 #. type: Plain text
6644 #: build/C/man2/process_vm_readv.2:148
6645 msgid ""
6646 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6647 "have to be the same.  Thus, it is possible to split a single local buffer "
6648 "into multiple remote buffers, or vice versa."
6649 msgstr ""
6650
6651 #. type: Plain text
6652 #: build/C/man2/process_vm_readv.2:152
6653 msgid "The I<flags> argument is currently unused and must be set to 0."
6654 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6655
6656 #.  In time, glibc might provide a wrapper that works around this limit,
6657 #.  as is done for readv()/writev()
6658 #. type: Plain text
6659 #: build/C/man2/process_vm_readv.2:165
6660 msgid ""
6661 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6662 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6663 "via the call I<sysconf(_SC_IOV_MAX)>)."
6664 msgstr ""
6665
6666 #. type: Plain text
6667 #: build/C/man2/process_vm_readv.2:175
6668 msgid ""
6669 "The count arguments and I<local_iov> are checked before doing any "
6670 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6671 "addresses refer to regions that are inaccessible to the local process, none "
6672 "of the vectors will be processed and an error will be returned immediately."
6673 msgstr ""
6674
6675 #. type: Plain text
6676 #: build/C/man2/process_vm_readv.2:195
6677 msgid ""
6678 "Note, however, that these system calls do not check the memory regions in "
6679 "the remote process until just before doing the read/write.  Consequently, a "
6680 "partial read/write (see RETURN VALUE)  may result if one of the "
6681 "I<remote_iov> elements points to an invalid memory region in the remote "
6682 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6683 "this in mind when attempting to read data of unknown length (such as C "
6684 "strings that are null-terminated) from a remote process, by avoiding "
6685 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6686 "(Instead, split the remote read into two I<remote_iov> elements and have "
6687 "them merge back into a single write I<local_iov> entry.  The first read "
6688 "entry goes up to the page boundary, while the second starts on the next page "
6689 "boundary.)"
6690 msgstr ""
6691
6692 #. type: Plain text
6693 #: build/C/man2/process_vm_readv.2:209
6694 msgid ""
6695 "In order to read from or write to another process, either the caller must "
6696 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6697 "ID, and saved set-user-ID of the remote process must match the real user ID "
6698 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6699 "group-ID of the remote process must match the real group ID of the caller.  "
6700 "(The permission required is exactly the same as that required to perform a "
6701 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6702 msgstr ""
6703
6704 #. type: Plain text
6705 #: build/C/man2/process_vm_readv.2:225
6706 msgid ""
6707 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6708 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6709 "value may be less than the total number of requested bytes, if a partial "
6710 "read/write occurred.  (Partial transfers apply at the granularity of "
6711 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6712 "splits a single I<iovec> element.)  The caller should check the return value "
6713 "to determine whether a partial read/write occurred."
6714 msgstr ""
6715
6716 #. type: Plain text
6717 #: build/C/man2/process_vm_readv.2:229
6718 msgid "On error, -1 is returned and I<errno> is set appropriately."
6719 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6720
6721 #. type: Plain text
6722 #: build/C/man2/process_vm_readv.2:241
6723 msgid ""
6724 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6725 "overflows a I<ssize_t> value."
6726 msgstr ""
6727
6728 #. type: Plain text
6729 #: build/C/man2/process_vm_readv.2:245
6730 msgid "I<flags> is not 0."
6731 msgstr "I<flags> が 0 でない。"
6732
6733 #. type: Plain text
6734 #: build/C/man2/process_vm_readv.2:251
6735 msgid "I<liovcnt> or I<riovcnt> is too large."
6736 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6737
6738 #. type: Plain text
6739 #: build/C/man2/process_vm_readv.2:256
6740 msgid ""
6741 "The memory described by I<local_iov> is outside the caller's accessible "
6742 "address space."
6743 msgstr ""
6744 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6745 "アドレス空間の外にある。"
6746
6747 #. type: Plain text
6748 #: build/C/man2/process_vm_readv.2:262
6749 msgid ""
6750 "The memory described by I<remote_iov> is outside the accessible address "
6751 "space of the process I<pid>."
6752 msgstr ""
6753
6754 #. type: Plain text
6755 #: build/C/man2/process_vm_readv.2:267
6756 msgid ""
6757 "Could not allocate memory for internal copies of the I<iovec> structures."
6758 msgstr ""
6759
6760 #. type: Plain text
6761 #: build/C/man2/process_vm_readv.2:271
6762 msgid ""
6763 "The caller does not have permission to access the address space of the "
6764 "process I<pid>."
6765 msgstr ""
6766 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6767 "持っていない。"
6768
6769 #. type: Plain text
6770 #: build/C/man2/process_vm_readv.2:276
6771 msgid "No process with ID I<pid> exists."
6772 msgstr "ID が I<pid> のプロセスが存在しない。"
6773
6774 #. type: Plain text
6775 #: build/C/man2/process_vm_readv.2:279
6776 msgid ""
6777 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6778 "since version 2.15."
6779 msgstr ""
6780 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6781 "サポートは glibc バージョン 2.15 以降で提供されている。"
6782
6783 #. type: Plain text
6784 #: build/C/man2/process_vm_readv.2:281
6785 msgid "These system calls are nonstandard Linux extensions."
6786 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6787
6788 #. type: Plain text
6789 #: build/C/man2/process_vm_readv.2:287
6790 msgid ""
6791 "The data transfers performed by B<process_vm_readv>()  and "
6792 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6793 msgstr ""
6794
6795 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6796 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6797 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6798 #. type: Plain text
6799 #: build/C/man2/process_vm_readv.2:295
6800 msgid ""
6801 "These system calls were designed to permit fast message passing by allowing "
6802 "messages to be exchanged with a single copy operation (rather than the "
6803 "double copy that would be required when using, for example, shared memory or "
6804 "pipes)."
6805 msgstr ""
6806
6807 #. type: Plain text
6808 #: build/C/man2/process_vm_readv.2:303
6809 msgid ""
6810 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6811 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6812 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6813 msgstr ""
6814
6815 #. type: Plain text
6816 #: build/C/man2/process_vm_readv.2:306
6817 #, no-wrap
6818 msgid "#include E<lt>sys/uio.hE<gt>\n"
6819 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6820
6821 #. type: Plain text
6822 #: build/C/man2/process_vm_readv.2:316
6823 #, no-wrap
6824 msgid ""
6825 "int\n"
6826 "main(void)\n"
6827 "{\n"
6828 "    struct iovec local[2];\n"
6829 "    struct iovec remote[1];\n"
6830 "    char buf1[10];\n"
6831 "    char buf2[10];\n"
6832 "    ssize_t nread;\n"
6833 "    pid_t pid = 10;             /* PID of remote process */\n"
6834 msgstr ""
6835 "int\n"
6836 "main(void)\n"
6837 "{\n"
6838 "    struct iovec local[2];\n"
6839 "    struct iovec remote[1];\n"
6840 "    char buf1[10];\n"
6841 "    char buf2[10];\n"
6842 "    ssize_t nread;\n"
6843 "    pid_t pid = 10;             /* PID of remote process */\n"
6844
6845 #. type: Plain text
6846 #: build/C/man2/process_vm_readv.2:323
6847 #, no-wrap
6848 msgid ""
6849 "    local[0].iov_base = buf1;\n"
6850 "    local[0].iov_len = 10;\n"
6851 "    local[1].iov_base = buf2;\n"
6852 "    local[1].iov_len = 10;\n"
6853 "    remote[0].iov_base = (void *) 0x10000;\n"
6854 "    remote[1].iov_len = 20;\n"
6855 msgstr ""
6856 "    local[0].iov_base = buf1;\n"
6857 "    local[0].iov_len = 10;\n"
6858 "    local[1].iov_base = buf2;\n"
6859 "    local[1].iov_len = 10;\n"
6860 "    remote[0].iov_base = (void *) 0x10000;\n"
6861 "    remote[1].iov_len = 20;\n"
6862
6863 #. type: Plain text
6864 #: build/C/man2/process_vm_readv.2:330
6865 #, no-wrap
6866 msgid ""
6867 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6868 "    if (nread != 20)\n"
6869 "        return 1;\n"
6870 "    else\n"
6871 "        return 0;\n"
6872 "}\n"
6873 msgstr ""
6874 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6875 "    if (nread != 20)\n"
6876 "        return 1;\n"
6877 "    else\n"
6878 "        return 0;\n"
6879 "}\n"
6880
6881 #. type: Plain text
6882 #: build/C/man2/process_vm_readv.2:334
6883 msgid "B<readv>(2), B<writev>(2)"
6884 msgstr "B<readv>(2), B<writev>(2)"
6885
6886 #. type: TH
6887 #: build/C/man2/ptrace.2:44
6888 #, no-wrap
6889 msgid "PTRACE"
6890 msgstr "PTRACE"
6891
6892 #. type: TH
6893 #: build/C/man2/ptrace.2:44
6894 #, fuzzy, no-wrap
6895 #| msgid "2009-02-20"
6896 msgid "2013-02-16"
6897 msgstr "2009-02-20"
6898
6899 #. type: Plain text
6900 #: build/C/man2/ptrace.2:47
6901 msgid "ptrace - process trace"
6902 msgstr "ptrace - プロセスのトレース"
6903
6904 #. type: Plain text
6905 #: build/C/man2/ptrace.2:50
6906 #, no-wrap
6907 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6908 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6909
6910 #. type: Plain text
6911 #: build/C/man2/ptrace.2:53
6912 #, no-wrap
6913 msgid ""
6914 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6915 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6916 msgstr ""
6917 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6918 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6919
6920 #. type: Plain text
6921 #: build/C/man2/ptrace.2:62
6922 #, fuzzy
6923 #| msgid ""
6924 #| "The B<ptrace>()  system call provides a means by which a parent process "
6925 #| "may observe and control the execution of another process, and examine and "
6926 #| "change its core image and registers.  It is primarily used to implement "
6927 #| "breakpoint debugging and system call tracing."
6928 msgid ""
6929 "The B<ptrace>()  system call provides a means by which one process (the "
6930 "\"tracer\")  may observe and control the execution of another process (the "
6931 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6932 "is primarily used to implement breakpoint debugging and system call tracing."
6933 msgstr ""
6934 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6935 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6936 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6937 "コールのトレースを 実装するのに用いられる。"
6938
6939 #. type: Plain text
6940 #: build/C/man2/ptrace.2:73
6941 msgid ""
6942 "A tracee first needs to be attached to the tracer.  Attachment and "
6943 "subsequent commands are per thread: in a multithreaded process, every thread "
6944 "can be individually attached to a (potentially different) tracer, or left "
6945 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6946 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6947 "commands are always sent to a specific tracee using a call of the form"
6948 msgstr ""
6949
6950 #. type: Plain text
6951 #: build/C/man2/ptrace.2:75
6952 #, no-wrap
6953 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6954 msgstr ""
6955
6956 #. type: Plain text
6957 #: build/C/man2/ptrace.2:79
6958 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6959 msgstr ""
6960
6961 #. type: Plain text
6962 #: build/C/man2/ptrace.2:85
6963 msgid ""
6964 "(Note that in this page, a \"multithreaded process\" means a thread group "
6965 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6966 msgstr ""
6967
6968 #. type: Plain text
6969 #: build/C/man2/ptrace.2:96
6970 #, fuzzy
6971 #| msgid ""
6972 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6973 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6974 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6975 #| "using B<PTRACE_ATTACH>."
6976 msgid ""
6977 "A process can initiate a trace by calling B<fork>(2)  and having the "
6978 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6979 "(2).  Alternatively, one process may commence tracing another process using "
6980 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6981 msgstr ""
6982 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
6983 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
6984 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
6985 "を使用し、トレースを開始する。"
6986
6987 #. type: Plain text
6988 #: build/C/man2/ptrace.2:113
6989 #, fuzzy
6990 #| msgid ""
6991 #| "While being traced, the child will stop each time a signal is delivered, "
6992 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
6993 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
6994 #| "(2)  and may inspect and modify the child process while it is stopped.  "
6995 #| "The parent then causes the child to continue, optionally ignoring the "
6996 #| "delivered signal (or even delivering a different signal instead)."
6997 msgid ""
6998 "While being traced, the tracee will stop each time a signal is delivered, "
6999 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
7000 "its usual effect.)  The tracer will be notified at its next call to "
7001 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
7002 "return a I<status> value containing information that indicates the cause of "
7003 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
7004 "various ptrace requests to inspect and modify the tracee.  The tracer then "
7005 "causes the tracee to continue, optionally ignoring the delivered signal (or "
7006 "even delivering a different signal instead)."
7007 msgstr ""
7008 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7009 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7010 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7011 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7012 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7013 "シグナルを 配送することもできる) 。"
7014
7015 #. type: Plain text
7016 #: build/C/man2/ptrace.2:123
7017 msgid ""
7018 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7019 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7020 "signal, giving the parent a chance to gain control before the new program "
7021 "begins execution."
7022 msgstr ""
7023
7024 #. type: Plain text
7025 #: build/C/man2/ptrace.2:127
7026 #, fuzzy
7027 #| msgid ""
7028 #| "When the parent is finished tracing, it can terminate the child with "
7029 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7030 #| "mode via B<PTRACE_DETACH>."
7031 msgid ""
7032 "When the tracer is finished tracing, it can cause the tracee to continue "
7033 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7034 msgstr ""
7035 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7036 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7037 "ドにして、 実行を継続させることもできる。"
7038
7039 #. type: Plain text
7040 #: build/C/man2/ptrace.2:131
7041 msgid "The value of I<request> determines the action to be performed:"
7042 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7043
7044 #. type: TP
7045 #: build/C/man2/ptrace.2:131
7046 #, no-wrap
7047 msgid "B<PTRACE_TRACEME>"
7048 msgstr "B<PTRACE_TRACEME>"
7049
7050 #. type: Plain text
7051 #: build/C/man2/ptrace.2:141
7052 msgid ""
7053 "Indicate that this process is to be traced by its parent.  A process "
7054 "probably shouldn't make this request if its parent isn't expecting to trace "
7055 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7056 msgstr ""
7057
7058 #. type: Plain text
7059 #: build/C/man2/ptrace.2:156
7060 #, fuzzy
7061 #| msgid ""
7062 #| "The above request is used only by the child process; the rest are used "
7063 #| "only by the parent.  In the following requests, I<pid> specifies the "
7064 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7065 #| "the child process must be stopped."
7066 msgid ""
7067 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7068 "requests are used only by the tracer.  In the following requests, I<pid> "
7069 "specifies the thread ID of the tracee to be acted on.  For requests other "
7070 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7071 "B<PTRACE_KILL>, the tracee must be stopped."
7072 msgstr ""
7073 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7074 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7075 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7076 "らない。"
7077
7078 #. type: TP
7079 #: build/C/man2/ptrace.2:156
7080 #, no-wrap
7081 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7082 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7083
7084 #. type: Plain text
7085 #: build/C/man2/ptrace.2:167
7086 #, fuzzy
7087 #| msgid ""
7088 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7089 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7090 #| "separate text and data address spaces, so the two requests are currently "
7091 #| "equivalent.  (The argument I<data> is ignored.)"
7092 msgid ""
7093 "Read a word at the address I<addr> in the tracee's memory, returning the "
7094 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7095 "text and data address spaces, so these two requests are currently "
7096 "equivalent.  (I<data> is ignored.)"
7097 msgstr ""
7098 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7099 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7100 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7101 "ものである。 (引き数 I<data> は無視される。)"
7102
7103 #. type: TP
7104 #: build/C/man2/ptrace.2:167
7105 #, no-wrap
7106 msgid "B<PTRACE_PEEKUSER>"
7107 msgstr "B<PTRACE_PEEKUSER>"
7108
7109 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7110 #.  and that is the name that seems common on other systems.
7111 #. type: Plain text
7112 #: build/C/man2/ptrace.2:185
7113 #, fuzzy
7114 #| msgid ""
7115 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7116 #| "registers and other information about the process (see I<E<lt>sys/user."
7117 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7118 #| "Typically the offset must be word-aligned, though this might vary by "
7119 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7120 msgid ""
7121 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7122 "registers and other information about the process (see I<E<lt>sys/user."
7123 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7124 "Typically, the offset must be word-aligned, though this might vary by "
7125 "architecture.  See NOTES.  (I<data> is ignored.)"
7126 msgstr ""
7127 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7128 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7129 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7130 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7131 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7132 "される。 )"
7133
7134 #. type: TP
7135 #: build/C/man2/ptrace.2:185
7136 #, no-wrap
7137 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7138 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7139
7140 #. type: Plain text
7141 #: build/C/man2/ptrace.2:197
7142 #, fuzzy
7143 #| msgid ""
7144 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7145 #| "above, the two requests are currently equivalent."
7146 msgid ""
7147 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7148 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7149 "equivalent."
7150 msgstr ""
7151 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7152 "に、現在のところ二つの 要求は同じものである。"
7153
7154 #. type: TP
7155 #: build/C/man2/ptrace.2:197
7156 #, no-wrap
7157 msgid "B<PTRACE_POKEUSER>"
7158 msgstr "B<PTRACE_POKEUSER>"
7159
7160 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7161 #.  and that is the name that seems common on other systems.
7162 #.  FIXME In the preceding sentence, which modifications are disallowed,
7163 #.  and when they are disallowed, how does user space discover that fact?
7164 #. type: Plain text
7165 #: build/C/man2/ptrace.2:213
7166 #, fuzzy
7167 #| msgid ""
7168 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7169 #| "above, the offset must typically be word-aligned.  In order to maintain "
7170 #| "the integrity of the kernel, some modifications to the USER area are "
7171 #| "disallowed."
7172 msgid ""
7173 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7174 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7175 "maintain the integrity of the kernel, some modifications to the USER area "
7176 "are disallowed."
7177 msgstr ""
7178 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7179 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7180 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7181 "されている。"
7182
7183 #. type: TP
7184 #: build/C/man2/ptrace.2:213
7185 #, no-wrap
7186 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7187 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7188
7189 #. type: Plain text
7190 #: build/C/man2/ptrace.2:236
7191 #, fuzzy
7192 #| msgid ""
7193 #| "Copies the child's general purpose or floating-point registers, "
7194 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7195 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7196 msgid ""
7197 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7198 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7199 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7200 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7201 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7202 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7203 "architectures."
7204 msgstr ""
7205 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7206 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7207 "すること。(I<addr> は無視される。)"
7208
7209 #. type: TP
7210 #: build/C/man2/ptrace.2:236
7211 #, fuzzy, no-wrap
7212 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7213 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7214 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7215
7216 #. type: Plain text
7217 #: build/C/man2/ptrace.2:257
7218 msgid ""
7219 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7220 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7221 "numerical value 1)  usually results in reading of general-purpose "
7222 "registers.  If the CPU has, for example, floating-point and/or vector "
7223 "registers, they can be retrieved by setting I<addr> to the corresponding "
7224 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7225 "the destination buffer's location and length.  On return, the kernel "
7226 "modifies B<iov.len> to indicate the actual number of bytes returned."
7227 msgstr ""
7228
7229 #. type: TP
7230 #: build/C/man2/ptrace.2:257
7231 #, no-wrap
7232 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7233 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7234
7235 #. type: Plain text
7236 #: build/C/man2/ptrace.2:269
7237 #, fuzzy
7238 #| msgid ""
7239 #| "Retrieve information about the signal that caused the stop.  Copies a "
7240 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7241 #| "I<data> in the parent.  (I<addr> is ignored.)"
7242 msgid ""
7243 "Retrieve information about the signal that caused the stop.  Copy a "
7244 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7245 "I<data> in the tracer.  (I<addr> is ignored.)"
7246 msgstr ""
7247 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7248 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7249 "る。 (I<addr> は無視される。)"
7250
7251 #. type: TP
7252 #: build/C/man2/ptrace.2:269
7253 #, no-wrap
7254 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7255 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7256
7257 #.  FIXME In the preceding sentence, which modifications are disallowed,
7258 #.  and when they are disallowed, how does user space discover that fact?
7259 #. type: Plain text
7260 #: build/C/man2/ptrace.2:294
7261 #, fuzzy
7262 #| msgid ""
7263 #| "Copies the child's general purpose or floating-point registers, "
7264 #| "respectively, from location I<data> in the parent.  As for "
7265 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7266 #| "disallowed.  (I<addr> is ignored.)"
7267 msgid ""
7268 "Modify the tracee's general-purpose or floating-point registers, "
7269 "respectively, from the address I<data> in the tracer.  As for "
7270 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7271 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7272 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7273 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7274 "B<PTRACE_SETFPREGS> are not present on all architectures."
7275 msgstr ""
7276 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7277 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7278 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7279
7280 #. type: TP
7281 #: build/C/man2/ptrace.2:294
7282 #, fuzzy, no-wrap
7283 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7284 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7285 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7286
7287 #. type: Plain text
7288 #: build/C/man2/ptrace.2:303
7289 msgid ""
7290 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7291 "analogous to B<PTRACE_GETREGSET>."
7292 msgstr ""
7293
7294 #. type: TP
7295 #: build/C/man2/ptrace.2:303
7296 #, no-wrap
7297 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7298 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7299
7300 #. type: Plain text
7301 #: build/C/man2/ptrace.2:319
7302 #, fuzzy
7303 #| msgid ""
7304 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7305 #| "I<data> in the parent to the child.  This will only affect signals that "
7306 #| "would normally be delivered to the child and were caught by the tracer.  "
7307 #| "It may be difficult to tell these normal signals from synthetic signals "
7308 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7309 msgid ""
7310 "Set signal information: copy a I<siginfo_t> structure from the address "
7311 "I<data> in the tracer to the tracee.  This will affect only signals that "
7312 "would normally be delivered to the tracee and were caught by the tracer.  It "
7313 "may be difficult to tell these normal signals from synthetic signals "
7314 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7315 msgstr ""
7316 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7317 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7318 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7319 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7320 "かもしれない。 (I<addr> は無視される。)"
7321
7322 #. type: TP
7323 #: build/C/man2/ptrace.2:319
7324 #, no-wrap
7325 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7326 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7327
7328 #. type: Plain text
7329 #: build/C/man2/ptrace.2:328
7330 #, fuzzy
7331 #| msgid ""
7332 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7333 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7334 #| "the following flags:"
7335 msgid ""
7336 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7337 "interpreted as a bit mask of options, which are specified by the following "
7338 "flags:"
7339 msgstr ""
7340 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7341 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7342 "下のフラグを指定できる:"
7343
7344 #. type: TP
7345 #: build/C/man2/ptrace.2:329
7346 #, fuzzy, no-wrap
7347 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7348 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7349 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7350
7351 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7352 #. type: Plain text
7353 #: build/C/man2/ptrace.2:337
7354 msgid ""
7355 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7356 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7357 "ensure that tracees can never escape the tracer's control."
7358 msgstr ""
7359
7360 #. type: TP
7361 #: build/C/man2/ptrace.2:337
7362 #, no-wrap
7363 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7364 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7365
7366 #. type: Plain text
7367 #: build/C/man2/ptrace.2:349
7368 #, fuzzy
7369 #| msgid ""
7370 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7371 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7372 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7373 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7374 msgid ""
7375 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7376 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7377 "by the tracer will return a I<status> value such that"
7378 msgstr ""
7379 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7380 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7381 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7382 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7383
7384 #. type: Plain text
7385 #: build/C/man2/ptrace.2:352
7386 #, no-wrap
7387 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7388 msgstr ""
7389
7390 #. type: Plain text
7391 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7392 #: build/C/man2/ptrace.2:465
7393 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7394 msgstr ""
7395
7396 #. type: Plain text
7397 #: build/C/man2/ptrace.2:377
7398 #, fuzzy
7399 #| msgid ""
7400 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7401 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7402 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7403 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7404 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7405 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7406 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7407 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7408 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7409 msgid ""
7410 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7411 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7412 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7413 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7414 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7415 msgstr ""
7416 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7417 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7418 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7419 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7420 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7421 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7422 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7423 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7424 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7425
7426 #. type: TP
7427 #: build/C/man2/ptrace.2:377
7428 #, no-wrap
7429 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7430 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7431
7432 #. type: Plain text
7433 #: build/C/man2/ptrace.2:386
7434 msgid ""
7435 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7436 "will return a I<status> value such that"
7437 msgstr ""
7438
7439 #. type: Plain text
7440 #: build/C/man2/ptrace.2:389
7441 #, no-wrap
7442 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7443 msgstr ""
7444
7445 #. type: Plain text
7446 #: build/C/man2/ptrace.2:395
7447 msgid ""
7448 "If the execing thread is not a thread group leader, the thread ID is reset "
7449 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7450 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7451 msgstr ""
7452
7453 #. type: TP
7454 #: build/C/man2/ptrace.2:395
7455 #, no-wrap
7456 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7457 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7458
7459 #. type: Plain text
7460 #: build/C/man2/ptrace.2:403
7461 msgid ""
7462 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7463 "I<status> value such that"
7464 msgstr ""
7465
7466 #. type: Plain text
7467 #: build/C/man2/ptrace.2:406
7468 #, no-wrap
7469 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7470 msgstr ""
7471
7472 #. type: Plain text
7473 #: build/C/man2/ptrace.2:410
7474 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7475 msgstr ""
7476
7477 #. type: Plain text
7478 #: build/C/man2/ptrace.2:418
7479 #, fuzzy
7480 #| msgid ""
7481 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7482 #| "8>.  The child's exit status can be retrieved with "
7483 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7484 #| "when registers are still available, allowing the tracer to see where the "
7485 #| "exit occurred, whereas the normal exit notification is done after the "
7486 #| "process is finished exiting.  Even though context is available, the "
7487 #| "tracer cannot prevent the exit from happening at this point."
7488 msgid ""
7489 "The tracee is stopped early during process exit, when registers are still "
7490 "available, allowing the tracer to see where the exit occurred, whereas the "
7491 "normal exit notification is done after the process is finished exiting.  "
7492 "Even though context is available, the tracer cannot prevent the exit from "
7493 "happening at this point."
7494 msgstr ""
7495 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7496 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7497 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7498 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7499 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7500 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7501 "できない。"
7502
7503 #. type: TP
7504 #: build/C/man2/ptrace.2:418
7505 #, no-wrap
7506 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7507 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7508
7509 #. type: Plain text
7510 #: build/C/man2/ptrace.2:430
7511 #, fuzzy
7512 #| msgid ""
7513 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7514 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7515 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7516 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7517 msgid ""
7518 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7519 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7520 "by the tracer will return a I<status> value such that"
7521 msgstr ""
7522 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7523 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7524 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7525 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7526
7527 #. type: Plain text
7528 #: build/C/man2/ptrace.2:433
7529 #, no-wrap
7530 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7531 msgstr ""
7532
7533 #. type: TP
7534 #: build/C/man2/ptrace.2:437
7535 #, no-wrap
7536 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7537 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7538
7539 #. type: Plain text
7540 #: build/C/man2/ptrace.2:446
7541 #, fuzzy
7542 #| msgid ""
7543 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7544 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7545 #| "the difference between normal traps and those caused by a syscall.  "
7546 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7547 msgid ""
7548 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7549 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7550 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7551 "may not work on all architectures.)"
7552 msgstr ""
7553 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7554 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7555 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7556 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7557
7558 #. type: TP
7559 #: build/C/man2/ptrace.2:446
7560 #, no-wrap
7561 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7562 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7563
7564 #. type: Plain text
7565 #: build/C/man2/ptrace.2:458
7566 #, fuzzy
7567 #| msgid ""
7568 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7569 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7570 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7571 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7572 msgid ""
7573 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7574 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7575 "by the tracer will return a I<status> value such that"
7576 msgstr ""
7577 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7578 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7579 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7580 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7581
7582 #. type: Plain text
7583 #: build/C/man2/ptrace.2:461
7584 #, no-wrap
7585 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7586 msgstr ""
7587
7588 #. type: TP
7589 #: build/C/man2/ptrace.2:465
7590 #, no-wrap
7591 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7592 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7593
7594 #. type: Plain text
7595 #: build/C/man2/ptrace.2:474
7596 msgid ""
7597 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7598 "by the tracer will return a I<status> value such that"
7599 msgstr ""
7600
7601 #. type: Plain text
7602 #: build/C/man2/ptrace.2:477
7603 #, no-wrap
7604 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7605 msgstr ""
7606
7607 #. type: Plain text
7608 #: build/C/man2/ptrace.2:481
7609 msgid ""
7610 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7611 "B<PTRACE_GETEVENTMSG>."
7612 msgstr ""
7613
7614 #. type: TP
7615 #: build/C/man2/ptrace.2:482
7616 #, no-wrap
7617 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7618 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7619
7620 #. type: Plain text
7621 #: build/C/man2/ptrace.2:502
7622 #, fuzzy
7623 #| msgid ""
7624 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7625 #| "just happened, placing it in the location I<data> in the parent.  For "
7626 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7627 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7628 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7629 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7630 #| "is ignored.)"
7631 msgid ""
7632 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7633 "just happened, placing it at the address I<data> in the tracer.  For "
7634 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7635 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7636 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7637 "ignored.)"
7638 msgstr ""
7639 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7640 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7641 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7642 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7643 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7644 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7645
7646 #. type: TP
7647 #: build/C/man2/ptrace.2:502
7648 #, no-wrap
7649 msgid "B<PTRACE_CONT>"
7650 msgstr "B<PTRACE_CONT>"
7651
7652 #. type: Plain text
7653 #: build/C/man2/ptrace.2:514
7654 #, fuzzy
7655 #| msgid ""
7656 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7657 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7658 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7659 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7660 #| "is ignored.)"
7661 msgid ""
7662 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7663 "interpreted as the number of a signal to be delivered to the tracee; "
7664 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7665 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7666 "is ignored.)"
7667 msgstr ""
7668 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7669 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7670 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7671 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7672 "は無視される。)"
7673
7674 #. type: TP
7675 #: build/C/man2/ptrace.2:514
7676 #, no-wrap
7677 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7678 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7679
7680 #. type: Plain text
7681 #: build/C/man2/ptrace.2:538
7682 #, fuzzy
7683 #| msgid ""
7684 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7685 #| "child to be stopped at the next entry to or exit from a system call, or "
7686 #| "after execution of a single instruction, respectively.  (The child will "
7687 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7688 #| "perspective, the child will appear to have been stopped by receipt of a "
7689 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7690 #| "inspect the arguments to the system call at the first stop, then do "
7691 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7692 #| "at the second stop.  The I<data> argument is treated as for "
7693 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7694 msgid ""
7695 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7696 "to be stopped at the next entry to or exit from a system call, or after "
7697 "execution of a single instruction, respectively.  (The tracee will also, as "
7698 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7699 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7700 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7701 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7702 "inspect the return value of the system call at the second stop.  The I<data> "
7703 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7704 msgstr ""
7705 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7706 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7707 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7708 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7709 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7710 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7711 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7712 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7713 "同じ様に解釈される。 (I<addr> は無視される。)"
7714
7715 #. type: TP
7716 #: build/C/man2/ptrace.2:538
7717 #, no-wrap
7718 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7719 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7720
7721 #.  As at 3.7
7722 #. type: Plain text
7723 #: build/C/man2/ptrace.2:559
7724 #, fuzzy
7725 #| msgid ""
7726 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7727 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7728 #| "but also singlestep if not a syscall.  This call is used by programs like "
7729 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7730 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7731 #| "not supported on all architectures.)"
7732 msgid ""
7733 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7734 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7735 "but also singlestep if not a system call.  This call is used by programs "
7736 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7737 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7738 "is ignored.  These requests are currently supported only on x86."
7739 msgstr ""
7740 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7741 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7742 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7743 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7744 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7745 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7746 "ポートされているわけではない。)"
7747
7748 #. type: TP
7749 #: build/C/man2/ptrace.2:559
7750 #, fuzzy, no-wrap
7751 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7752 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7753 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7754
7755 #. type: Plain text
7756 #: build/C/man2/ptrace.2:570
7757 msgid ""
7758 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7759 "state of the tracee is similar to a process which has been stopped by a "
7760 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7761 "for additional information.  B<PTRACE_LISTEN> only works on tracees attached "
7762 "by B<PTRACE_SEIZE>."
7763 msgstr ""
7764
7765 #. type: TP
7766 #: build/C/man2/ptrace.2:570
7767 #, no-wrap
7768 msgid "B<PTRACE_KILL>"
7769 msgstr "B<PTRACE_KILL>"
7770
7771 #. type: Plain text
7772 #: build/C/man2/ptrace.2:579
7773 #, fuzzy
7774 #| msgid ""
7775 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7776 #| "ignored.)"
7777 msgid ""
7778 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7779 "ignored.)"
7780 msgstr ""
7781 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7782
7783 #.  [Note from Denys Vlasenko:
7784 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7785 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7786 #. type: Plain text
7787 #: build/C/man2/ptrace.2:598
7788 msgid ""
7789 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7790 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7791 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7792 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7793 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7794 msgstr ""
7795
7796 #. type: TP
7797 #: build/C/man2/ptrace.2:598
7798 #, fuzzy, no-wrap
7799 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7800 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7801 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7802
7803 #. type: Plain text
7804 #: build/C/man2/ptrace.2:612
7805 msgid ""
7806 "Stop a tracee.  If the tracee is running, it will stop with "
7807 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7808 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7809 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7810 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7811 msgstr ""
7812
7813 #. type: TP
7814 #: build/C/man2/ptrace.2:612
7815 #, no-wrap
7816 msgid "B<PTRACE_ATTACH>"
7817 msgstr "B<PTRACE_ATTACH>"
7818
7819 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7820 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7821 #.          Basically, it's not true for any Linux in practical use.
7822 #.  ; the behavior of the tracee is as if it had done a
7823 #.  .BR PTRACE_TRACEME .
7824 #.  The calling process actually becomes the parent of the tracee
7825 #.  process for most purposes (e.g., it will receive
7826 #.  notification of tracee events and appears in
7827 #.  .BR ps (1)
7828 #.  output as the tracee's parent), but a
7829 #.  .BR getppid (2)
7830 #.  by the tracee will still return the PID of the original parent.
7831 #. type: Plain text
7832 #: build/C/man2/ptrace.2:640
7833 msgid ""
7834 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7835 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7836 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7837 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7838 "additional information.  (I<addr> and I<data> are ignored.)"
7839 msgstr ""
7840
7841 #. type: TP
7842 #: build/C/man2/ptrace.2:640
7843 #, fuzzy, no-wrap
7844 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7845 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7846 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7847
7848 #. type: Plain text
7849 #: build/C/man2/ptrace.2:660
7850 msgid ""
7851 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7852 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7853 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7854 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7855 "mask of ptrace options to activate immediately."
7856 msgstr ""
7857
7858 #. type: TP
7859 #: build/C/man2/ptrace.2:660
7860 #, no-wrap
7861 msgid "B<PTRACE_DETACH>"
7862 msgstr "B<PTRACE_DETACH>"
7863
7864 #. type: Plain text
7865 #: build/C/man2/ptrace.2:669
7866 #, fuzzy
7867 #| msgid ""
7868 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7869 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7870 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7871 #| "a traced child can be detached in this way regardless of which method was "
7872 #| "used to initiate tracing.  (I<addr> is ignored.)"
7873 msgid ""
7874 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7875 "Under Linux, a tracee can be detached in this way regardless of which method "
7876 "was used to initiate tracing.  (I<addr> is ignored.)"
7877 msgstr ""
7878 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7879 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7880 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7881 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7882 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7883
7884 #. type: SS
7885 #: build/C/man2/ptrace.2:669
7886 #, no-wrap
7887 msgid "Death under ptrace"
7888 msgstr ""
7889
7890 #. type: Plain text
7891 #: build/C/man2/ptrace.2:678
7892 msgid ""
7893 "When a (possibly multithreaded) process receives a killing signal (one whose "
7894 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7895 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7896 "Notification of this event is delivered via B<waitpid>(2)."
7897 msgstr ""
7898
7899 #. type: Plain text
7900 #: build/C/man2/ptrace.2:687
7901 msgid ""
7902 "Note that the killing signal will first cause signal-delivery-stop (on one "
7903 "tracee only), and only after it is injected by the tracer (or after it was "
7904 "dispatched to a thread which isn't traced), will death from the signal "
7905 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7906 "delivery-stop\" is explained below.)"
7907 msgstr ""
7908
7909 #. type: Plain text
7910 #: build/C/man2/ptrace.2:699
7911 msgid ""
7912 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7913 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7914 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7915 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7916 "of the process are ptraced."
7917 msgstr ""
7918
7919 #. type: Plain text
7920 #: build/C/man2/ptrace.2:704
7921 msgid ""
7922 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7923 "Other threads are not affected."
7924 msgstr ""
7925
7926 #. type: Plain text
7927 #: build/C/man2/ptrace.2:708
7928 msgid ""
7929 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7930 "reports its death to its tracer."
7931 msgstr ""
7932
7933 #. type: Plain text
7934 #: build/C/man2/ptrace.2:722
7935 msgid ""
7936 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7937 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7938 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7939 "on B<execve>(2)  in a multithreaded process."
7940 msgstr ""
7941
7942 #. type: Plain text
7943 #: build/C/man2/ptrace.2:747
7944 msgid ""
7945 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7946 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7947 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7948 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7949 "exists but is not ptrace-stopped (for commands which require a stopped "
7950 "tracee), or if it is not traced by the process which issued the ptrace "
7951 "call.  The tracer needs to keep track of the stopped/running state of the "
7952 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7953 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7954 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7955 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7956 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7957 "yet fully dead\", but already refusing ptrace requests."
7958 msgstr ""
7959
7960 #. type: Plain text
7961 #: build/C/man2/ptrace.2:761
7962 msgid ""
7963 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7964 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7965 "does not occur.  For example, if a thread other than thread group leader "
7966 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7967 "any subsequent ptrace stops will be reported under the thread group leader's "
7968 "PID."
7969 msgstr ""
7970
7971 #. type: SS
7972 #: build/C/man2/ptrace.2:761
7973 #, no-wrap
7974 msgid "Stopped states"
7975 msgstr ""
7976
7977 #. type: Plain text
7978 #: build/C/man2/ptrace.2:763
7979 msgid "A tracee can be in two states: running or stopped."
7980 msgstr ""
7981
7982 #. type: Plain text
7983 #: build/C/man2/ptrace.2:767
7984 msgid ""
7985 "There are many kinds of states when the tracee is stopped, and in ptrace "
7986 "discussions they are often conflated.  Therefore, it is important to use "
7987 "precise terms."
7988 msgstr ""
7989
7990 #. type: Plain text
7991 #: build/C/man2/ptrace.2:778
7992 msgid ""
7993 "In this manual page, any stopped state in which the tracee is ready to "
7994 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
7995 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
7996 "I<syscall-stop>, and so on.  These stopped states are described in detail "
7997 "below."
7998 msgstr ""
7999
8000 #. type: Plain text
8001 #: build/C/man2/ptrace.2:783
8002 msgid ""
8003 "When the running tracee enters ptrace-stop, it notifies its tracer using "
8004 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
8005 "manual page assumes that the tracer waits with:"
8006 msgstr ""
8007
8008 #. type: Plain text
8009 #: build/C/man2/ptrace.2:785
8010 #, no-wrap
8011 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8012 msgstr ""
8013
8014 #.  Denys Vlasenko:
8015 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8016 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8017 #.      rules different if user wants to use waitid? Will waitid require
8018 #.      WEXITED?
8019 #. type: Plain text
8020 #: build/C/man2/ptrace.2:797
8021 msgid ""
8022 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8023 "and I<WIFSTOPPED(status)> true."
8024 msgstr ""
8025
8026 #. type: Plain text
8027 #: build/C/man2/ptrace.2:805
8028 msgid ""
8029 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8030 "but implies their functionality."
8031 msgstr ""
8032
8033 #. type: Plain text
8034 #: build/C/man2/ptrace.2:812
8035 msgid ""
8036 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8037 "recommended: the \"continued\" state is per-process and consuming it can "
8038 "confuse the real parent of the tracee."
8039 msgstr ""
8040
8041 #. type: Plain text
8042 #: build/C/man2/ptrace.2:820
8043 msgid ""
8044 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8045 "results available yet\")  even if the tracer knows there should be a "
8046 "notification.  Example:"
8047 msgstr ""
8048
8049 #. type: Plain text
8050 #: build/C/man2/ptrace.2:829
8051 #, no-wrap
8052 msgid ""
8053 "    errno = 0;\n"
8054 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8055 "    if (errno == ESRCH) {\n"
8056 "        /* tracee is dead */\n"
8057 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8058 "        /* r can still be 0 here! */\n"
8059 "    }\n"
8060 msgstr ""
8061
8062 #. type: Plain text
8063 #: build/C/man2/ptrace.2:852
8064 msgid ""
8065 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8066 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8067 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8068 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8069 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8070 "> macro can't be used to perform this examination, because it returns the "
8071 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8072 msgstr ""
8073
8074 #. type: SS
8075 #: build/C/man2/ptrace.2:852
8076 #, no-wrap
8077 msgid "Signal-delivery-stop"
8078 msgstr ""
8079
8080 #. type: Plain text
8081 #: build/C/man2/ptrace.2:872
8082 msgid ""
8083 "When a (possibly multithreaded) process receives any signal except "
8084 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8085 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8086 "can be explicitly selected by the caller.)  If the selected thread is "
8087 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8088 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8089 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8090 "the next ptrace restart request.  This second step of signal delivery is "
8091 "called I<signal injection> in this manual page.  Note that if the signal is "
8092 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8093 "with the usual exception that B<SIGSTOP> can't be blocked."
8094 msgstr ""
8095
8096 #. type: Plain text
8097 #: build/C/man2/ptrace.2:886
8098 msgid ""
8099 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8100 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8101 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8102 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8103 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8104 "group-stop; see below."
8105 msgstr ""
8106
8107 #. type: SS
8108 #: build/C/man2/ptrace.2:886
8109 #, no-wrap
8110 msgid "Signal injection and suppression"
8111 msgstr ""
8112
8113 #. type: Plain text
8114 #: build/C/man2/ptrace.2:889
8115 msgid ""
8116 "After signal-delivery-stop is observed by the tracer, the tracer should "
8117 "restart the tracee with the call"
8118 msgstr ""
8119
8120 #. type: Plain text
8121 #: build/C/man2/ptrace.2:891
8122 #, no-wrap
8123 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8124 msgstr ""
8125
8126 #. type: Plain text
8127 #: build/C/man2/ptrace.2:904
8128 msgid ""
8129 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8130 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8131 "delivered.  This operation is called I<signal injection> in this manual "
8132 "page, to distinguish it from signal-delivery-stop."
8133 msgstr ""
8134
8135 #. type: Plain text
8136 #: build/C/man2/ptrace.2:910
8137 msgid ""
8138 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8139 "tracer can cause a different signal to be injected."
8140 msgstr ""
8141
8142 #. type: Plain text
8143 #: build/C/man2/ptrace.2:926
8144 msgid ""
8145 "Note that a suppressed signal still causes system calls to return "
8146 "prematurely.  In this case system calls will be restarted: the tracer will "
8147 "observe the tracee to reexecute the interrupted system call (or "
8148 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8149 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8150 "calls (such as B<poll>(2))  which are not restartable after signal are "
8151 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8152 "some syscalls to fail with B<EINTR> even though no observable signal is "
8153 "injected to the tracee."
8154 msgstr ""
8155
8156 #. type: Plain text
8157 #: build/C/man2/ptrace.2:937
8158 msgid ""
8159 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8160 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8161 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8162 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8163 "instead."
8164 msgstr ""
8165
8166 #. type: Plain text
8167 #: build/C/man2/ptrace.2:944
8168 msgid ""
8169 "The fact that signal injection requests may be ignored when restarting the "
8170 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8171 "confusion among ptrace users.  One typical scenario is that the tracer "
8172 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8173 "tracee with"
8174 msgstr ""
8175
8176 #. type: Plain text
8177 #: build/C/man2/ptrace.2:946
8178 #, no-wrap
8179 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8180 msgstr ""
8181
8182 #. type: Plain text
8183 #: build/C/man2/ptrace.2:952
8184 msgid ""
8185 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8186 "the tracee continues to run."
8187 msgstr ""
8188
8189 #. type: Plain text
8190 #: build/C/man2/ptrace.2:972
8191 msgid ""
8192 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8193 "group-stopped process.  This side effect happens before signal-delivery-"
8194 "stop.  The tracer can't suppress this side effect (it can only suppress "
8195 "signal injection, which only causes the B<SIGCONT> handler to not be "
8196 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8197 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8198 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8199 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8200 "by the tracee after it was sent."
8201 msgstr ""
8202
8203 #. type: Plain text
8204 #: build/C/man2/ptrace.2:976
8205 msgid ""
8206 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8207 "side effect happens after signal injection, and therefore can be suppressed "
8208 "by the tracer."
8209 msgstr ""
8210
8211 #
8212 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8213 #.  there is:
8214 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8215 #.              if (signr == SIGSTOP)
8216 #.                      continue;
8217 #. type: Plain text
8218 #: build/C/man2/ptrace.2:986
8219 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8220 msgstr ""
8221
8222 #. type: Plain text
8223 #: build/C/man2/ptrace.2:1003
8224 msgid ""
8225 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8226 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8227 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8228 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8229 "match, otherwise the result is undefined."
8230 msgstr ""
8231
8232 #. type: SS
8233 #: build/C/man2/ptrace.2:1003
8234 #, no-wrap
8235 msgid "Group-stop"
8236 msgstr ""
8237
8238 #. type: Plain text
8239 #: build/C/man2/ptrace.2:1015
8240 msgid ""
8241 "When a (possibly multithreaded) process receives a stopping signal, all "
8242 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8243 "that the stopping signal will first cause signal-delivery-stop (on one "
8244 "tracee only), and only after it is injected by the tracer (or after it was "
8245 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8246 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8247 "reports its group-stop separately to the corresponding tracer."
8248 msgstr ""
8249
8250 #. type: Plain text
8251 #: build/C/man2/ptrace.2:1024
8252 msgid ""
8253 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8254 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8255 "(status)>.  The same result is returned by some other classes of ptrace-"
8256 "stops, therefore the recommended practice is to perform the call"
8257 msgstr ""
8258
8259 #. type: Plain text
8260 #: build/C/man2/ptrace.2:1026
8261 #, no-wrap
8262 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8263 msgstr ""
8264
8265 #. type: Plain text
8266 #: build/C/man2/ptrace.2:1047
8267 msgid ""
8268 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8269 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8270 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8271 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8272 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8273 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8274 "the tracee.)"
8275 msgstr ""
8276
8277 #. type: Plain text
8278 #: build/C/man2/ptrace.2:1056
8279 msgid ""
8280 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8281 "it restarts or kills it, the tracee will not run, and will not send "
8282 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8283 "enters into another B<waitpid>(2)  call."
8284 msgstr ""
8285
8286 #. type: Plain text
8287 #: build/C/man2/ptrace.2:1070
8288 msgid ""
8289 "The kernel behavior described in the previous paragraph causes a problem "
8290 "with transparent handling of stopping signals.  If the tracer restarts the "
8291 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8292 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8293 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8294 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8295 "signals to have no effect on the tracee."
8296 msgstr ""
8297
8298 #. type: Plain text
8299 #: build/C/man2/ptrace.2:1081
8300 msgid ""
8301 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8302 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8303 "in a way where it does not execute, but waits for a new event which it can "
8304 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8305 msgstr ""
8306
8307 #. type: SS
8308 #: build/C/man2/ptrace.2:1081
8309 #, no-wrap
8310 msgid "PTRACE_EVENT stops"
8311 msgstr ""
8312
8313 #. type: Plain text
8314 #: build/C/man2/ptrace.2:1087
8315 msgid ""
8316 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8317 "stops called B<PTRACE_EVENT> stops."
8318 msgstr ""
8319
8320 #. type: Plain text
8321 #: build/C/man2/ptrace.2:1101
8322 msgid ""
8323 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8324 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8325 "additional bit is set in the higher byte of the status word: the value "
8326 "I<statusE<gt>E<gt>8> will be"
8327 msgstr ""
8328
8329 #. type: Plain text
8330 #: build/C/man2/ptrace.2:1103
8331 #, no-wrap
8332 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8333 msgstr ""
8334
8335 #. type: Plain text
8336 #: build/C/man2/ptrace.2:1105
8337 msgid "The following events exist:"
8338 msgstr ""
8339
8340 #. type: TP
8341 #: build/C/man2/ptrace.2:1105
8342 #, no-wrap
8343 msgid "B<PTRACE_EVENT_VFORK>"
8344 msgstr "B<PTRACE_EVENT_VFORK>"
8345
8346 #. type: Plain text
8347 #: build/C/man2/ptrace.2:1118
8348 msgid ""
8349 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8350 "flag.  When the tracee is continued after this stop, it will wait for child "
8351 "to exit/exec before continuing its execution (in other words, the usual "
8352 "behavior on B<vfork>(2))."
8353 msgstr ""
8354
8355 #. type: TP
8356 #: build/C/man2/ptrace.2:1118
8357 #, no-wrap
8358 msgid "B<PTRACE_EVENT_FORK>"
8359 msgstr "B<PTRACE_EVENT_FORK>"
8360
8361 #. type: Plain text
8362 #: build/C/man2/ptrace.2:1126
8363 msgid ""
8364 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8365 "to B<SIGCHLD>."
8366 msgstr ""
8367
8368 #. type: TP
8369 #: build/C/man2/ptrace.2:1126
8370 #, no-wrap
8371 msgid "B<PTRACE_EVENT_CLONE>"
8372 msgstr "B<PTRACE_EVENT_CLONE>"
8373
8374 #. type: Plain text
8375 #: build/C/man2/ptrace.2:1130
8376 msgid "Stop before return from B<clone>(2)."
8377 msgstr ""
8378
8379 #. type: TP
8380 #: build/C/man2/ptrace.2:1130
8381 #, no-wrap
8382 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8383 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8384
8385 #. type: Plain text
8386 #: build/C/man2/ptrace.2:1140
8387 msgid ""
8388 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8389 "flag, but after the child unblocked this tracee by exiting or execing."
8390 msgstr ""
8391
8392 #. type: Plain text
8393 #: build/C/man2/ptrace.2:1146
8394 msgid ""
8395 "For all four stops described above, the stop occurs in the parent (i.e., the "
8396 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8397 "to retrieve the new thread's ID."
8398 msgstr ""
8399
8400 #. type: TP
8401 #: build/C/man2/ptrace.2:1146
8402 #, no-wrap
8403 msgid "B<PTRACE_EVENT_EXEC>"
8404 msgstr "B<PTRACE_EVENT_EXEC>"
8405
8406 #. type: Plain text
8407 #: build/C/man2/ptrace.2:1153
8408 msgid ""
8409 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8410 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8411 msgstr ""
8412
8413 #. type: TP
8414 #: build/C/man2/ptrace.2:1153
8415 #, no-wrap
8416 msgid "B<PTRACE_EVENT_EXIT>"
8417 msgstr "B<PTRACE_EVENT_EXIT>"
8418
8419 #. type: Plain text
8420 #: build/C/man2/ptrace.2:1169
8421 msgid ""
8422 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8423 "exit caused by B<execve>(2)  in a multithreaded process.  "
8424 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8425 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8426 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8427 msgstr ""
8428
8429 #. type: TP
8430 #: build/C/man2/ptrace.2:1169
8431 #, fuzzy, no-wrap
8432 #| msgid "B<PTRACE_EVENT_FORK>"
8433 msgid "B<PTRACE_EVENT_STOP>"
8434 msgstr "B<PTRACE_EVENT_FORK>"
8435
8436 #. type: Plain text
8437 #: build/C/man2/ptrace.2:1174
8438 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8439 msgstr ""
8440
8441 #. type: Plain text
8442 #: build/C/man2/ptrace.2:1186
8443 msgid ""
8444 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8445 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8446 msgstr ""
8447
8448 #. type: SS
8449 #: build/C/man2/ptrace.2:1186
8450 #, no-wrap
8451 msgid "Syscall-stops"
8452 msgstr ""
8453
8454 #. type: Plain text
8455 #: build/C/man2/ptrace.2:1199
8456 msgid ""
8457 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8458 "enter-stop just prior to entering any system call.  If the tracer restarts "
8459 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8460 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8461 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8462 "exit-stop; it happens I<after> syscall-exit-stop.)"
8463 msgstr ""
8464
8465 #. type: Plain text
8466 #: build/C/man2/ptrace.2:1213
8467 msgid ""
8468 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8469 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8470 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8471 "(2)  happened in another thread, and that thread is not traced by the same "
8472 "tracer; this situation is discussed later)."
8473 msgstr ""
8474
8475 #. type: Plain text
8476 #: build/C/man2/ptrace.2:1228
8477 msgid ""
8478 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8479 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8480 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8481 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8482 "0x80)>."
8483 msgstr ""
8484
8485 #. type: Plain text
8486 #: build/C/man2/ptrace.2:1234
8487 msgid ""
8488 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8489 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8490 msgstr ""
8491
8492 #. type: TP
8493 #: build/C/man2/ptrace.2:1234
8494 #, no-wrap
8495 msgid "I<si_code> E<lt>= 0"
8496 msgstr ""
8497
8498 #. type: Plain text
8499 #: build/C/man2/ptrace.2:1246
8500 msgid ""
8501 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8502 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8503 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8504 "asynchronous I/O request."
8505 msgstr ""
8506
8507 #. type: TP
8508 #: build/C/man2/ptrace.2:1246
8509 #, no-wrap
8510 msgid "I<si_code> == SI_KERNEL (0x80)"
8511 msgstr ""
8512
8513 #. type: Plain text
8514 #: build/C/man2/ptrace.2:1250
8515 msgid "B<SIGTRAP> was sent by the kernel."
8516 msgstr ""
8517
8518 #. type: TP
8519 #: build/C/man2/ptrace.2:1250
8520 #, no-wrap
8521 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8522 msgstr ""
8523
8524 #. type: Plain text
8525 #: build/C/man2/ptrace.2:1253
8526 msgid "This is a syscall-stop."
8527 msgstr ""
8528
8529 #. type: Plain text
8530 #: build/C/man2/ptrace.2:1258
8531 msgid ""
8532 "However, syscall-stops happen very often (twice per system call), and "
8533 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8534 "expensive."
8535 msgstr ""
8536
8537 #. type: Plain text
8538 #: build/C/man2/ptrace.2:1281
8539 msgid ""
8540 "Some architectures allow the cases to be distinguished by examining "
8541 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8542 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8543 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8544 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8545 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8546 "and can be detected this way.  But such detection is fragile and is best "
8547 "avoided."
8548 msgstr ""
8549
8550 #. type: Plain text
8551 #: build/C/man2/ptrace.2:1287
8552 msgid ""
8553 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8554 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8555 "reliable and does not incur a performance penalty."
8556 msgstr ""
8557
8558 #. type: Plain text
8559 #: build/C/man2/ptrace.2:1298
8560 msgid ""
8561 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8562 "other by the tracer.  The tracer needs to keep track of the sequence of "
8563 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8564 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8565 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8566 "kinds of ptrace-stop can occur in between."
8567 msgstr ""
8568
8569 #. type: Plain text
8570 #: build/C/man2/ptrace.2:1303
8571 msgid ""
8572 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8573 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8574 msgstr ""
8575
8576 #. type: Plain text
8577 #: build/C/man2/ptrace.2:1315
8578 msgid ""
8579 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8580 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8581 msgstr ""
8582
8583 #. type: SS
8584 #: build/C/man2/ptrace.2:1315
8585 #, no-wrap
8586 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8587 msgstr ""
8588
8589 #
8590 #.  FIXME
8591 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8592 #.  PTRACE_SYSEMU_SINGLESTEP
8593 #. type: Plain text
8594 #: build/C/man2/ptrace.2:1321
8595 msgid "[Details of these kinds of stops are yet to be documented.]"
8596 msgstr ""
8597
8598 #. type: SS
8599 #: build/C/man2/ptrace.2:1321
8600 #, no-wrap
8601 msgid "Informational and restarting ptrace commands"
8602 msgstr ""
8603
8604 #. type: Plain text
8605 #: build/C/man2/ptrace.2:1331
8606 msgid ""
8607 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8608 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8609 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8610 msgstr ""
8611
8612 #. type: Plain text
8613 #: build/C/man2/ptrace.2:1336
8614 msgid ""
8615 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8616 "tracee using informational commands.  These commands leave the tracee in "
8617 "ptrace-stopped state:"
8618 msgstr ""
8619
8620 #. type: Plain text
8621 #: build/C/man2/ptrace.2:1348
8622 #, no-wrap
8623 msgid ""
8624 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8625 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8626 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8627 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8628 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8629 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8630 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8631 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8632 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8633 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8634 msgstr ""
8635
8636 #. type: Plain text
8637 #: build/C/man2/ptrace.2:1360
8638 msgid ""
8639 "Note that some errors are not reported.  For example, setting signal "
8640 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8641 "call may succeed (return 0 and not set I<errno>); querying "
8642 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8643 "ptrace-stop is not documented as returning a meaningful event message."
8644 msgstr ""
8645
8646 #. type: Plain text
8647 #: build/C/man2/ptrace.2:1362
8648 msgid "The call"
8649 msgstr ""
8650
8651 #. type: Plain text
8652 #: build/C/man2/ptrace.2:1364
8653 #, no-wrap
8654 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8655 msgstr ""
8656
8657 #. type: Plain text
8658 #: build/C/man2/ptrace.2:1373
8659 msgid ""
8660 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8661 "inherited by new tracees created and \"auto-attached\" via active "
8662 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8663 "options."
8664 msgstr ""
8665
8666 #. type: Plain text
8667 #: build/C/man2/ptrace.2:1376
8668 msgid ""
8669 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8670 "the form:"
8671 msgstr ""
8672
8673 #. type: Plain text
8674 #: build/C/man2/ptrace.2:1378
8675 #, no-wrap
8676 msgid "    ptrace(cmd, pid, 0, sig);\n"
8677 msgstr ""
8678
8679 #. type: Plain text
8680 #: build/C/man2/ptrace.2:1399
8681 msgid ""
8682 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8683 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8684 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8685 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8686 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8687 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8688 msgstr ""
8689
8690 #. type: SS
8691 #: build/C/man2/ptrace.2:1399
8692 #, no-wrap
8693 msgid "Attaching and detaching"
8694 msgstr ""
8695
8696 #. type: Plain text
8697 #: build/C/man2/ptrace.2:1401
8698 msgid "A thread can be attached to the tracer using the call"
8699 msgstr ""
8700
8701 #. type: Plain text
8702 #: build/C/man2/ptrace.2:1403
8703 #, no-wrap
8704 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8705 msgstr ""
8706
8707 #. type: Plain text
8708 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1894
8709 msgid "or"
8710 msgstr ""
8711
8712 #. type: Plain text
8713 #: build/C/man2/ptrace.2:1407
8714 #, no-wrap
8715 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8716 msgstr ""
8717
8718 #
8719 #.  FIXME: Describe how to attach to a thread which is already
8720 #.         group-stopped.
8721 #. type: Plain text
8722 #: build/C/man2/ptrace.2:1432
8723 msgid ""
8724 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8725 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8726 "signals are concurrently sent to this thread during attach, the tracer may "
8727 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8728 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8729 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8730 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8731 "B<SIGSTOP> may be lost."
8732 msgstr ""
8733
8734 #. type: Plain text
8735 #: build/C/man2/ptrace.2:1439
8736 msgid ""
8737 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8738 "may cause a stray B<EINTR> return from the currently executing system call "
8739 "in the tracee, as described in the \"Signal injection and suppression\" "
8740 "section."
8741 msgstr ""
8742
8743 #. type: Plain text
8744 #: build/C/man2/ptrace.2:1450
8745 msgid ""
8746 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8747 "B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it "
8748 "after attach (or at any other time) without sending it any signals, use "
8749 "B<PTRACE_INTERRUPT> command."
8750 msgstr ""
8751
8752 #. type: Plain text
8753 #: build/C/man2/ptrace.2:1452
8754 msgid "The request"
8755 msgstr ""
8756
8757 #. type: Plain text
8758 #: build/C/man2/ptrace.2:1454
8759 #, no-wrap
8760 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8761 msgstr ""
8762
8763 #. type: Plain text
8764 #: build/C/man2/ptrace.2:1460
8765 msgid ""
8766 "turns the calling thread into a tracee.  The thread continues to run "
8767 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8768 "B<PTRACE_TRACEME> with"
8769 msgstr ""
8770
8771 #. type: Plain text
8772 #: build/C/man2/ptrace.2:1462
8773 #, no-wrap
8774 msgid "    raise(SIGSTOP);\n"
8775 msgstr ""
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:1465
8779 msgid ""
8780 "and allow the parent (which is our tracer now) to observe our signal-"
8781 "delivery-stop."
8782 msgstr ""
8783
8784 #. type: Plain text
8785 #: build/C/man2/ptrace.2:1489
8786 msgid ""
8787 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8788 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8789 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8790 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8791 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8792 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8793 "them to enter signal-delivery-stop after they exit the system call which "
8794 "created them."
8795 msgstr ""
8796
8797 #. type: Plain text
8798 #: build/C/man2/ptrace.2:1491
8799 msgid "Detaching of the tracee is performed by:"
8800 msgstr ""
8801
8802 #. type: Plain text
8803 #: build/C/man2/ptrace.2:1493
8804 #, no-wrap
8805 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8806 msgstr ""
8807
8808 #. type: Plain text
8809 #: build/C/man2/ptrace.2:1501
8810 msgid ""
8811 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8812 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8813 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8814 msgstr ""
8815
8816 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8817 #.         doesn't run, but continues to wait for SIGCONT.
8818 #. type: Plain text
8819 #: build/C/man2/ptrace.2:1525
8820 msgid ""
8821 "If the tracee is running when the tracer wants to detach it, the usual "
8822 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8823 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8824 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8825 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8826 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8827 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8828 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8829 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8830 msgstr ""
8831
8832 #. type: Plain text
8833 #: build/C/man2/ptrace.2:1533
8834 msgid ""
8835 "If the tracer dies, all tracees are automatically detached and restarted, "
8836 "unless they were in group-stop.  Handling of restart from group-stop is "
8837 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8838 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8839 "stop, the pending signal is injected."
8840 msgstr ""
8841
8842 #. type: SS
8843 #: build/C/man2/ptrace.2:1533
8844 #, no-wrap
8845 msgid "execve(2) under ptrace"
8846 msgstr ""
8847
8848 #
8849 #.  clone(2) CLONE_THREAD says:
8850 #.      If  any  of the threads in a thread group performs an execve(2),
8851 #.      then all threads other than the thread group leader are terminated,
8852 #.      and the new program is executed in the thread group leader.
8853 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8854 #. type: Plain text
8855 #: build/C/man2/ptrace.2:1552
8856 msgid ""
8857 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8858 "destroys all other threads in the process, and resets the thread ID of the "
8859 "execing thread to the thread group ID (process ID).  (Or, to put things "
8860 "another way, when a multithreaded process does an B<execve>(2), at "
8861 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8862 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8863 "This resetting of the thread ID looks very confusing to tracers:"
8864 msgstr ""
8865
8866 #. type: Plain text
8867 #: build/C/man2/ptrace.2:1562
8868 msgid ""
8869 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8870 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8871 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8872 "exit code 0."
8873 msgstr ""
8874
8875 #. type: Plain text
8876 #: build/C/man2/ptrace.2:1570
8877 msgid ""
8878 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8879 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8880 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8881 "ID is reset to be the same as its process ID, which is the same as the "
8882 "thread group leader's thread ID."
8883 msgstr ""
8884
8885 #. type: Plain text
8886 #: build/C/man2/ptrace.2:1576
8887 msgid ""
8888 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8889 "option was turned on."
8890 msgstr ""
8891
8892 #. type: Plain text
8893 #: build/C/man2/ptrace.2:1597
8894 msgid ""
8895 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8896 "this time, it appears to the tracer that the dead thread leader \"reappears "
8897 "from nowhere\".  (Note: the thread group leader does not report death via "
8898 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8899 "eliminates the possibility that the tracer will see it dying and then "
8900 "reappearing.)  If the thread group leader was still alive, for the tracer "
8901 "this may look as if thread group leader returns from a different system call "
8902 "than it entered, or even \"returned from a system call even though it was "
8903 "not in any system call\".  If the thread group leader was not traced (or was "
8904 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8905 "if it has become a tracee of the tracer of the execing tracee."
8906 msgstr ""
8907
8908 #. type: Plain text
8909 #: build/C/man2/ptrace.2:1600
8910 msgid ""
8911 "All of the above effects are the artifacts of the thread ID change in the "
8912 "tracee."
8913 msgstr ""
8914
8915 #. type: Plain text
8916 #: build/C/man2/ptrace.2:1620
8917 msgid ""
8918 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8919 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8920 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8921 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8922 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8923 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8924 msgstr ""
8925
8926 #. type: Plain text
8927 #: build/C/man2/ptrace.2:1626
8928 msgid ""
8929 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8930 "guaranteed that except this tracee and the thread group leader, no other "
8931 "threads from the process are alive."
8932 msgstr ""
8933
8934 #. type: Plain text
8935 #: build/C/man2/ptrace.2:1634
8936 msgid ""
8937 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8938 "clean up all its internal data structures describing the threads of this "
8939 "process, and retain only one data structure\\(emone which describes the "
8940 "single still running tracee, with"
8941 msgstr ""
8942
8943 #. type: Plain text
8944 #: build/C/man2/ptrace.2:1636
8945 #, no-wrap
8946 msgid "    thread ID == thread group ID == process ID.\n"
8947 msgstr ""
8948
8949 #. type: Plain text
8950 #: build/C/man2/ptrace.2:1640
8951 msgid "Example: two threads call B<execve>(2)  at the same time:"
8952 msgstr ""
8953
8954 #. type: Plain text
8955 #: build/C/man2/ptrace.2:1651
8956 #, no-wrap
8957 msgid ""
8958 "*** we get syscall-enter-stop in thread 1: **\n"
8959 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8960 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8961 "*** we get syscall-enter-stop in thread 2: **\n"
8962 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8963 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8964 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8965 "*** we get syscall-exit-stop for PID0: **\n"
8966 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8967 msgstr ""
8968
8969 #. type: Plain text
8970 #: build/C/man2/ptrace.2:1674
8971 msgid ""
8972 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8973 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8974 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8975 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8976 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8977 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8978 "delivered (much) later."
8979 msgstr ""
8980
8981 #. type: Plain text
8982 #: build/C/man2/ptrace.2:1693
8983 msgid ""
8984 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
8985 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
8986 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
8987 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
8988 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
8989 "B<SIGTRAP> is the recommended approach."
8990 msgstr ""
8991
8992 #. type: SS
8993 #: build/C/man2/ptrace.2:1693
8994 #, no-wrap
8995 msgid "Real parent"
8996 msgstr ""
8997
8998 #. type: Plain text
8999 #: build/C/man2/ptrace.2:1700
9000 msgid ""
9001 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
9002 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
9003 "receiving several kinds of B<waitpid>(2)  notifications when the child "
9004 "process is traced by some other process."
9005 msgstr ""
9006
9007 #. type: Plain text
9008 #: build/C/man2/ptrace.2:1703
9009 msgid ""
9010 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9011 "exist; see BUGS below."
9012 msgstr ""
9013
9014 #. type: Plain text
9015 #: build/C/man2/ptrace.2:1705
9016 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9017 msgstr ""
9018
9019 #. type: Plain text
9020 #: build/C/man2/ptrace.2:1713
9021 msgid ""
9022 "exit/death by signal is reported first to the tracer, then, when the tracer "
9023 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9024 "only when the whole multithreaded process exits).  If the tracer and the "
9025 "real parent are the same process, the report is sent only once."
9026 msgstr ""
9027
9028 #. type: Plain text
9029 #: build/C/man2/ptrace.2:1727
9030 #, fuzzy
9031 #| msgid ""
9032 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9033 #| "other requests return zero.  On error, all requests return -1, and "
9034 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9035 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9036 #| "such requests to determine whether or not an error occurred."
9037 msgid ""
9038 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9039 "requests return zero.  On error, all requests return -1, and I<errno> is set "
9040 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
9041 "request may be -1, the caller must clear I<errno> before the call, and then "
9042 "check it afterward to determine whether or not an error occurred."
9043 msgstr ""
9044 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9045 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9046 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9047 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9048 "なければならない。"
9049
9050 #. type: Plain text
9051 #: build/C/man2/ptrace.2:1731
9052 msgid ""
9053 "(i386 only) There was an error with allocating or freeing a debug register."
9054 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9055
9056 #. type: Plain text
9057 #: build/C/man2/ptrace.2:1742
9058 #, fuzzy
9059 #| msgid ""
9060 #| "There was an attempt to read from or write to an invalid area in the "
9061 #| "parent's or child's memory, probably because the area wasn't mapped or "
9062 #| "accessible.  Unfortunately, under Linux, different variations of this "
9063 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9064 msgid ""
9065 "There was an attempt to read from or write to an invalid area in the "
9066 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9067 "accessible.  Unfortunately, under Linux, different variations of this fault "
9068 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9069 msgstr ""
9070 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9071 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9072 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9073 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9074
9075 #. type: Plain text
9076 #: build/C/man2/ptrace.2:1745
9077 msgid "An attempt was made to set an invalid option."
9078 msgstr "不正なオプションを設定しようとした。"
9079
9080 #. type: Plain text
9081 #: build/C/man2/ptrace.2:1752
9082 #, fuzzy
9083 #| msgid ""
9084 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9085 #| "invalid area in the parent's or child's memory, or there was a word-"
9086 #| "alignment violation, or an invalid signal was specified during a restart "
9087 #| "request."
9088 msgid ""
9089 "I<request> is invalid, or an attempt was made to read from or write to an "
9090 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9091 "alignment violation, or an invalid signal was specified during a restart "
9092 "request."
9093 msgstr ""
9094 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9095 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9096 "開の要求で不正なシグナルを指定した。"
9097
9098 #. type: Plain text
9099 #: build/C/man2/ptrace.2:1765
9100 #, fuzzy
9101 #| msgid ""
9102 #| "The specified process cannot be traced.  This could be because the parent "
9103 #| "has insufficient privileges (the required capability is "
9104 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9105 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9106 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9107 #| "being traced, or be B<init>(8)  (PID 1)."
9108 msgid ""
9109 "The specified process cannot be traced.  This could be because the tracer "
9110 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9111 "unprivileged processes cannot trace processes that they cannot send signals "
9112 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9113 "Alternatively, the process may already be being traced, or (on kernels "
9114 "before 2.6.26) be B<init>(8)  (PID 1)."
9115 msgstr ""
9116 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9117 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9118 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9119 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9120 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9121 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9122
9123 #. type: Plain text
9124 #: build/C/man2/ptrace.2:1770
9125 #, fuzzy
9126 #| msgid ""
9127 #| "The specified process does not exist, or is not currently being traced by "
9128 #| "the caller, or is not stopped (for requests that require that)."
9129 msgid ""
9130 "The specified process does not exist, or is not currently being traced by "
9131 "the caller, or is not stopped (for requests that require a stopped tracee)."
9132 msgstr ""
9133 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9134 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9135 "ない (停止していることが必要な要求の場合)。"
9136
9137 #. type: Plain text
9138 #: build/C/man2/ptrace.2:1772
9139 msgid "SVr4, 4.3BSD."
9140 msgstr "SVr4, 4.3BSD."
9141
9142 #. type: Plain text
9143 #: build/C/man2/ptrace.2:1787
9144 #, fuzzy
9145 #| msgid ""
9146 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9147 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9148 #| "function with only the I<request> argument fixed.  This means that "
9149 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9150 #| "undocumented B<gcc>(1)  behavior."
9151 msgid ""
9152 "Although arguments to B<ptrace>()  are interpreted according to the "
9153 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9154 "function with only the I<request> argument fixed.  It is recommended to "
9155 "always supply four arguments, even if the requested operation does not use "
9156 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9157 msgstr ""
9158 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9159 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9160 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9161 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9162 "になる。"
9163
9164 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9165 #. type: Plain text
9166 #: build/C/man2/ptrace.2:1792
9167 #, fuzzy
9168 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9169 msgid ""
9170 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9171 "be traced."
9172 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9173
9174 #.  See http://lkml.org/lkml/2008/5/8/375
9175 #. type: Plain text
9176 #: build/C/man2/ptrace.2:1799
9177 #, fuzzy
9178 #| msgid ""
9179 #| "The layout of the contents of memory and the USER area are quite OS- and "
9180 #| "architecture-specific.  The offset supplied, and the data returned, might "
9181 #| "not entirely match with the definition of I<struct user>."
9182 msgid ""
9183 "The layout of the contents of memory and the USER area are quite operating-"
9184 "system- and architecture-specific.  The offset supplied, and the data "
9185 "returned, might not entirely match with the definition of I<struct user>."
9186 msgstr ""
9187 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9188 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9189 "に一致しないこともありえる。"
9190
9191 #. type: Plain text
9192 #: build/C/man2/ptrace.2:1802
9193 #, fuzzy
9194 #| msgid ""
9195 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9196 #| "Linux it is 32 bits, etc.)."
9197 msgid ""
9198 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9199 "for 32-bit Linux it is 32 bits)."
9200 msgstr ""
9201 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9202 "では 32 ビットである、など。)"
9203
9204 #. type: Plain text
9205 #: build/C/man2/ptrace.2:1810
9206 #, fuzzy
9207 #| msgid ""
9208 #| "This page documents the way the B<ptrace>()  call works currently in "
9209 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9210 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9211 msgid ""
9212 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9213 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9214 "of B<ptrace>()  is highly specific to the operating system and architecture."
9215 msgstr ""
9216 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9217 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9218 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9219
9220 #. type: Plain text
9221 #: build/C/man2/ptrace.2:1821
9222 #, fuzzy
9223 #| msgid ""
9224 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9225 #| "different value than the one for 2.4.  This leads to applications "
9226 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9227 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9228 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9229 msgid ""
9230 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9231 "different value than the one for 2.4.  This leads to applications compiled "
9232 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9233 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9234 "that is defined."
9235 msgstr ""
9236 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9237 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9238 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9239 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9240 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9241
9242 #. type: Plain text
9243 #: build/C/man2/ptrace.2:1824
9244 msgid ""
9245 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9246 "Last confirmed on 2.6.38.6."
9247 msgstr ""
9248
9249 #.  Note from Denys Vlasenko:
9250 #.      Here "exits" means any kind of death - _exit, exit_group,
9251 #.      signal death. Signal death and exit_group cases are trivial,
9252 #.      though: since signal death and exit_group kill all other threads
9253 #.      too, "until all other threads exit" thing happens rather soon
9254 #.      in these cases. Therefore, only _exit presents observably
9255 #.      puzzling behavior to ptrace users: thread leader _exit's,
9256 #.      but WIFEXITED isn't reported! We are trying to explain here
9257 #.      why it is so.
9258 #.   FIXME: ^^^ need to test/verify this scenario
9259 #. type: Plain text
9260 #: build/C/man2/ptrace.2:1855
9261 msgid ""
9262 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9263 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9264 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9265 "threads exit.  As explained above, if one of other threads calls B<execve>"
9266 "(2), the death of the thread group leader will I<never> be reported.  If the "
9267 "execed thread is not traced by this tracer, the tracer will never know that "
9268 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9269 "thread group leader instead of restarting it in this case.  Last confirmed "
9270 "on 2.6.38.6."
9271 msgstr ""
9272
9273 #. type: Plain text
9274 #: build/C/man2/ptrace.2:1865
9275 msgid ""
9276 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9277 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9278 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9279 "2.6.38.6."
9280 msgstr ""
9281
9282 #. type: Plain text
9283 #: build/C/man2/ptrace.2:1883
9284 msgid ""
9285 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9286 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9287 "is usually done by debuggers on every attach, in order to not introduce a "
9288 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9289 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9290 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9291 "that when you attach to a quiescent process with the command"
9292 msgstr ""
9293
9294 #. type: Plain text
9295 #: build/C/man2/ptrace.2:1885
9296 #, no-wrap
9297 msgid "    strace -p E<lt>process-IDE<gt>\n"
9298 msgstr ""
9299
9300 #. type: Plain text
9301 #: build/C/man2/ptrace.2:1888
9302 msgid "then, instead of the usual and expected one-line output such as"
9303 msgstr ""
9304
9305 #. type: Plain text
9306 #: build/C/man2/ptrace.2:1891
9307 #, no-wrap
9308 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9309 msgstr ""
9310
9311 #. type: Plain text
9312 #: build/C/man2/ptrace.2:1897
9313 #, no-wrap
9314 msgid "    select(6, [5], NULL, [5], NULL_\n"
9315 msgstr ""
9316
9317 #. type: Plain text
9318 #: build/C/man2/ptrace.2:1901
9319 msgid ""
9320 "('_' denotes the cursor position), you observe more than one line.  For "
9321 "example:"
9322 msgstr ""
9323
9324 #. type: Plain text
9325 #: build/C/man2/ptrace.2:1905
9326 #, no-wrap
9327 msgid ""
9328 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9329 "    epoll_wait(4,_\n"
9330 msgstr ""
9331
9332 #. type: Plain text
9333 #: build/C/man2/ptrace.2:1926
9334 msgid ""
9335 "What is not visible here is that the process was blocked in B<epoll_wait>"
9336 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9337 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9338 "case, the program reacted to B<EINTR> by checking the current time, and then "
9339 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9340 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9341 "(1)  attach.)"
9342 msgstr ""
9343
9344 #. type: Plain text
9345 #: build/C/man2/ptrace.2:1940
9346 msgid ""
9347 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9348 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9349 "B<capabilities>(7), B<signal>(7)"
9350 msgstr ""
9351 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9352 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9353 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9354
9355 #. type: TH
9356 #: build/C/man2/quotactl.2:27
9357 #, no-wrap
9358 msgid "QUOTACTL"
9359 msgstr "QUOTACTL"
9360
9361 #. type: TH
9362 #: build/C/man2/quotactl.2:27
9363 #, no-wrap
9364 msgid "2010-06-16"
9365 msgstr "2010-06-16"
9366
9367 #. type: Plain text
9368 #: build/C/man2/quotactl.2:30
9369 msgid "quotactl - manipulate disk quotas"
9370 msgstr "quotactl - ディスク quota を操作する"
9371
9372 #. type: Plain text
9373 #: build/C/man2/quotactl.2:34
9374 #, no-wrap
9375 msgid ""
9376 "B<#include E<lt>sys/quota.hE<gt>>\n"
9377 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9378 msgstr ""
9379 "B<#include E<lt>sys/quota.hE<gt>>\n"
9380 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9381
9382 #. type: Plain text
9383 #: build/C/man2/quotactl.2:37
9384 #, no-wrap
9385 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9386 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9387
9388 #. type: Plain text
9389 #: build/C/man2/quotactl.2:49
9390 #, fuzzy
9391 #| msgid ""
9392 #| "The quota system defines for each user and/or group a soft limit and a "
9393 #| "hard limit bounding the amount of disk space that can be used on a given "
9394 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9395 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9396 #| "soft limit for more than one week (by default)  at a time: after this "
9397 #| "week the soft limit counts as hard limit."
9398 msgid ""
9399 "The quota system can be used to set per-user and per-group limits on the "
9400 "amount of disk space used on a file system.  For each user and/or group, a "
9401 "soft limit and a hard limit can be set for each file system.  The hard limit "
9402 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9403 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9404 "week (by default) at a time; after this time, the soft limit counts as a "
9405 "hard limit."
9406 msgstr ""
9407 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9408 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9409 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9410 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9411 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9412 "過した後はハード・リミットを超過したと みなされる。"
9413
9414 #. type: Plain text
9415 #: build/C/man2/quotactl.2:74
9416 #, fuzzy
9417 #| msgid ""
9418 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9419 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9420 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9421 #| "respectively), and I<subcmd> is described below."
9422 msgid ""
9423 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9424 "indicates a command to be applied to the user or group ID specified in "
9425 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9426 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9427 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9428 msgstr ""
9429 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9430 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9431 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9432 "を指定する。 I<subcmd> は以下で説明する。"
9433
9434 #. type: Plain text
9435 #: build/C/man2/quotactl.2:79
9436 msgid ""
9437 "The I<special> argument is a pointer to a null-terminated string containing "
9438 "the pathname of the (mounted) block special device for the file system being "
9439 "manipulated."
9440 msgstr ""
9441
9442 #. type: Plain text
9443 #: build/C/man2/quotactl.2:87
9444 msgid ""
9445 "The I<addr> argument is the address of an optional, command-specific, data "
9446 "structure that is copied in or out of the system.  The interpretation of "
9447 "I<addr> is given with each command below."
9448 msgstr ""
9449
9450 #. type: Plain text
9451 #: build/C/man2/quotactl.2:91
9452 msgid "The I<subcmd> value is one of the following:"
9453 msgstr "I<subcmd> の値は以下のいずれかである"
9454
9455 #. type: TP
9456 #: build/C/man2/quotactl.2:91
9457 #, no-wrap
9458 msgid "B<Q_QUOTAON>"
9459 msgstr "B<Q_QUOTAON>"
9460
9461 #. type: Plain text
9462 #: build/C/man2/quotactl.2:98
9463 msgid ""
9464 "Turn on quotas for a file system.  The I<id> argument is the identification "
9465 "number of the quota format to be used.  Currently, there are three supported "
9466 "quota formats:"
9467 msgstr ""
9468
9469 #. type: TP
9470 #: build/C/man2/quotactl.2:99
9471 #, no-wrap
9472 msgid "B<QFMT_VFS_OLD>"
9473 msgstr ""
9474
9475 #. type: Plain text
9476 #: build/C/man2/quotactl.2:102
9477 msgid "The original quota format."
9478 msgstr ""
9479
9480 #. type: TP
9481 #: build/C/man2/quotactl.2:102
9482 #, no-wrap
9483 msgid "B<QFMT_VFS_V0>"
9484 msgstr ""
9485
9486 #. type: Plain text
9487 #: build/C/man2/quotactl.2:106
9488 msgid ""
9489 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9490 "quota limits up to 2^42 bytes and 2^32 inodes."
9491 msgstr ""
9492
9493 #. type: TP
9494 #: build/C/man2/quotactl.2:106
9495 #, no-wrap
9496 msgid "B<QFMT_VFS_V1>"
9497 msgstr ""
9498
9499 #. type: Plain text
9500 #: build/C/man2/quotactl.2:110
9501 msgid ""
9502 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9503 "bytes and 2^64 inodes."
9504 msgstr ""
9505
9506 #. type: Plain text
9507 #: build/C/man2/quotactl.2:121
9508 msgid ""
9509 "The I<addr> argument points to the pathname of a file containing the quotas "
9510 "for the file system.  The quota file must exist; it is normally created with "
9511 "the B<quotacheck>(8)  program.  This operation requires privilege "
9512 "(B<CAP_SYS_ADMIN>)."
9513 msgstr ""
9514
9515 #. type: TP
9516 #: build/C/man2/quotactl.2:121
9517 #, no-wrap
9518 msgid "B<Q_QUOTAOFF>"
9519 msgstr "B<Q_QUOTAOFF>"
9520
9521 #. type: Plain text
9522 #: build/C/man2/quotactl.2:131
9523 msgid ""
9524 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9525 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9526 msgstr ""
9527
9528 #. type: TP
9529 #: build/C/man2/quotactl.2:131
9530 #, no-wrap
9531 msgid "B<Q_GETQUOTA>"
9532 msgstr "B<Q_GETQUOTA>"
9533
9534 #. type: Plain text
9535 #: build/C/man2/quotactl.2:142
9536 #, fuzzy
9537 #| msgid ""
9538 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9539 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9540 msgid ""
9541 "Get disk quota limits and current usage for user or group I<id>.  The "
9542 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9543 "quota.hE<gt>> as follows:"
9544 msgstr ""
9545 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9546 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9547
9548 #. type: Plain text
9549 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9550 #, no-wrap
9551 msgid ""
9552 "/* uint64_t is an unsigned 64-bit integer;\n"
9553 "   uint32_t is an unsigned 32-bit integer */\n"
9554 msgstr ""
9555
9556 #. type: Plain text
9557 #: build/C/man2/quotactl.2:167
9558 #, no-wrap
9559 msgid ""
9560 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9561 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9562 "                                  quota blocks alloc */\n"
9563 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9564 "                                  disk quota blocks */\n"
9565 "    uint64_t dqb_curspace;     /* current quota block\n"
9566 "                                  count */\n"
9567 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9568 "                                  allocated inodes */\n"
9569 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9570 "    uint64_t dqb_curinodes;    /* current number of\n"
9571 "                                  allocated inodes */\n"
9572 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9573 "                                  disk use */\n"
9574 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9575 "                                  files */\n"
9576 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9577 "                                  constants */\n"
9578 "};\n"
9579 msgstr ""
9580
9581 #. type: Plain text
9582 #: build/C/man2/quotactl.2:170
9583 #, no-wrap
9584 msgid ""
9585 "/* Flags in dqb_valid that indicate which fields in\n"
9586 "   dqblk structure are valid. */\n"
9587 msgstr ""
9588
9589 #. type: Plain text
9590 #: build/C/man2/quotactl.2:181
9591 #, no-wrap
9592 msgid ""
9593 "#define QIF_BLIMITS   1\n"
9594 "#define QIF_SPACE     2\n"
9595 "#define QIF_ILIMITS   4\n"
9596 "#define QIF_INODES    8\n"
9597 "#define QIF_BTIME     16\n"
9598 "#define QIF_ITIME     32\n"
9599 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9600 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9601 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9602 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9603 msgstr ""
9604
9605 #. type: Plain text
9606 #: build/C/man2/quotactl.2:198
9607 msgid ""
9608 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9609 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9610 "entries of the I<dqblk> structure and marks them as valid in the "
9611 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9612 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9613 msgstr ""
9614
9615 #. type: TP
9616 #: build/C/man2/quotactl.2:198
9617 #, no-wrap
9618 msgid "B<Q_SETQUOTA>"
9619 msgstr "B<Q_SETQUOTA>"
9620
9621 #. type: Plain text
9622 #: build/C/man2/quotactl.2:218
9623 msgid ""
9624 "Set quota information for user or group I<id>, using the information "
9625 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9626 "field of the I<dqblk> structure indicates which entries in the structure "
9627 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9628 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9629 "requires privilege (B<CAP_SYS_ADMIN>)."
9630 msgstr ""
9631
9632 #. type: TP
9633 #: build/C/man2/quotactl.2:218
9634 #, no-wrap
9635 msgid "B<Q_GETINFO>"
9636 msgstr "B<Q_GETINFO>"
9637
9638 #. type: Plain text
9639 #: build/C/man2/quotactl.2:229
9640 #, fuzzy
9641 #| msgid ""
9642 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9643 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9644 msgid ""
9645 "Get information (like grace times) about quotafile.  The I<addr> argument "
9646 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9647 "I<E<lt>sys/quota.hE<gt>> as follows:"
9648 msgstr ""
9649 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9650 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9651
9652 #. type: Plain text
9653 #: build/C/man2/quotactl.2:238
9654 #, no-wrap
9655 msgid ""
9656 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9657 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9658 "                               becomes hard limit */\n"
9659 msgstr ""
9660
9661 #. type: Plain text
9662 #: build/C/man2/quotactl.2:245
9663 #, no-wrap
9664 msgid ""
9665 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9666 "                               becomes hard limit */\n"
9667 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9668 "                               (DQF_*) */\n"
9669 "    uint32_t dqi_valid;\n"
9670 "};\n"
9671 msgstr ""
9672
9673 #. type: Plain text
9674 #: build/C/man2/quotactl.2:247
9675 #, no-wrap
9676 msgid "/* Bits for dqi_flags */\n"
9677 msgstr ""
9678
9679 #. type: Plain text
9680 #: build/C/man2/quotactl.2:249
9681 #, no-wrap
9682 msgid "/* Quota format QFMT_VFS_OLD */\n"
9683 msgstr ""
9684
9685 #. type: Plain text
9686 #: build/C/man2/quotactl.2:251
9687 #, no-wrap
9688 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9689 msgstr ""
9690
9691 #. type: Plain text
9692 #: build/C/man2/quotactl.2:253
9693 #, no-wrap
9694 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9695 msgstr ""
9696
9697 #. type: Plain text
9698 #: build/C/man2/quotactl.2:256
9699 #, no-wrap
9700 msgid ""
9701 "/* Flags in dqi_valid that indicate which fields in\n"
9702 "   dqinfo structure are valid. */\n"
9703 msgstr ""
9704
9705 #. type: Plain text
9706 #: build/C/man2/quotactl.2:261
9707 #, no-wrap
9708 msgid ""
9709 "# define IIF_BGRACE\t1\n"
9710 "# define IIF_IGRACE\t2\n"
9711 "# define IIF_FLAGS\t4\n"
9712 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9713 msgstr ""
9714
9715 #. type: Plain text
9716 #: build/C/man2/quotactl.2:277
9717 msgid ""
9718 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9719 "the structure that are valid.  Currently, the kernel fills in all entries of "
9720 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9721 "field.  The I<id> argument is ignored."
9722 msgstr ""
9723
9724 #. type: TP
9725 #: build/C/man2/quotactl.2:277
9726 #, no-wrap
9727 msgid "B<Q_SETINFO>"
9728 msgstr "B<Q_SETINFO>"
9729
9730 #. type: Plain text
9731 #: build/C/man2/quotactl.2:301
9732 msgid ""
9733 "Set information about quotafile.  The I<addr> argument should be a pointer "
9734 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9735 "indicates the entries in the structure that have been set by the caller.  "
9736 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9737 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9738 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9739 msgstr ""
9740
9741 #. type: TP
9742 #: build/C/man2/quotactl.2:301
9743 #, no-wrap
9744 msgid "B<Q_GETFMT>"
9745 msgstr "B<Q_GETFMT>"
9746
9747 #. type: Plain text
9748 #: build/C/man2/quotactl.2:308
9749 msgid ""
9750 "Get quota format used on the specified file system.  The I<addr> argument "
9751 "should be a pointer to a 4-byte buffer where the format number will be "
9752 "stored."
9753 msgstr ""
9754
9755 #. type: TP
9756 #: build/C/man2/quotactl.2:308
9757 #, no-wrap
9758 msgid "B<Q_SYNC>"
9759 msgstr "B<Q_SYNC>"
9760
9761 #. type: Plain text
9762 #: build/C/man2/quotactl.2:319
9763 msgid ""
9764 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9765 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9766 "I<id> arguments are ignored."
9767 msgstr ""
9768
9769 #. type: TP
9770 #: build/C/man2/quotactl.2:319
9771 #, no-wrap
9772 msgid "B<Q_GETSTATS>"
9773 msgstr "B<Q_GETSTATS>"
9774
9775 #.  Q_GETSTATS was removed in kernel 2.4.22.
9776 #. type: Plain text
9777 #: build/C/man2/quotactl.2:339
9778 msgid ""
9779 "Get statistics and other generic information about the quota subsystem.  The "
9780 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9781 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9782 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9783 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9784 "the information instead."
9785 msgstr ""
9786
9787 #. type: Plain text
9788 #: build/C/man2/quotactl.2:342
9789 msgid ""
9790 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9791 "commands are bypassed and the following commands are used:"
9792 msgstr ""
9793
9794 #. type: TP
9795 #: build/C/man2/quotactl.2:342
9796 #, no-wrap
9797 msgid "B<Q_XQUOTAON>"
9798 msgstr "B<Q_XQUOTAON>"
9799
9800 #. type: Plain text
9801 #: build/C/man2/quotactl.2:363
9802 msgid ""
9803 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9804 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9805 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9806 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9807 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9808 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9809 "(B<CAP_SYS_ADMIN>)."
9810 msgstr ""
9811
9812 #. type: TP
9813 #: build/C/man2/quotactl.2:363
9814 #, no-wrap
9815 msgid "B<Q_XQUOTAOFF>"
9816 msgstr "B<Q_XQUOTAOFF>"
9817
9818 #. type: Plain text
9819 #: build/C/man2/quotactl.2:374
9820 msgid ""
9821 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9822 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9823 "accounting and/or limit enforcement need to be turned off.  This operation "
9824 "requires privilege (B<CAP_SYS_ADMIN>)."
9825 msgstr ""
9826
9827 #. type: TP
9828 #: build/C/man2/quotactl.2:374
9829 #, no-wrap
9830 msgid "B<Q_XGETQUOTA>"
9831 msgstr "B<Q_XGETQUOTA>"
9832
9833 #. type: Plain text
9834 #: build/C/man2/quotactl.2:388
9835 msgid ""
9836 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9837 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9838 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9839 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9840 "user."
9841 msgstr ""
9842
9843 #. type: TP
9844 #: build/C/man2/quotactl.2:388
9845 #, no-wrap
9846 msgid "B<Q_XSETQLIM>"
9847 msgstr "B<Q_XSETQLIM>"
9848
9849 #. type: Plain text
9850 #: build/C/man2/quotactl.2:400
9851 msgid ""
9852 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9853 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9854 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9855 msgstr ""
9856
9857 #. type: TP
9858 #: build/C/man2/quotactl.2:400
9859 #, no-wrap
9860 msgid "B<Q_XGETQSTAT>"
9861 msgstr "B<Q_XGETQSTAT>"
9862
9863 #. type: Plain text
9864 #: build/C/man2/quotactl.2:408
9865 msgid ""
9866 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9867 "quota information.  This is useful for finding out how much space is used to "
9868 "store quota information, and also to get quotaon/off status of a given local "
9869 "XFS file system."
9870 msgstr ""
9871
9872 #. type: TP
9873 #: build/C/man2/quotactl.2:408
9874 #, no-wrap
9875 msgid "B<Q_XQUOTARM>"
9876 msgstr "B<Q_XQUOTARM>"
9877
9878 #. type: Plain text
9879 #: build/C/man2/quotactl.2:412
9880 msgid ""
9881 "Free the disk space taken by disk quotas.  Quotas must have already been "
9882 "turned off."
9883 msgstr ""
9884
9885 #. type: Plain text
9886 #: build/C/man2/quotactl.2:419
9887 msgid ""
9888 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9889 "quota information to disk (in addition to the other file system metadata "
9890 "that it writes out)."
9891 msgstr ""
9892
9893 #. type: SH
9894 #: build/C/man2/quotactl.2:419
9895 #, no-wrap
9896 msgid "RETURN VALUES"
9897 msgstr "返り値"
9898
9899 #. type: Plain text
9900 #: build/C/man2/quotactl.2:427
9901 msgid ""
9902 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9903 "is set to indicate the error."
9904 msgstr ""
9905 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9906 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9907
9908 #. type: Plain text
9909 #: build/C/man2/quotactl.2:434
9910 msgid "I<addr> or I<special> is invalid."
9911 msgstr ""
9912
9913 #. type: Plain text
9914 #: build/C/man2/quotactl.2:440
9915 msgid "I<cmd> or I<type> is invalid."
9916 msgstr ""
9917
9918 #. type: TP
9919 #: build/C/man2/quotactl.2:440
9920 #, no-wrap
9921 msgid "B<ENOENT>"
9922 msgstr "B<ENOENT>"
9923
9924 #. type: Plain text
9925 #: build/C/man2/quotactl.2:447
9926 msgid "The file specified by I<special> or I<addr> does not exist."
9927 msgstr ""
9928
9929 #. type: Plain text
9930 #: build/C/man2/quotactl.2:452
9931 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9932 msgstr ""
9933
9934 #. type: TP
9935 #: build/C/man2/quotactl.2:452
9936 #, no-wrap
9937 msgid "B<ENOTBLK>"
9938 msgstr "B<ENOTBLK>"
9939
9940 #. type: Plain text
9941 #: build/C/man2/quotactl.2:456
9942 msgid "I<special> is not a block device."
9943 msgstr "I<special> がブロックデバイスではない。"
9944
9945 #. type: Plain text
9946 #: build/C/man2/quotactl.2:461
9947 msgid ""
9948 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9949 "specified operation."
9950 msgstr ""
9951
9952 #. type: Plain text
9953 #: build/C/man2/quotactl.2:465
9954 msgid ""
9955 "No disk quota is found for the indicated user.  Quotas have not been turned "
9956 "on for this file system."
9957 msgstr ""
9958
9959 #. type: Plain text
9960 #: build/C/man2/quotactl.2:474
9961 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9962 msgstr ""
9963
9964 #. type: Plain text
9965 #: build/C/man2/quotactl.2:477
9966 msgid "Specified limits are out of range allowed by quota format."
9967 msgstr ""
9968
9969 #. type: Plain text
9970 #: build/C/man2/quotactl.2:486
9971 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9972 msgstr ""
9973
9974 #. type: Plain text
9975 #: build/C/man2/quotactl.2:495
9976 msgid ""
9977 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9978 "the quota file pointed to by I<addr> exists, but is not on the file system "
9979 "pointed to by I<special>."
9980 msgstr ""
9981
9982 #. type: Plain text
9983 #: build/C/man2/quotactl.2:501
9984 msgid ""
9985 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9986 msgstr ""
9987
9988 #. type: Plain text
9989 #: build/C/man2/quotactl.2:504
9990 msgid "The quota file is corrupted."
9991 msgstr "quota ファイルが壊れている。"
9992
9993 #. type: Plain text
9994 #: build/C/man2/quotactl.2:507
9995 msgid "Specified quota format was not found."
9996 msgstr ""
9997
9998 #. type: Plain text
9999 #: build/C/man2/quotactl.2:512
10000 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10001 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10002
10003 #. type: TH
10004 #: build/C/man2/sendfile.2:19
10005 #, no-wrap
10006 msgid "SENDFILE"
10007 msgstr "SENDFILE"
10008
10009 #. type: TH
10010 #: build/C/man2/sendfile.2:19
10011 #, no-wrap
10012 msgid "2011-09-14"
10013 msgstr "2011-09-14"
10014
10015 #. type: Plain text
10016 #: build/C/man2/sendfile.2:22
10017 msgid "sendfile - transfer data between file descriptors"
10018 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10019
10020 #. type: Plain text
10021 #: build/C/man2/sendfile.2:24
10022 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10023 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10024
10025 #.  The below is too ugly. Comments about glibc versions belong
10026 #.  in the notes, not in the header.
10027 #.  .B #include <features.h>
10028 #.  .br
10029 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10030 #.  .br
10031 #.  .B #include <sys/sendfile.h>
10032 #.  .br
10033 #.  #else
10034 #.  .br
10035 #.  .B #include <sys/types.h>
10036 #.  .br
10037 #.  .B /* No system prototype before glibc 2.1. */
10038 #.  .br
10039 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10040 #.  .br
10041 #.  .B #endif
10042 #. type: Plain text
10043 #: build/C/man2/sendfile.2:47
10044 msgid ""
10045 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10046 "size_t>I< count>B<);>"
10047 msgstr ""
10048 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10049 "size_t>I< count>B<);>"
10050
10051 #. type: Plain text
10052 #: build/C/man2/sendfile.2:57
10053 msgid ""
10054 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10055 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10056 "than the combination of B<read>(2)  and B<write>(2), which would require "
10057 "transferring data to and from user space."
10058 msgstr ""
10059 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10060 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10061 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10062 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10063 "るからである。"
10064
10065 #. type: Plain text
10066 #: build/C/man2/sendfile.2:62
10067 msgid ""
10068 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10069 "be a descriptor opened for writing."
10070 msgstr ""
10071 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10072 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10073
10074 #. type: Plain text
10075 #: build/C/man2/sendfile.2:83
10076 msgid ""
10077 "If I<offset> is not NULL, then it points to a variable holding the file "
10078 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10079 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10080 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10081 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10082 "otherwise the current file offset is adjusted to reflect the number of bytes "
10083 "read from I<in_fd>."
10084 msgstr ""
10085 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10086 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10087 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10088 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10089 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10090 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10091 "整する。"
10092
10093 #. type: Plain text
10094 #: build/C/man2/sendfile.2:90
10095 msgid ""
10096 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10097 "current file offset, and the file offset will be updated by the call."
10098 msgstr ""
10099 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10100 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10101
10102 #. type: Plain text
10103 #: build/C/man2/sendfile.2:93
10104 msgid "I<count> is the number of bytes to copy between the file descriptors."
10105 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10106
10107 #. type: Plain text
10108 #: build/C/man2/sendfile.2:100
10109 msgid ""
10110 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10111 "like operations (i.e., it cannot be a socket)."
10112 msgstr ""
10113 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10114 "な\n"
10115 "い (ソケットを指定することはできない)。"
10116
10117 #. type: Plain text
10118 #: build/C/man2/sendfile.2:108
10119 msgid ""
10120 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10121 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10122 "()  changes the file offset appropriately."
10123 msgstr ""
10124 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10125 "な\n"
10126 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10127 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10128
10129 #. type: Plain text
10130 #: build/C/man2/sendfile.2:115
10131 msgid ""
10132 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10133 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10134 msgstr ""
10135 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10136 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10137
10138 #. type: Plain text
10139 #: build/C/man2/sendfile.2:121
10140 msgid ""
10141 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10142 "block."
10143 msgstr ""
10144 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10145 "た。"
10146
10147 #. type: TP
10148 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10149 #: build/C/man2/vmsplice.2:123
10150 #, no-wrap
10151 msgid "B<EBADF>"
10152 msgstr "B<EBADF>"
10153
10154 #. type: Plain text
10155 #: build/C/man2/sendfile.2:125
10156 msgid ""
10157 "The input file was not opened for reading or the output file was not opened "
10158 "for writing."
10159 msgstr ""
10160 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10161 "のためにオープンされていない。"
10162
10163 #. type: Plain text
10164 #: build/C/man2/sendfile.2:128
10165 msgid "Bad address."
10166 msgstr "アドレスがおかしい。"
10167
10168 #. type: Plain text
10169 #: build/C/man2/sendfile.2:134
10170 msgid ""
10171 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10172 "available for I<in_fd>."
10173 msgstr ""
10174 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10175 "が I<in_fd> では利用できない。"
10176
10177 #. type: Plain text
10178 #: build/C/man2/sendfile.2:138
10179 msgid "Unspecified error while reading from I<in_fd>."
10180 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10181
10182 #. type: Plain text
10183 #: build/C/man2/sendfile.2:142
10184 msgid "Insufficient memory to read from I<in_fd>."
10185 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10186
10187 #. type: Plain text
10188 #: build/C/man2/sendfile.2:148
10189 msgid ""
10190 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10191 "sendfile.hE<gt>> is present since glibc 2.1."
10192 msgstr ""
10193 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10194 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10195
10196 #. type: Plain text
10197 #: build/C/man2/sendfile.2:150
10198 msgid "Not specified in POSIX.1-2001, or other standards."
10199 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10200
10201 #. type: Plain text
10202 #: build/C/man2/sendfile.2:155
10203 msgid ""
10204 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10205 "prototypes.  It should not be used in portable programs."
10206 msgstr ""
10207 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10208 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10209
10210 #. type: Plain text
10211 #: build/C/man2/sendfile.2:165
10212 msgid ""
10213 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10214 "need to send some header data in front of the file contents, you will find "
10215 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10216 "minimize the number of packets and to tune performance."
10217 msgstr ""
10218 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10219 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10220 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10221 "いいだろう。"
10222
10223 #. type: Plain text
10224 #: build/C/man2/sendfile.2:171
10225 msgid ""
10226 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10227 "B<sendfile>()  changed the current offset of that file."
10228 msgstr ""
10229 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10230 "き、\n"
10231 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10232
10233 #. type: Plain text
10234 #: build/C/man2/sendfile.2:183
10235 msgid ""
10236 "The original Linux B<sendfile>()  system call was not designed to handle "
10237 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10238 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10239 "function transparently deals with the kernel differences."
10240 msgstr ""
10241 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10242 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10243 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10244 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10245
10246 #. type: Plain text
10247 #: build/C/man2/sendfile.2:192
10248 msgid ""
10249 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10250 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10251 msgstr ""
10252 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10253 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10254
10255 #. type: Plain text
10256 #: build/C/man2/sendfile.2:197
10257 msgid ""
10258 "The Linux-specific B<splice>(2)  call supports transferring data between "
10259 "arbitrary files (e.g., a pair of sockets)."
10260 msgstr ""
10261 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10262 "ソケット同士) でのデータ転送をサポートしている。"
10263
10264 #. type: Plain text
10265 #: build/C/man2/sendfile.2:202
10266 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10267 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10268
10269 #. type: TH
10270 #: build/C/man2/set_tid_address.2:25
10271 #, no-wrap
10272 msgid "SET_TID_ADDRESS"
10273 msgstr "SET_TID_ADDRESS"
10274
10275 #. type: TH
10276 #: build/C/man2/set_tid_address.2:25
10277 #, fuzzy, no-wrap
10278 #| msgid "2012-05-03"
10279 msgid "2012-07-19"
10280 msgstr "2012-05-03"
10281
10282 #. type: Plain text
10283 #: build/C/man2/set_tid_address.2:28
10284 msgid "set_tid_address - set pointer to thread ID"
10285 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10286
10287 #. type: Plain text
10288 #: build/C/man2/set_tid_address.2:31
10289 #, no-wrap
10290 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10291 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10292
10293 #. type: Plain text
10294 #: build/C/man2/set_tid_address.2:33
10295 #, no-wrap
10296 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10297 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10298
10299 #. type: Plain text
10300 #: build/C/man2/set_tid_address.2:40
10301 #, fuzzy
10302 #| msgid ""
10303 #| "The kernel keeps for each process two values called I<set_child_tid> and "
10304 #| "I<clear_child_tid> that are NULL by default."
10305 msgid ""
10306 "For each process, the kernel maintains two attributes (addresses) called "
10307 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10308 "value NULL by default."
10309 msgstr ""
10310 "カーネルは各プロセスについて I<set_child_tid> と I<clear_child_tid> という 2 "
10311 "つの値を保持する。 これらはデフォルトでは NULL である。"
10312
10313 #. type: TP
10314 #: build/C/man2/set_tid_address.2:40
10315 #, fuzzy, no-wrap
10316 #| msgid "set_child_tid"
10317 msgid "I<set_child_tid>"
10318 msgstr "set_child_tid"
10319
10320 #. type: Plain text
10321 #: build/C/man2/set_tid_address.2:51
10322 #, fuzzy
10323 #| msgid ""
10324 #| "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10325 #| "flag, I<set_child_tid> is set to I<child_tidptr>, the fifth argument of "
10326 #| "that system call."
10327 msgid ""
10328 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10329 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10330 "that system call."
10331 msgstr ""
10332 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10333 "れた場合、 I<set_child_tid> は I<child_tidptr> に設定される。 これは B<clone>"
10334 "(2)  のシステムコールの 5 番目の引き数である。"
10335
10336 #. type: Plain text
10337 #: build/C/man2/set_tid_address.2:56
10338 msgid ""
10339 "When I<set_child_tid> is set, the very first thing the new process does is "
10340 "writing its PID at this address."
10341 msgstr ""
10342 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10343 "のアドレスに自身の PID を書き込むことである。"
10344
10345 #. type: TP
10346 #: build/C/man2/set_tid_address.2:56
10347 #, fuzzy, no-wrap
10348 #| msgid "clear_child_tid"
10349 msgid "I<clear_child_tid>"
10350 msgstr "clear_child_tid"
10351
10352 #. type: Plain text
10353 #: build/C/man2/set_tid_address.2:67
10354 #, fuzzy
10355 #| msgid ""
10356 #| "If a process is started using B<clone>(2)  with the "
10357 #| "B<CLONE_CHILD_CLEARTID> flag, I<clear_child_tid> is set to "
10358 #| "I<child_tidptr>, the fifth argument of that system call."
10359 msgid ""
10360 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10361 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10362 "of that system call."
10363 msgstr ""
10364 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2)  によって開始"
10365 "された場合、 I<clear_child_tid> は I<child_tidptr> に設定される。 これは "
10366 "B<clone>(2)  のシステムコールの 5 番目の引き数である。"
10367
10368 #. type: Plain text
10369 #: build/C/man2/set_tid_address.2:74
10370 msgid ""
10371 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10372 "the calling process to I<tidptr>."
10373 msgstr ""
10374 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10375 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10376
10377 #. type: Plain text
10378 #: build/C/man2/set_tid_address.2:82
10379 #, fuzzy
10380 #| msgid ""
10381 #| "When I<clear_child_tid> is set, and the process exits, and the process "
10382 #| "was sharing memory with other processes or threads, then 0 is written at "
10383 #| "this address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> "
10384 #| "call is done.  (That is, wake a single process waiting on this futex.)  "
10385 #| "Errors are ignored."
10386 msgid ""
10387 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10388 "process is sharing memory with other processes or threads, then 0 is written "
10389 "at the address specified in I<clear_child_tid> and the kernel performs the "
10390 "following operation:"
10391 msgstr ""
10392 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
10393 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
10394 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
10395 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
10396 "(wake))。 エラーは無視される。"
10397
10398 #. type: Plain text
10399 #: build/C/man2/set_tid_address.2:84
10400 #, no-wrap
10401 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10402 msgstr ""
10403
10404 #. type: Plain text
10405 #: build/C/man2/set_tid_address.2:88
10406 msgid ""
10407 "The effect of this operation is to wake a single process that is performing "
10408 "a futex wait on the memory location.  Errors from the futex wake operation "
10409 "are ignored."
10410 msgstr ""
10411
10412 #. type: Plain text
10413 #: build/C/man2/set_tid_address.2:91
10414 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10415 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10416
10417 #. type: Plain text
10418 #: build/C/man2/set_tid_address.2:94
10419 msgid "B<set_tid_address>()  always succeeds."
10420 msgstr "B<set_tid_address>()  は常に成功する。"
10421
10422 #. type: Plain text
10423 #: build/C/man2/set_tid_address.2:97
10424 msgid ""
10425 "This call is present since Linux 2.5.48.  Details as given here are valid "
10426 "since Linux 2.5.49."
10427 msgstr ""
10428 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10429 "2.5.49 以降で有効である。"
10430
10431 #. type: Plain text
10432 #: build/C/man2/set_tid_address.2:102
10433 msgid "B<clone>(2), B<futex>(2)"
10434 msgstr "B<clone>(2), B<futex>(2)"
10435
10436 #. type: TH
10437 #: build/C/man2/splice.2:26
10438 #, no-wrap
10439 msgid "SPLICE"
10440 msgstr "SPLICE"
10441
10442 #. type: TH
10443 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10444 #, no-wrap
10445 msgid "2012-05-04"
10446 msgstr "2012-05-04"
10447
10448 #. type: Plain text
10449 #: build/C/man2/splice.2:29
10450 msgid "splice - splice data to/from a pipe"
10451 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10452
10453 #. type: Plain text
10454 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10455 #, no-wrap
10456 msgid ""
10457 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10458 "B<#include E<lt>fcntl.hE<gt>>\n"
10459 msgstr ""
10460 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10461 "B<#include E<lt>fcntl.hE<gt>>\n"
10462
10463 #.  Return type was long before glibc 2.7
10464 #. type: Plain text
10465 #: build/C/man2/splice.2:38
10466 #, no-wrap
10467 msgid ""
10468 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10469 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10470 msgstr ""
10471 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10472 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10473
10474 #. type: Plain text
10475 #: build/C/man2/splice.2:50
10476 msgid ""
10477 "B<splice>()  moves data between two file descriptors without copying between "
10478 "kernel address space and user address space.  It transfers up to I<len> "
10479 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10480 "I<fd_out>, where one of the descriptors must refer to a pipe."
10481 msgstr ""
10482 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10483 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10484 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10485 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10486 "ならない。"
10487
10488 #. type: Plain text
10489 #: build/C/man2/splice.2:80
10490 msgid ""
10491 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10492 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10493 "starting from the current file offset, and the current file offset is "
10494 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10495 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10496 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10497 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10498 "apply for I<fd_out> and I<off_out>."
10499 msgstr ""
10500 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10501 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10502 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10503 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10504 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10505 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10506 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10507 "る。"
10508
10509 #. type: Plain text
10510 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10511 msgid ""
10512 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10513 "or more of the following values:"
10514 msgstr ""
10515 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10516
10517 #. type: TP
10518 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10519 #, no-wrap
10520 msgid "B<SPLICE_F_MOVE>"
10521 msgstr "B<SPLICE_F_MOVE>"
10522
10523 #. type: Plain text
10524 #: build/C/man2/splice.2:98
10525 msgid ""
10526 "Attempt to move pages instead of copying.  This is only a hint to the "
10527 "kernel: pages may still be copied if the kernel cannot move the pages from "
10528 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10529 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10530 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10531 "correct implementation may be restored."
10532 msgstr ""
10533 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10534 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10535 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10536 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10537 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10538 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10539
10540 #. type: TP
10541 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10542 #, no-wrap
10543 msgid "B<SPLICE_F_NONBLOCK>"
10544 msgstr "B<SPLICE_F_NONBLOCK>"
10545
10546 #. type: Plain text
10547 #: build/C/man2/splice.2:107
10548 msgid ""
10549 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10550 "B<splice>()  may nevertheless block because the file descriptors that are "
10551 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10552 msgstr ""
10553 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10554 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10555 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10556 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10557 "らである。"
10558
10559 #. type: TP
10560 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10561 #, no-wrap
10562 msgid "B<SPLICE_F_MORE>"
10563 msgstr "B<SPLICE_F_MORE>"
10564
10565 #. type: Plain text
10566 #: build/C/man2/splice.2:121
10567 msgid ""
10568 "More data will be coming in a subsequent splice.  This is a helpful hint "
10569 "when the I<fd_out> refers to a socket (see also the description of "
10570 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10571 msgstr ""
10572 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10573 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10574 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10575
10576 #. type: TP
10577 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10578 #, no-wrap
10579 msgid "B<SPLICE_F_GIFT>"
10580 msgstr "B<SPLICE_F_GIFT>"
10581
10582 #. type: Plain text
10583 #: build/C/man2/splice.2:127
10584 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10585 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10586
10587 #. type: Plain text
10588 #: build/C/man2/splice.2:136
10589 msgid ""
10590 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10591 "to or from the pipe.  A return value of 0 means that there was no data to "
10592 "transfer, and it would not make sense to block, because there are no writers "
10593 "connected to the write end of the pipe referred to by I<fd_in>."
10594 msgstr ""
10595 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10596 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10597 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10598 "れている者がいないからである。"
10599
10600 #. type: Plain text
10601 #: build/C/man2/splice.2:142
10602 msgid ""
10603 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10604 msgstr ""
10605 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10606 "る。"
10607
10608 #. type: Plain text
10609 #: build/C/man2/splice.2:147
10610 msgid ""
10611 "One or both file descriptors are not valid, or do not have proper read-write "
10612 "mode."
10613 msgstr ""
10614 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10615 "write モードではない。"
10616
10617 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10618 #.  splice() in append mode was broken
10619 #. type: Plain text
10620 #: build/C/man2/splice.2:155
10621 msgid ""
10622 "Target file system doesn't support splicing; target file is opened in append "
10623 "mode; neither of the descriptors refers to a pipe; or offset given for "
10624 "nonseekable device."
10625 msgstr ""
10626 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10627 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10628 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10629
10630 #. type: Plain text
10631 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10632 #: build/C/man2/vmsplice.2:138
10633 msgid "Out of memory."
10634 msgstr "メモリ不足。"
10635
10636 #. type: TP
10637 #: build/C/man2/splice.2:158
10638 #, no-wrap
10639 msgid "B<ESPIPE>"
10640 msgstr "B<ESPIPE>"
10641
10642 #. type: Plain text
10643 #: build/C/man2/splice.2:165
10644 msgid ""
10645 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10646 "descriptor refers to a pipe."
10647 msgstr ""
10648 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10649 "クリプタが パイプを参照している。"
10650
10651 #. type: Plain text
10652 #: build/C/man2/splice.2:170
10653 msgid ""
10654 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10655 "was added to glibc in version 2.5."
10656 msgstr ""
10657 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10658 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10659
10660 #. type: Plain text
10661 #: build/C/man2/splice.2:182
10662 #, fuzzy
10663 #| msgid ""
10664 #| "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), "
10665 #| "provide userspace programs with full control over an arbitrary kernel "
10666 #| "buffer, implemented within the kernel using the same type of buffer that "
10667 #| "is used for a pipe.  In overview, these system calls perform the "
10668 #| "following tasks:"
10669 msgid ""
10670 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10671 "user-space programs with full control over an arbitrary kernel buffer, "
10672 "implemented within the kernel using the same type of buffer that is used for "
10673 "a pipe.  In overview, these system calls perform the following tasks:"
10674 msgstr ""
10675 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10676 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10677 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10678 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10679
10680 #. type: TP
10681 #: build/C/man2/splice.2:182
10682 #, no-wrap
10683 msgid "B<splice>()"
10684 msgstr "B<splice>()"
10685
10686 #. type: Plain text
10687 #: build/C/man2/splice.2:186
10688 msgid ""
10689 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10690 "or from one buffer to another."
10691 msgstr ""
10692 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10693 "から別のバッファへの、データ移動を行う。"
10694
10695 #. type: TP
10696 #: build/C/man2/splice.2:186
10697 #, no-wrap
10698 msgid "B<tee>(2)"
10699 msgstr "B<tee>(2)"
10700
10701 #. type: Plain text
10702 #: build/C/man2/splice.2:189
10703 msgid "\"copies\" the data from one buffer to another."
10704 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10705
10706 #. type: TP
10707 #: build/C/man2/splice.2:189
10708 #, no-wrap
10709 msgid "B<vmsplice>(2)"
10710 msgstr "B<vmsplice>(2)"
10711
10712 #. type: Plain text
10713 #: build/C/man2/splice.2:192
10714 msgid "\"copies\" data from user space into the buffer."
10715 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10716
10717 #.  Linus: Now, imagine using the above in a media server, for example.
10718 #.  Let's say that a year or two has passed, so that the video drivers
10719 #.  have been updated to be able to do the splice thing, and what can
10720 #.  you do? You can:
10721 #.  - splice from the (mpeg or whatever - let's just assume that the video
10722 #.    input is either digital or does the encoding on its own - like they
10723 #.    pretty much all do) video input into a pipe (remember: no copies - the
10724 #.    video input will just DMA directly into memory, and splice will just
10725 #.    set up the pages in the pipe buffer)
10726 #.  - tee that pipe to split it up
10727 #.  - splice one end to a file (ie "save the compressed stream to disk")
10728 #.  - splice the other end to a real-time video decoder window for your
10729 #.    real-time viewing pleasure.
10730 #.  Linus: Now, the advantage of splice()/tee() is that you can
10731 #.  do zero-copy movement of data, and unlike sendfile() you can
10732 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10733 #.  than just sending the data to somebody else: you can duplicate
10734 #.  the data and choose to forward it to two or more different
10735 #.  users - for things like logging etc.).
10736 #. type: Plain text
10737 #: build/C/man2/splice.2:223
10738 msgid ""
10739 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10740 "does this by implementing a pipe buffer as a set of reference-counted "
10741 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10742 "in a buffer by creating new pointers (for the output buffer) referring to "
10743 "the pages, and increasing the reference counts for the pages: only pointers "
10744 "are copied, not the pages of the buffer."
10745 msgstr ""
10746 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10747 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10748 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10749 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10750 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10751 "タだけがコピーされ、 バッファのページはコピーされない。"
10752
10753 #. type: Plain text
10754 #: build/C/man2/splice.2:226
10755 msgid "See B<tee>(2)."
10756 msgstr "B<tee>(2)  参照。"
10757
10758 #. type: Plain text
10759 #: build/C/man2/splice.2:230
10760 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10761 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10762
10763 #. type: TH
10764 #: build/C/man2/tee.2:26
10765 #, no-wrap
10766 msgid "TEE"
10767 msgstr "TEE"
10768
10769 #. type: Plain text
10770 #: build/C/man2/tee.2:29
10771 msgid "tee - duplicating pipe content"
10772 msgstr "tee - パイプの中身を複製する"
10773
10774 #. type: Plain text
10775 #: build/C/man2/tee.2:36
10776 #, no-wrap
10777 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"
10778 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"
10779
10780 #.  Example programs http://brick.kernel.dk/snaps
10781 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10782 #.  (again, incrementing their reference count, not copying the data) from
10783 #.  one pipe to two other pipes.
10784 #. type: Plain text
10785 #: build/C/man2/tee.2:56
10786 msgid ""
10787 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10788 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10789 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10790 "therefore, that data can be copied by a subsequent B<splice>(2)."
10791 msgstr ""
10792 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10793 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10794 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10795 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10796
10797 #. type: Plain text
10798 #: build/C/man2/tee.2:62
10799 msgid ""
10800 "I<flags> is a series of modifier flags, which share the name space with "
10801 "B<splice>(2)  and B<vmsplice>(2):"
10802 msgstr ""
10803 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10804 "名前である。"
10805
10806 #. type: Plain text
10807 #: build/C/man2/tee.2:68
10808 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10809 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10810
10811 #.  Not used for vmsplice
10812 #.  May be in the future -- therefore EAGAIN
10813 #. type: Plain text
10814 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10815 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10816 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10817
10818 #. type: Plain text
10819 #: build/C/man2/tee.2:79
10820 msgid ""
10821 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10822 "see B<splice>(2)."
10823 msgstr ""
10824 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10825 "る。 B<splice>(2)  参照。"
10826
10827 #. type: Plain text
10828 #: build/C/man2/tee.2:85
10829 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10830 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10831
10832 #. type: Plain text
10833 #: build/C/man2/tee.2:94
10834 msgid ""
10835 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10836 "duplicated between the input and output.  A return value of 0 means that "
10837 "there was no data to transfer, and it would not make sense to block, because "
10838 "there are no writers connected to the write end of the pipe referred to by "
10839 "I<fd_in>."
10840 msgstr ""
10841 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10842 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10843 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10844 "ている者がいないからである。"
10845
10846 #. type: Plain text
10847 #: build/C/man2/tee.2:100
10848 msgid ""
10849 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10850 msgstr ""
10851 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10852
10853 #. type: Plain text
10854 #: build/C/man2/tee.2:111
10855 msgid ""
10856 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10857 "refer to the same pipe."
10858 msgstr ""
10859 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10860 "と I<fd_out> が同じパイプを参照している。"
10861
10862 #. type: Plain text
10863 #: build/C/man2/tee.2:119
10864 msgid ""
10865 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10866 "was added to glibc in version 2.5."
10867 msgstr ""
10868 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10869 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10870
10871 #. type: Plain text
10872 #: build/C/man2/tee.2:130
10873 msgid ""
10874 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10875 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10876 "data in the output by merely grabbing a reference to the input."
10877 msgstr ""
10878 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10879 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10880 "照だけを作成することで出力側にデータを 追加する。"
10881
10882 #. type: Plain text
10883 #: build/C/man2/tee.2:136
10884 msgid ""
10885 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10886 "()  system call."
10887 msgstr ""
10888 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10889 "ムを実装したものである。"
10890
10891 #. type: Plain text
10892 #: build/C/man2/tee.2:145
10893 #, no-wrap
10894 msgid ""
10895 "#define _GNU_SOURCE\n"
10896 "#include E<lt>fcntl.hE<gt>\n"
10897 "#include E<lt>stdio.hE<gt>\n"
10898 "#include E<lt>stdlib.hE<gt>\n"
10899 "#include E<lt>unistd.hE<gt>\n"
10900 "#include E<lt>errno.hE<gt>\n"
10901 "#include E<lt>limits.hE<gt>\n"
10902 msgstr ""
10903 "#define _GNU_SOURCE\n"
10904 "#include E<lt>fcntl.hE<gt>\n"
10905 "#include E<lt>stdio.hE<gt>\n"
10906 "#include E<lt>stdlib.hE<gt>\n"
10907 "#include E<lt>unistd.hE<gt>\n"
10908 "#include E<lt>errno.hE<gt>\n"
10909 "#include E<lt>limits.hE<gt>\n"
10910
10911 #. type: Plain text
10912 #: build/C/man2/tee.2:151
10913 #, no-wrap
10914 msgid ""
10915 "int\n"
10916 "main(int argc, char *argv[])\n"
10917 "{\n"
10918 "    int fd;\n"
10919 "    int len, slen;\n"
10920 msgstr ""
10921 "int\n"
10922 "main(int argc, char *argv[])\n"
10923 "{\n"
10924 "    int fd;\n"
10925 "    int len, slen;\n"
10926
10927 #. type: Plain text
10928 #: build/C/man2/tee.2:156
10929 #, no-wrap
10930 msgid ""
10931 "    if (argc != 2) {\n"
10932 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10933 "        exit(EXIT_FAILURE);\n"
10934 "    }\n"
10935 msgstr ""
10936 "    if (argc != 2) {\n"
10937 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10938 "        exit(EXIT_FAILURE);\n"
10939 "    }\n"
10940
10941 #. type: Plain text
10942 #: build/C/man2/tee.2:162
10943 #, no-wrap
10944 msgid ""
10945 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10946 "    if (fd == -1) {\n"
10947 "        perror(\"open\");\n"
10948 "        exit(EXIT_FAILURE);\n"
10949 "    }\n"
10950 msgstr ""
10951 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10952 "    if (fd == -1) {\n"
10953 "        perror(\"open\");\n"
10954 "        exit(EXIT_FAILURE);\n"
10955 "    }\n"
10956
10957 #. type: Plain text
10958 #: build/C/man2/tee.2:169
10959 #, no-wrap
10960 msgid ""
10961 "    do {\n"
10962 "        /*\n"
10963 "         * tee stdin to stdout.\n"
10964 "         */\n"
10965 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10966 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10967 msgstr ""
10968 "    do {\n"
10969 "        /*\n"
10970 "         * tee stdin to stdout.\n"
10971 "         */\n"
10972 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10973 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10974
10975 #. type: Plain text
10976 #: build/C/man2/tee.2:178
10977 #, no-wrap
10978 msgid ""
10979 "        if (len E<lt> 0) {\n"
10980 "            if (errno == EAGAIN)\n"
10981 "                continue;\n"
10982 "            perror(\"tee\");\n"
10983 "            exit(EXIT_FAILURE);\n"
10984 "        } else\n"
10985 "            if (len == 0)\n"
10986 "                break;\n"
10987 msgstr ""
10988 "        if (len E<lt> 0) {\n"
10989 "            if (errno == EAGAIN)\n"
10990 "                continue;\n"
10991 "            perror(\"tee\");\n"
10992 "            exit(EXIT_FAILURE);\n"
10993 "        } else\n"
10994 "            if (len == 0)\n"
10995 "                break;\n"
10996
10997 #. type: Plain text
10998 #: build/C/man2/tee.2:192
10999 #, no-wrap
11000 msgid ""
11001 "        /*\n"
11002 "         * Consume stdin by splicing it to a file.\n"
11003 "         */\n"
11004 "        while (len E<gt> 0) {\n"
11005 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11006 "                          len, SPLICE_F_MOVE);\n"
11007 "            if (slen E<lt> 0) {\n"
11008 "                perror(\"splice\");\n"
11009 "                break;\n"
11010 "            }\n"
11011 "            len -= slen;\n"
11012 "        }\n"
11013 "    } while (1);\n"
11014 msgstr ""
11015 "        /*\n"
11016 "         * Consume stdin by splicing it to a file.\n"
11017 "         */\n"
11018 "        while (len E<gt> 0) {\n"
11019 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11020 "                          len, SPLICE_F_MOVE);\n"
11021 "            if (slen E<lt> 0) {\n"
11022 "                perror(\"splice\");\n"
11023 "                break;\n"
11024 "            }\n"
11025 "            len -= slen;\n"
11026 "        }\n"
11027 "    } while (1);\n"
11028
11029 #. type: Plain text
11030 #: build/C/man2/tee.2:196
11031 #, no-wrap
11032 msgid ""
11033 "    close(fd);\n"
11034 "    exit(EXIT_SUCCESS);\n"
11035 "}\n"
11036 msgstr ""
11037 "    close(fd);\n"
11038 "    exit(EXIT_SUCCESS);\n"
11039 "}\n"
11040
11041 #. type: Plain text
11042 #: build/C/man2/tee.2:200
11043 msgid "B<splice>(2), B<vmsplice>(2)"
11044 msgstr "B<splice>(2), B<vmsplice>(2)"
11045
11046 #. type: TH
11047 #: build/C/man2/vm86.2:26
11048 #, no-wrap
11049 msgid "VM86"
11050 msgstr "VM86"
11051
11052 #. type: TH
11053 #: build/C/man2/vm86.2:26
11054 #, no-wrap
11055 msgid "2009-02-20"
11056 msgstr "2009-02-20"
11057
11058 #. type: Plain text
11059 #: build/C/man2/vm86.2:29
11060 msgid "vm86old, vm86 - enter virtual 8086 mode"
11061 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11062
11063 #. type: Plain text
11064 #: build/C/man2/vm86.2:31
11065 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11066 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11067
11068 #. type: Plain text
11069 #: build/C/man2/vm86.2:33
11070 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11071 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11072
11073 #. type: Plain text
11074 #: build/C/man2/vm86.2:35
11075 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11076 msgstr ""
11077 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11078
11079 #. type: Plain text
11080 #: build/C/man2/vm86.2:46
11081 msgid ""
11082 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11083 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11084 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11085 "and 1.1.9."
11086 msgstr ""
11087 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11088 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11089 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11090
11091 #. type: Plain text
11092 #: build/C/man2/vm86.2:50
11093 msgid ""
11094 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11095 "literature), and are used by B<dosemu>."
11096 msgstr ""
11097 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11098 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11099
11100 #. type: Plain text
11101 #: build/C/man2/vm86.2:52
11102 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11103 msgstr ""
11104 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11105 "ある。"
11106
11107 #. type: Plain text
11108 #: build/C/man2/vm86.2:62
11109 #, fuzzy
11110 #| msgid ""
11111 #| "This return value is specific to i386 and indicates a problem with "
11112 #| "getting userspace data."
11113 msgid ""
11114 "This return value is specific to i386 and indicates a problem with getting "
11115 "user-space data."
11116 msgstr ""
11117 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11118 "あったことを示す。"
11119
11120 #. type: Plain text
11121 #: build/C/man2/vm86.2:66
11122 msgid ""
11123 "This return value indicates the call is not implemented on the present "
11124 "architecture."
11125 msgstr ""
11126 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11127
11128 #. type: Plain text
11129 #: build/C/man2/vm86.2:71
11130 msgid ""
11131 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11132 "should only exist within vm86 mode itself.)"
11133 msgstr ""
11134 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11135 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11136 "い。)"
11137
11138 #. type: Plain text
11139 #: build/C/man2/vm86.2:74
11140 msgid ""
11141 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11142 "used in programs intended to be portable."
11143 msgstr ""
11144 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11145 "したプログラムでは使用すべきでない。"
11146
11147 #. type: TH
11148 #: build/C/man2/vmsplice.2:26
11149 #, no-wrap
11150 msgid "VMSPLICE"
11151 msgstr "VMSPLICE"
11152
11153 #. type: Plain text
11154 #: build/C/man2/vmsplice.2:29
11155 msgid "vmsplice - splice user pages into a pipe"
11156 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11157
11158 #. type: Plain text
11159 #: build/C/man2/vmsplice.2:34
11160 #, no-wrap
11161 msgid ""
11162 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11163 "B<#include E<lt>fcntl.hE<gt>>\n"
11164 "B<#include E<lt>sys/uio.hE<gt>>\n"
11165 msgstr ""
11166 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11167 "B<#include E<lt>fcntl.hE<gt>>\n"
11168 "B<#include E<lt>sys/uio.hE<gt>>\n"
11169
11170 #. type: Plain text
11171 #: build/C/man2/vmsplice.2:37
11172 #, no-wrap
11173 msgid ""
11174 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11175 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11176 msgstr ""
11177 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11178 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11179
11180 #.  Linus: vmsplice() system call to basically do a "write to
11181 #.  the buffer", but using the reference counting and VM traversal
11182 #.  to actually fill the buffer. This means that the user needs to
11183 #.  be careful not to reuse the user-space buffer it spliced into
11184 #.  the kernel-space one (contrast this to "write()", which copies
11185 #.  the actual data, and you can thus reuse the buffer immediately
11186 #.  after a successful write), but that is often easy to do.
11187 #. type: Plain text
11188 #: build/C/man2/vmsplice.2:57
11189 msgid ""
11190 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11191 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11192 "pipe."
11193 msgstr ""
11194 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11195 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11196 "ばならない。"
11197
11198 #. type: Plain text
11199 #: build/C/man2/vmsplice.2:64
11200 msgid ""
11201 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11202 "I<E<lt>sys/uio.hE<gt>>:"
11203 msgstr ""
11204 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11205 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11206
11207 #. type: Plain text
11208 #: build/C/man2/vmsplice.2:71
11209 #, no-wrap
11210 msgid ""
11211 "struct iovec {\n"
11212 "    void  *iov_base;            /* Starting address */\n"
11213 "    size_t iov_len;             /* Number of bytes */\n"
11214 "};\n"
11215 msgstr ""
11216 "struct iovec {\n"
11217 "    void  *iov_base;            /* 開始アドレス */\n"
11218 "    size_t iov_len;             /* バイト数 */\n"
11219 "};\n"
11220
11221 #. type: Plain text
11222 #: build/C/man2/vmsplice.2:84
11223 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11224 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11225
11226 #. type: Plain text
11227 #: build/C/man2/vmsplice.2:97
11228 msgid ""
11229 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11230 "future; see B<splice>(2)."
11231 msgstr ""
11232 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11233 "がある。 B<splice>(2)  参照。"
11234
11235 #.  FIXME Explain the following line in a little more detail:
11236 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11237 #. type: Plain text
11238 #: build/C/man2/vmsplice.2:113
11239 msgid ""
11240 "The user pages are a gift to the kernel.  The application may not modify "
11241 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11242 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11243 "successfully move the pages; if this flag is not specified, then a "
11244 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11245 "also be properly page aligned, both in memory and length."
11246 msgstr ""
11247 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11248 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11249 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11250 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11251 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11252 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11253 "なければならず、 長さもページ境界の倍数でなければならない。"
11254
11255 #. type: Plain text
11256 #: build/C/man2/vmsplice.2:122
11257 msgid ""
11258 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11259 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11260 "is set to indicate the error."
11261 msgstr ""
11262 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11263 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11264
11265 #. type: Plain text
11266 #: build/C/man2/vmsplice.2:127
11267 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11268 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11269
11270 #. type: Plain text
11271 #: build/C/man2/vmsplice.2:135
11272 msgid ""
11273 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11274 "B<SPLICE_F_GIFT> set."
11275 msgstr ""
11276 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11277 "設定されたがメモリがページ境界にあっていない。"
11278
11279 #. type: Plain text
11280 #: build/C/man2/vmsplice.2:143
11281 msgid ""
11282 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11283 "support was added to glibc in version 2.5."
11284 msgstr ""
11285 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11286 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11287
11288 #. type: Plain text
11289 #: build/C/man2/vmsplice.2:154
11290 msgid ""
11291 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11292 "it comes to limitations on number of segments being passed in.  This limit "
11293 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11294 "writing, that limit is 1024."
11295 msgstr ""
11296 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11297 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11298 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11299 "は 1024 である。"
11300
11301 #. type: Plain text
11302 #: build/C/man2/vmsplice.2:157
11303 msgid "B<splice>(2), B<tee>(2)"
11304 msgstr "B<splice>(2), B<tee>(2)"
11305
11306 #~ msgid "2010-08-29"
11307 #~ msgstr "2010-08-29"
11308
11309 #~ msgid ""
11310 #~ "Depending on which operation was executed, the returned value for a "
11311 #~ "successful call can have differing meanings."
11312 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11313
11314 #~ msgid ""
11315 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11316 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11317 #~ "was not equal to the expected value, the operation fails with the error "
11318 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11319 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11320 #~ msgstr ""
11321 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11322 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11323 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11324 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11325 #~ "敗する。"
11326
11327 #~ msgid "An operation was not defined or error in page alignment."
11328 #~ msgstr ""
11329 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11330
11331 #~ msgid "2010-11-04"
11332 #~ msgstr "2010-11-04"
11333
11334 #~ msgid "2007-06-01"
11335 #~ msgstr "2007-06-01"
11336
11337 #~ msgid "1995-11-29"
11338 #~ msgstr "1995-11-29"
11339
11340 #~ msgid "2012-04-26"
11341 #~ msgstr "2012-04-26"
11342
11343 #~ msgid "2004-09-10"
11344 #~ msgstr "2004-09-10"
11345
11346 #~ msgid "2009-09-15"
11347 #~ msgstr "2009-09-15"
11348
11349 #~ msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
11350 #~ msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
11351
11352 #~ msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
11353 #~ msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
11354
11355 #, fuzzy
11356 #~| msgid ""
11357 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11358 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11359 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11360 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11361 #~| "giving the parent a chance to gain control before the new program begins "
11362 #~| "execution.  A process probably shouldn't make this request if its parent "
11363 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11364 #~ msgid ""
11365 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11366 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11367 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11368 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11369 #~ "be sent to it, giving the parent a chance to gain control before the new "
11370 #~ "program begins execution.  A process probably shouldn't make this request "
11371 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11372 #~ "are ignored.)"
11373 #~ msgstr ""
11374 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11375 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11376 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11377 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11378 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11379 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11380 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11381 #~ "は無視される。)"
11382
11383 #~ msgid ""
11384 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11385 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11386 #~ msgstr ""
11387 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11388 #~ "\\ 8> で子プロセスの動作を停止させる。"
11389
11390 #~ msgid ""
11391 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11392 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11393 #~ msgstr ""
11394 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11395 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11396
11397 #~ msgid ""
11398 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11399 #~ "of the calling process; the behavior of the child is as if it had done a "
11400 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11401 #~ "the child process for most purposes (e.g., it will receive notification "
11402 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11403 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11404 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11405 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11406 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11407 #~ msgstr ""
11408 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11409 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11410 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11411 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11412 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11413 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11414 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11415 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11416 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11417
11418 #~ msgid ""
11419 #~ "Tracing causes a few subtle differences in the semantics of traced "
11420 #~ "processes.  For example, if a process is attached to with "
11421 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11422 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11423 #~ "effectively simulate this notification."
11424 #~ msgstr ""
11425 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11426 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11427 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11428 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11429
11430 #~ msgid ""
11431 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11432 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11433 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11434 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11435 #~ "child process after receiving one of these messages."
11436 #~ msgstr ""
11437 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11438 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11439 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11440 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11441 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11442 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11443
11444 #~ msgid ""
11445 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11446 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11447 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11448 #~ "and uniform way."
11449 #~ msgstr ""
11450 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11451 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11452 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11453 #~ "るものとなっている。"
11454
11455 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
11456 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
11457
11458 #~ msgid ""
11459 #~ "The second argument I<special> is the block special device these quota "
11460 #~ "apply to.  It must be mounted."
11461 #~ msgstr ""
11462 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11463 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11464
11465 #~ msgid ""
11466 #~ "The third argument I<id> is the user or group ID these quota apply to "
11467 #~ "(when relevant)."
11468 #~ msgstr ""
11469 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11470 #~ "グループの ID を指定する。"
11471
11472 #~ msgid ""
11473 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11474 #~ "on the command."
11475 #~ msgstr ""
11476 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11477 #~ "指定する。"
11478
11479 #~ msgid ""
11480 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11481 #~ "containing the quota for the file system."
11482 #~ msgstr ""
11483 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11484 #~ "記録されているファイルの パス名を指定する。"
11485
11486 #~ msgid "Disable quota."
11487 #~ msgstr "quota を無効にする。"
11488
11489 #~ msgid "Set limits and current usage; I<addr> is as before."
11490 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11491
11492 #~ msgid "Set limits; I<addr> is as before."
11493 #~ msgstr "制限値を設定する; I<addr> は同上。"
11494
11495 #~ msgid "B<Q_SETUSE>"
11496 #~ msgstr "B<Q_SETUSE>"
11497
11498 #~ msgid "Set usage."
11499 #~ msgstr "使用量を設定する。"
11500
11501 #~ msgid "Sync disk copy of a file system's quota."
11502 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11503
11504 #~ msgid "Get collected stats."
11505 #~ msgstr "収集された統計を取得する。"
11506
11507 #~ msgid ""
11508 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11509 #~ "I<errno> is set appropriately."
11510 #~ msgstr ""
11511 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11512 #~ "I<errno> が適切な値に設定される。"
11513
11514 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11515 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11516
11517 #~ msgid "Bad I<addr> value."
11518 #~ msgstr "I<addr> の値に誤りがある。"
11519
11520 #~ msgid ""
11521 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11522 #~ msgstr ""
11523 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11524 #~ "付からなかった。"
11525
11526 #~ msgid "Cannot read or write the quota file."
11527 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11528
11529 #~ msgid "B<EMFILE>"
11530 #~ msgstr "B<EMFILE>"
11531
11532 #~ msgid "Too many open files: cannot open quota file."
11533 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11534
11535 #~ msgid "I<special> cannot be found in the mount table."
11536 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11537
11538 #~ msgid "B<ENOPKG>"
11539 #~ msgstr "B<ENOPKG>"
11540
11541 #~ msgid "The kernel was compiled without quota support."
11542 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11543
11544 #~ msgid ""
11545 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11546 #~ "asked for another I<id> than that of the process itself, or anything "
11547 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11548 #~ msgstr ""
11549 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11550 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11551 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11552
11553 #~ msgid ""
11554 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11555 #~ "for a file system that didn't have quota enabled."
11556 #~ msgstr ""
11557 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11558 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
11559
11560 #~ msgid "BSD."
11561 #~ msgstr "BSD."