OSDN Git Service

(split) LDP: Translate several number of pages
[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-04-30 20:29+0900\n"
10 "PO-Revision-Date: 2013-05-04 22:18+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 msgid "Subfunctions for x86-64 are:"
152 msgstr "x86-64 の副機能は以下の通り:"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:54
156 #, no-wrap
157 msgid "B<ARCH_SET_FS>"
158 msgstr "B<ARCH_SET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:60
162 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
163 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
164
165 #. type: TP
166 #: build/C/man2/arch_prctl.2:60
167 #, no-wrap
168 msgid "B<ARCH_GET_FS>"
169 msgstr "B<ARCH_GET_FS>"
170
171 #. type: Plain text
172 #: build/C/man2/arch_prctl.2:68
173 msgid ""
174 "Return the 64-bit base value for the I<FS> register of the current thread in "
175 "the I<unsigned long> pointed to by I<addr>."
176 msgstr ""
177 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
178 "I<unsigned long> の領域に格納する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:68
182 #, no-wrap
183 msgid "B<ARCH_SET_GS>"
184 msgstr "B<ARCH_SET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:74
188 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
189 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
190
191 #. type: TP
192 #: build/C/man2/arch_prctl.2:74
193 #, no-wrap
194 msgid "B<ARCH_GET_GS>"
195 msgstr "B<ARCH_GET_GS>"
196
197 #. type: Plain text
198 #: build/C/man2/arch_prctl.2:82
199 msgid ""
200 "Return the 64-bit base value for the I<GS> register of the current thread in "
201 "the I<unsigned long> pointed to by I<addr>."
202 msgstr ""
203 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
204 "I<unsigned long> の領域に格納する。"
205
206 #. type: SH
207 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209
208 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2: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:1714 build/C/man2/quotactl.2:419
215 #: build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88
216 #: build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:52
217 #: build/C/man2/vmsplice.2:113
218 #, no-wrap
219 msgid "RETURN VALUE"
220 msgstr "返り値"
221
222 #. type: Plain text
223 #: build/C/man2/arch_prctl.2:88
224 msgid ""
225 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
226 "I<errno> is set to indicate the error."
227 msgstr ""
228 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
229 "I<errno> をエラーを示す値に設定する。"
230
231 #. type: SH
232 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
233 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
234 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
235 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
236 #: build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64
237 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
238 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:427
239 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
240 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
241 #: build/C/man2/vmsplice.2:122
242 #, no-wrap
243 msgid "ERRORS"
244 msgstr "エラー"
245
246 #. type: TP
247 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
248 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
249 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
250 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1732
251 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
252 #: build/C/man2/vm86.2:58
253 #, no-wrap
254 msgid "B<EFAULT>"
255 msgstr "B<EFAULT>"
256
257 #. type: Plain text
258 #: build/C/man2/arch_prctl.2:93
259 msgid ""
260 "I<addr> points to an unmapped address or is outside the process address "
261 "space."
262 msgstr ""
263 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
264 "にある。"
265
266 #. type: TP
267 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
268 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
269 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
270 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811
271 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
272 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
273 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1743
274 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
275 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
276 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
277 #, no-wrap
278 msgid "B<EINVAL>"
279 msgstr "B<EINVAL>"
280
281 #. type: Plain text
282 #: build/C/man2/arch_prctl.2:97
283 msgid "I<code> is not a valid subcommand."
284 msgstr "I<code> が有効なサブコマンドでない。"
285
286 #. type: TP
287 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
288 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
289 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
290 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1753
291 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
292 #, no-wrap
293 msgid "B<EPERM>"
294 msgstr "B<EPERM>"
295
296 #.  .SH AUTHOR
297 #.  Man page written by Andi Kleen.
298 #. type: Plain text
299 #: build/C/man2/arch_prctl.2:103
300 msgid "I<addr> is outside the process address space."
301 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
302
303 #. type: SH
304 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
305 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
306 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
307 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
308 #: build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829
309 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
310 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
311 #: build/C/man2/ptrace.2:1771 build/C/man2/sendfile.2:148
312 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
313 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
314 #, no-wrap
315 msgid "CONFORMING TO"
316 msgstr "準拠"
317
318 #. type: Plain text
319 #: build/C/man2/arch_prctl.2:107
320 msgid ""
321 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
322 "programs intended to be portable."
323 msgstr ""
324 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
325 "うべきでない。"
326
327 #. type: SH
328 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
329 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
330 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
331 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834
332 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
333 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1773
334 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
335 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
336 #, no-wrap
337 msgid "NOTES"
338 msgstr "注意"
339
340 #. type: Plain text
341 #: build/C/man2/arch_prctl.2:110
342 msgid ""
343 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
344 "currently."
345 msgstr ""
346 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
347 "ポートされている。"
348
349 #. type: Plain text
350 #: build/C/man2/arch_prctl.2:112
351 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
352 msgstr ""
353 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
354 "される。"
355
356 #. type: Plain text
357 #: build/C/man2/arch_prctl.2:115
358 msgid "B<ARCH_SET_GS> is disabled in some kernels."
359 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
360
361 #. type: Plain text
362 #: build/C/man2/arch_prctl.2:130
363 msgid ""
364 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
365 "faster alternative to set a 32-bit base using a segment selector by setting "
366 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
367 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
368 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
369 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
370 msgstr ""
371 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
372 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
373 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
374 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
375 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
376 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
377
378 #. type: Plain text
379 #: build/C/man2/arch_prctl.2:135
380 msgid ""
381 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
382 "have to declare it yourself for now.  This may be fixed in future glibc "
383 "versions."
384 msgstr ""
385 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
386 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
387 "ジョンで修正されるかもしれない。"
388
389 #. type: Plain text
390 #: build/C/man2/arch_prctl.2:138
391 msgid "I<FS> may be already used by the threading library."
392 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
393
394 #. type: SH
395 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
396 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
397 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
398 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112
399 #: build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205
400 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
401 #: build/C/man2/ptrace.2:1927 build/C/man2/quotactl.2:507
402 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
403 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
404 #: build/C/man2/vmsplice.2:154
405 #, no-wrap
406 msgid "SEE ALSO"
407 msgstr "関連項目"
408
409 #. type: Plain text
410 #: build/C/man2/arch_prctl.2:143
411 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
413
414 #. type: Plain text
415 #: build/C/man2/arch_prctl.2:145
416 msgid "AMD X86-64 Programmer's manual"
417 msgstr "AMD X86-64 Programmer's manual"
418
419 #. type: SH
420 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325
421 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
422 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
423 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
424 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114
425 #: build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209
426 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
427 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1941
428 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
429 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
430 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
431 #, no-wrap
432 msgid "COLOPHON"
433 msgstr "この文書について"
434
435 #. type: Plain text
436 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332
437 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
438 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
439 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
440 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121
441 #: build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216
442 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
443 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1948
444 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
445 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
446 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
447 msgid ""
448 "This page is part of release 3.51 of the Linux I<man-pages> project.  A "
449 "description of the project, and information about reporting bugs, can be "
450 "found at http://www.kernel.org/doc/man-pages/."
451 msgstr ""
452 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.51 の一部\n"
453 "である。プロジェクトの説明とバグ報告に関する情報は\n"
454 "http://www.kernel.org/doc/man-pages/ に書かれている。"
455
456 #. type: TH
457 #: build/C/man2/futex.2:53
458 #, no-wrap
459 msgid "FUTEX"
460 msgstr "FUTEX"
461
462 #. type: TH
463 #: build/C/man2/futex.2:53
464 #, no-wrap
465 msgid "2013-03-15"
466 msgstr "2013-03-15"
467
468 #. type: Plain text
469 #: build/C/man2/futex.2:56
470 msgid "futex - fast user-space locking"
471 msgstr "futex - 高速ユーザ空間ロック"
472
473 #. type: Plain text
474 #: build/C/man2/futex.2:61
475 #, no-wrap
476 msgid ""
477 "B<#include E<lt>linux/futex.hE<gt>>\n"
478 "B<#include E<lt>sys/time.hE<gt>>\n"
479 msgstr ""
480 "B<#include E<lt>linux/futex.hE<gt>>\n"
481 "B<#include E<lt>sys/time.hE<gt>>\n"
482
483 #. type: Plain text
484 #: build/C/man2/futex.2:64
485 #, no-wrap
486 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
487 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
488
489 #.  int *? void *? u32 *?
490 #. type: Plain text
491 #: build/C/man2/futex.2:67
492 #, no-wrap
493 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
494 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
495
496 #. type: Plain text
497 #: build/C/man2/futex.2:84
498 msgid ""
499 "The B<futex>()  system call provides a method for a program to wait for a "
500 "value at a given address to change, and a method to wake up anyone waiting "
501 "on a particular address (while the addresses for the same memory in separate "
502 "processes may not be equal, the kernel maps them internally so the same "
503 "memory mapped in different locations will correspond for B<futex>()  "
504 "calls).  This system call is typically used to implement the contended case "
505 "of a lock in shared memory, as described in B<futex>(7)."
506 msgstr ""
507 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
508 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
509 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
510 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
511 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
512 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
513 "る。"
514
515 #. type: Plain text
516 #: build/C/man2/futex.2:91
517 msgid ""
518 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
519 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
520 "mean putting the calling process to sleep or, conversely, waking a waiting "
521 "process."
522 msgstr ""
523 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
524 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
525 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
526 "味する。"
527
528 #. type: Plain text
529 #: build/C/man2/futex.2:98
530 msgid ""
531 "Callers of this function are expected to adhere to the semantics as set out "
532 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
533 "instructions, this in turn probably means that most users will in fact be "
534 "library authors and not general application developers."
535 msgstr ""
536 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
537 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
538 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
539 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
540 "る。"
541
542 #. type: Plain text
543 #: build/C/man2/futex.2:106
544 msgid ""
545 "The I<uaddr> argument needs to point to an aligned integer which stores the "
546 "counter.  The operation to execute is passed via the I<op> argument, along "
547 "with a value I<val>."
548 msgstr ""
549 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
550 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
551 "渡される。"
552
553 #. type: Plain text
554 #: build/C/man2/futex.2:108
555 msgid "Five operations are currently defined:"
556 msgstr "現在のところ 5 つの操作が定義されている:"
557
558 #. type: TP
559 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
560 #, no-wrap
561 msgid "B<FUTEX_WAIT>"
562 msgstr "B<FUTEX_WAIT>"
563
564 #. type: Plain text
565 #: build/C/man2/futex.2:126
566 msgid ""
567 "This operation atomically verifies that the futex address I<uaddr> still "
568 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
569 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
570 "minimum duration of the wait, which is infinite otherwise.  The arguments "
571 "I<uaddr2> and I<val3> are ignored."
572 msgstr ""
573 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
574 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
575 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
576 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
577 "I<uaddr2> と I<val3> は無視される。"
578
579 #. type: Plain text
580 #: build/C/man2/futex.2:134
581 msgid ""
582 "For B<futex>(7), this call is executed if decrementing the count gave a "
583 "negative value (indicating contention), and will sleep until another process "
584 "releases the futex and executes the B<FUTEX_WAKE> operation."
585 msgstr ""
586 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
587 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
588 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
589
590 #. type: TP
591 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
592 #, no-wrap
593 msgid "B<FUTEX_WAKE>"
594 msgstr "B<FUTEX_WAKE>"
595
596 #. type: Plain text
597 #: build/C/man2/futex.2:145
598 msgid ""
599 "This operation wakes at most I<val> processes waiting on this futex address "
600 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
601 "I<val3> are ignored."
602 msgstr ""
603 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
604 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
605 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
606
607 #. type: Plain text
608 #: build/C/man2/futex.2:151
609 msgid ""
610 "For B<futex>(7), this is executed if incrementing the count showed that "
611 "there were waiters, once the futex value has been set to 1 (indicating that "
612 "it is available)."
613 msgstr ""
614 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
615 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
616 "場合に実行される。"
617
618 #. type: TP
619 #: build/C/man2/futex.2:151
620 #, no-wrap
621 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
622 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
623
624 #.  , suitable for .BR poll (2).
625 #. type: Plain text
626 #: build/C/man2/futex.2:167
627 msgid ""
628 "To support asynchronous wakeups, this operation associates a file descriptor "
629 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
630 "receive the signal number that was passed in I<val>.  The calling process "
631 "must close the returned file descriptor after use.  The arguments "
632 "I<timeout>, I<uaddr2> and I<val3> are ignored."
633 msgstr ""
634 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
635 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
636 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
637 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
638 "I<uaddr2>, I<val3> は無視される。"
639
640 #. type: Plain text
641 #: build/C/man2/futex.2:172
642 msgid ""
643 "To prevent race conditions, the caller should test if the futex has been "
644 "upped after B<FUTEX_FD> returns."
645 msgstr ""
646 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
647 "up されたかどうかを確認しなければならない。"
648
649 #. type: Plain text
650 #: build/C/man2/futex.2:176
651 msgid ""
652 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
653 "2.6.26 onward."
654 msgstr ""
655 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
656 "ている。"
657
658 #. type: TP
659 #: build/C/man2/futex.2:176
660 #, no-wrap
661 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
662 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
663
664 #. type: Plain text
665 #: build/C/man2/futex.2:191
666 msgid ""
667 "This operation was introduced in order to avoid a \"thundering herd\" effect "
668 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
669 "another futex.  This call wakes up I<val> processes, and requeues all other "
670 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
671 "I<val3> are ignored."
672 msgstr ""
673 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
674 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
675 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
676 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
677 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
678
679 #. type: TP
680 #: build/C/man2/futex.2:191
681 #, no-wrap
682 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
683 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
684
685 #. type: Plain text
686 #: build/C/man2/futex.2:209
687 msgid ""
688 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
689 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
690 "but first checks whether the location I<uaddr> still contains the value "
691 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
692 "argument I<timeout> is ignored."
693 msgstr ""
694 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
695 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
696 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
697 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
698
699 #. type: Plain text
700 #: build/C/man2/futex.2:216
701 msgid ""
702 "In the event of an error, all operations return -1, and set I<errno> to "
703 "indicate the error.  The return value on success depends on the operation, "
704 "as described in the following list:"
705 msgstr "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りである。"
706
707 #. type: Plain text
708 #: build/C/man2/futex.2:222
709 msgid ""
710 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
711 "the various possible error returns."
712 msgstr "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性があるエラーについては「エラー」の節を参照。"
713
714 #. type: Plain text
715 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
716 msgid "Returns the number of processes woken up."
717 msgstr "wake したプロセスの数を返す。"
718
719 #. type: TP
720 #: build/C/man2/futex.2:225
721 #, no-wrap
722 msgid "B<FUTEX_FD>"
723 msgstr "B<FUTEX_FD>"
724
725 #. type: Plain text
726 #: build/C/man2/futex.2:228
727 msgid "Returns the new file descriptor associated with the futex."
728 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
729
730 #. type: TP
731 #: build/C/man2/futex.2:228
732 #, no-wrap
733 msgid "B<FUTEX_REQUEUE>"
734 msgstr "B<FUTEX_REQUEUE>"
735
736 #. type: TP
737 #: build/C/man2/futex.2:231
738 #, no-wrap
739 msgid "B<FUTEX_CMP_REQUEUE>"
740 msgstr "B<FUTEX_CMP_REQUEUE>"
741
742 #. type: TP
743 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
744 #, no-wrap
745 msgid "B<EACCES>"
746 msgstr "B<EACCES>"
747
748 #. type: Plain text
749 #: build/C/man2/futex.2:238
750 msgid "No read access to futex memory."
751 msgstr "futex メモリに読み込みアクセス権がなかった。"
752
753 #. type: TP
754 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
755 #, no-wrap
756 msgid "B<EAGAIN>"
757 msgstr "B<EAGAIN>"
758
759 #. type: Plain text
760 #: build/C/man2/futex.2:249
761 msgid ""
762 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
763 "equal to the expected value I<val3>.  (This probably indicates a race; use "
764 "the safe B<FUTEX_WAKE> now.)"
765 msgstr "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> を使うこと。)"
766
767 #. type: Plain text
768 #: build/C/man2/futex.2:254
769 msgid "Error retrieving I<timeout> information from user space."
770 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
771
772 #. type: TP
773 #: build/C/man2/futex.2:254
774 #, no-wrap
775 msgid "B<EINTR>"
776 msgstr "B<EINTR>"
777
778 #. type: Plain text
779 #: build/C/man2/futex.2:261
780 msgid ""
781 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
782 "a spurious wakeup."
783 msgstr "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中断された。"
784
785 #. type: Plain text
786 #: build/C/man2/futex.2:264
787 msgid "Invalid argument."
788 msgstr "無効な引き数。"
789
790 #. type: TP
791 #: build/C/man2/futex.2:264
792 #, no-wrap
793 msgid "B<ENFILE>"
794 msgstr "B<ENFILE>"
795
796 #. type: Plain text
797 #: build/C/man2/futex.2:267
798 msgid "The system limit on the total number of open files has been reached."
799 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
800
801 #. type: TP
802 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
803 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
804 #: build/C/man2/vm86.2:62
805 #, no-wrap
806 msgid "B<ENOSYS>"
807 msgstr "B<ENOSYS>"
808
809 #. type: Plain text
810 #: build/C/man2/futex.2:271
811 msgid "Invalid operation specified in I<op>."
812 msgstr "I<op> に無効な操作が指定された。"
813
814 #. type: TP
815 #: build/C/man2/futex.2:271
816 #, no-wrap
817 msgid "B<ETIMEDOUT>"
818 msgstr "B<ETIMEDOUT>"
819
820 #. type: Plain text
821 #: build/C/man2/futex.2:276
822 msgid "Timeout during the B<FUTEX_WAIT> operation."
823 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
824
825 #. type: TP
826 #: build/C/man2/futex.2:276
827 #, no-wrap
828 msgid "B<EWOULDBLOCK>"
829 msgstr "B<EWOULDBLOCK>"
830
831 #. type: Plain text
832 #: build/C/man2/futex.2:286
833 msgid ""
834 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
835 "to the expected value I<val> at the time of the call."
836 msgstr "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 I<val> と異なっていた。"
837
838 #. type: SH
839 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
840 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
841 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
842 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
843 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
844 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
845 #: build/C/man2/vmsplice.2:138
846 #, no-wrap
847 msgid "VERSIONS"
848 msgstr "バージョン"
849
850 #. type: Plain text
851 #: build/C/man2/futex.2:296
852 msgid ""
853 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
854 "from what was described above.  A 4-argument system call with the semantics "
855 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
856 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
857 "especially on the s390 architecture."
858 msgstr ""
859 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
860 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
861 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
862 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
863 "上の特別のものである。"
864
865 #. type: Plain text
866 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
867 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
868 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
869 msgid "This system call is Linux-specific."
870 msgstr "このシステムコールは Linux 固有である。"
871
872 #.  .SH "AUTHORS"
873 #.  .PP
874 #.  Futexes were designed and worked on by
875 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
876 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
877 #.  and Rusty Russell (IBM Linux Technology Center).
878 #.  This page written by bert hubert.
879 #. type: Plain text
880 #: build/C/man2/futex.2:312
881 msgid ""
882 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
883 "for end-users.  (There is no wrapper function for this system call in "
884 "glibc.)  Implementors are expected to be assembly literate and to have read "
885 "the sources of the futex user-space library referenced below."
886 msgstr ""
887 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
888 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
889 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
890 "ブラリの ソースを読み終えていることが要求される。"
891
892 #. type: Plain text
893 #: build/C/man2/futex.2:314
894 msgid "B<futex>(7)"
895 msgstr "B<futex>(7)"
896
897 #. type: Plain text
898 #: build/C/man2/futex.2:317
899 msgid ""
900 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
901 "of the Ottawa Linux Symposium 2002), online at"
902 msgstr ""
903 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
904 "of the Ottawa Linux Symposium 2002), online at"
905
906 #. type: Plain text
907 #: build/C/man2/futex.2:320
908 msgid ""
909 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
910 "E<.UE>"
911 msgstr ""
912 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
913 "E<.UE>"
914
915 #. type: Plain text
916 #: build/C/man2/futex.2:322
917 msgid "Futex example library, futex-*.tar.bz2 at"
918 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
919
920 #. type: Plain text
921 #: build/C/man2/futex.2:325
922 msgid ""
923 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
924 "E<.UE>"
925 msgstr ""
926 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
927 "E<.UE>"
928
929 #. type: TH
930 #: build/C/man2/get_robust_list.2:29
931 #, no-wrap
932 msgid "GET_ROBUST_LIST"
933 msgstr "GET_ROBUST_LIST"
934
935 #. type: TH
936 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
937 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
938 #, no-wrap
939 msgid "2012-07-13"
940 msgstr "2012-07-13"
941
942 #. type: TH
943 #: build/C/man2/get_robust_list.2:29
944 #, no-wrap
945 msgid "Linux System Calls"
946 msgstr ""
947
948 #. type: Plain text
949 #: build/C/man2/get_robust_list.2:32
950 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
951 msgstr ""
952
953 #. type: Plain text
954 #: build/C/man2/get_robust_list.2:36
955 #, no-wrap
956 msgid ""
957 "B<#include E<lt>linux/futex.hE<gt>>\n"
958 "B<#include E<lt>syscall.hE<gt>>\n"
959 msgstr ""
960 "B<#include E<lt>linux/futex.hE<gt>>\n"
961 "B<#include E<lt>syscall.hE<gt>>\n"
962
963 #. type: Plain text
964 #: build/C/man2/get_robust_list.2:40
965 #, no-wrap
966 msgid ""
967 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
968 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
969 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
970 msgstr ""
971
972 #. type: Plain text
973 #: build/C/man2/get_robust_list.2:44
974 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
975 msgstr ""
976
977 #. type: Plain text
978 #: build/C/man2/get_robust_list.2:49
979 msgid ""
980 "The robust futex implementation needs to maintain per-thread lists of robust "
981 "futexes which are unlocked when the thread exits.  These lists are managed "
982 "in user space; the kernel is notified about only the location of the head of "
983 "the list."
984 msgstr ""
985
986 #. type: Plain text
987 #: build/C/man2/get_robust_list.2:65
988 msgid ""
989 "The B<get_robust_list>()  system call returns the head of the robust futex "
990 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
991 "the head of the list for the calling thread is returned.  The list head is "
992 "stored in the location pointed to by I<head_ptr>.  The size of the object "
993 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
994 msgstr ""
995
996 #. type: Plain text
997 #: build/C/man2/get_robust_list.2:77
998 msgid ""
999 "The B<set_robust_list>()  system call requests the kernel to record the head "
1000 "of the list of robust futexes owned by the calling thread.  The I<head> "
1001 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1002 "(*head)>."
1003 msgstr ""
1004
1005 #. type: Plain text
1006 #: build/C/man2/get_robust_list.2:84
1007 msgid ""
1008 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1009 "when the operation is successful, an error code otherwise."
1010 msgstr ""
1011
1012 #. type: Plain text
1013 #: build/C/man2/get_robust_list.2:88
1014 msgid ""
1015 "The B<set_robust_list>()  system call can fail with the following error:"
1016 msgstr ""
1017
1018 #. type: Plain text
1019 #: build/C/man2/get_robust_list.2:94
1020 msgid ""
1021 "I<len> does not match the size of structure B<struct robust_list_head> "
1022 "expected by kernel."
1023 msgstr ""
1024
1025 #. type: Plain text
1026 #: build/C/man2/get_robust_list.2:98
1027 msgid ""
1028 "The B<get_robust_list>()  system call can fail with the following errors:"
1029 msgstr ""
1030
1031 #. type: Plain text
1032 #: build/C/man2/get_robust_list.2:106
1033 msgid ""
1034 "The calling process does not have permission to see the robust futex list of "
1035 "the thread with the thread ID I<pid>, and does not have the "
1036 "B<CAP_SYS_PTRACE> capability."
1037 msgstr ""
1038
1039 #. type: TP
1040 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1041 #: build/C/man2/ptrace.2:1766 build/C/man2/quotactl.2:461
1042 #: build/C/man2/quotactl.2:504
1043 #, no-wrap
1044 msgid "B<ESRCH>"
1045 msgstr "B<ESRCH>"
1046
1047 #. type: Plain text
1048 #: build/C/man2/get_robust_list.2:111
1049 msgid "No thread with the thread ID I<pid> could be found."
1050 msgstr ""
1051
1052 #. type: Plain text
1053 #: build/C/man2/get_robust_list.2:115
1054 msgid ""
1055 "The head of the robust futex list can't be stored at the location I<head>."
1056 msgstr ""
1057
1058 #. type: Plain text
1059 #: build/C/man2/get_robust_list.2:119
1060 msgid ""
1061 "These system calls were added in Linux 2.6.17.  No library support is "
1062 "provided; use B<syscall>(2)."
1063 msgstr ""
1064 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1065 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1066
1067 #. type: Plain text
1068 #: build/C/man2/get_robust_list.2:124
1069 msgid ""
1070 "These system calls are not needed by normal applications.  No support for "
1071 "them is provided in glibc.  In the unlikely event that you want to call them "
1072 "directly, use B<syscall>(2)."
1073 msgstr ""
1074 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1075 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1076 "呼び出したい場合は B<syscall>(2) を使うこと。"
1077
1078 #. type: Plain text
1079 #: build/C/man2/get_robust_list.2:128
1080 msgid ""
1081 "A thread can have only one robust futex list; therefore applications that "
1082 "wish to use this functionality should use the robust mutexes provided by "
1083 "glibc."
1084 msgstr ""
1085
1086 #.  .BR pthread_mutexattr_setrobust_np (3)
1087 #. type: Plain text
1088 #: build/C/man2/get_robust_list.2:131
1089 msgid "B<futex>(2)"
1090 msgstr "B<futex>(2)"
1091
1092 #.  http://lwn.net/Articles/172149/
1093 #. type: Plain text
1094 #: build/C/man2/get_robust_list.2:137
1095 msgid ""
1096 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1097 "txt> in the Linux kernel source tree"
1098 msgstr ""
1099
1100 #. type: TH
1101 #: build/C/man2/getunwind.2:27
1102 #, no-wrap
1103 msgid "GETUNWIND"
1104 msgstr ""
1105
1106 #. type: TH
1107 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1108 #, no-wrap
1109 msgid "2013-02-13"
1110 msgstr "2013-02-13"
1111
1112 #. type: Plain text
1113 #: build/C/man2/getunwind.2:30
1114 msgid "getunwind - copy the unwind data to caller's buffer"
1115 msgstr ""
1116
1117 #. type: Plain text
1118 #: build/C/man2/getunwind.2:34
1119 #, no-wrap
1120 msgid ""
1121 "B<#include E<lt>syscall.hE<gt>>\n"
1122 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1123 msgstr ""
1124 "B<#include E<lt>syscall.hE<gt>>\n"
1125 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1126
1127 #. type: Plain text
1128 #: build/C/man2/getunwind.2:36
1129 #, no-wrap
1130 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1131 msgstr ""
1132
1133 #. type: Plain text
1134 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1135 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1136 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1137 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1138 msgstr ""
1139 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
1140 "を参照。"
1141
1142 #. type: Plain text
1143 #: build/C/man2/getunwind.2:42
1144 msgid "I<Note: this function is obsolete.>"
1145 msgstr ""
1146
1147 #. type: Plain text
1148 #: build/C/man2/getunwind.2:52
1149 msgid ""
1150 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1151 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1152 "of the unwind data; this data describes the gate page (kernel code that is "
1153 "mapped into user space)."
1154 msgstr ""
1155
1156 #. type: Plain text
1157 #: build/C/man2/getunwind.2:64
1158 msgid ""
1159 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1160 "copied only if I<buf_size> is greater than or equal to the size of the "
1161 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1162 "call succeeds, returning the size that would be needed to store the unwind "
1163 "data."
1164 msgstr ""
1165
1166 #. type: Plain text
1167 #: build/C/man2/getunwind.2:68
1168 msgid ""
1169 "The first part of the unwind data contains an unwind table.  The rest "
1170 "contains the associated unwind information, in no particular order.  The "
1171 "unwind table contains entries of the following form:"
1172 msgstr ""
1173
1174 #. type: Plain text
1175 #: build/C/man2/getunwind.2:73
1176 #, no-wrap
1177 msgid ""
1178 "\tu64 start;      (64-bit address of start of function)\n"
1179 "\tu64 end;        (64-bit address of end of function)\n"
1180 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1181 msgstr ""
1182
1183 #. type: Plain text
1184 #: build/C/man2/getunwind.2:81
1185 msgid ""
1186 "An entry whose I<start> value is zero indicates the end of the table.  For "
1187 "more information about the format, see the I<IA-64 Software Conventions and "
1188 "Runtime Architecture> manual."
1189 msgstr ""
1190
1191 #. type: Plain text
1192 #: build/C/man2/getunwind.2:88
1193 #, fuzzy
1194 #| msgid ""
1195 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1196 #| "I<errno> is set to indicate the error."
1197 msgid ""
1198 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1199 "is returned and I<errno> is set to indicate the error."
1200 msgstr ""
1201 "成功すると、 B<kexec_load> は 0 を返す。\n"
1202 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1203
1204 #. type: Plain text
1205 #: build/C/man2/getunwind.2:94
1206 msgid ""
1207 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1208 "stored in the space specified by I<buf>."
1209 msgstr ""
1210
1211 #. type: Plain text
1212 #: build/C/man2/getunwind.2:96
1213 #, fuzzy
1214 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1215 msgid "This system call is available since Linux 2.4."
1216 msgstr ""
1217 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1218 "である。"
1219
1220 #. type: Plain text
1221 #: build/C/man2/getunwind.2:99
1222 msgid ""
1223 "This system call is Linux specific, and is available only on the IA-64 "
1224 "architecture."
1225 msgstr ""
1226
1227 #. type: Plain text
1228 #: build/C/man2/getunwind.2:107
1229 msgid ""
1230 "This system call has been deprecated.  The modern way to obtain the kernel's "
1231 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1232 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1233 msgstr ""
1234
1235 #. type: Plain text
1236 #: build/C/man2/getunwind.2:111
1237 msgid ""
1238 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1239 "that you want to call it, use B<syscall>(2)."
1240 msgstr ""
1241 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1242 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1243
1244 #. type: Plain text
1245 #: build/C/man2/getunwind.2:113
1246 msgid "B<getauxval>(3)"
1247 msgstr "B<getauxval>(3)"
1248
1249 #. type: TH
1250 #: build/C/man2/kexec_load.2:26
1251 #, no-wrap
1252 msgid "KEXEC_LOAD"
1253 msgstr "KEXEC_LOAD"
1254
1255 #. type: Plain text
1256 #: build/C/man2/kexec_load.2:29
1257 msgid "kexec_load - load a new kernel for later execution"
1258 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1259
1260 #. type: Plain text
1261 #: build/C/man2/kexec_load.2:31
1262 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1263 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1264
1265 #. type: Plain text
1266 #: build/C/man2/kexec_load.2:33
1267 msgid ""
1268 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1269 ">"
1270 msgstr ""
1271 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1272 ">"
1273
1274 #. type: Plain text
1275 #: build/C/man2/kexec_load.2:36
1276 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1277 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1278
1279 #. type: Plain text
1280 #: build/C/man2/kexec_load.2:44
1281 msgid ""
1282 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1283 "later by B<reboot>(2)."
1284 msgstr ""
1285 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1286 "その後の B<reboot>(2) で実行できるようにする。"
1287
1288 #. type: Plain text
1289 #: build/C/man2/kexec_load.2:50
1290 msgid ""
1291 "The I<flags> argument is a mask whose high-order bits control the operation "
1292 "of the call.  The following values can be specified in I<flags>:"
1293 msgstr ""
1294 "I<flags> 引き数はマスクビットで、\n"
1295 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1296 "I<flags> には以下の値を指定できる。"
1297
1298 #. type: TP
1299 #: build/C/man2/kexec_load.2:50
1300 #, no-wrap
1301 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1302 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1303
1304 #.  FIXME figure out how this is really used
1305 #. type: Plain text
1306 #: build/C/man2/kexec_load.2:54
1307 msgid "Execute the new kernel automatically on a system crash."
1308 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1309
1310 #. type: TP
1311 #: build/C/man2/kexec_load.2:54
1312 #, no-wrap
1313 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1314 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1315
1316 #. type: Plain text
1317 #: build/C/man2/kexec_load.2:64
1318 msgid ""
1319 "Preserve the system hardware and software states before executing the new "
1320 "kernel.  This could be used for system suspend.  This flag is available only "
1321 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1322 "only if I<nr_segments> is greater than 0."
1323 msgstr ""
1324 "新しいカーネルを実行する前に、\n"
1325 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1326 "システムの中断時 (suspend) などで使用できる。\n"
1327 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1328 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1329
1330 #. type: Plain text
1331 #: build/C/man2/kexec_load.2:84
1332 msgid ""
1333 "The low-order bits of I<flags> contain the architecture of the to-be-"
1334 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1335 "current architecture, or one of the following architecture constants "
1336 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1337 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1338 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1339 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1340 "the system."
1341 msgstr ""
1342 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1343 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1344 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1345 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1346 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1347 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1348 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1349 "システムの CPU で実行可能なものでなければならない。"
1350
1351 #. type: Plain text
1352 #: build/C/man2/kexec_load.2:98
1353 msgid ""
1354 "The I<entry> argument is the physical entry address in the kernel image.  "
1355 "The I<nr_segments> argument is the number of segments pointed to by the "
1356 "I<segments> pointer.  The I<segments> argument is an array of "
1357 "I<kexec_segment> structures which define the kernel layout:"
1358 msgstr ""
1359 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1360 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1361 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1362 "この構造体によりカーネルの配置が定義される。"
1363
1364 #. type: Plain text
1365 #: build/C/man2/kexec_load.2:107
1366 #, no-wrap
1367 msgid ""
1368 "struct kexec_segment {\n"
1369 "    void   *buf;        /* Buffer in user space */\n"
1370 "    size_t  bufsz;      /* Buffer length in user space */\n"
1371 "    void   *mem;        /* Physical address of kernel */\n"
1372 "    size_t  memsz;      /* Physical address length */\n"
1373 "};\n"
1374 msgstr ""
1375 "struct kexec_segment {\n"
1376 "    void   *buf;        /* Buffer in user space */\n"
1377 "    size_t  bufsz;      /* Buffer length in user space */\n"
1378 "    void   *mem;        /* Physical address of kernel */\n"
1379 "    size_t  memsz;      /* Physical address length */\n"
1380 "};\n"
1381
1382 #.  FIXME elaborate on the following:
1383 #. type: Plain text
1384 #: build/C/man2/kexec_load.2:114
1385 msgid ""
1386 "The kernel image defined by I<segments> is copied from the calling process "
1387 "into previously reserved memory."
1388 msgstr ""
1389 "I<segments> で定義されたカーネルイメージは、\n"
1390 "呼び出したプロセスから予約済みメモリにコピーされる。"
1391
1392 #. type: Plain text
1393 #: build/C/man2/kexec_load.2:121
1394 msgid ""
1395 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1396 "I<errno> is set to indicate the error."
1397 msgstr ""
1398 "成功すると、 B<kexec_load> は 0 を返す。\n"
1399 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1400
1401 #. type: TP
1402 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1403 #: build/C/man2/ptrace.2:1729 build/C/man2/quotactl.2:495
1404 #, no-wrap
1405 msgid "B<EBUSY>"
1406 msgstr "B<EBUSY>"
1407
1408 #. type: Plain text
1409 #: build/C/man2/kexec_load.2:126
1410 msgid ""
1411 "Another crash kernel is already being loaded or a crash kernel is already in "
1412 "use."
1413 msgstr ""
1414 "別のクラッシュカーネルがすでにロードされているか、\n"
1415 "クラッシュカーネルがすでに使用されている。"
1416
1417 #.  KEXEC_SEGMENT_MAX == 16
1418 #. type: Plain text
1419 #: build/C/man2/kexec_load.2:133
1420 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1421 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1422
1423 #. type: Plain text
1424 #: build/C/man2/kexec_load.2:138
1425 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1426 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1427
1428 #. type: Plain text
1429 #: build/C/man2/kexec_load.2:142
1430 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1431 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1432
1433 #. type: Plain text
1434 #: build/C/man2/kexec_load.2:149
1435 msgid ""
1436 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1437 "B<syscall>(2)."
1438 msgstr ""
1439 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1440 "B<syscall>(2) を使って呼び出すこと。"
1441
1442 #.  FIXME Andi submitted a patch for this.
1443 #.  Check if it got accepted later.
1444 #. type: Plain text
1445 #: build/C/man2/kexec_load.2:156
1446 msgid ""
1447 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1448 "which is not currently exported to glibc.  Therefore, these constants must "
1449 "be defined manually."
1450 msgstr ""
1451 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1452 "が、現在のところ glibc には公開されていない。\n"
1453 "そのため、これらの定数は手動で定義しなければならない。"
1454
1455 #. type: Plain text
1456 #: build/C/man2/kexec_load.2:159
1457 msgid ""
1458 "This system call is available only if the kernel was configured with "
1459 "B<CONFIG_KEXEC>."
1460 msgstr ""
1461 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1462 "いる場合にのみ利用できる。"
1463
1464 #. type: Plain text
1465 #: build/C/man2/kexec_load.2:162
1466 msgid "B<reboot>(2), B<syscall>(2)"
1467 msgstr "B<reboot>(2), B<syscall>(2)"
1468
1469 #. type: TH
1470 #: build/C/man2/lookup_dcookie.2:27
1471 #, no-wrap
1472 msgid "LOOKUP_DCOOKIE"
1473 msgstr "LOOKUP_DCOOKIE"
1474
1475 #. type: TH
1476 #: build/C/man2/lookup_dcookie.2:27
1477 #, no-wrap
1478 msgid "2004-06-17"
1479 msgstr "2004-06-17"
1480
1481 #. type: Plain text
1482 #: build/C/man2/lookup_dcookie.2:30
1483 msgid "lookup_dcookie - return a directory entry's path"
1484 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1485
1486 #. type: Plain text
1487 #: build/C/man2/lookup_dcookie.2:32
1488 msgid ""
1489 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1490 ">"
1491 msgstr ""
1492 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1493 ">"
1494
1495 #. type: Plain text
1496 #: build/C/man2/lookup_dcookie.2:38
1497 msgid ""
1498 "Look up the full path of the directory entry specified by the value "
1499 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1500 "particular directory entry.  The buffer given is filled in with the full "
1501 "path of the directory entry."
1502 msgstr ""
1503 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1504 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1505 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1506 "ルパス名が格納される。"
1507
1508 #. type: Plain text
1509 #: build/C/man2/lookup_dcookie.2:43
1510 msgid ""
1511 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1512 "a cookie reference to the directory entry."
1513 msgstr ""
1514 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1515 "リへの cookie 参照を 保持していなければならない。"
1516
1517 #. type: Plain text
1518 #: build/C/man2/lookup_dcookie.2:50
1519 msgid ""
1520 "On success, B<lookup_dcookie>()  returns the length of the path string "
1521 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1522 "appropriately."
1523 msgstr ""
1524 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1525 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1526
1527 #. type: Plain text
1528 #: build/C/man2/lookup_dcookie.2:54
1529 msgid "The buffer was not valid."
1530 msgstr "バッファが有効でなかった。"
1531
1532 #. type: Plain text
1533 #: build/C/man2/lookup_dcookie.2:58
1534 msgid ""
1535 "The kernel has no registered cookie/directory entry mappings at the time of "
1536 "lookup, or the cookie does not refer to a valid directory entry."
1537 msgstr ""
1538 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1539 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1540 "いない。"
1541
1542 #. type: TP
1543 #: build/C/man2/lookup_dcookie.2:58
1544 #, no-wrap
1545 msgid "B<ENAMETOOLONG>"
1546 msgstr "B<ENAMETOOLONG>"
1547
1548 #. type: Plain text
1549 #: build/C/man2/lookup_dcookie.2:61
1550 msgid "The name could not fit in the buffer."
1551 msgstr "名前がバッファに入り切らなかった。"
1552
1553 #. type: TP
1554 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1555 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1556 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1557 #, no-wrap
1558 msgid "B<ENOMEM>"
1559 msgstr "B<ENOMEM>"
1560
1561 #. type: Plain text
1562 #: build/C/man2/lookup_dcookie.2:65
1563 msgid ""
1564 "The kernel could not allocate memory for the temporary buffer holding the "
1565 "path."
1566 msgstr ""
1567 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1568 "かった。"
1569
1570 #. type: Plain text
1571 #: build/C/man2/lookup_dcookie.2:70
1572 msgid ""
1573 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1574 "up cookie values."
1575 msgstr ""
1576 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1577 "持っていない。"
1578
1579 #. type: TP
1580 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1581 #, no-wrap
1582 msgid "B<ERANGE>"
1583 msgstr "B<ERANGE>"
1584
1585 #. type: Plain text
1586 #: build/C/man2/lookup_dcookie.2:73
1587 msgid ""
1588 "The buffer was not large enough to hold the path of the directory entry."
1589 msgstr ""
1590 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1591 "かった。"
1592
1593 #. type: Plain text
1594 #: build/C/man2/lookup_dcookie.2:78
1595 msgid ""
1596 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1597 "2.5.70."
1598 msgstr ""
1599 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1600 "追加された。"
1601
1602 #. type: Plain text
1603 #: build/C/man2/lookup_dcookie.2:81
1604 msgid "B<lookup_dcookie>()  is Linux-specific."
1605 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1606
1607 #. type: Plain text
1608 #: build/C/man2/lookup_dcookie.2:85
1609 msgid ""
1610 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1611 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1612 "for directory entries."
1613 msgstr ""
1614 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1615 "oprofile profiler で 使われているだけである。"
1616
1617 #. type: Plain text
1618 #: build/C/man2/lookup_dcookie.2:88
1619 msgid ""
1620 "The path returned may be suffixed by the string \" (deleted)\" if the "
1621 "directory entry has been removed."
1622 msgstr ""
1623 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1624 "\" (deleted)\" という文字列が付加されることがある。"
1625
1626 #. type: TH
1627 #: build/C/man2/modify_ldt.2:24
1628 #, no-wrap
1629 msgid "MODIFY_LDT"
1630 msgstr "MODIFY_LDT"
1631
1632 #. type: Plain text
1633 #: build/C/man2/modify_ldt.2:27
1634 msgid "modify_ldt - get or set ldt"
1635 msgstr "modify_ldt - ldt を設定または取得する"
1636
1637 #. type: Plain text
1638 #: build/C/man2/modify_ldt.2:30
1639 #, no-wrap
1640 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1641 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1642
1643 #. type: Plain text
1644 #: build/C/man2/modify_ldt.2:32
1645 #, no-wrap
1646 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1647 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1648
1649 #. type: Plain text
1650 #: build/C/man2/modify_ldt.2:41
1651 msgid ""
1652 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1653 "process.  The ldt is a per-process memory management table used by the i386 "
1654 "processor.  For more information on this table, see an Intel 386 processor "
1655 "handbook."
1656 msgstr ""
1657 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1658 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1659 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1660 "は Intel 386 processor handbook を 参照すること。"
1661
1662 #. type: Plain text
1663 #: build/C/man2/modify_ldt.2:51
1664 msgid ""
1665 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1666 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1667 "actual size of the ldt."
1668 msgstr ""
1669 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1670 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1671 "である。"
1672
1673 #.  FIXME ? say something about func == 2 and func == 0x11?
1674 #.  In Linux 2.4, func == 2 returned "the default ldt"
1675 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1676 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1677 #. type: Plain text
1678 #: build/C/man2/modify_ldt.2:69
1679 msgid ""
1680 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1681 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1682 "structure."
1683 msgstr ""
1684 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1685 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1686 "くなければならない。"
1687
1688 #. type: Plain text
1689 #: build/C/man2/modify_ldt.2:73
1690 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1691 msgstr ""
1692 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1693
1694 #. type: Plain text
1695 #: build/C/man2/modify_ldt.2:87
1696 #, no-wrap
1697 msgid ""
1698 "struct user_desc {\n"
1699 "    unsigned int  entry_number;\n"
1700 "    unsigned long base_addr;\n"
1701 "    unsigned int  limit;\n"
1702 "    unsigned int  seg_32bit:1;\n"
1703 "    unsigned int  contents:2;\n"
1704 "    unsigned int  read_exec_only:1;\n"
1705 "    unsigned int  limit_in_pages:1;\n"
1706 "    unsigned int  seg_not_present:1;\n"
1707 "    unsigned int  useable:1;\n"
1708 "};\n"
1709 msgstr ""
1710 "struct user_desc {\n"
1711 "    unsigned int  entry_number;\n"
1712 "    unsigned long base_addr;\n"
1713 "    unsigned int  limit;\n"
1714 "    unsigned int  seg_32bit:1;\n"
1715 "    unsigned int  contents:2;\n"
1716 "    unsigned int  read_exec_only:1;\n"
1717 "    unsigned int  limit_in_pages:1;\n"
1718 "    unsigned int  seg_not_present:1;\n"
1719 "    unsigned int  useable:1;\n"
1720 "};\n"
1721
1722 #.  .PP
1723 #.  The ldt is specific for the calling process. Any attempts to change
1724 #.  the ldt to include the address space of another process or the kernel
1725 #.  will result in a segmentation violation when trying to access the memory
1726 #.  outside of the process address space. The memory protection is enforced
1727 #.  at the paging layer.
1728 #. type: Plain text
1729 #: build/C/man2/modify_ldt.2:98
1730 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1731 msgstr ""
1732 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1733
1734 #. type: Plain text
1735 #: build/C/man2/modify_ldt.2:108
1736 msgid ""
1737 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1738 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1739 "and sets I<errno> to indicate the error."
1740 msgstr ""
1741 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1742 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1743 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1744
1745 #. type: Plain text
1746 #: build/C/man2/modify_ldt.2:113
1747 msgid "I<ptr> points outside the address space."
1748 msgstr "I<ptr> がアドレス空間の外を指している。"
1749
1750 #. type: Plain text
1751 #: build/C/man2/modify_ldt.2:126
1752 msgid ""
1753 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1754 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1755 "invalid values."
1756 msgstr ""
1757 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1758 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1759 "エントリが無効な値である。"
1760
1761 #. type: Plain text
1762 #: build/C/man2/modify_ldt.2:130
1763 msgid "I<func> is neither 0 nor 1."
1764 msgstr "I<func> が 0 でも 1 でもない。"
1765
1766 #. type: Plain text
1767 #: build/C/man2/modify_ldt.2:133
1768 msgid ""
1769 "This call is Linux-specific and should not be used in programs intended to "
1770 "be portable."
1771 msgstr ""
1772 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1773 "い。"
1774
1775 #. type: Plain text
1776 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1777 #: build/C/man2/pivot_root.2:134
1778 msgid ""
1779 "Glibc does not provide a wrapper for this system call; call it using "
1780 "B<syscall>(2)."
1781 msgstr ""
1782 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1783 "(2)  を使って呼び出すこと。"
1784
1785 #. type: Plain text
1786 #: build/C/man2/modify_ldt.2:138
1787 msgid "B<vm86>(2)"
1788 msgstr "B<vm86>(2)"
1789
1790 #. type: TH
1791 #: build/C/man2/nfsservctl.2:8
1792 #, no-wrap
1793 msgid "NFSSERVCTL"
1794 msgstr "NFSSERVCTL"
1795
1796 #. type: TH
1797 #: build/C/man2/nfsservctl.2:8
1798 #, no-wrap
1799 msgid "2012-03-05"
1800 msgstr "2012-03-05"
1801
1802 #. type: Plain text
1803 #: build/C/man2/nfsservctl.2:11
1804 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1805 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1806
1807 #. type: Plain text
1808 #: build/C/man2/nfsservctl.2:14
1809 #, no-wrap
1810 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1811 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1812
1813 #. type: Plain text
1814 #: build/C/man2/nfsservctl.2:17
1815 #, no-wrap
1816 msgid ""
1817 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1818 "B<                union nfsctl_res *>I<resp>B<);>\n"
1819 msgstr ""
1820 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1821 "B<                union nfsctl_res *>I<resp>B<);>\n"
1822
1823 #. type: Plain text
1824 #: build/C/man2/nfsservctl.2:21
1825 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1826 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1827
1828 #. type: Plain text
1829 #: build/C/man2/nfsservctl.2:33
1830 #, no-wrap
1831 msgid ""
1832 "/*\n"
1833 " * These are the commands understood by nfsctl().\n"
1834 " */\n"
1835 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1836 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1837 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1838 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1839 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1840 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1841 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1842 msgstr ""
1843 "/*\n"
1844 " * nfsctl() によって理解されるコマンド\n"
1845 " */\n"
1846 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1847 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1848 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1849 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1850 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1851 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1852 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1853
1854 #. type: Plain text
1855 #: build/C/man2/nfsservctl.2:45
1856 #, no-wrap
1857 msgid ""
1858 "struct nfsctl_arg {\n"
1859 "    int                       ca_version;     /* safeguard */\n"
1860 "    union {\n"
1861 "        struct nfsctl_svc     u_svc;\n"
1862 "        struct nfsctl_client  u_client;\n"
1863 "        struct nfsctl_export  u_export;\n"
1864 "        struct nfsctl_uidmap  u_umap;\n"
1865 "        struct nfsctl_fhparm  u_getfh;\n"
1866 "        unsigned int          u_debug;\n"
1867 "    } u;\n"
1868 "}\n"
1869 msgstr ""
1870 "struct nfsctl_arg {\n"
1871 "    int                       ca_version;     /* safeguard */\n"
1872 "    union {\n"
1873 "        struct nfsctl_svc     u_svc;\n"
1874 "        struct nfsctl_client  u_client;\n"
1875 "        struct nfsctl_export  u_export;\n"
1876 "        struct nfsctl_uidmap  u_umap;\n"
1877 "        struct nfsctl_fhparm  u_getfh;\n"
1878 "        unsigned int          u_debug;\n"
1879 "    } u;\n"
1880 "}\n"
1881
1882 #. type: Plain text
1883 #: build/C/man2/nfsservctl.2:50
1884 #, no-wrap
1885 msgid ""
1886 "union nfsctl_res {\n"
1887 "        struct knfs_fh          cr_getfh;\n"
1888 "        unsigned int            cr_debug;\n"
1889 "};\n"
1890 msgstr ""
1891 "union nfsctl_res {\n"
1892 "        struct knfs_fh          cr_getfh;\n"
1893 "        unsigned int            cr_debug;\n"
1894 "};\n"
1895
1896 #. type: Plain text
1897 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1898 #: build/C/man2/vm86.2:57
1899 msgid ""
1900 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1901 "appropriately."
1902 msgstr ""
1903 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1904 "定される。"
1905
1906 #. type: Plain text
1907 #: build/C/man2/nfsservctl.2:58
1908 msgid "This call is Linux-specific."
1909 msgstr "このコールは Linux 特有である。"
1910
1911 #. type: TH
1912 #: build/C/man2/outb.2:26
1913 #, no-wrap
1914 msgid "OUTB"
1915 msgstr "OUTB"
1916
1917 #. type: TH
1918 #: build/C/man2/outb.2:26
1919 #, no-wrap
1920 msgid "2012-12-31"
1921 msgstr "2012-12-31"
1922
1923 #. type: Plain text
1924 #: build/C/man2/outb.2:31
1925 msgid ""
1926 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1927 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1928 msgstr ""
1929 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1930 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1931
1932 #. type: Plain text
1933 #: build/C/man2/outb.2:34
1934 #, no-wrap
1935 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1936 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1937
1938 #. type: Plain text
1939 #: build/C/man2/outb.2:41
1940 #, no-wrap
1941 msgid ""
1942 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1943 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1944 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1945 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1946 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1947 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1948 msgstr ""
1949 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1950 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1951 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1952 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1953 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1954 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1955
1956 #. type: Plain text
1957 #: build/C/man2/outb.2:48
1958 #, no-wrap
1959 msgid ""
1960 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1961 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1962 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1963 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1964 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1965 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1966 msgstr ""
1967 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1968 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1969 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1970 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1971 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1972 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1973
1974 #. type: Plain text
1975 #: build/C/man2/outb.2:61
1976 #, no-wrap
1977 msgid ""
1978 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1979 "B<           unsigned long int >I<count>B<);>\n"
1980 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1981 "B<           unsigned long int >I<count>B<);>\n"
1982 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1983 "B<           unsigned long int >I<count>B<);>\n"
1984 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1985 "B<           unsigned long int >I<count>B<);>\n"
1986 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1987 "B<           unsigned long int >I<count>B<);>\n"
1988 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1989 "B<           unsigned long int >I<count>B<);>\n"
1990 msgstr ""
1991 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1992 "B<           unsigned long int >I<count>B<);>\n"
1993 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1994 "B<           unsigned long int >I<count>B<);>\n"
1995 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1996 "B<           unsigned long int >I<count>B<);>\n"
1997 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1998 "B<           unsigned long int >I<count>B<);>\n"
1999 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2000 "B<           unsigned long int >I<count>B<);>\n"
2001 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2002 "B<           unsigned long int >I<count>B<);>\n"
2003
2004 #. type: Plain text
2005 #: build/C/man2/outb.2:67
2006 msgid ""
2007 "This family of functions is used to do low-level port input and output.  The "
2008 "out* functions do port output, the in* functions do port input; the b-suffix "
2009 "functions are byte-width and the w-suffix functions word-width; the _p-"
2010 "suffix functions pause until the I/O completes."
2011 msgstr ""
2012 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2013 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2014 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2015 "待つ。"
2016
2017 #.  , given the following information
2018 #.  in addition to that given in
2019 #.  .BR outb (9).
2020 #. type: Plain text
2021 #: build/C/man2/outb.2:73
2022 msgid ""
2023 "They are primarily designed for internal kernel use, but can be used from "
2024 "user space."
2025 msgstr ""
2026 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2027 "ザー空間からでも使用できる。"
2028
2029 #. type: Plain text
2030 #: build/C/man2/outb.2:78
2031 msgid ""
2032 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2033 "as inline macros, and will not be substituted in without optimization "
2034 "enabled, causing unresolved references at link time."
2035 msgstr ""
2036 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2037 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2038 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2039
2040 #. type: Plain text
2041 #: build/C/man2/outb.2:87
2042 msgid ""
2043 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2044 "allow the user space application to access the I/O ports in question.  "
2045 "Failure to do this will cause the application to receive a segmentation "
2046 "fault."
2047 msgstr ""
2048 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2049 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2050 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2051 "になる。"
2052
2053 #. type: Plain text
2054 #: build/C/man2/outb.2:96
2055 msgid ""
2056 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2057 "passed first and the I<port> argument is passed second, which is the "
2058 "opposite order from most DOS implementations."
2059 msgstr ""
2060 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2061 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2062 "である。"
2063
2064 #. type: Plain text
2065 #: build/C/man2/outb.2:99
2066 msgid "B<ioperm>(2), B<iopl>(2)"
2067 msgstr "B<ioperm>(2), B<iopl>(2)"
2068
2069 #. type: TH
2070 #: build/C/man2/pciconfig_read.2:8
2071 #, no-wrap
2072 msgid "PCICONFIG_READ"
2073 msgstr "PCICONFIG_READ"
2074
2075 #. type: TH
2076 #: build/C/man2/pciconfig_read.2:8
2077 #, no-wrap
2078 msgid "2003-07-14"
2079 msgstr "2003-07-14"
2080
2081 #. type: Plain text
2082 #: build/C/man2/pciconfig_read.2:11
2083 msgid ""
2084 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2085 "handling"
2086 msgstr ""
2087 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2088
2089 #. type: Plain text
2090 #: build/C/man2/pciconfig_read.2:14
2091 #, no-wrap
2092 msgid "B<#include E<lt>pci.hE<gt>>\n"
2093 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2094
2095 #. type: Plain text
2096 #: build/C/man2/pciconfig_read.2:21
2097 #, no-wrap
2098 msgid ""
2099 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2100 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2101 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2102 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2103 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2104 "B<          unsigned long >I<devfn>B<);>\n"
2105 msgstr ""
2106 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2107 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2108 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2109 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2110 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2111 "B<          unsigned long >I<devfn>B<);>\n"
2112
2113 #. type: Plain text
2114 #: build/C/man2/pciconfig_read.2:27
2115 msgid ""
2116 "Most of the interaction with PCI devices is already handled by the kernel "
2117 "PCI layer, and thus these calls should not normally need to be accessed from "
2118 "user space."
2119 msgstr ""
2120 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2121 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2122
2123 #. type: TP
2124 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2125 #, no-wrap
2126 msgid "B<pciconfig_read>()"
2127 msgstr "B<pciconfig_read>()"
2128
2129 #. type: Plain text
2130 #: build/C/man2/pciconfig_read.2:36
2131 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2132 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2133
2134 #. type: TP
2135 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2136 #, no-wrap
2137 msgid "B<pciconfig_write>()"
2138 msgstr "B<pciconfig_write>()"
2139
2140 #. type: Plain text
2141 #: build/C/man2/pciconfig_read.2:45
2142 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2143 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2144
2145 #. type: TP
2146 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2147 #, no-wrap
2148 msgid "B<pciconfig_iobase>()"
2149 msgstr "B<pciconfig_iobase>()"
2150
2151 #. type: Plain text
2152 #: build/C/man2/pciconfig_read.2:50
2153 msgid ""
2154 "You pass it a bus/devfn pair and get a physical address for either the "
2155 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2156 "PIO cycles, or the ISA holes if any."
2157 msgstr ""
2158 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2159 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2160 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2161
2162 #. type: Plain text
2163 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2164 msgid ""
2165 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2166 "appropriately."
2167 msgstr ""
2168 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2169 "定される。"
2170
2171 #. type: Plain text
2172 #: build/C/man2/pciconfig_read.2:77
2173 msgid ""
2174 "Returns information on locations of various I/O regions in physical memory "
2175 "according to the I<which> value.  Values for I<which> are: "
2176 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2177 "B<IOBASE_ISA_MEM>."
2178 msgstr ""
2179 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2180 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2181 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2182
2183 #. type: Plain text
2184 #: build/C/man2/pciconfig_read.2:84
2185 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2186 msgstr ""
2187 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2188 "い。"
2189
2190 #. type: TP
2191 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1746
2192 #: build/C/man2/sendfile.2:134
2193 #, no-wrap
2194 msgid "B<EIO>"
2195 msgstr "B<EIO>"
2196
2197 #. type: Plain text
2198 #: build/C/man2/pciconfig_read.2:87
2199 msgid "I/O error."
2200 msgstr "I/O エラー。"
2201
2202 #. type: TP
2203 #: build/C/man2/pciconfig_read.2:87
2204 #, no-wrap
2205 msgid "B<ENODEV>"
2206 msgstr "B<ENODEV>"
2207
2208 #. type: Plain text
2209 #: build/C/man2/pciconfig_read.2:93
2210 msgid ""
2211 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2212 "could not find a slot."
2213 msgstr ""
2214 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2215 "出しの場合、スロット (slot) が見つからない。"
2216
2217 #. type: Plain text
2218 #: build/C/man2/pciconfig_read.2:98
2219 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2220 msgstr ""
2221 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2222 "いない)。"
2223
2224 #. type: TP
2225 #: build/C/man2/pciconfig_read.2:98
2226 #, no-wrap
2227 msgid "B<EOPNOTSUPP>"
2228 msgstr "B<EOPNOTSUPP>"
2229
2230 #. type: Plain text
2231 #: build/C/man2/pciconfig_read.2:105
2232 msgid ""
2233 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2234 "if the value for I<which> is invalid."
2235 msgstr ""
2236 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2237 "の値が無効であるときに返される。"
2238
2239 #. type: Plain text
2240 #: build/C/man2/pciconfig_read.2:110
2241 msgid ""
2242 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2243 "B<pciconfig_iobase>()."
2244 msgstr ""
2245 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2246 "B<pciconfig_iobase>()  には適用されない。"
2247
2248 #. type: Plain text
2249 #: build/C/man2/pciconfig_read.2:112
2250 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2251 msgstr ""
2252 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2253 "である。"
2254
2255 #. type: Plain text
2256 #: build/C/man2/pciconfig_read.2:114
2257 msgid "B<capabilities>(7)"
2258 msgstr "B<capabilities>(7)"
2259
2260 #. type: TH
2261 #: build/C/man2/perf_event_open.2:27
2262 #, no-wrap
2263 msgid "PERF_EVENT_OPEN"
2264 msgstr "PERF_EVENT_OPEN"
2265
2266 #. type: TH
2267 #: build/C/man2/perf_event_open.2:27
2268 #, no-wrap
2269 msgid "2013-02-04"
2270 msgstr "2013-02-04"
2271
2272 #. type: Plain text
2273 #: build/C/man2/perf_event_open.2:30
2274 msgid "perf_event_open - set up performance monitoring"
2275 msgstr ""
2276
2277 #. type: Plain text
2278 #: build/C/man2/perf_event_open.2:34
2279 #, no-wrap
2280 msgid ""
2281 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2282 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2283 msgstr ""
2284 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2285 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2286
2287 #. type: Plain text
2288 #: build/C/man2/perf_event_open.2:38
2289 #, no-wrap
2290 msgid ""
2291 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2292 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2293 "B<                    unsigned long >I<flags>B<);>\n"
2294 msgstr ""
2295 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2296 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2297 "B<                    unsigned long >I<flags>B<);>\n"
2298
2299 #. type: Plain text
2300 #: build/C/man2/perf_event_open.2:47
2301 msgid ""
2302 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2303 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2304 "B<fcntl>(2), etc.)."
2305 msgstr ""
2306
2307 #. type: Plain text
2308 #: build/C/man2/perf_event_open.2:55
2309 msgid ""
2310 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2311 "measuring performance information.  Each file descriptor corresponds to one "
2312 "event that is measured; these can be grouped together to measure multiple "
2313 "events simultaneously."
2314 msgstr ""
2315
2316 #. type: Plain text
2317 #: build/C/man2/perf_event_open.2:62
2318 msgid ""
2319 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2320 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2321 "overflows but does continue to exist and maintain its count value."
2322 msgstr ""
2323
2324 #. type: Plain text
2325 #: build/C/man2/perf_event_open.2:76
2326 msgid ""
2327 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2328 "one that is used for counting the aggregate number of events that occur.  In "
2329 "general, counting event results are gathered with a B<read>(2)  call.  A "
2330 "I<sampling> event periodically writes measurements to a buffer that can then "
2331 "be accessed via B<mmap>(2)B<.>"
2332 msgstr ""
2333
2334 #. type: SS
2335 #: build/C/man2/perf_event_open.2:76
2336 #, no-wrap
2337 msgid "Arguments"
2338 msgstr ""
2339
2340 #. type: Plain text
2341 #: build/C/man2/perf_event_open.2:90
2342 msgid ""
2343 "The argument I<pid> allows events to be attached to processes in various "
2344 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2345 "is greater than 0, the process indicated by I<pid> is measured, and if "
2346 "I<pid> is -1, all processes are counted."
2347 msgstr ""
2348
2349 #. type: Plain text
2350 #: build/C/man2/perf_event_open.2:101
2351 msgid ""
2352 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2353 "is greater than or equal to 0, measurements are restricted to the specified "
2354 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2355 msgstr ""
2356
2357 #. type: Plain text
2358 #: build/C/man2/perf_event_open.2:107
2359 msgid ""
2360 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2361 msgstr ""
2362
2363 #. type: Plain text
2364 #: build/C/man2/perf_event_open.2:115
2365 msgid ""
2366 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2367 "that process to whatever CPU the process gets scheduled to.  Per-process "
2368 "events can be created by any user."
2369 msgstr ""
2370
2371 #. type: Plain text
2372 #: build/C/man2/perf_event_open.2:126
2373 msgid ""
2374 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2375 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2376 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2377 msgstr ""
2378
2379 #. type: Plain text
2380 #: build/C/man2/perf_event_open.2:148
2381 msgid ""
2382 "The I<group_fd> argument allows event groups to be created.  An event group "
2383 "has one event which is the group leader.  The leader is created first, with "
2384 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2385 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2386 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2387 "and is considered to be a group with only 1 member.)  An event group is "
2388 "scheduled onto the CPU as a unit: it will be put onto the CPU ionly if all "
2389 "of the events in the group can be put onto the CPU.  This means that the "
2390 "values of the member events can be meaningfully compared, added, divided (to "
2391 "get ratios), etc., with each other, since they have counted events for the "
2392 "same set of executed instructions."
2393 msgstr ""
2394
2395 #. type: Plain text
2396 #: build/C/man2/perf_event_open.2:152
2397 #, fuzzy
2398 #| msgid "The I<subcmd> value is one of the following:"
2399 msgid "The I<flags> argument takes one of the following values:"
2400 msgstr "I<subcmd> の値は以下のいずれかである"
2401
2402 #. type: TP
2403 #: build/C/man2/perf_event_open.2:152
2404 #, no-wrap
2405 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2406 msgstr ""
2407
2408 #.  FIXME The following sentence is unclear
2409 #.  FIXME So, why is it useful?
2410 #. type: Plain text
2411 #: build/C/man2/perf_event_open.2:159
2412 msgid ""
2413 "This flag allows creating an event as part of an event group but having no "
2414 "group leader.  It is unclear why this is useful."
2415 msgstr ""
2416
2417 #. type: TP
2418 #: build/C/man2/perf_event_open.2:159
2419 #, no-wrap
2420 msgid "B<PERF_FLAG_FD_OUTPUT>"
2421 msgstr ""
2422
2423 #. type: Plain text
2424 #: build/C/man2/perf_event_open.2:162
2425 msgid "This flag re-routes the output from an event to the group leader."
2426 msgstr ""
2427
2428 #. type: TP
2429 #: build/C/man2/perf_event_open.2:162
2430 #, fuzzy, no-wrap
2431 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2432 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2433 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2434
2435 #. type: Plain text
2436 #: build/C/man2/perf_event_open.2:185
2437 msgid ""
2438 "This flag activates per-container system-wide monitoring.  A container is an "
2439 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2440 "memory, etc...).  In this mode, the event is measured only if the thread "
2441 "running on the monitored CPU belongs to the designated container (cgroup).  "
2442 "The cgroup is identified by passing a file descriptor opened on its "
2443 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2444 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2445 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2446 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2447 "events and may therefore require extra permissions."
2448 msgstr ""
2449
2450 #. type: Plain text
2451 #: build/C/man2/perf_event_open.2:190
2452 msgid ""
2453 "The I<perf_event_attr> structure provides detailed configuration information "
2454 "for the event being created."
2455 msgstr ""
2456
2457 #. type: Plain text
2458 #: build/C/man2/perf_event_open.2:197
2459 #, no-wrap
2460 msgid ""
2461 "struct perf_event_attr {\n"
2462 "    __u32     type;         /* Type of event */\n"
2463 "    __u32     size;         /* Size of attribute structure */\n"
2464 "    __u64     config;       /* Type-specific configuration */\n"
2465 msgstr ""
2466
2467 #. type: Plain text
2468 #: build/C/man2/perf_event_open.2:202
2469 #, no-wrap
2470 msgid ""
2471 "    union {\n"
2472 "        __u64 sample_period;    /* Period of sampling */\n"
2473 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2474 "    };\n"
2475 msgstr ""
2476
2477 #. type: Plain text
2478 #: build/C/man2/perf_event_open.2:205
2479 #, no-wrap
2480 msgid ""
2481 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2482 "    __u64     read_format;  /* Specifies values returned in read */\n"
2483 msgstr ""
2484
2485 #. type: Plain text
2486 #: build/C/man2/perf_event_open.2:231
2487 #, no-wrap
2488 msgid ""
2489 "    __u64     disabled       : 1,   /* off by default */\n"
2490 "              inherit        : 1,   /* children inherit it */\n"
2491 "              pinned         : 1,   /* must always be on PMU */\n"
2492 "              exclusive      : 1,   /* only group on PMU */\n"
2493 "              exclude_user   : 1,   /* don't count user */\n"
2494 "              exclude_kernel : 1,   /* don't count kernel */\n"
2495 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2496 "              exclude_idle   : 1,   /* don't count when idle */\n"
2497 "              mmap           : 1,   /* include mmap data */\n"
2498 "              comm           : 1,   /* include comm data */\n"
2499 "              freq           : 1,   /* use freq, not period */\n"
2500 "              inherit_stat   : 1,   /* per task counts */\n"
2501 "              enable_on_exec : 1,   /* next exec enables */\n"
2502 "              task           : 1,   /* trace fork/exit */\n"
2503 "              watermark      : 1,   /* wakeup_watermark */\n"
2504 "              precise_ip     : 2,   /* skid constraint */\n"
2505 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2506 "              sample_id_all  : 1,   /* sample_type all events */\n"
2507 "              exclude_host   : 1,   /* don't count in host */\n"
2508 "              exclude_guest  : 1,   /* don't count in guest */\n"
2509 "              exclude_callchain_kernel : 1,\n"
2510 "                                    /* exclude kernel callchains */\n"
2511 "              exclude_callchain_user   : 1,\n"
2512 "\t                            /* exclude user callchains */\n"
2513 "              __reserved_1   : 41;\n"
2514 msgstr ""
2515
2516 #. type: Plain text
2517 #: build/C/man2/perf_event_open.2:236
2518 #, no-wrap
2519 msgid ""
2520 "    union {\n"
2521 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2522 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2523 "    };\n"
2524 msgstr ""
2525
2526 #. type: Plain text
2527 #: build/C/man2/perf_event_open.2:238
2528 #, no-wrap
2529 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2530 msgstr ""
2531
2532 #. type: Plain text
2533 #: build/C/man2/perf_event_open.2:243
2534 #, no-wrap
2535 msgid ""
2536 "    union {\n"
2537 "        __u64 bp_addr;          /* breakpoint address */\n"
2538 "        __u64 config1;          /* extension of config */\n"
2539 "    };\n"
2540 msgstr ""
2541
2542 #. type: Plain text
2543 #: build/C/man2/perf_event_open.2:253
2544 #, no-wrap
2545 msgid ""
2546 "    union {\n"
2547 "        __u64 bp_len;           /* breakpoint length */\n"
2548 "        __u64 config2;          /* extension of config1 */\n"
2549 "    };\n"
2550 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2551 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2552 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2553 "                                   samples */\n"
2554 "    __u32   __reserved_2;       /* Align to u64 */\n"
2555 msgstr ""
2556
2557 #. type: Plain text
2558 #: build/C/man2/perf_event_open.2:255
2559 #, no-wrap
2560 msgid "};\n"
2561 msgstr ""
2562
2563 #. type: Plain text
2564 #: build/C/man2/perf_event_open.2:261
2565 msgid ""
2566 "The fields of the I<perf_event_attr> structure are described in more detail "
2567 "below:"
2568 msgstr ""
2569
2570 #. type: TP
2571 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2572 #, no-wrap
2573 msgid "I<type>"
2574 msgstr ""
2575
2576 #. type: Plain text
2577 #: build/C/man2/perf_event_open.2:265
2578 msgid ""
2579 "This field specifies the overall event type.  It has one of the following "
2580 "values:"
2581 msgstr ""
2582
2583 #. type: TP
2584 #: build/C/man2/perf_event_open.2:266
2585 #, no-wrap
2586 msgid "B<PERF_TYPE_HARDWARE>"
2587 msgstr ""
2588
2589 #. type: Plain text
2590 #: build/C/man2/perf_event_open.2:273
2591 msgid ""
2592 "This indicates one of the \"generalized\" hardware events provided by the "
2593 "kernel.  See the I<config> field definition for more details."
2594 msgstr ""
2595
2596 #. type: TP
2597 #: build/C/man2/perf_event_open.2:273
2598 #, no-wrap
2599 msgid "B<PERF_TYPE_SOFTWARE>"
2600 msgstr ""
2601
2602 #. type: Plain text
2603 #: build/C/man2/perf_event_open.2:277
2604 msgid ""
2605 "This indicates one of the software-defined events provided by the kernel "
2606 "(even if no hardware support is available)."
2607 msgstr ""
2608
2609 #. type: TP
2610 #: build/C/man2/perf_event_open.2:277
2611 #, no-wrap
2612 msgid "B<PERF_TYPE_TRACEPOINT>"
2613 msgstr "B<PERF_TYPE_TRACEPOINT>"
2614
2615 #. type: Plain text
2616 #: build/C/man2/perf_event_open.2:281
2617 msgid ""
2618 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2619 msgstr ""
2620
2621 #. type: TP
2622 #: build/C/man2/perf_event_open.2:281
2623 #, no-wrap
2624 msgid "B<PERF_TYPE_HW_CACHE>"
2625 msgstr ""
2626
2627 #. type: Plain text
2628 #: build/C/man2/perf_event_open.2:287
2629 msgid ""
2630 "This indicates a hardware cache event.  This has a special encoding, "
2631 "described in the I<config> field definition."
2632 msgstr ""
2633
2634 #. type: TP
2635 #: build/C/man2/perf_event_open.2:287
2636 #, no-wrap
2637 msgid "B<PERF_TYPE_RAW>"
2638 msgstr ""
2639
2640 #. type: Plain text
2641 #: build/C/man2/perf_event_open.2:291
2642 msgid ""
2643 "This indicates a \"raw\" implementation-specific event in the I<config> "
2644 "field."
2645 msgstr ""
2646
2647 #. type: TP
2648 #: build/C/man2/perf_event_open.2:291
2649 #, fuzzy, no-wrap
2650 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2651 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2652 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2653
2654 #. type: Plain text
2655 #: build/C/man2/perf_event_open.2:296
2656 msgid ""
2657 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2658 "can be read/write accesses to an address as well as execution of an "
2659 "instruction address."
2660 msgstr ""
2661
2662 #. type: TP
2663 #: build/C/man2/perf_event_open.2:296
2664 #, no-wrap
2665 msgid "dynamic PMU"
2666 msgstr ""
2667
2668 #. type: Plain text
2669 #: build/C/man2/perf_event_open.2:315
2670 msgid ""
2671 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2672 "enable this, a value exported by the kernel can be used in the I<type> field "
2673 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2674 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2675 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2676 "content is an integer that can be used in the I<type> field.  For instance, "
2677 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2678 "CPU PMU, which is usually 4."
2679 msgstr ""
2680
2681 #. type: TP
2682 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2683 #, no-wrap
2684 msgid "I<size>"
2685 msgstr ""
2686
2687 #. type: Plain text
2688 #: build/C/man2/perf_event_open.2:325
2689 msgid ""
2690 "The size of the I<perf_event_attr> structure for forward/backward "
2691 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2692 "the kernel to see the struct size at the time of compilation."
2693 msgstr ""
2694
2695 #. type: Plain text
2696 #: build/C/man2/perf_event_open.2:340
2697 msgid ""
2698 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2699 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2700 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2701 "corresponding to the addition of branch sampling in Linux 3.4.  "
2702 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2703 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2704 msgstr ""
2705
2706 #. type: TP
2707 #: build/C/man2/perf_event_open.2:340
2708 #, no-wrap
2709 msgid "I<config>"
2710 msgstr ""
2711
2712 #. type: Plain text
2713 #: build/C/man2/perf_event_open.2:351
2714 msgid ""
2715 "This specifies which event you want, in conjunction with the I<type> field.  "
2716 "The I<config1> and I<config2> fields are also taken into account in cases "
2717 "where 64 bits is not enough to fully specify the event.  The encoding of "
2718 "these fields are event dependent."
2719 msgstr ""
2720
2721 #. type: Plain text
2722 #: build/C/man2/perf_event_open.2:357
2723 msgid ""
2724 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2725 "counter configuration data; if the most significant bit is unset, the next 7 "
2726 "bits are an event type and the rest of the bits are the event identifier."
2727 msgstr ""
2728
2729 #. type: Plain text
2730 #: build/C/man2/perf_event_open.2:368
2731 msgid ""
2732 "There are various ways to set the I<config> field that are dependent on the "
2733 "value of the previously described I<type> field.  What follows are various "
2734 "possible settings for I<config> separated out by I<type>."
2735 msgstr ""
2736
2737 #. type: Plain text
2738 #: build/C/man2/perf_event_open.2:378
2739 msgid ""
2740 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2741 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2742 "I<config> to one of the following:"
2743 msgstr ""
2744
2745 #. type: TP
2746 #: build/C/man2/perf_event_open.2:379
2747 #, no-wrap
2748 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2749 msgstr ""
2750
2751 #. type: Plain text
2752 #: build/C/man2/perf_event_open.2:383
2753 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2754 msgstr ""
2755
2756 #. type: TP
2757 #: build/C/man2/perf_event_open.2:383
2758 #, no-wrap
2759 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2760 msgstr ""
2761
2762 #. type: Plain text
2763 #: build/C/man2/perf_event_open.2:388
2764 msgid ""
2765 "Retired instructions.  Be careful, these can be affected by various issues, "
2766 "most notably hardware interrupt counts"
2767 msgstr ""
2768
2769 #. type: TP
2770 #: build/C/man2/perf_event_open.2:388
2771 #, no-wrap
2772 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2773 msgstr ""
2774
2775 #. type: Plain text
2776 #: build/C/man2/perf_event_open.2:395
2777 msgid ""
2778 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2779 "may vary depending on your CPU.  This may include prefetches and coherency "
2780 "messages; again this depends on the design of your CPU."
2781 msgstr ""
2782
2783 #. type: TP
2784 #: build/C/man2/perf_event_open.2:395
2785 #, no-wrap
2786 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2787 msgstr ""
2788
2789 #. type: Plain text
2790 #: build/C/man2/perf_event_open.2:402
2791 msgid ""
2792 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2793 "intended to be used in conjunction with the "
2794 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2795 msgstr ""
2796
2797 #. type: TP
2798 #: build/C/man2/perf_event_open.2:402
2799 #, no-wrap
2800 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2801 msgstr ""
2802
2803 #. type: Plain text
2804 #: build/C/man2/perf_event_open.2:407
2805 msgid ""
2806 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2807 "event on AMD processors."
2808 msgstr ""
2809
2810 #. type: TP
2811 #: build/C/man2/perf_event_open.2:407
2812 #, no-wrap
2813 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2814 msgstr ""
2815
2816 #. type: Plain text
2817 #: build/C/man2/perf_event_open.2:410
2818 msgid "Mispredicted branch instructions."
2819 msgstr ""
2820
2821 #. type: TP
2822 #: build/C/man2/perf_event_open.2:410
2823 #, no-wrap
2824 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2825 msgstr ""
2826
2827 #. type: Plain text
2828 #: build/C/man2/perf_event_open.2:413
2829 msgid "Bus cycles, which can be different from total cycles."
2830 msgstr ""
2831
2832 #. type: TP
2833 #: build/C/man2/perf_event_open.2:413
2834 #, fuzzy, no-wrap
2835 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2836 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2837 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2838
2839 #. type: Plain text
2840 #: build/C/man2/perf_event_open.2:416
2841 msgid "Stalled cycles during issue."
2842 msgstr ""
2843
2844 #. type: TP
2845 #: build/C/man2/perf_event_open.2:416
2846 #, no-wrap
2847 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2848 msgstr ""
2849
2850 #. type: Plain text
2851 #: build/C/man2/perf_event_open.2:419
2852 msgid "Stalled cycles during retirement."
2853 msgstr ""
2854
2855 #. type: TP
2856 #: build/C/man2/perf_event_open.2:419
2857 #, fuzzy, no-wrap
2858 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2859 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2860 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2861
2862 #. type: Plain text
2863 #: build/C/man2/perf_event_open.2:422
2864 msgid "Total cycles; not affected by CPU frequency scaling."
2865 msgstr ""
2866
2867 #. type: Plain text
2868 #: build/C/man2/perf_event_open.2:432
2869 msgid ""
2870 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2871 "provided by the kernel.  Set I<config> to one of the following:"
2872 msgstr ""
2873
2874 #. type: TP
2875 #: build/C/man2/perf_event_open.2:433
2876 #, no-wrap
2877 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2878 msgstr ""
2879
2880 #. type: Plain text
2881 #: build/C/man2/perf_event_open.2:436
2882 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2883 msgstr ""
2884
2885 #. type: TP
2886 #: build/C/man2/perf_event_open.2:436
2887 #, no-wrap
2888 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2889 msgstr ""
2890
2891 #. type: Plain text
2892 #: build/C/man2/perf_event_open.2:439
2893 msgid "This reports a clock count specific to the task that is running."
2894 msgstr ""
2895
2896 #. type: TP
2897 #: build/C/man2/perf_event_open.2:439
2898 #, no-wrap
2899 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2900 msgstr ""
2901
2902 #. type: Plain text
2903 #: build/C/man2/perf_event_open.2:442
2904 msgid "This reports the number of page faults."
2905 msgstr ""
2906
2907 #. type: TP
2908 #: build/C/man2/perf_event_open.2:442
2909 #, no-wrap
2910 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2911 msgstr ""
2912
2913 #. type: Plain text
2914 #: build/C/man2/perf_event_open.2:447
2915 msgid ""
2916 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2917 "as user-space events, after that they are reported as happening in the "
2918 "kernel."
2919 msgstr ""
2920
2921 #. type: TP
2922 #: build/C/man2/perf_event_open.2:447
2923 #, no-wrap
2924 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2925 msgstr ""
2926
2927 #. type: Plain text
2928 #: build/C/man2/perf_event_open.2:451
2929 msgid "This reports the number of times the process has migrated to a new CPU."
2930 msgstr ""
2931
2932 #. type: TP
2933 #: build/C/man2/perf_event_open.2:451
2934 #, no-wrap
2935 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2936 msgstr ""
2937
2938 #. type: Plain text
2939 #: build/C/man2/perf_event_open.2:455
2940 msgid ""
2941 "This counts the number of minor page faults.  These did not require disk I/O "
2942 "to handle."
2943 msgstr ""
2944
2945 #. type: TP
2946 #: build/C/man2/perf_event_open.2:455
2947 #, no-wrap
2948 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2949 msgstr ""
2950
2951 #. type: Plain text
2952 #: build/C/man2/perf_event_open.2:459
2953 msgid ""
2954 "This counts the number of major page faults.  These required disk I/O to "
2955 "handle."
2956 msgstr ""
2957
2958 #. type: TP
2959 #: build/C/man2/perf_event_open.2:459
2960 #, fuzzy, no-wrap
2961 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2962 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2963 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2964
2965 #. type: Plain text
2966 #: build/C/man2/perf_event_open.2:465
2967 msgid ""
2968 "This counts the number of alignment faults.  These happen when unaligned "
2969 "memory accesses happen; the kernel can handle these but it reduces "
2970 "performance.  This happens only on some architectures (never on x86)."
2971 msgstr ""
2972
2973 #. type: TP
2974 #: build/C/man2/perf_event_open.2:465
2975 #, fuzzy, no-wrap
2976 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2977 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
2978 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2979
2980 #. type: Plain text
2981 #: build/C/man2/perf_event_open.2:471
2982 msgid ""
2983 "This counts the number of emulation faults.  The kernel sometimes traps on "
2984 "unimplemented instructions and emulates them for user space.  This can "
2985 "negatively impact performance."
2986 msgstr ""
2987
2988 #. type: Plain text
2989 #: build/C/man2/perf_event_open.2:484
2990 msgid ""
2991 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
2992 "tracepoints.  The value to use in I<config> can be obtained from under "
2993 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
2994 msgstr ""
2995
2996 #. type: Plain text
2997 #: build/C/man2/perf_event_open.2:495
2998 msgid ""
2999 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3000 "cache event.  To calculate the appropriate I<config> value use the following "
3001 "equation:"
3002 msgstr ""
3003
3004 #. type: Plain text
3005 #: build/C/man2/perf_event_open.2:500
3006 #, no-wrap
3007 msgid ""
3008 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3009 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3010 msgstr ""
3011
3012 #. type: Plain text
3013 #: build/C/man2/perf_event_open.2:505
3014 msgid "where I<perf_hw_cache_id> is one of:"
3015 msgstr ""
3016
3017 #. type: TP
3018 #: build/C/man2/perf_event_open.2:506
3019 #, no-wrap
3020 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3021 msgstr ""
3022
3023 #. type: Plain text
3024 #: build/C/man2/perf_event_open.2:509
3025 msgid "for measuring Level 1 Data Cache"
3026 msgstr ""
3027
3028 #. type: TP
3029 #: build/C/man2/perf_event_open.2:509
3030 #, no-wrap
3031 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3032 msgstr ""
3033
3034 #. type: Plain text
3035 #: build/C/man2/perf_event_open.2:512
3036 msgid "for measuring Level 1 Instruction Cache"
3037 msgstr ""
3038
3039 #. type: TP
3040 #: build/C/man2/perf_event_open.2:512
3041 #, no-wrap
3042 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3043 msgstr ""
3044
3045 #. type: Plain text
3046 #: build/C/man2/perf_event_open.2:515
3047 msgid "for measuring Last-Level Cache"
3048 msgstr ""
3049
3050 #. type: TP
3051 #: build/C/man2/perf_event_open.2:515
3052 #, no-wrap
3053 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3054 msgstr ""
3055
3056 #. type: Plain text
3057 #: build/C/man2/perf_event_open.2:518
3058 msgid "for measuring the Data TLB"
3059 msgstr ""
3060
3061 #. type: TP
3062 #: build/C/man2/perf_event_open.2:518
3063 #, no-wrap
3064 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3065 msgstr ""
3066
3067 #. type: Plain text
3068 #: build/C/man2/perf_event_open.2:521
3069 msgid "for measuring the Instruction TLB"
3070 msgstr ""
3071
3072 #. type: TP
3073 #: build/C/man2/perf_event_open.2:521
3074 #, no-wrap
3075 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3076 msgstr ""
3077
3078 #. type: Plain text
3079 #: build/C/man2/perf_event_open.2:524
3080 msgid "for measuring the branch prediction unit"
3081 msgstr ""
3082
3083 #. type: TP
3084 #: build/C/man2/perf_event_open.2:524
3085 #, fuzzy, no-wrap
3086 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3087 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3088 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3089
3090 #. type: Plain text
3091 #: build/C/man2/perf_event_open.2:527
3092 msgid "for measuring local memory accesses"
3093 msgstr ""
3094
3095 #. type: Plain text
3096 #: build/C/man2/perf_event_open.2:532
3097 msgid "and I<perf_hw_cache_op_id> is one of"
3098 msgstr ""
3099
3100 #. type: TP
3101 #: build/C/man2/perf_event_open.2:533
3102 #, no-wrap
3103 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3104 msgstr ""
3105
3106 #. type: Plain text
3107 #: build/C/man2/perf_event_open.2:536
3108 msgid "for read accesses"
3109 msgstr ""
3110
3111 #. type: TP
3112 #: build/C/man2/perf_event_open.2:536
3113 #, no-wrap
3114 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3115 msgstr ""
3116
3117 #. type: Plain text
3118 #: build/C/man2/perf_event_open.2:539
3119 msgid "for write accesses"
3120 msgstr ""
3121
3122 #. type: TP
3123 #: build/C/man2/perf_event_open.2:539
3124 #, no-wrap
3125 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3126 msgstr ""
3127
3128 #. type: Plain text
3129 #: build/C/man2/perf_event_open.2:542
3130 msgid "for prefetch accesses"
3131 msgstr ""
3132
3133 #. type: Plain text
3134 #: build/C/man2/perf_event_open.2:547
3135 msgid "and I<perf_hw_cache_op_result_id> is one of"
3136 msgstr ""
3137
3138 #. type: TP
3139 #: build/C/man2/perf_event_open.2:548
3140 #, no-wrap
3141 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3142 msgstr ""
3143
3144 #. type: Plain text
3145 #: build/C/man2/perf_event_open.2:551
3146 msgid "to measure accesses"
3147 msgstr ""
3148
3149 #. type: TP
3150 #: build/C/man2/perf_event_open.2:551
3151 #, no-wrap
3152 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3153 msgstr ""
3154
3155 #. type: Plain text
3156 #: build/C/man2/perf_event_open.2:554
3157 msgid "to measure misses"
3158 msgstr ""
3159
3160 #. type: Plain text
3161 #: build/C/man2/perf_event_open.2:572
3162 msgid ""
3163 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3164 "needed.  Most CPUs support events that are not covered by the \"generalized"
3165 "\" events.  These are implementation defined; see your CPU manual (for "
3166 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3167 "Developer Guide).  The libpfm4 library can be used to translate from the "
3168 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3169 "expects in this field."
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man2/perf_event_open.2:581
3174 msgid ""
3175 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3176 "Its parameters are set in other places."
3177 msgstr ""
3178
3179 #. type: TP
3180 #: build/C/man2/perf_event_open.2:582
3181 #, no-wrap
3182 msgid "I<sample_period>, I<sample_freq>"
3183 msgstr ""
3184
3185 #. type: Plain text
3186 #: build/C/man2/perf_event_open.2:594
3187 msgid ""
3188 "A \"sampling\" counter is one that generates an interrupt every N events, "
3189 "where N is given by I<sample_period>.  A sampling counter has "
3190 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3191 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3192 "is recorded on each interrupt."
3193 msgstr ""
3194
3195 #. type: Plain text
3196 #: build/C/man2/perf_event_open.2:604
3197 msgid ""
3198 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3199 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3200 "period to try and achieve the desired rate.  The rate of adjustment is a "
3201 "timer tick."
3202 msgstr ""
3203
3204 #. type: TP
3205 #: build/C/man2/perf_event_open.2:604
3206 #, no-wrap
3207 msgid "I<sample_type>"
3208 msgstr ""
3209
3210 #. type: Plain text
3211 #: build/C/man2/perf_event_open.2:616
3212 msgid ""
3213 "The various bits in this field specify which values to include in the "
3214 "sample.  They will be recorded in a ring-buffer, which is available to user "
3215 "space using B<mmap>(2).  The order in which the values are saved in the "
3216 "sample are documented in the MMAP Layout subsection below; it is not the "
3217 "I<enum perf_event_sample_format> order."
3218 msgstr ""
3219
3220 #. type: TP
3221 #: build/C/man2/perf_event_open.2:617
3222 #, no-wrap
3223 msgid "B<PERF_SAMPLE_IP>"
3224 msgstr ""
3225
3226 #. type: Plain text
3227 #: build/C/man2/perf_event_open.2:620
3228 msgid "Records instruction pointer."
3229 msgstr ""
3230
3231 #. type: TP
3232 #: build/C/man2/perf_event_open.2:620
3233 #, no-wrap
3234 msgid "B<PERF_SAMPLE_TID>"
3235 msgstr ""
3236
3237 #. type: Plain text
3238 #: build/C/man2/perf_event_open.2:623
3239 msgid "Records the process and thread IDs."
3240 msgstr ""
3241
3242 #. type: TP
3243 #: build/C/man2/perf_event_open.2:623
3244 #, no-wrap
3245 msgid "B<PERF_SAMPLE_TIME>"
3246 msgstr ""
3247
3248 #. type: Plain text
3249 #: build/C/man2/perf_event_open.2:626
3250 msgid "Records a timestamp."
3251 msgstr ""
3252
3253 #. type: TP
3254 #: build/C/man2/perf_event_open.2:626
3255 #, no-wrap
3256 msgid "B<PERF_SAMPLE_ADDR>"
3257 msgstr ""
3258
3259 #. type: Plain text
3260 #: build/C/man2/perf_event_open.2:629
3261 msgid "Records an address, if applicable."
3262 msgstr ""
3263
3264 #. type: TP
3265 #: build/C/man2/perf_event_open.2:629
3266 #, no-wrap
3267 msgid "B<PERF_SAMPLE_READ>"
3268 msgstr ""
3269
3270 #. type: Plain text
3271 #: build/C/man2/perf_event_open.2:632
3272 msgid ""
3273 "Record counter values for all events in a group, not just the group leader."
3274 msgstr ""
3275
3276 #. type: TP
3277 #: build/C/man2/perf_event_open.2:632
3278 #, no-wrap
3279 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3280 msgstr ""
3281
3282 #. type: Plain text
3283 #: build/C/man2/perf_event_open.2:635
3284 msgid "Records the callchain (stack backtrace)."
3285 msgstr ""
3286
3287 #. type: TP
3288 #: build/C/man2/perf_event_open.2:635
3289 #, no-wrap
3290 msgid "B<PERF_SAMPLE_ID>"
3291 msgstr ""
3292
3293 #. type: Plain text
3294 #: build/C/man2/perf_event_open.2:638
3295 msgid "Records a unique ID for the opened event's group leader."
3296 msgstr ""
3297
3298 #. type: TP
3299 #: build/C/man2/perf_event_open.2:638
3300 #, no-wrap
3301 msgid "B<PERF_SAMPLE_CPU>"
3302 msgstr ""
3303
3304 #. type: Plain text
3305 #: build/C/man2/perf_event_open.2:641
3306 msgid "Records CPU number."
3307 msgstr ""
3308
3309 #. type: TP
3310 #: build/C/man2/perf_event_open.2:641
3311 #, no-wrap
3312 msgid "B<PERF_SAMPLE_PERIOD>"
3313 msgstr ""
3314
3315 #. type: Plain text
3316 #: build/C/man2/perf_event_open.2:644
3317 msgid "Records the current sampling period."
3318 msgstr ""
3319
3320 #. type: TP
3321 #: build/C/man2/perf_event_open.2:644
3322 #, no-wrap
3323 msgid "B<PERF_SAMPLE_STREAM_ID>"
3324 msgstr ""
3325
3326 #. type: Plain text
3327 #: build/C/man2/perf_event_open.2:651
3328 msgid ""
3329 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3330 "actual ID is returned, not the group leader.  This ID is the same as the one "
3331 "returned by PERF_FORMAT_ID."
3332 msgstr ""
3333
3334 #. type: TP
3335 #: build/C/man2/perf_event_open.2:651
3336 #, no-wrap
3337 msgid "B<PERF_SAMPLE_RAW>"
3338 msgstr ""
3339
3340 #. type: Plain text
3341 #: build/C/man2/perf_event_open.2:655
3342 msgid ""
3343 "Records additional data, if applicable.  Usually returned by tracepoint "
3344 "events."
3345 msgstr ""
3346
3347 #. type: TP
3348 #: build/C/man2/perf_event_open.2:655
3349 #, fuzzy, no-wrap
3350 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3351 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3352 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3353
3354 #. type: Plain text
3355 #: build/C/man2/perf_event_open.2:659
3356 msgid "Records the branch stack.  See branch_sample_type."
3357 msgstr ""
3358
3359 #. type: TP
3360 #: build/C/man2/perf_event_open.2:659
3361 #, fuzzy, no-wrap
3362 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3363 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3364 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3365
3366 #. type: Plain text
3367 #: build/C/man2/perf_event_open.2:662
3368 msgid "Records the current register state."
3369 msgstr ""
3370
3371 #. type: TP
3372 #: build/C/man2/perf_event_open.2:662
3373 #, fuzzy, no-wrap
3374 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3375 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3376 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3377
3378 #. type: Plain text
3379 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3380 #: build/C/man2/perf_event_open.2:1803
3381 msgid "[To be documented]"
3382 msgstr ""
3383
3384 #. type: TP
3385 #: build/C/man2/perf_event_open.2:666
3386 #, no-wrap
3387 msgid "I<read_format>"
3388 msgstr ""
3389
3390 #. type: Plain text
3391 #: build/C/man2/perf_event_open.2:673
3392 msgid ""
3393 "This field specifies the format of the data returned by B<read>(2)  on a "
3394 "B<perf_event_open>()  file descriptor."
3395 msgstr ""
3396
3397 #. type: TP
3398 #: build/C/man2/perf_event_open.2:674
3399 #, no-wrap
3400 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3401 msgstr ""
3402
3403 #. type: Plain text
3404 #: build/C/man2/perf_event_open.2:681
3405 msgid ""
3406 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3407 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3408 msgstr ""
3409
3410 #. type: TP
3411 #: build/C/man2/perf_event_open.2:681
3412 #, no-wrap
3413 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3414 msgstr ""
3415
3416 #. type: Plain text
3417 #: build/C/man2/perf_event_open.2:688
3418 msgid ""
3419 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3420 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3421 msgstr ""
3422
3423 #. type: TP
3424 #: build/C/man2/perf_event_open.2:688
3425 #, no-wrap
3426 msgid "B<PERF_FORMAT_ID>"
3427 msgstr ""
3428
3429 #. type: Plain text
3430 #: build/C/man2/perf_event_open.2:691
3431 msgid "Adds a 64-bit unique value that corresponds to the event group."
3432 msgstr ""
3433
3434 #. type: TP
3435 #: build/C/man2/perf_event_open.2:691
3436 #, no-wrap
3437 msgid "B<PERF_FORMAT_GROUP>"
3438 msgstr ""
3439
3440 #. type: Plain text
3441 #: build/C/man2/perf_event_open.2:694
3442 msgid "Allows all counter values in an event group to be read with one read."
3443 msgstr ""
3444
3445 #. type: TP
3446 #: build/C/man2/perf_event_open.2:695
3447 #, no-wrap
3448 msgid "I<disabled>"
3449 msgstr ""
3450
3451 #. type: Plain text
3452 #: build/C/man2/perf_event_open.2:705
3453 msgid ""
3454 "The I<disabled> bit specifies whether the counter starts out disabled or "
3455 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3456 "B<prctl>(2), or I<enable_on_exec>."
3457 msgstr ""
3458
3459 #. type: TP
3460 #: build/C/man2/perf_event_open.2:705
3461 #, no-wrap
3462 msgid "I<inherit>"
3463 msgstr ""
3464
3465 #. type: Plain text
3466 #: build/C/man2/perf_event_open.2:714
3467 msgid ""
3468 "The I<inherit> bit specifies that this counter should count events of child "
3469 "tasks as well as the task specified.  This applies only to new children, not "
3470 "to any existing children at the time the counter is created (nor to any new "
3471 "children of existing children)."
3472 msgstr ""
3473
3474 #. type: Plain text
3475 #: build/C/man2/perf_event_open.2:719
3476 msgid ""
3477 "Inherit does not work for some combinations of I<read_format>s, such as "
3478 "B<PERF_FORMAT_GROUP>."
3479 msgstr ""
3480
3481 #. type: TP
3482 #: build/C/man2/perf_event_open.2:719
3483 #, no-wrap
3484 msgid "I<pinned>"
3485 msgstr ""
3486
3487 #. type: Plain text
3488 #: build/C/man2/perf_event_open.2:732
3489 msgid ""
3490 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3491 "at all possible.  It applies only to hardware counters and only to group "
3492 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3493 "there are not enough hardware counters or because of a conflict with some "
3494 "other event), then the counter goes into an 'error' state, where reads "
3495 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3496 "subsequently enabled or disabled."
3497 msgstr ""
3498
3499 #. type: TP
3500 #: build/C/man2/perf_event_open.2:732
3501 #, no-wrap
3502 msgid "I<exclusive>"
3503 msgstr ""
3504
3505 #. type: Plain text
3506 #: build/C/man2/perf_event_open.2:741
3507 msgid ""
3508 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3509 "it should be the only group using the CPU's counters.  In the future this "
3510 "may allow monitoring programs to support PMU features that need to run alone "
3511 "so that they do not disrupt other hardware counters."
3512 msgstr ""
3513
3514 #. type: TP
3515 #: build/C/man2/perf_event_open.2:741
3516 #, no-wrap
3517 msgid "I<exclude_user>"
3518 msgstr ""
3519
3520 #. type: Plain text
3521 #: build/C/man2/perf_event_open.2:744
3522 msgid ""
3523 "If this bit is set, the count excludes events that happen in user space."
3524 msgstr ""
3525
3526 #. type: TP
3527 #: build/C/man2/perf_event_open.2:744
3528 #, no-wrap
3529 msgid "I<exclude_kernel>"
3530 msgstr ""
3531
3532 #. type: Plain text
3533 #: build/C/man2/perf_event_open.2:747
3534 msgid ""
3535 "If this bit is set, the count excludes events that happen in kernel-space."
3536 msgstr ""
3537
3538 #. type: TP
3539 #: build/C/man2/perf_event_open.2:747
3540 #, no-wrap
3541 msgid "I<exclude_hv>"
3542 msgstr ""
3543
3544 #. type: Plain text
3545 #: build/C/man2/perf_event_open.2:755
3546 msgid ""
3547 "If this bit is set, the count excludes events that happen in the "
3548 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3549 "this (such as POWER).  Extra support is needed for handling hypervisor "
3550 "measurements on most machines."
3551 msgstr ""
3552
3553 #. type: TP
3554 #: build/C/man2/perf_event_open.2:755
3555 #, no-wrap
3556 msgid "I<exclude_idle>"
3557 msgstr ""
3558
3559 #. type: Plain text
3560 #: build/C/man2/perf_event_open.2:758
3561 msgid "If set, don't count when the CPU is idle."
3562 msgstr ""
3563
3564 #. type: TP
3565 #: build/C/man2/perf_event_open.2:758
3566 #, no-wrap
3567 msgid "I<mmap>"
3568 msgstr ""
3569
3570 #. type: Plain text
3571 #: build/C/man2/perf_event_open.2:763
3572 msgid "The I<mmap> bit enables recording of exec mmap events."
3573 msgstr ""
3574
3575 #. type: TP
3576 #: build/C/man2/perf_event_open.2:763
3577 #, no-wrap
3578 msgid "I<comm>"
3579 msgstr ""
3580
3581 #. type: Plain text
3582 #: build/C/man2/perf_event_open.2:774
3583 msgid ""
3584 "The I<comm> bit enables tracking of process command name as modified by the "
3585 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3586 "tools, there is no way to distinguish one system call versus the other."
3587 msgstr ""
3588
3589 #. type: TP
3590 #: build/C/man2/perf_event_open.2:774
3591 #, no-wrap
3592 msgid "I<freq>"
3593 msgstr ""
3594
3595 #. type: Plain text
3596 #: build/C/man2/perf_event_open.2:781
3597 msgid ""
3598 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3599 "when setting up the sampling interval."
3600 msgstr ""
3601
3602 #. type: TP
3603 #: build/C/man2/perf_event_open.2:781
3604 #, no-wrap
3605 msgid "I<inherit_stat>"
3606 msgstr ""
3607
3608 #. type: Plain text
3609 #: build/C/man2/perf_event_open.2:788
3610 msgid ""
3611 "This bit enables saving of event counts on context switch for inherited "
3612 "tasks.  This is meaningful only if the I<inherit> field is set."
3613 msgstr ""
3614
3615 #. type: TP
3616 #: build/C/man2/perf_event_open.2:788
3617 #, no-wrap
3618 msgid "I<enable_on_exec>"
3619 msgstr ""
3620
3621 #. type: Plain text
3622 #: build/C/man2/perf_event_open.2:793
3623 msgid ""
3624 "If this bit is set, a counter is automatically enabled after a call to "
3625 "B<exec>(2)."
3626 msgstr ""
3627
3628 #. type: TP
3629 #: build/C/man2/perf_event_open.2:793
3630 #, no-wrap
3631 msgid "I<task>"
3632 msgstr ""
3633
3634 #. type: Plain text
3635 #: build/C/man2/perf_event_open.2:797
3636 msgid ""
3637 "If this bit is set, then fork/exit notifications are included in the ring "
3638 "buffer."
3639 msgstr ""
3640
3641 #. type: TP
3642 #: build/C/man2/perf_event_open.2:797
3643 #, no-wrap
3644 msgid "I<watermark>"
3645 msgstr ""
3646
3647 #. type: Plain text
3648 #: build/C/man2/perf_event_open.2:805
3649 msgid ""
3650 "If set, have a sampling interrupt happen when we cross the "
3651 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3652 "I<wakeup_events> samples."
3653 msgstr ""
3654
3655 #. type: TP
3656 #: build/C/man2/perf_event_open.2:805
3657 #, fuzzy, no-wrap
3658 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3659 msgid "I<precise_ip> (Since Linux 2.6.35)"
3660 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3661
3662 #. type: Plain text
3663 #: build/C/man2/perf_event_open.2:815
3664 msgid ""
3665 "This controls the amount of skid.  Skid is how many instructions execute "
3666 "between an event of interest happening and the kernel being able to stop and "
3667 "record the event.  Smaller skid is better and allows more accurate reporting "
3668 "of which events correspond to which instructions, but hardware is often "
3669 "limited with how small this can be."
3670 msgstr ""
3671
3672 #. type: Plain text
3673 #: build/C/man2/perf_event_open.2:817
3674 #, fuzzy
3675 #| msgid "The I<subcmd> value is one of the following:"
3676 msgid "The values of this are the following:"
3677 msgstr "I<subcmd> の値は以下のいずれかである"
3678
3679 #. type: TP
3680 #: build/C/man2/perf_event_open.2:818
3681 #, no-wrap
3682 msgid "0 -"
3683 msgstr ""
3684
3685 #. type: Plain text
3686 #: build/C/man2/perf_event_open.2:822
3687 msgid "B<SAMPLE_IP> can have arbitrary skid"
3688 msgstr ""
3689
3690 #. type: TP
3691 #: build/C/man2/perf_event_open.2:822
3692 #, no-wrap
3693 msgid "1 -"
3694 msgstr ""
3695
3696 #. type: Plain text
3697 #: build/C/man2/perf_event_open.2:826
3698 msgid "B<SAMPLE_IP> must have constant skid"
3699 msgstr ""
3700
3701 #. type: TP
3702 #: build/C/man2/perf_event_open.2:826
3703 #, no-wrap
3704 msgid "2 -"
3705 msgstr ""
3706
3707 #. type: Plain text
3708 #: build/C/man2/perf_event_open.2:830
3709 msgid "B<SAMPLE_IP> requested to have 0 skid"
3710 msgstr ""
3711
3712 #. type: TP
3713 #: build/C/man2/perf_event_open.2:830
3714 #, no-wrap
3715 msgid "3 -"
3716 msgstr ""
3717
3718 #. type: Plain text
3719 #: build/C/man2/perf_event_open.2:836
3720 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3721 msgstr ""
3722
3723 #. type: TP
3724 #: build/C/man2/perf_event_open.2:837
3725 #, fuzzy, no-wrap
3726 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3727 msgid "I<mmap_data> (Since Linux 2.6.36)"
3728 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3729
3730 #. type: Plain text
3731 #: build/C/man2/perf_event_open.2:843
3732 msgid ""
3733 "The counterpart of the I<mmap> field, but enables including data mmap events "
3734 "in the ring-buffer."
3735 msgstr ""
3736
3737 #. type: TP
3738 #: build/C/man2/perf_event_open.2:843
3739 #, fuzzy, no-wrap
3740 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3741 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3742 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3743
3744 #. type: Plain text
3745 #: build/C/man2/perf_event_open.2:851
3746 msgid ""
3747 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3748 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3749 "selected."
3750 msgstr ""
3751
3752 #. type: TP
3753 #: build/C/man2/perf_event_open.2:851
3754 #, no-wrap
3755 msgid "I<exclude_host> (Since Linux 3.2)"
3756 msgstr ""
3757
3758 #. type: Plain text
3759 #: build/C/man2/perf_event_open.2:854
3760 msgid "Do not measure time spent in VM host"
3761 msgstr ""
3762
3763 #. type: TP
3764 #: build/C/man2/perf_event_open.2:854
3765 #, no-wrap
3766 msgid "I<exclude_guest> (Since Linux 3.2)"
3767 msgstr ""
3768
3769 #. type: Plain text
3770 #: build/C/man2/perf_event_open.2:857
3771 msgid "Do not measure time spent in VM guest"
3772 msgstr ""
3773
3774 #. type: TP
3775 #: build/C/man2/perf_event_open.2:857
3776 #, no-wrap
3777 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3778 msgstr ""
3779
3780 #. type: Plain text
3781 #: build/C/man2/perf_event_open.2:860
3782 msgid "Do not include kernel callchains."
3783 msgstr ""
3784
3785 #. type: TP
3786 #: build/C/man2/perf_event_open.2:860
3787 #, no-wrap
3788 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3789 msgstr ""
3790
3791 #. type: Plain text
3792 #: build/C/man2/perf_event_open.2:863
3793 msgid "Do not include user callchains."
3794 msgstr ""
3795
3796 #. type: TP
3797 #: build/C/man2/perf_event_open.2:863
3798 #, no-wrap
3799 msgid "I<wakeup_events>, I<wakeup_watermark>"
3800 msgstr ""
3801
3802 #. type: Plain text
3803 #: build/C/man2/perf_event_open.2:873
3804 msgid ""
3805 "This union sets how many samples (I<wakeup_events>)  or bytes "
3806 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3807 "is used is selected by the I<watermark> bitflag."
3808 msgstr ""
3809
3810 #. type: TP
3811 #: build/C/man2/perf_event_open.2:873
3812 #, fuzzy, no-wrap
3813 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3814 msgid "I<bp_type> (Since Linux 2.6.33)"
3815 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3816
3817 #. type: Plain text
3818 #: build/C/man2/perf_event_open.2:877
3819 msgid "This chooses the breakpoint type.  It is one of:"
3820 msgstr ""
3821
3822 #. type: TP
3823 #: build/C/man2/perf_event_open.2:878
3824 #, no-wrap
3825 msgid "B<HW_BREAKPOINT_EMPTY>"
3826 msgstr ""
3827
3828 #. type: Plain text
3829 #: build/C/man2/perf_event_open.2:881
3830 msgid "no breakpoint"
3831 msgstr ""
3832
3833 #. type: TP
3834 #: build/C/man2/perf_event_open.2:881
3835 #, no-wrap
3836 msgid "B<HW_BREAKPOINT_R>"
3837 msgstr ""
3838
3839 #. type: Plain text
3840 #: build/C/man2/perf_event_open.2:884
3841 msgid "count when we read the memory location"
3842 msgstr ""
3843
3844 #. type: TP
3845 #: build/C/man2/perf_event_open.2:884
3846 #, no-wrap
3847 msgid "B<HW_BREAKPOINT_W>"
3848 msgstr ""
3849
3850 #. type: Plain text
3851 #: build/C/man2/perf_event_open.2:887
3852 msgid "count when we write the memory location"
3853 msgstr ""
3854
3855 #. type: TP
3856 #: build/C/man2/perf_event_open.2:887
3857 #, no-wrap
3858 msgid "B<HW_BREAKPOINT_RW>"
3859 msgstr ""
3860
3861 #. type: Plain text
3862 #: build/C/man2/perf_event_open.2:890
3863 msgid "count when we read or write the memory location"
3864 msgstr ""
3865
3866 #. type: TP
3867 #: build/C/man2/perf_event_open.2:890
3868 #, no-wrap
3869 msgid "B<HW_BREAKPOINT_X>"
3870 msgstr ""
3871
3872 #. type: Plain text
3873 #: build/C/man2/perf_event_open.2:893
3874 msgid "count when we execute code at the memory location"
3875 msgstr ""
3876
3877 #. type: Plain text
3878 #: build/C/man2/perf_event_open.2:902
3879 msgid ""
3880 "The values can be combined via a bitwise or, but the combination of "
3881 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3882 "allowed."
3883 msgstr ""
3884
3885 #. type: TP
3886 #: build/C/man2/perf_event_open.2:903
3887 #, fuzzy, no-wrap
3888 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3889 msgid "I<bp_addr> (Since Linux 2.6.33)"
3890 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3891
3892 #. type: Plain text
3893 #: build/C/man2/perf_event_open.2:910
3894 msgid ""
3895 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3896 "memory address of the instruction of interest; for read and write "
3897 "breakpoints it is the memory address of the memory location of interest."
3898 msgstr ""
3899
3900 #. type: TP
3901 #: build/C/man2/perf_event_open.2:910
3902 #, fuzzy, no-wrap
3903 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3904 msgid "I<config1> (Since Linux 2.6.39)"
3905 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3906
3907 #. type: Plain text
3908 #: build/C/man2/perf_event_open.2:917
3909 msgid ""
3910 "I<config1> is used for setting events that need an extra register or "
3911 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3912 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3913 msgstr ""
3914
3915 #. type: TP
3916 #: build/C/man2/perf_event_open.2:917
3917 #, fuzzy, no-wrap
3918 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3919 msgid "I<bp_len> (Since Linux 2.6.33)"
3920 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3921
3922 #. type: Plain text
3923 #: build/C/man2/perf_event_open.2:931
3924 msgid ""
3925 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3926 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3927 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3928 "an execution breakpoint, set this to I<sizeof(long)>."
3929 msgstr ""
3930
3931 #. type: TP
3932 #: build/C/man2/perf_event_open.2:931
3933 #, fuzzy, no-wrap
3934 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3935 msgid "I<config2> (Since Linux 2.6.39)"
3936 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3937
3938 #. type: Plain text
3939 #: build/C/man2/perf_event_open.2:938
3940 msgid "I<config2> is a further extension of the I<config1> field."
3941 msgstr ""
3942
3943 #. type: TP
3944 #: build/C/man2/perf_event_open.2:938
3945 #, no-wrap
3946 msgid "I<branch_sample_type> (Since Linux 3.4)"
3947 msgstr ""
3948
3949 #. type: Plain text
3950 #: build/C/man2/perf_event_open.2:942
3951 msgid ""
3952 "This is used with the CPUs hardware branch sampling, if available.  It can "
3953 "have one of the following values:"
3954 msgstr ""
3955
3956 #. type: TP
3957 #: build/C/man2/perf_event_open.2:943
3958 #, no-wrap
3959 msgid "B<PERF_SAMPLE_BRANCH_USER>"
3960 msgstr ""
3961
3962 #. type: Plain text
3963 #: build/C/man2/perf_event_open.2:946
3964 msgid "Branch target is in user space"
3965 msgstr ""
3966
3967 #. type: TP
3968 #: build/C/man2/perf_event_open.2:946
3969 #, no-wrap
3970 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
3971 msgstr ""
3972
3973 #. type: Plain text
3974 #: build/C/man2/perf_event_open.2:949
3975 msgid "Branch target is in kernel space"
3976 msgstr ""
3977
3978 #. type: TP
3979 #: build/C/man2/perf_event_open.2:949
3980 #, no-wrap
3981 msgid "B<PERF_SAMPLE_BRANCH_HV>"
3982 msgstr ""
3983
3984 #. type: Plain text
3985 #: build/C/man2/perf_event_open.2:952
3986 msgid "Branch target is in hypervisor"
3987 msgstr ""
3988
3989 #. type: TP
3990 #: build/C/man2/perf_event_open.2:952
3991 #, no-wrap
3992 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
3993 msgstr ""
3994
3995 #. type: Plain text
3996 #: build/C/man2/perf_event_open.2:955
3997 msgid "Any branch type."
3998 msgstr ""
3999
4000 #. type: TP
4001 #: build/C/man2/perf_event_open.2:955
4002 #, no-wrap
4003 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4004 msgstr ""
4005
4006 #. type: Plain text
4007 #: build/C/man2/perf_event_open.2:958
4008 msgid "Any call branch"
4009 msgstr ""
4010
4011 #. type: TP
4012 #: build/C/man2/perf_event_open.2:958
4013 #, no-wrap
4014 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4015 msgstr ""
4016
4017 #. type: Plain text
4018 #: build/C/man2/perf_event_open.2:961
4019 msgid "Any return branch"
4020 msgstr ""
4021
4022 #. type: TP
4023 #: build/C/man2/perf_event_open.2:961
4024 #, no-wrap
4025 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4026 msgstr ""
4027
4028 #. type: Plain text
4029 #: build/C/man2/perf_event_open.2:964
4030 msgid "Indirect calls"
4031 msgstr ""
4032
4033 #. type: TP
4034 #: build/C/man2/perf_event_open.2:964
4035 #, no-wrap
4036 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4037 msgstr ""
4038
4039 #. type: Plain text
4040 #: build/C/man2/perf_event_open.2:967
4041 msgid "User, kernel, and hv"
4042 msgstr ""
4043
4044 #. type: TP
4045 #: build/C/man2/perf_event_open.2:968
4046 #, no-wrap
4047 msgid "I<sample_regs_user> (Since Linux 3.7)"
4048 msgstr ""
4049
4050 #.  FIXME: The following reference seems to be not quite right:
4051 #. type: Plain text
4052 #: build/C/man2/perf_event_open.2:974
4053 msgid ""
4054 "This defines the set of user registers to dump on samples.  See I<asm/"
4055 "perf_regs.h>."
4056 msgstr ""
4057
4058 #. type: TP
4059 #: build/C/man2/perf_event_open.2:974
4060 #, no-wrap
4061 msgid "I<sample_stack_user> (Since Linux 3.7)"
4062 msgstr ""
4063
4064 #. type: Plain text
4065 #: build/C/man2/perf_event_open.2:977
4066 msgid "This defines the size of the user stack to dump on samples."
4067 msgstr ""
4068
4069 #. type: SS
4070 #: build/C/man2/perf_event_open.2:977
4071 #, no-wrap
4072 msgid "Reading results"
4073 msgstr ""
4074
4075 #. type: Plain text
4076 #: build/C/man2/perf_event_open.2:987
4077 msgid ""
4078 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4079 "the events can be read from the file descriptor.  The values that are there "
4080 "are specified by the I<read_format> field in the I<attr> structure at open "
4081 "time."
4082 msgstr ""
4083
4084 #. type: Plain text
4085 #: build/C/man2/perf_event_open.2:992
4086 msgid ""
4087 "If you attempt to read into a buffer that is not big enough to hold the data "
4088 "B<ENOSPC> is returned"
4089 msgstr ""
4090
4091 #. type: Plain text
4092 #: build/C/man2/perf_event_open.2:994
4093 msgid "Here is the layout of the data returned by a read:"
4094 msgstr ""
4095
4096 #. type: IP
4097 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4098 #: build/C/man2/ptrace.2:1553 build/C/man2/ptrace.2:1563
4099 #: build/C/man2/ptrace.2:1571 build/C/man2/ptrace.2:1577
4100 #: build/C/man2/ptrace.2:1706
4101 #, no-wrap
4102 msgid "*"
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man2/perf_event_open.2:998
4107 msgid ""
4108 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4109 "at once:"
4110 msgstr ""
4111
4112 #. type: Plain text
4113 #: build/C/man2/perf_event_open.2:1010
4114 #, no-wrap
4115 msgid ""
4116 "struct read_format {\n"
4117 "    u64 nr;            /* The number of events */\n"
4118 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4119 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4120 "    struct\n"
4121 "        u64 value;     /* The value of the event */\n"
4122 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4123 "    } values[nr];\n"
4124 "};\n"
4125 msgstr ""
4126
4127 #. type: Plain text
4128 #: build/C/man2/perf_event_open.2:1018
4129 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4130 msgstr ""
4131
4132 #. type: Plain text
4133 #: build/C/man2/perf_event_open.2:1027
4134 #, no-wrap
4135 msgid ""
4136 "struct read_format {\n"
4137 "    u64 value;         /* The value of the event */\n"
4138 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4139 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4140 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4141 "};\n"
4142 msgstr ""
4143
4144 #. type: Plain text
4145 #: build/C/man2/perf_event_open.2:1031
4146 msgid "The values read are as follows:"
4147 msgstr ""
4148
4149 #. type: TP
4150 #: build/C/man2/perf_event_open.2:1031
4151 #, no-wrap
4152 msgid "I<nr>"
4153 msgstr ""
4154
4155 #. type: Plain text
4156 #: build/C/man2/perf_event_open.2:1037
4157 msgid ""
4158 "The number of events in this file descriptor.  Only available if "
4159 "B<PERF_FORMAT_GROUP> was specified."
4160 msgstr ""
4161
4162 #. type: TP
4163 #: build/C/man2/perf_event_open.2:1037
4164 #, no-wrap
4165 msgid "I<time_enabled>, I<time_running>"
4166 msgstr ""
4167
4168 #. type: Plain text
4169 #: build/C/man2/perf_event_open.2:1049
4170 msgid ""
4171 "Total time the event was enabled and running.  Normally these are the same.  "
4172 "If more events are started than available counter slots on the PMU, then "
4173 "multiplexing happens and events run only part of the time.  In that case the "
4174 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4175 "value for the count."
4176 msgstr ""
4177
4178 #. type: TP
4179 #: build/C/man2/perf_event_open.2:1049
4180 #, no-wrap
4181 msgid "I<value>"
4182 msgstr ""
4183
4184 #. type: Plain text
4185 #: build/C/man2/perf_event_open.2:1052
4186 msgid "An unsigned 64-bit value containing the counter result."
4187 msgstr ""
4188
4189 #. type: TP
4190 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4191 #: build/C/man2/perf_event_open.2:1451
4192 #, no-wrap
4193 msgid "I<id>"
4194 msgstr ""
4195
4196 #. type: Plain text
4197 #: build/C/man2/perf_event_open.2:1058
4198 msgid ""
4199 "A globally unique value for this particular event, only there if "
4200 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4201 msgstr ""
4202
4203 #. type: SS
4204 #: build/C/man2/perf_event_open.2:1058
4205 #, no-wrap
4206 msgid "MMAP layout"
4207 msgstr ""
4208
4209 #. type: Plain text
4210 #: build/C/man2/perf_event_open.2:1068
4211 msgid ""
4212 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4213 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4214 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4215 msgstr ""
4216
4217 #. type: Plain text
4218 #: build/C/man2/perf_event_open.2:1074
4219 msgid ""
4220 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4221 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4222 "such as where the ring-buffer head is."
4223 msgstr ""
4224
4225 #. type: Plain text
4226 #: build/C/man2/perf_event_open.2:1077
4227 msgid ""
4228 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4229 "ring buffer when sampling even if you do not plan to access it."
4230 msgstr ""
4231
4232 #. type: Plain text
4233 #: build/C/man2/perf_event_open.2:1079
4234 msgid "The structure of the first metadata mmap page is as follows:"
4235 msgstr ""
4236
4237 #. type: Plain text
4238 #: build/C/man2/perf_event_open.2:1103
4239 #, no-wrap
4240 msgid ""
4241 "struct perf_event_mmap_page {\n"
4242 "    __u32 version;          /* version number of this structure */\n"
4243 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4244 "    __u32 lock;             /* seqlock for synchronization */\n"
4245 "    __u32 index;            /* hardware counter identifier */\n"
4246 "    __s64 offset;           /* add to hardware counter value */\n"
4247 "    __u64 time_enabled;     /* time event active */\n"
4248 "    __u64 time_running;     /* time event on CPU */\n"
4249 "    union {\n"
4250 "        __u64   capabilities;\n"
4251 "        __u64   cap_usr_time  : 1,\n"
4252 "                cap_usr_rdpmc : 1,\n"
4253 "    };\n"
4254 "    __u16   pmc_width;\n"
4255 "    __u16   time_shift;\n"
4256 "    __u32   time_mult;\n"
4257 "    __u64   time_offset;\n"
4258 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4259 "    __u64   data_head;         /* head in the data section */\n"
4260 "    __u64   data_tail;         /* user-space written tail */\n"
4261 "}\n"
4262 msgstr ""
4263
4264 #. type: Plain text
4265 #: build/C/man2/perf_event_open.2:1109
4266 msgid ""
4267 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4268 "in more detail:"
4269 msgstr ""
4270
4271 #. type: TP
4272 #: build/C/man2/perf_event_open.2:1109
4273 #, no-wrap
4274 msgid "I<version>"
4275 msgstr ""
4276
4277 #. type: Plain text
4278 #: build/C/man2/perf_event_open.2:1112
4279 msgid "Version number of this structure."
4280 msgstr ""
4281
4282 #. type: TP
4283 #: build/C/man2/perf_event_open.2:1112
4284 #, no-wrap
4285 msgid "I<compat_version>"
4286 msgstr ""
4287
4288 #. type: Plain text
4289 #: build/C/man2/perf_event_open.2:1115
4290 msgid "The lowest version this is compatible with."
4291 msgstr ""
4292
4293 #. type: TP
4294 #: build/C/man2/perf_event_open.2:1115
4295 #, no-wrap
4296 msgid "I<lock>"
4297 msgstr ""
4298
4299 #. type: Plain text
4300 #: build/C/man2/perf_event_open.2:1118
4301 msgid "A seqlock for synchronization."
4302 msgstr ""
4303
4304 #. type: TP
4305 #: build/C/man2/perf_event_open.2:1118
4306 #, no-wrap
4307 msgid "I<index>"
4308 msgstr ""
4309
4310 #. type: Plain text
4311 #: build/C/man2/perf_event_open.2:1121
4312 msgid "A unique hardware counter identifier."
4313 msgstr ""
4314
4315 #. type: TP
4316 #: build/C/man2/perf_event_open.2:1121
4317 #, no-wrap
4318 msgid "I<offset>"
4319 msgstr ""
4320
4321 #.  FIXME clarify
4322 #. type: Plain text
4323 #: build/C/man2/perf_event_open.2:1125
4324 msgid "Add this to hardware counter value??"
4325 msgstr ""
4326
4327 #. type: TP
4328 #: build/C/man2/perf_event_open.2:1125
4329 #, no-wrap
4330 msgid "I<time_enabled>"
4331 msgstr ""
4332
4333 #. type: Plain text
4334 #: build/C/man2/perf_event_open.2:1128
4335 msgid "Time the event was active."
4336 msgstr ""
4337
4338 #. type: TP
4339 #: build/C/man2/perf_event_open.2:1128
4340 #, no-wrap
4341 msgid "I<time_running>"
4342 msgstr ""
4343
4344 #. type: Plain text
4345 #: build/C/man2/perf_event_open.2:1131
4346 msgid "Time the event was running."
4347 msgstr ""
4348
4349 #. type: TP
4350 #: build/C/man2/perf_event_open.2:1131
4351 #, no-wrap
4352 msgid "I<cap_usr_time>"
4353 msgstr ""
4354
4355 #. type: Plain text
4356 #: build/C/man2/perf_event_open.2:1134
4357 msgid "User time capability"
4358 msgstr ""
4359
4360 #. type: TP
4361 #: build/C/man2/perf_event_open.2:1134
4362 #, no-wrap
4363 msgid "I<cap_usr_rdpmc>"
4364 msgstr ""
4365
4366 #. type: Plain text
4367 #: build/C/man2/perf_event_open.2:1139
4368 msgid ""
4369 "If the hardware supports user-space read of performance counters without "
4370 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4371 "can be used to do a read:"
4372 msgstr ""
4373
4374 #. type: Plain text
4375 #: build/C/man2/perf_event_open.2:1146
4376 #, no-wrap
4377 msgid ""
4378 "u32 seq, time_mult, time_shift, idx, width;\n"
4379 "u64 count, enabled, running;\n"
4380 "u64 cyc, time_offset;\n"
4381 "s64 pmc = 0;\n"
4382 msgstr ""
4383
4384 #. type: Plain text
4385 #: build/C/man2/perf_event_open.2:1152
4386 #, no-wrap
4387 msgid ""
4388 "do {\n"
4389 "    seq = pc-E<gt>lock;\n"
4390 "    barrier();\n"
4391 "    enabled = pc-E<gt>time_enabled;\n"
4392 "    running = pc-E<gt>time_running;\n"
4393 msgstr ""
4394
4395 #. type: Plain text
4396 #: build/C/man2/perf_event_open.2:1159
4397 #, no-wrap
4398 msgid ""
4399 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4400 "        cyc = rdtsc();\n"
4401 "        time_offset = pc-E<gt>time_offset;\n"
4402 "        time_mult   = pc-E<gt>time_mult;\n"
4403 "        time_shift  = pc-E<gt>time_shift;\n"
4404 "    }\n"
4405 msgstr ""
4406
4407 #. type: Plain text
4408 #: build/C/man2/perf_event_open.2:1162
4409 #, no-wrap
4410 msgid ""
4411 "    idx = pc-E<gt>index;\n"
4412 "    count = pc-E<gt>offset;\n"
4413 msgstr ""
4414
4415 #. type: Plain text
4416 #: build/C/man2/perf_event_open.2:1167
4417 #, no-wrap
4418 msgid ""
4419 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4420 "        width = pc-E<gt>pmc_width;\n"
4421 "        pmc = rdpmc(idx - 1);\n"
4422 "    }\n"
4423 msgstr ""
4424
4425 #. type: Plain text
4426 #: build/C/man2/perf_event_open.2:1170
4427 #, no-wrap
4428 msgid ""
4429 "    barrier();\n"
4430 "} while (pc-E<gt>lock != seq);\n"
4431 msgstr ""
4432
4433 #. type: TP
4434 #: build/C/man2/perf_event_open.2:1172
4435 #, no-wrap
4436 msgid "I<pmc_width>"
4437 msgstr ""
4438
4439 #. type: Plain text
4440 #: build/C/man2/perf_event_open.2:1179
4441 msgid ""
4442 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4443 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4444 "the result like:"
4445 msgstr ""
4446
4447 #. type: Plain text
4448 #: build/C/man2/perf_event_open.2:1185
4449 #, no-wrap
4450 msgid ""
4451 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4452 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4453 "count += pmc;\n"
4454 msgstr ""
4455
4456 #. type: TP
4457 #: build/C/man2/perf_event_open.2:1187
4458 #, no-wrap
4459 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4460 msgstr ""
4461
4462 #. type: Plain text
4463 #: build/C/man2/perf_event_open.2:1194
4464 msgid ""
4465 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4466 "time_enabled (in nanoseconds) using rdtsc or similar."
4467 msgstr ""
4468
4469 #. type: Plain text
4470 #: build/C/man2/perf_event_open.2:1202
4471 #, no-wrap
4472 msgid ""
4473 "    u64 quot, rem;\n"
4474 "    u64 delta;\n"
4475 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4476 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4477 "    delta = time_offset + quot * time_mult +\n"
4478 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4479 msgstr ""
4480
4481 #. type: Plain text
4482 #: build/C/man2/perf_event_open.2:1214
4483 msgid ""
4484 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4485 "the seqcount loop described above.  This delta can then be added to enabled "
4486 "and possible running (if idx), improving the scaling:"
4487 msgstr ""
4488
4489 #. type: Plain text
4490 #: build/C/man2/perf_event_open.2:1222
4491 #, no-wrap
4492 msgid ""
4493 "    enabled += delta;\n"
4494 "    if (idx)\n"
4495 "        running += delta;\n"
4496 "    quot = count / running;\n"
4497 "    rem  = count % running;\n"
4498 "    count = quot * enabled + (rem * enabled) / running;\n"
4499 msgstr ""
4500
4501 #. type: TP
4502 #: build/C/man2/perf_event_open.2:1223
4503 #, no-wrap
4504 msgid "I<data_head>"
4505 msgstr ""
4506
4507 #. type: Plain text
4508 #: build/C/man2/perf_event_open.2:1229
4509 msgid ""
4510 "This points to the head of the data section.  The value continuously "
4511 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4512 "size of the mmap buffer before accessing the samples."
4513 msgstr ""
4514
4515 #. type: Plain text
4516 #: build/C/man2/perf_event_open.2:1232
4517 msgid ""
4518 "On SMP-capable platforms, after reading the data_head value, user space "
4519 "should issue an rmb()."
4520 msgstr ""
4521
4522 #. type: TP
4523 #: build/C/man2/perf_event_open.2:1232
4524 #, no-wrap
4525 msgid "I<data_tail;>"
4526 msgstr ""
4527
4528 #. type: Plain text
4529 #: build/C/man2/perf_event_open.2:1240
4530 msgid ""
4531 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4532 "by user space to reflect the last read data.  In this case the kernel will "
4533 "not over-write unread data."
4534 msgstr ""
4535
4536 #. type: Plain text
4537 #: build/C/man2/perf_event_open.2:1242
4538 msgid "The following 2^n ring-buffer pages have the layout described below."
4539 msgstr ""
4540
4541 #. type: Plain text
4542 #: build/C/man2/perf_event_open.2:1256
4543 msgid ""
4544 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4545 "the sample_type selected fields related to where/when (identity)  an event "
4546 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4547 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4548 "I<perf_event_header> and the fields already present for the existing fields, "
4549 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4550 "supported by older perf tools, with these new optional fields being ignored."
4551 msgstr ""
4552
4553 #. type: Plain text
4554 #: build/C/man2/perf_event_open.2:1258
4555 msgid "The mmap values start with a header:"
4556 msgstr ""
4557
4558 #. type: Plain text
4559 #: build/C/man2/perf_event_open.2:1266
4560 #, no-wrap
4561 msgid ""
4562 "struct perf_event_header {\n"
4563 "    __u32   type;\n"
4564 "    __u16   misc;\n"
4565 "    __u16   size;\n"
4566 "};\n"
4567 msgstr ""
4568
4569 #. type: Plain text
4570 #: build/C/man2/perf_event_open.2:1272
4571 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4572 msgstr ""
4573
4574 #. type: Plain text
4575 #: build/C/man2/perf_event_open.2:1281
4576 msgid ""
4577 "The I<type> value is one of the below.  The values in the corresponding "
4578 "record (that follows the header)  depend on the I<type> selected as shown."
4579 msgstr ""
4580
4581 #. type: TP
4582 #: build/C/man2/perf_event_open.2:1282
4583 #, no-wrap
4584 msgid "B<PERF_RECORD_MMAP>"
4585 msgstr ""
4586
4587 #. type: Plain text
4588 #: build/C/man2/perf_event_open.2:1289
4589 msgid ""
4590 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4591 "user-space IPs to code.  They have the following structure:"
4592 msgstr ""
4593
4594 #. type: Plain text
4595 #: build/C/man2/perf_event_open.2:1300
4596 #, no-wrap
4597 msgid ""
4598 "struct {\n"
4599 "    struct perf_event_header header;\n"
4600 "    u32    pid, tid;\n"
4601 "    u64    addr;\n"
4602 "    u64    len;\n"
4603 "    u64    pgoff;\n"
4604 "    char   filename[];\n"
4605 "};\n"
4606 msgstr ""
4607
4608 #. type: TP
4609 #: build/C/man2/perf_event_open.2:1302
4610 #, no-wrap
4611 msgid "B<PERF_RECORD_LOST>"
4612 msgstr ""
4613
4614 #. type: Plain text
4615 #: build/C/man2/perf_event_open.2:1305
4616 msgid "This record indicates when events are lost."
4617 msgstr ""
4618
4619 #. type: Plain text
4620 #: build/C/man2/perf_event_open.2:1313
4621 #, no-wrap
4622 msgid ""
4623 "struct {\n"
4624 "    struct perf_event_header header;\n"
4625 "    u64 id;\n"
4626 "    u64 lost;\n"
4627 "};\n"
4628 msgstr ""
4629
4630 #. type: Plain text
4631 #: build/C/man2/perf_event_open.2:1319
4632 msgid "is the unique event ID for the samples that were lost."
4633 msgstr ""
4634
4635 #. type: TP
4636 #: build/C/man2/perf_event_open.2:1319
4637 #, no-wrap
4638 msgid "I<lost>"
4639 msgstr ""
4640
4641 #. type: Plain text
4642 #: build/C/man2/perf_event_open.2:1322
4643 #, fuzzy
4644 #| msgid "Returns the number of processes woken up."
4645 msgid "is the number of events that were lost."
4646 msgstr "wake したプロセスの数を返す。"
4647
4648 #. type: TP
4649 #: build/C/man2/perf_event_open.2:1323
4650 #, no-wrap
4651 msgid "B<PERF_RECORD_COMM>"
4652 msgstr ""
4653
4654 #. type: Plain text
4655 #: build/C/man2/perf_event_open.2:1326
4656 msgid "This record indicates a change in the process name."
4657 msgstr ""
4658
4659 #. type: Plain text
4660 #: build/C/man2/perf_event_open.2:1334
4661 #, no-wrap
4662 msgid ""
4663 "struct {\n"
4664 "    struct perf_event_header header;\n"
4665 "    u32 pid, tid;\n"
4666 "    char comm[];\n"
4667 "};\n"
4668 msgstr ""
4669
4670 #. type: TP
4671 #: build/C/man2/perf_event_open.2:1336
4672 #, no-wrap
4673 msgid "B<PERF_RECORD_EXIT>"
4674 msgstr "B<PERF_RECORD_EXIT>"
4675
4676 #. type: Plain text
4677 #: build/C/man2/perf_event_open.2:1339
4678 msgid "This record indicates a process exit event."
4679 msgstr ""
4680
4681 #. type: Plain text
4682 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4683 #, no-wrap
4684 msgid ""
4685 "struct {\n"
4686 "    struct perf_event_header header;\n"
4687 "    u32 pid, ppid;\n"
4688 "    u32 tid, ptid;\n"
4689 "    u64 time;\n"
4690 "};\n"
4691 msgstr ""
4692
4693 #. type: TP
4694 #: build/C/man2/perf_event_open.2:1350
4695 #, no-wrap
4696 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4697 msgstr ""
4698
4699 #. type: Plain text
4700 #: build/C/man2/perf_event_open.2:1353
4701 msgid "This record indicates a throttle/unthrottle event."
4702 msgstr ""
4703
4704 #. type: Plain text
4705 #: build/C/man2/perf_event_open.2:1362
4706 #, no-wrap
4707 msgid ""
4708 "struct {\n"
4709 "    struct perf_event_header header;\n"
4710 "    u64 time;\n"
4711 "    u64 id;\n"
4712 "    u64 stream_id;\n"
4713 "};\n"
4714 msgstr ""
4715
4716 #. type: TP
4717 #: build/C/man2/perf_event_open.2:1364
4718 #, fuzzy, no-wrap
4719 #| msgid "B<PTRACE_EVENT_FORK>"
4720 msgid "B<PERF_RECORD_FORK>"
4721 msgstr "B<PTRACE_EVENT_FORK>"
4722
4723 #. type: Plain text
4724 #: build/C/man2/perf_event_open.2:1367
4725 msgid "This record indicates a fork event."
4726 msgstr ""
4727
4728 #. type: TP
4729 #: build/C/man2/perf_event_open.2:1378
4730 #, no-wrap
4731 msgid "B<PERF_RECORD_READ>"
4732 msgstr ""
4733
4734 #. type: Plain text
4735 #: build/C/man2/perf_event_open.2:1381
4736 msgid "This record indicates a read event."
4737 msgstr ""
4738
4739 #. type: Plain text
4740 #: build/C/man2/perf_event_open.2:1389
4741 #, no-wrap
4742 msgid ""
4743 "struct {\n"
4744 "    struct perf_event_header header;\n"
4745 "    u32 pid, tid;\n"
4746 "    struct read_format values;\n"
4747 "};\n"
4748 msgstr ""
4749
4750 #. type: TP
4751 #: build/C/man2/perf_event_open.2:1391
4752 #, no-wrap
4753 msgid "B<PERF_RECORD_SAMPLE>"
4754 msgstr ""
4755
4756 #. type: Plain text
4757 #: build/C/man2/perf_event_open.2:1394
4758 msgid "This record indicates a sample."
4759 msgstr ""
4760
4761 #. type: Plain text
4762 #: build/C/man2/perf_event_open.2:1422
4763 #, no-wrap
4764 msgid ""
4765 "struct {\n"
4766 "    struct perf_event_header header;\n"
4767 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4768 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4769 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4770 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4771 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4772 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4773 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4774 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4775 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4776 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4777 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4778 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4779 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4780 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4781 "    struct perf_branch_entry lbr[bnr];\n"
4782 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4783 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4784 "    u64   regs[weight(mask)];\n"
4785 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4786 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4787 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4788 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4789 "};\n"
4790 msgstr ""
4791
4792 #. type: TP
4793 #: build/C/man2/perf_event_open.2:1424
4794 #, no-wrap
4795 msgid "I<ip>"
4796 msgstr ""
4797
4798 #. type: Plain text
4799 #: build/C/man2/perf_event_open.2:1430
4800 msgid ""
4801 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4802 "included."
4803 msgstr ""
4804
4805 #. type: TP
4806 #: build/C/man2/perf_event_open.2:1430
4807 #, no-wrap
4808 msgid "I<pid>, I<tid>"
4809 msgstr ""
4810
4811 #. type: Plain text
4812 #: build/C/man2/perf_event_open.2:1436
4813 msgid ""
4814 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4815 "ID are included."
4816 msgstr ""
4817
4818 #. type: TP
4819 #: build/C/man2/perf_event_open.2:1436
4820 #, no-wrap
4821 msgid "I<time>"
4822 msgstr ""
4823
4824 #. type: Plain text
4825 #: build/C/man2/perf_event_open.2:1444
4826 msgid ""
4827 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4828 "This is obtained via local_clock() which is a hardware timestamp if "
4829 "available and the jiffies value if not."
4830 msgstr ""
4831
4832 #. type: TP
4833 #: build/C/man2/perf_event_open.2:1444
4834 #, no-wrap
4835 msgid "I<addr>"
4836 msgstr ""
4837
4838 #. type: Plain text
4839 #: build/C/man2/perf_event_open.2:1451
4840 msgid ""
4841 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4842 "is usually the address of a tracepoint, breakpoint, or software event; "
4843 "otherwise the value is 0."
4844 msgstr ""
4845
4846 #. type: Plain text
4847 #: build/C/man2/perf_event_open.2:1459
4848 msgid ""
4849 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4850 "event is a member of an event group, the group leader ID is returned.  This "
4851 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4852 msgstr ""
4853
4854 #. type: TP
4855 #: build/C/man2/perf_event_open.2:1459
4856 #, no-wrap
4857 msgid "I<stream_id>"
4858 msgstr ""
4859
4860 #. type: Plain text
4861 #: build/C/man2/perf_event_open.2:1469
4862 msgid ""
4863 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4864 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4865 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4866 msgstr ""
4867
4868 #. type: TP
4869 #: build/C/man2/perf_event_open.2:1469
4870 #, no-wrap
4871 msgid "I<cpu>, I<res>"
4872 msgstr ""
4873
4874 #. type: Plain text
4875 #: build/C/man2/perf_event_open.2:1476
4876 msgid ""
4877 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4878 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4879 msgstr ""
4880
4881 #. type: TP
4882 #: build/C/man2/perf_event_open.2:1476
4883 #, no-wrap
4884 msgid "I<period>"
4885 msgstr ""
4886
4887 #. type: Plain text
4888 #: build/C/man2/perf_event_open.2:1482
4889 msgid ""
4890 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4891 "sampling period is written."
4892 msgstr ""
4893
4894 #. type: TP
4895 #: build/C/man2/perf_event_open.2:1482
4896 #, no-wrap
4897 msgid "I<v>"
4898 msgstr ""
4899
4900 #. type: Plain text
4901 #: build/C/man2/perf_event_open.2:1493
4902 msgid ""
4903 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4904 "included which has values for all events in the event group.  The values "
4905 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4906 "time."
4907 msgstr ""
4908
4909 #. type: TP
4910 #: build/C/man2/perf_event_open.2:1493
4911 #, no-wrap
4912 msgid "I<nr>, I<ips[nr]>"
4913 msgstr ""
4914
4915 #. type: Plain text
4916 #: build/C/man2/perf_event_open.2:1501
4917 msgid ""
4918 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4919 "which indicates how many following 64-bit instruction pointers will follow.  "
4920 "This is the current callchain."
4921 msgstr ""
4922
4923 #. type: TP
4924 #: build/C/man2/perf_event_open.2:1501
4925 #, no-wrap
4926 msgid "I<size>, I<data[size]>"
4927 msgstr ""
4928
4929 #. type: Plain text
4930 #: build/C/man2/perf_event_open.2:1508
4931 msgid ""
4932 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4933 "included followed by an array of 8-bit values of length size.  The values "
4934 "are padded with 0 to have 64-bit alignment."
4935 msgstr ""
4936
4937 #. type: Plain text
4938 #: build/C/man2/perf_event_open.2:1513
4939 msgid ""
4940 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4941 "make any promises with respect to the stability of its content, it may vary "
4942 "depending on event, hardware, and kernel version."
4943 msgstr ""
4944
4945 #. type: TP
4946 #: build/C/man2/perf_event_open.2:1513
4947 #, no-wrap
4948 msgid "I<bnr>, I<lbr[bnr]>"
4949 msgstr ""
4950
4951 #. type: Plain text
4952 #: build/C/man2/perf_event_open.2:1524
4953 msgid ""
4954 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
4955 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
4956 "structures.  These structures have from, to, and flags values indicating the "
4957 "from and to addresses from the branches on the callstack."
4958 msgstr ""
4959
4960 #. type: TP
4961 #: build/C/man2/perf_event_open.2:1524
4962 #, no-wrap
4963 msgid "I<abi>, I<regs[weight(mask)]>"
4964 msgstr ""
4965
4966 #. type: Plain text
4967 #: build/C/man2/perf_event_open.2:1530
4968 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
4969 msgstr ""
4970
4971 #. type: Plain text
4972 #: build/C/man2/perf_event_open.2:1536
4973 msgid ""
4974 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
4975 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
4976 msgstr ""
4977
4978 #. type: TP
4979 #: build/C/man2/perf_event_open.2:1536
4980 #, no-wrap
4981 msgid "I<size>, I<data[size]>, I<dyn_size>"
4982 msgstr ""
4983
4984 #. type: Plain text
4985 #: build/C/man2/perf_event_open.2:1542
4986 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
4987 msgstr ""
4988
4989 #. type: TP
4990 #: build/C/man2/perf_event_open.2:1544
4991 #, no-wrap
4992 msgid "I<misc>"
4993 msgstr ""
4994
4995 #. type: Plain text
4996 #: build/C/man2/perf_event_open.2:1549
4997 msgid "The I<misc> field contains additional information about the sample."
4998 msgstr ""
4999
5000 #. type: Plain text
5001 #: build/C/man2/perf_event_open.2:1554
5002 msgid ""
5003 "The CPU mode can be determined from this value by masking with "
5004 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5005 "these are not bit masks, only one can be set at a time):"
5006 msgstr ""
5007
5008 #. type: TP
5009 #: build/C/man2/perf_event_open.2:1555
5010 #, no-wrap
5011 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5012 msgstr ""
5013
5014 #. type: Plain text
5015 #: build/C/man2/perf_event_open.2:1558
5016 msgid "Unknown CPU mode."
5017 msgstr ""
5018
5019 #. type: TP
5020 #: build/C/man2/perf_event_open.2:1558
5021 #, no-wrap
5022 msgid "B<PERF_RECORD_MISC_KERNEL>"
5023 msgstr ""
5024
5025 #. type: Plain text
5026 #: build/C/man2/perf_event_open.2:1561
5027 msgid "Sample happened in the kernel."
5028 msgstr ""
5029
5030 #. type: TP
5031 #: build/C/man2/perf_event_open.2:1561
5032 #, no-wrap
5033 msgid "B<PERF_RECORD_MISC_USER>"
5034 msgstr ""
5035
5036 #. type: Plain text
5037 #: build/C/man2/perf_event_open.2:1564
5038 msgid "Sample happened in user code."
5039 msgstr ""
5040
5041 #. type: TP
5042 #: build/C/man2/perf_event_open.2:1564
5043 #, no-wrap
5044 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5045 msgstr ""
5046
5047 #. type: Plain text
5048 #: build/C/man2/perf_event_open.2:1567
5049 msgid "Sample happened in the hypervisor."
5050 msgstr ""
5051
5052 #. type: TP
5053 #: build/C/man2/perf_event_open.2:1567
5054 #, no-wrap
5055 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5056 msgstr ""
5057
5058 #. type: Plain text
5059 #: build/C/man2/perf_event_open.2:1570
5060 msgid "Sample happened in the guest kernel."
5061 msgstr ""
5062
5063 #. type: TP
5064 #: build/C/man2/perf_event_open.2:1570
5065 #, no-wrap
5066 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5067 msgstr ""
5068
5069 #. type: Plain text
5070 #: build/C/man2/perf_event_open.2:1573
5071 msgid "Sample happened in guest user code."
5072 msgstr ""
5073
5074 #. type: Plain text
5075 #: build/C/man2/perf_event_open.2:1576
5076 msgid "In addition, one of the following bits can be set:"
5077 msgstr ""
5078
5079 #. type: TP
5080 #: build/C/man2/perf_event_open.2:1577
5081 #, no-wrap
5082 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5083 msgstr ""
5084
5085 #. type: Plain text
5086 #: build/C/man2/perf_event_open.2:1585
5087 msgid ""
5088 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5089 "instruction that triggered the event.  See also I<perf_event_attr."
5090 "precise_ip>."
5091 msgstr ""
5092
5093 #. type: TP
5094 #: build/C/man2/perf_event_open.2:1585
5095 #, no-wrap
5096 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5097 msgstr ""
5098
5099 #. type: Plain text
5100 #: build/C/man2/perf_event_open.2:1588
5101 msgid "This indicates there is extended data available (currently not used)."
5102 msgstr ""
5103
5104 #. type: Plain text
5105 #: build/C/man2/perf_event_open.2:1591
5106 msgid "This indicates the size of the record."
5107 msgstr ""
5108
5109 #. type: SS
5110 #: build/C/man2/perf_event_open.2:1592
5111 #, no-wrap
5112 msgid "Signal overflow"
5113 msgstr ""
5114
5115 #. type: Plain text
5116 #: build/C/man2/perf_event_open.2:1601
5117 msgid ""
5118 "Events can be set to deliver a signal when a threshold is crossed.  The "
5119 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5120 "and B<fcntl>(2), system calls."
5121 msgstr ""
5122
5123 #. type: Plain text
5124 #: build/C/man2/perf_event_open.2:1605
5125 msgid ""
5126 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5127 "non-zero value)."
5128 msgstr ""
5129
5130 #. type: Plain text
5131 #: build/C/man2/perf_event_open.2:1607
5132 msgid "There are two ways to generate signals."
5133 msgstr ""
5134
5135 #. type: Plain text
5136 #: build/C/man2/perf_event_open.2:1617
5137 msgid ""
5138 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5139 "will generate a signal if a certain number of samples or bytes have been "
5140 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5141 "is sent."
5142 msgstr ""
5143
5144 #. type: Plain text
5145 #: build/C/man2/perf_event_open.2:1629
5146 msgid ""
5147 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5148 "adds to a counter that decrements each time the event overflows.  When non-"
5149 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5150 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5151 msgstr ""
5152
5153 #.  FIXME(Vince) : Find out when this was introduced
5154 #. type: Plain text
5155 #: build/C/man2/perf_event_open.2:1635
5156 msgid ""
5157 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5158 "for every overflow, even if I<wakeup_events> is not set."
5159 msgstr ""
5160
5161 #. type: SS
5162 #: build/C/man2/perf_event_open.2:1635
5163 #, no-wrap
5164 msgid "rdpmc instruction"
5165 msgstr ""
5166
5167 #. type: Plain text
5168 #: build/C/man2/perf_event_open.2:1642
5169 msgid ""
5170 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5171 "low-latency reads without having to enter the kernel.  Note that using "
5172 "I<rdpmc> is not necessarily faster than other methods for reading event "
5173 "values."
5174 msgstr ""
5175
5176 #. type: Plain text
5177 #: build/C/man2/perf_event_open.2:1647
5178 msgid ""
5179 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5180 "page; documentation on how to calculate event values can be found in that "
5181 "section."
5182 msgstr ""
5183
5184 #. type: SS
5185 #: build/C/man2/perf_event_open.2:1647
5186 #, no-wrap
5187 msgid "perf_event ioctl calls"
5188 msgstr ""
5189
5190 #. type: Plain text
5191 #: build/C/man2/perf_event_open.2:1652
5192 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5193 msgstr ""
5194
5195 #. type: TP
5196 #: build/C/man2/perf_event_open.2:1652
5197 #, fuzzy, no-wrap
5198 #| msgid "B<PTRACE_EVENT_CLONE>"
5199 msgid "B<PERF_EVENT_IOC_ENABLE>"
5200 msgstr "B<PTRACE_EVENT_CLONE>"
5201
5202 #. type: Plain text
5203 #: build/C/man2/perf_event_open.2:1656
5204 msgid ""
5205 "Enables the individual event or event group specified by the file descriptor "
5206 "argument."
5207 msgstr ""
5208
5209 #. type: Plain text
5210 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5211 #: build/C/man2/perf_event_open.2:1699
5212 msgid "The ioctl argument is ignored."
5213 msgstr ""
5214
5215 #. type: TP
5216 #: build/C/man2/perf_event_open.2:1658
5217 #, fuzzy, no-wrap
5218 #| msgid "B<PTRACE_EVENT_CLONE>"
5219 msgid "B<PERF_EVENT_IOC_DISABLE>"
5220 msgstr "B<PTRACE_EVENT_CLONE>"
5221
5222 #. type: Plain text
5223 #: build/C/man2/perf_event_open.2:1662
5224 msgid ""
5225 "Disables the individual counter or event group specified by the file "
5226 "descriptor argument."
5227 msgstr ""
5228
5229 #. type: Plain text
5230 #: build/C/man2/perf_event_open.2:1669
5231 msgid ""
5232 "Enabling or disabling the leader of a group enables or disables the entire "
5233 "group; that is, while the group leader is disabled, none of the counters in "
5234 "the group will count.  Enabling or disabling a member of a group other than "
5235 "the leader affects only that counter; disabling a non-leader stops that "
5236 "counter from counting but doesn't affect any other counter."
5237 msgstr ""
5238
5239 #. type: TP
5240 #: build/C/man2/perf_event_open.2:1671
5241 #, fuzzy, no-wrap
5242 #| msgid "B<PTRACE_EVENT_FORK>"
5243 msgid "B<PERF_EVENT_IOC_REFRESH>"
5244 msgstr "B<PTRACE_EVENT_FORK>"
5245
5246 #. type: Plain text
5247 #: build/C/man2/perf_event_open.2:1685
5248 msgid ""
5249 "Non-inherited overflow counters can use this to enable a counter for a "
5250 "number of overflows specified by the argument, after which it is disabled.  "
5251 "Subsequent calls of this ioctl add the argument value to the current count.  "
5252 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5253 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5254 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5255 msgstr ""
5256
5257 #. type: TP
5258 #: build/C/man2/perf_event_open.2:1685
5259 #, fuzzy, no-wrap
5260 #| msgid "B<PTRACE_EVENT_FORK>"
5261 msgid "B<PERF_EVENT_IOC_RESET>"
5262 msgstr "B<PTRACE_EVENT_FORK>"
5263
5264 #. type: Plain text
5265 #: build/C/man2/perf_event_open.2:1697
5266 msgid ""
5267 "Reset the event count specified by the file descriptor argumentto zero.  "
5268 "This resets only the counts; there is no way to reset the multiplexing "
5269 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5270 "only the leader is reset (child events are not)."
5271 msgstr ""
5272
5273 #. type: TP
5274 #: build/C/man2/perf_event_open.2:1699
5275 #, fuzzy, no-wrap
5276 #| msgid "B<PTRACE_EVENT_FORK>"
5277 msgid "B<PERF_EVENT_IOC_PERIOD>"
5278 msgstr "B<PTRACE_EVENT_FORK>"
5279
5280 #. type: Plain text
5281 #: build/C/man2/perf_event_open.2:1703
5282 msgid ""
5283 "IOC_PERIOD is the command to update the period; it does not update the "
5284 "current period but instead defers until next."
5285 msgstr ""
5286
5287 #. type: Plain text
5288 #: build/C/man2/perf_event_open.2:1706
5289 msgid ""
5290 "The argument is a pointer to a 64-bit value containing the desired new "
5291 "period."
5292 msgstr ""
5293
5294 #. type: TP
5295 #: build/C/man2/perf_event_open.2:1706
5296 #, no-wrap
5297 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5298 msgstr ""
5299
5300 #. type: Plain text
5301 #: build/C/man2/perf_event_open.2:1711
5302 msgid ""
5303 "This tells the kernel to report event notifications to the specified file "
5304 "descriptor rather than the default one.  The file descriptors must all be on "
5305 "the same CPU."
5306 msgstr ""
5307
5308 #. type: Plain text
5309 #: build/C/man2/perf_event_open.2:1714
5310 msgid ""
5311 "The argument specifies the desired file descriptor, or -1 if output should "
5312 "be ignored."
5313 msgstr ""
5314
5315 #. type: TP
5316 #: build/C/man2/perf_event_open.2:1714
5317 #, fuzzy, no-wrap
5318 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5319 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5320 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5321
5322 #. type: Plain text
5323 #: build/C/man2/perf_event_open.2:1717
5324 msgid "This adds an ftrace filter to this event."
5325 msgstr ""
5326
5327 #. type: Plain text
5328 #: build/C/man2/perf_event_open.2:1719
5329 msgid "The argument is a pointer to the desired ftrace filter."
5330 msgstr ""
5331
5332 #. type: SS
5333 #: build/C/man2/perf_event_open.2:1719
5334 #, no-wrap
5335 msgid "Using prctl"
5336 msgstr ""
5337
5338 #. type: Plain text
5339 #: build/C/man2/perf_event_open.2:1732
5340 msgid ""
5341 "A process can enable or disable all the event groups that are attached to it "
5342 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5343 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5344 "the current process, whether created by this process or by another, and does "
5345 "not affect any counters that this process has created on other processes.  "
5346 "It enables or disables only the group leaders, not any other members in the "
5347 "groups."
5348 msgstr ""
5349
5350 #. type: SS
5351 #: build/C/man2/perf_event_open.2:1732
5352 #, no-wrap
5353 msgid "perf_event related configuration files"
5354 msgstr ""
5355
5356 #. type: Plain text
5357 #: build/C/man2/perf_event_open.2:1735
5358 msgid "Files in I</proc/sys/kernel/>"
5359 msgstr ""
5360
5361 #. type: TP
5362 #: build/C/man2/perf_event_open.2:1736
5363 #, no-wrap
5364 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5365 msgstr ""
5366
5367 #. type: Plain text
5368 #: build/C/man2/perf_event_open.2:1742
5369 msgid ""
5370 "The I<perf_event_paranoid> file can be set to restrict access to the "
5371 "performance counters."
5372 msgstr ""
5373
5374 #. type: Plain text
5375 #: build/C/man2/perf_event_open.2:1744
5376 msgid "2 - only allow user-space measurements"
5377 msgstr ""
5378
5379 #. type: Plain text
5380 #: build/C/man2/perf_event_open.2:1746
5381 msgid "1 - (default) allow both kernel and user measurements"
5382 msgstr ""
5383
5384 #. type: Plain text
5385 #: build/C/man2/perf_event_open.2:1748
5386 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5387 msgstr ""
5388
5389 #. type: Plain text
5390 #: build/C/man2/perf_event_open.2:1750
5391 msgid "-1 - no restrictions"
5392 msgstr ""
5393
5394 #. type: Plain text
5395 #: build/C/man2/perf_event_open.2:1755
5396 msgid ""
5397 "The existence of the I<perf_event_paranoid> file is the official method for "
5398 "determining if a kernel supports B<perf_event_open>()."
5399 msgstr ""
5400
5401 #. type: TP
5402 #: build/C/man2/perf_event_open.2:1755
5403 #, no-wrap
5404 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5405 msgstr ""
5406
5407 #. type: Plain text
5408 #: build/C/man2/perf_event_open.2:1764
5409 msgid ""
5410 "This sets the maximum sample rate.  Setting this too high can allow users to "
5411 "sample at a rate that impacts overall machine performance and potentially "
5412 "lock up the machine.  The default value is 100000 (samples per second)."
5413 msgstr ""
5414
5415 #. type: TP
5416 #: build/C/man2/perf_event_open.2:1764
5417 #, no-wrap
5418 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5419 msgstr ""
5420
5421 #. type: Plain text
5422 #: build/C/man2/perf_event_open.2:1769
5423 msgid ""
5424 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5425 "516 (kB)."
5426 msgstr ""
5427
5428 #. type: Plain text
5429 #: build/C/man2/perf_event_open.2:1772
5430 msgid "Files in I</sys/bus/event_source/devices/>"
5431 msgstr ""
5432
5433 #. type: Plain text
5434 #: build/C/man2/perf_event_open.2:1778
5435 msgid ""
5436 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5437 "monitoring.  Information on how to program these PMUs can be found under I</"
5438 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5439 "different PMU."
5440 msgstr ""
5441
5442 #. type: TP
5443 #: build/C/man2/perf_event_open.2:1778
5444 #, no-wrap
5445 msgid "I</sys/bus/event_source/devices/*/type>"
5446 msgstr ""
5447
5448 #. type: Plain text
5449 #: build/C/man2/perf_event_open.2:1783
5450 msgid ""
5451 "This contains an integer that can be used in the I<type> field of "
5452 "perf_event_attr to indicate you wish to use this PMU."
5453 msgstr ""
5454
5455 #. type: TP
5456 #: build/C/man2/perf_event_open.2:1783
5457 #, no-wrap
5458 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5459 msgstr ""
5460
5461 #. type: TP
5462 #: build/C/man2/perf_event_open.2:1786
5463 #, no-wrap
5464 msgid "I</sys/bus/event_source/devices/*/format/>"
5465 msgstr ""
5466
5467 #. type: Plain text
5468 #: build/C/man2/perf_event_open.2:1791
5469 msgid ""
5470 "This sub-directory contains information on what bits in the I<config> field "
5471 "of perf_event_attr correspond to."
5472 msgstr ""
5473
5474 #. type: TP
5475 #: build/C/man2/perf_event_open.2:1791
5476 #, no-wrap
5477 msgid "I</sys/bus/event_source/devices/*/events/>"
5478 msgstr ""
5479
5480 #. type: Plain text
5481 #: build/C/man2/perf_event_open.2:1800
5482 msgid ""
5483 "This sub-directory contains files with pre-defined events.  The contents are "
5484 "strings describing the event settings expressed in terms of the fields found "
5485 "in the I<./format/> directory.  These are not necessarily complete lists of "
5486 "all events supported by a PMU, but usually a subset of events deemed useful "
5487 "or interesting."
5488 msgstr ""
5489
5490 #. type: TP
5491 #: build/C/man2/perf_event_open.2:1800
5492 #, no-wrap
5493 msgid "I</sys/bus/event_source/devices/*/uevent>"
5494 msgstr ""
5495
5496 #. type: Plain text
5497 #: build/C/man2/perf_event_open.2:1810
5498 msgid ""
5499 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5500 "occurred (in which case, I<errno> is set appropriately)."
5501 msgstr ""
5502
5503 #. type: Plain text
5504 #: build/C/man2/perf_event_open.2:1814
5505 msgid "Returned if the specified event is not available."
5506 msgstr ""
5507
5508 #. type: TP
5509 #: build/C/man2/perf_event_open.2:1814
5510 #, no-wrap
5511 msgid "B<ENOSPC>"
5512 msgstr "B<ENOSPC>"
5513
5514 #. type: Plain text
5515 #: build/C/man2/perf_event_open.2:1824
5516 msgid ""
5517 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5518 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5519 "B<ENOSPC> is still returned if you try to read results into too small of a "
5520 "buffer."
5521 msgstr ""
5522
5523 #. type: SH
5524 #: build/C/man2/perf_event_open.2:1824
5525 #, no-wrap
5526 msgid "VERSION"
5527 msgstr "バージョン"
5528
5529 #. type: Plain text
5530 #: build/C/man2/perf_event_open.2:1829
5531 msgid ""
5532 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5533 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5534 msgstr ""
5535
5536 #. type: Plain text
5537 #: build/C/man2/perf_event_open.2:1834
5538 #, fuzzy
5539 #| msgid ""
5540 #| "B<personality>()  is Linux-specific and should not be used in programs "
5541 #| "intended to be portable."
5542 msgid ""
5543 "This B<perf_event_open>()  system call Linux- specific and should not be "
5544 "used in programs intended to be portable."
5545 msgstr ""
5546 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5547 "はない。"
5548
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1838
5551 #, fuzzy
5552 #| msgid ""
5553 #| "Glibc does not provide a wrapper for this system call; call it using "
5554 #| "B<syscall>(2)."
5555 msgid ""
5556 "Glibc does not provide a wrapper for this system call; call it using "
5557 "B<syscall>(2).  See the example below."
5558 msgstr ""
5559 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5560 "(2)  を使って呼び出すこと。"
5561
5562 #. type: Plain text
5563 #: build/C/man2/perf_event_open.2:1844
5564 msgid ""
5565 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5566 "checking for the existence of the file I</proc/sys/kernel/"
5567 "perf_event_paranoid>."
5568 msgstr ""
5569
5570 #. type: SH
5571 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5572 #: build/C/man2/ptrace.2:1811
5573 #, no-wrap
5574 msgid "BUGS"
5575 msgstr "バグ"
5576
5577 #. type: Plain text
5578 #: build/C/man2/perf_event_open.2:1851
5579 msgid ""
5580 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5581 "signals in threads.  This was introduced in Linux 2.6.32."
5582 msgstr ""
5583
5584 #. type: Plain text
5585 #: build/C/man2/perf_event_open.2:1859
5586 msgid ""
5587 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5588 "could be scheduled together until read time.  The same happens on all known "
5589 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5590 "events works you have to B<perf_event_open>(), start, then read before you "
5591 "know for sure you can get valid measurements."
5592 msgstr ""
5593
5594 #. type: Plain text
5595 #: build/C/man2/perf_event_open.2:1863
5596 msgid ""
5597 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5598 "that case, some events would silently return \"0\" if the kernel scheduled "
5599 "them in an improper counter slot."
5600 msgstr ""
5601
5602 #. type: Plain text
5603 #: build/C/man2/perf_event_open.2:1866
5604 msgid ""
5605 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5606 "results could be returned."
5607 msgstr ""
5608
5609 #. type: Plain text
5610 #: build/C/man2/perf_event_open.2:1869
5611 msgid ""
5612 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5613 "\"inherit\" is enabled and many threads are started."
5614 msgstr ""
5615
5616 #. type: Plain text
5617 #: build/C/man2/perf_event_open.2:1873
5618 msgid ""
5619 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5620 "processes."
5621 msgstr ""
5622
5623 #. type: Plain text
5624 #: build/C/man2/perf_event_open.2:1878
5625 msgid ""
5626 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5627 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5628 "This behavior is unsupported and should not be relied on."
5629 msgstr ""
5630
5631 #. type: Plain text
5632 #: build/C/man2/perf_event_open.2:1884
5633 msgid ""
5634 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5635 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5636 "the union has a non-zero value in it."
5637 msgstr ""
5638
5639 #. type: Plain text
5640 #: build/C/man2/perf_event_open.2:1889
5641 msgid ""
5642 "Always double-check your results! Various generalized events have had wrong "
5643 "values.  For example, retired branches measured the wrong thing on AMD "
5644 "machines until Linux 2.6.35."
5645 msgstr ""
5646
5647 #. type: SH
5648 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5649 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5650 #, no-wrap
5651 msgid "EXAMPLE"
5652 msgstr "例"
5653
5654 #. type: Plain text
5655 #: build/C/man2/perf_event_open.2:1893
5656 msgid ""
5657 "The following is a short example that measures the total instruction count "
5658 "of a call to B<printf>(3)."
5659 msgstr ""
5660
5661 #. type: Plain text
5662 #: build/C/man2/perf_event_open.2:1902
5663 #, no-wrap
5664 msgid ""
5665 "#include E<lt>stdlib.hE<gt>\n"
5666 "#include E<lt>stdio.hE<gt>\n"
5667 "#include E<lt>unistd.hE<gt>\n"
5668 "#include E<lt>string.hE<gt>\n"
5669 "#include E<lt>sys/ioctl.hE<gt>\n"
5670 "#include E<lt>linux/perf_event.hE<gt>\n"
5671 "#include E<lt>asm/unistd.hE<gt>\n"
5672 msgstr ""
5673 "#include E<lt>stdlib.hE<gt>\n"
5674 "#include E<lt>stdio.hE<gt>\n"
5675 "#include E<lt>unistd.hE<gt>\n"
5676 "#include E<lt>string.hE<gt>\n"
5677 "#include E<lt>sys/ioctl.hE<gt>\n"
5678 "#include E<lt>linux/perf_event.hE<gt>\n"
5679 "#include E<lt>asm/unistd.hE<gt>\n"
5680
5681 #. type: Plain text
5682 #: build/C/man2/perf_event_open.2:1908
5683 #, no-wrap
5684 msgid ""
5685 "long\n"
5686 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5687 "                int cpu, int group_fd, unsigned long flags)\n"
5688 "{\n"
5689 "    int ret;\n"
5690 msgstr ""
5691
5692 #. type: Plain text
5693 #: build/C/man2/perf_event_open.2:1913
5694 #, no-wrap
5695 msgid ""
5696 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5697 "                   group_fd, flags);\n"
5698 "    return ret;\n"
5699 "}\n"
5700 msgstr ""
5701
5702 #. type: Plain text
5703 #: build/C/man2/perf_event_open.2:1920
5704 #, no-wrap
5705 msgid ""
5706 "int\n"
5707 "main(int argc, char **argv)\n"
5708 "{\n"
5709 "    struct perf_event_attr pe;\n"
5710 "    long long count;\n"
5711 "    int fd;\n"
5712 msgstr ""
5713 "int\n"
5714 "main(int argc, char **argv)\n"
5715 "{\n"
5716 "    struct perf_event_attr pe;\n"
5717 "    long long count;\n"
5718 "    int fd;\n"
5719
5720 #. type: Plain text
5721 #: build/C/man2/perf_event_open.2:1928
5722 #, no-wrap
5723 msgid ""
5724 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5725 "    pe.type = PERF_TYPE_HARDWARE;\n"
5726 "    pe.size = sizeof(struct perf_event_attr);\n"
5727 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5728 "    pe.disabled = 1;\n"
5729 "    pe.exclude_kernel = 1;\n"
5730 "    pe.exclude_hv = 1;\n"
5731 msgstr ""
5732
5733 #. type: Plain text
5734 #: build/C/man2/perf_event_open.2:1934
5735 #, no-wrap
5736 msgid ""
5737 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5738 "    if (fd == -1) {\n"
5739 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5740 "       exit(EXIT_FAILURE);\n"
5741 "    }\n"
5742 msgstr ""
5743 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5744 "    if (fd == -1) {\n"
5745 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5746 "       exit(EXIT_FAILURE);\n"
5747 "    }\n"
5748
5749 #. type: Plain text
5750 #: build/C/man2/perf_event_open.2:1937
5751 #, no-wrap
5752 msgid ""
5753 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5754 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5755 msgstr ""
5756
5757 #. type: Plain text
5758 #: build/C/man2/perf_event_open.2:1939
5759 #, no-wrap
5760 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5761 msgstr ""
5762
5763 #. type: Plain text
5764 #: build/C/man2/perf_event_open.2:1942
5765 #, no-wrap
5766 msgid ""
5767 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5768 "    read(fd, &count, sizeof(long long));\n"
5769 msgstr ""
5770
5771 #. type: Plain text
5772 #: build/C/man2/perf_event_open.2:1944
5773 #, no-wrap
5774 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5775 msgstr ""
5776
5777 #. type: Plain text
5778 #: build/C/man2/perf_event_open.2:1947
5779 #, no-wrap
5780 msgid ""
5781 "    close(fd);\n"
5782 "}\n"
5783 msgstr ""
5784
5785 #. type: Plain text
5786 #: build/C/man2/perf_event_open.2:1954
5787 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5788 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5789
5790 #. type: TH
5791 #: build/C/man2/perfmonctl.2:27
5792 #, no-wrap
5793 msgid "PERFMONCTL"
5794 msgstr ""
5795
5796 #. type: Plain text
5797 #: build/C/man2/perfmonctl.2:30
5798 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5799 msgstr ""
5800
5801 #. type: Plain text
5802 #: build/C/man2/perfmonctl.2:34
5803 #, no-wrap
5804 msgid ""
5805 "B<#include E<lt>syscall.hE<gt>>\n"
5806 "B<#include E<lt>perfmon.hE<gt>>\n"
5807 msgstr ""
5808 "B<#include E<lt>syscall.hE<gt>>\n"
5809 "B<#include E<lt>perfmon.hE<gt>>\n"
5810
5811 #. type: Plain text
5812 #: build/C/man2/perfmonctl.2:36
5813 #, no-wrap
5814 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5815 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5816
5817 #. type: Plain text
5818 #: build/C/man2/perfmonctl.2:47
5819 msgid ""
5820 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5821 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5822 "monitoring data) registers and PMC (performance monitoring control) "
5823 "registers, which gather hardware statistics."
5824 msgstr ""
5825
5826 #. type: Plain text
5827 #: build/C/man2/perfmonctl.2:57
5828 msgid ""
5829 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5830 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5831 "I<fd> argument specifies the perfmon context to operate on."
5832 msgstr ""
5833
5834 #. type: Plain text
5835 #: build/C/man2/perfmonctl.2:61
5836 msgid "Supported values for I<cmd> are:"
5837 msgstr ""
5838
5839 #. type: TP
5840 #: build/C/man2/perfmonctl.2:61
5841 #, no-wrap
5842 msgid "B<PFM_CREATE_CONTEXT>"
5843 msgstr "B<PFM_CREATE_CONTEXT>"
5844
5845 #. type: Plain text
5846 #: build/C/man2/perfmonctl.2:65
5847 #, no-wrap
5848 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5849 msgstr ""
5850
5851 #. type: Plain text
5852 #: build/C/man2/perfmonctl.2:67
5853 msgid "Set up a context."
5854 msgstr ""
5855
5856 #. type: Plain text
5857 #: build/C/man2/perfmonctl.2:74
5858 msgid ""
5859 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5860 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5861 "E<gt>ctx_fd>."
5862 msgstr ""
5863
5864 #. type: Plain text
5865 #: build/C/man2/perfmonctl.2:86
5866 msgid ""
5867 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5868 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5869 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5870 "B<epoll>(7)."
5871 msgstr ""
5872
5873 #. type: Plain text
5874 #: build/C/man2/perfmonctl.2:90
5875 msgid ""
5876 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5877 msgstr ""
5878
5879 #. type: TP
5880 #: build/C/man2/perfmonctl.2:90
5881 #, no-wrap
5882 msgid "B<PFM_WRITE_PMCS>"
5883 msgstr ""
5884
5885 #. type: Plain text
5886 #: build/C/man2/perfmonctl.2:95
5887 #, no-wrap
5888 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5889 msgstr ""
5890
5891 #. type: Plain text
5892 #: build/C/man2/perfmonctl.2:97
5893 msgid "Set PMC registers."
5894 msgstr ""
5895
5896 #. type: TP
5897 #: build/C/man2/perfmonctl.2:97
5898 #, no-wrap
5899 msgid "B<PFM_WRITE_PMDS>"
5900 msgstr ""
5901
5902 #. type: Plain text
5903 #: build/C/man2/perfmonctl.2:101
5904 #, no-wrap
5905 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5906 msgstr ""
5907
5908 #.  pfm_write_pmds()
5909 #. type: Plain text
5910 #: build/C/man2/perfmonctl.2:104
5911 msgid "Set PMD registers."
5912 msgstr ""
5913
5914 #. type: TP
5915 #: build/C/man2/perfmonctl.2:104
5916 #, no-wrap
5917 msgid "B<PFM_READ_PMDS>"
5918 msgstr ""
5919
5920 #. type: Plain text
5921 #: build/C/man2/perfmonctl.2:109
5922 #, no-wrap
5923 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5924 msgstr ""
5925
5926 #. type: Plain text
5927 #: build/C/man2/perfmonctl.2:111
5928 msgid "Read PMD registers."
5929 msgstr ""
5930
5931 #. type: TP
5932 #: build/C/man2/perfmonctl.2:111
5933 #, no-wrap
5934 msgid "B<PFM_START>"
5935 msgstr ""
5936
5937 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
5938 #. type: Plain text
5939 #: build/C/man2/perfmonctl.2:117
5940 #, no-wrap
5941 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
5942 msgstr ""
5943
5944 #. type: Plain text
5945 #: build/C/man2/perfmonctl.2:119
5946 msgid "Start monitoring."
5947 msgstr ""
5948
5949 #. type: TP
5950 #: build/C/man2/perfmonctl.2:119
5951 #, no-wrap
5952 msgid "B<PFM_STOP>"
5953 msgstr ""
5954
5955 #. type: Plain text
5956 #: build/C/man2/perfmonctl.2:124
5957 #, no-wrap
5958 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
5959 msgstr ""
5960
5961 #. type: Plain text
5962 #: build/C/man2/perfmonctl.2:126
5963 msgid "Stop monitoring."
5964 msgstr ""
5965
5966 #. type: TP
5967 #: build/C/man2/perfmonctl.2:126
5968 #, no-wrap
5969 msgid "B<PFM_LOAD_CONTEXT>"
5970 msgstr "B<PFM_LOAD_CONTEXT>"
5971
5972 #. type: Plain text
5973 #: build/C/man2/perfmonctl.2:131
5974 #, no-wrap
5975 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
5976 msgstr ""
5977
5978 #. type: Plain text
5979 #: build/C/man2/perfmonctl.2:133
5980 msgid "Attach the context to a thread."
5981 msgstr ""
5982
5983 #. type: TP
5984 #: build/C/man2/perfmonctl.2:133
5985 #, no-wrap
5986 msgid "B<PFM_UNLOAD_CONTEXT>"
5987 msgstr ""
5988
5989 #. type: Plain text
5990 #: build/C/man2/perfmonctl.2:138
5991 #, no-wrap
5992 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
5993 msgstr ""
5994
5995 #. type: Plain text
5996 #: build/C/man2/perfmonctl.2:140
5997 msgid "Detach the context from a thread."
5998 msgstr ""
5999
6000 #. type: TP
6001 #: build/C/man2/perfmonctl.2:140
6002 #, no-wrap
6003 msgid "B<PFM_RESTART>"
6004 msgstr ""
6005
6006 #. type: Plain text
6007 #: build/C/man2/perfmonctl.2:145
6008 #, no-wrap
6009 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6010 msgstr ""
6011
6012 #. type: Plain text
6013 #: build/C/man2/perfmonctl.2:147
6014 msgid "Restart monitoring after receiving an overflow notification."
6015 msgstr ""
6016
6017 #. type: TP
6018 #: build/C/man2/perfmonctl.2:147
6019 #, no-wrap
6020 msgid "B<PFM_GET_FEATURES>"
6021 msgstr "B<PFM_GET_FEATURES>"
6022
6023 #. type: Plain text
6024 #: build/C/man2/perfmonctl.2:152
6025 #, no-wrap
6026 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6027 msgstr ""
6028
6029 #. type: TP
6030 #: build/C/man2/perfmonctl.2:153
6031 #, no-wrap
6032 msgid "B<PFM_DEBUG>"
6033 msgstr ""
6034
6035 #. type: Plain text
6036 #: build/C/man2/perfmonctl.2:158
6037 #, no-wrap
6038 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6039 msgstr ""
6040
6041 #. type: Plain text
6042 #: build/C/man2/perfmonctl.2:162
6043 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6044 msgstr ""
6045
6046 #. type: TP
6047 #: build/C/man2/perfmonctl.2:162
6048 #, no-wrap
6049 msgid "B<PFM_GET_PMC_RESET_VAL>"
6050 msgstr ""
6051
6052 #. type: Plain text
6053 #: build/C/man2/perfmonctl.2:167
6054 #, no-wrap
6055 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6056 msgstr ""
6057
6058 #
6059 #
6060 #
6061 #.  .TP
6062 #.  .B PFM_CREATE_EVTSETS
6063 #.  create or modify event sets
6064 #.  .nf
6065 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6066 #.  .fi
6067 #.  .TP
6068 #.  .B PFM_DELETE_EVTSETS
6069 #.  delete event sets
6070 #.  .nf
6071 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6072 #.  .fi
6073 #.  .TP
6074 #.  .B PFM_GETINFO_EVTSETS
6075 #.  get information about event sets
6076 #.  .nf
6077 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6078 #.  .fi
6079 #. type: Plain text
6080 #: build/C/man2/perfmonctl.2:190
6081 msgid "Reset PMC registers to default values."
6082 msgstr ""
6083
6084 #. type: Plain text
6085 #: build/C/man2/perfmonctl.2:196
6086 #, fuzzy
6087 #| msgid ""
6088 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6089 #| "I<errno> is set to indicate the error."
6090 msgid ""
6091 "B<performctl>()  returns zero when the operation is successful.  On error, "
6092 "-1 is returned and I<errno> is set to indicate the cause of the error."
6093 msgstr ""
6094 "成功すると、 B<kexec_load> は 0 を返す。\n"
6095 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6096
6097 #. type: Plain text
6098 #: build/C/man2/perfmonctl.2:199
6099 #, fuzzy
6100 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6101 msgid "B<perfmonctl>()  is available since Linux 2.4."
6102 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6103
6104 #. type: Plain text
6105 #: build/C/man2/perfmonctl.2:202
6106 msgid ""
6107 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6108 "architecture."
6109 msgstr ""
6110
6111 #. type: Plain text
6112 #: build/C/man2/perfmonctl.2:207
6113 msgid "B<gprof>(1)"
6114 msgstr ""
6115
6116 #. type: Plain text
6117 #: build/C/man2/perfmonctl.2:209
6118 msgid "The perfmon2 interface specification"
6119 msgstr ""
6120
6121 #. type: TH
6122 #: build/C/man2/personality.2:32
6123 #, no-wrap
6124 msgid "PERSONALITY"
6125 msgstr "PERSONALITY"
6126
6127 #. type: TH
6128 #: build/C/man2/personality.2:32
6129 #, no-wrap
6130 msgid "2003-01-01"
6131 msgstr "2003-01-01"
6132
6133 #. type: Plain text
6134 #: build/C/man2/personality.2:35
6135 msgid "personality - set the process execution domain"
6136 msgstr "personality - プロセスを実行するドメインを設定する"
6137
6138 #. type: Plain text
6139 #: build/C/man2/personality.2:37
6140 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6141 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6142
6143 #. type: Plain text
6144 #: build/C/man2/personality.2:39
6145 msgid "B<int personality(unsigned long >I<persona>B<);>"
6146 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6147
6148 #. type: Plain text
6149 #: build/C/man2/personality.2:47
6150 msgid ""
6151 "Linux supports different execution domains, or personalities, for each "
6152 "process.  Among other things, execution domains tell Linux how to map signal "
6153 "numbers into signal actions.  The execution domain system allows Linux to "
6154 "provide limited support for binaries compiled under other UNIX-like "
6155 "operating systems."
6156 msgstr ""
6157 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6158 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6159 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6160 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6161 "対する限定的なサポートを提供している。"
6162
6163 #. type: Plain text
6164 #: build/C/man2/personality.2:57
6165 msgid ""
6166 "This function will return the current B<personality>()  when I<persona> "
6167 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6168 "by I<persona> the new execution domain of the calling process."
6169 msgstr ""
6170 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6171 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6172 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6173
6174 #. type: Plain text
6175 #: build/C/man2/personality.2:64
6176 msgid ""
6177 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6178 "and I<errno> is set appropriately."
6179 msgstr ""
6180 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6181 "I<errno> が適切に設定される。"
6182
6183 #. type: Plain text
6184 #: build/C/man2/personality.2:68
6185 msgid "The kernel was unable to change the personality."
6186 msgstr "カーネルがパーソナリティを変更できなかった。"
6187
6188 #. type: Plain text
6189 #: build/C/man2/personality.2:72
6190 msgid ""
6191 "B<personality>()  is Linux-specific and should not be used in programs "
6192 "intended to be portable."
6193 msgstr ""
6194 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6195 "はない。"
6196
6197 #. type: TH
6198 #: build/C/man2/pivot_root.2:10
6199 #, no-wrap
6200 msgid "PIVOT_ROOT"
6201 msgstr "PIVOT_ROOT"
6202
6203 #. type: Plain text
6204 #: build/C/man2/pivot_root.2:13
6205 msgid "pivot_root - change the root file system"
6206 msgstr "pivot_root - root ファイルシステムを変更する"
6207
6208 #. type: Plain text
6209 #: build/C/man2/pivot_root.2:15
6210 msgid ""
6211 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6212 msgstr ""
6213 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6214
6215 #.  The
6216 #.  .B CAP_SYS_ADMIN
6217 #.  capability is required.
6218 #. type: Plain text
6219 #: build/C/man2/pivot_root.2:27
6220 msgid ""
6221 "B<pivot_root>()  moves the root file system of the calling process to the "
6222 "directory I<put_old> and makes I<new_root> the new root file system of the "
6223 "calling process."
6224 msgstr ""
6225 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6226 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6227 "ルシステムにする。"
6228
6229 #. type: Plain text
6230 #: build/C/man2/pivot_root.2:34
6231 msgid ""
6232 "The typical use of B<pivot_root>()  is during system startup, when the "
6233 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6234 "the real root file system, and eventually turns the latter into the current "
6235 "root of all relevant processes or threads."
6236 msgstr ""
6237 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6238 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6239 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6240 "レント root に変更するような場合である。"
6241
6242 #. type: Plain text
6243 #: build/C/man2/pivot_root.2:46
6244 msgid ""
6245 "B<pivot_root>()  may or may not change the current root and the current "
6246 "working directory of any processes or threads which use the old root "
6247 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6248 "root or current working directory at the old root operate correctly in "
6249 "either case.  An easy way to ensure this is to change their root and current "
6250 "working directory to I<new_root> before invoking B<pivot_root>()."
6251 msgstr ""
6252 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6253 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6254 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6255 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6256 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6257 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6258 "更しておくことである。"
6259
6260 #. type: Plain text
6261 #: build/C/man2/pivot_root.2:64
6262 msgid ""
6263 "The paragraph above is intentionally vague because the implementation of "
6264 "B<pivot_root>()  may change in the future.  At the time of writing, "
6265 "B<pivot_root>()  changes root and current working directory of each process "
6266 "or thread to I<new_root> if they point to the old root directory.  This is "
6267 "necessary in order to prevent kernel threads from keeping the old root "
6268 "directory busy with their root and current working directory, even if they "
6269 "never access the file system in any way.  In the future, there may be a "
6270 "mechanism for kernel threads to explicitly relinquish any access to the file "
6271 "system, such that this fairly intrusive mechanism can be removed from "
6272 "B<pivot_root>()."
6273 msgstr ""
6274 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6275 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6276 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6277 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6278 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6279 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6280 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6281 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6282 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6283 "除されるかもしれない。"
6284
6285 #. type: Plain text
6286 #: build/C/man2/pivot_root.2:72
6287 msgid ""
6288 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6289 "may not affect its current working directory.  It is therefore recommended "
6290 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6291 msgstr ""
6292 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6293 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6294 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6295
6296 #. type: Plain text
6297 #: build/C/man2/pivot_root.2:74
6298 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6299 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6300
6301 #. type: IP
6302 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6303 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6304 #, no-wrap
6305 msgid "-"
6306 msgstr "-"
6307
6308 #. type: Plain text
6309 #: build/C/man2/pivot_root.2:76
6310 msgid "They must be directories."
6311 msgstr "ディレクトリでなければならない。"
6312
6313 #. type: Plain text
6314 #: build/C/man2/pivot_root.2:79
6315 msgid ""
6316 "I<new_root> and I<put_old> must not be on the same file system as the "
6317 "current root."
6318 msgstr ""
6319 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6320 "ない。"
6321
6322 #. type: Plain text
6323 #: build/C/man2/pivot_root.2:83
6324 msgid ""
6325 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6326 "of I</..> to the string pointed to by I<put_old> must yield the same "
6327 "directory as I<new_root>."
6328 msgstr ""
6329 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6330 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6331 "リが得られなければならない。"
6332
6333 #. type: Plain text
6334 #: build/C/man2/pivot_root.2:85
6335 msgid "No other file system may be mounted on I<put_old>."
6336 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6337
6338 #. type: Plain text
6339 #: build/C/man2/pivot_root.2:89
6340 msgid "See also B<pivot_root>(8)  for additional usage examples."
6341 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6342
6343 #. type: Plain text
6344 #: build/C/man2/pivot_root.2:96
6345 msgid ""
6346 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6347 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6348 "point of that file system is mounted on I<put_old>."
6349 msgstr ""
6350 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6351 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6352 "テムのマウントポイントが I<put_old> にマウントされる。"
6353
6354 #. type: Plain text
6355 #: build/C/man2/pivot_root.2:101
6356 msgid ""
6357 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6358 "mounts> will show the mount point of the file system containing I<new_root> "
6359 "as root (I</>)."
6360 msgstr ""
6361 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6362 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6363 "る。"
6364
6365 #. type: Plain text
6366 #: build/C/man2/pivot_root.2:110
6367 msgid ""
6368 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6369 "B<stat>(2).  Additionally, it may return:"
6370 msgstr ""
6371 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6372 "性がある。さらに以下を返すことがある:"
6373
6374 #. type: Plain text
6375 #: build/C/man2/pivot_root.2:114
6376 msgid ""
6377 "I<new_root> or I<put_old> are on the current root file system, or a file "
6378 "system is already mounted on I<put_old>."
6379 msgstr ""
6380 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6381 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6382
6383 #. type: Plain text
6384 #: build/C/man2/pivot_root.2:117
6385 msgid "I<put_old> is not underneath I<new_root>."
6386 msgstr "I<put_old> が I<new_root> の下層にない。"
6387
6388 #. type: TP
6389 #: build/C/man2/pivot_root.2:117
6390 #, no-wrap
6391 msgid "B<ENOTDIR>"
6392 msgstr "B<ENOTDIR>"
6393
6394 #. type: Plain text
6395 #: build/C/man2/pivot_root.2:120
6396 msgid "I<new_root> or I<put_old> is not a directory."
6397 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6398
6399 #. type: Plain text
6400 #: build/C/man2/pivot_root.2:125
6401 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6402 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6403
6404 #. type: Plain text
6405 #: build/C/man2/pivot_root.2:128
6406 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6407 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6408
6409 #. type: Plain text
6410 #: build/C/man2/pivot_root.2:131
6411 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6412 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6413
6414 #. type: Plain text
6415 #: build/C/man2/pivot_root.2:138
6416 msgid ""
6417 "B<pivot_root>()  should not have to change root and current working "
6418 "directory of all other processes in the system."
6419 msgstr ""
6420 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6421 "ディレクトリとを変更しなくてもよいはずである。"
6422
6423 #. type: Plain text
6424 #: build/C/man2/pivot_root.2:143
6425 msgid ""
6426 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6427 "insanity."
6428 msgstr ""
6429 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6430 "からない状態になってしまうだろう"
6431
6432 #. type: Plain text
6433 #: build/C/man2/pivot_root.2:149
6434 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6435 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6436
6437 #. type: TH
6438 #: build/C/man2/process_vm_readv.2:29
6439 #, no-wrap
6440 msgid "PROCESS_VM_READV"
6441 msgstr ""
6442
6443 #. type: TH
6444 #: build/C/man2/process_vm_readv.2:29
6445 #, no-wrap
6446 msgid "2012-04-25"
6447 msgstr "2012-04-25"
6448
6449 #. type: Plain text
6450 #: build/C/man2/process_vm_readv.2:32
6451 msgid ""
6452 "process_vm_readv, process_vm_writev - transfer data between process address "
6453 "spaces"
6454 msgstr ""
6455
6456 #. type: Plain text
6457 #: build/C/man2/process_vm_readv.2:35
6458 #, no-wrap
6459 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6460 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6461
6462 #. type: Plain text
6463 #: build/C/man2/process_vm_readv.2:42
6464 #, no-wrap
6465 msgid ""
6466 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6467 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6468 "B<                         unsigned long >I<liovcnt>B<,>\n"
6469 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6470 "B<                         unsigned long >I<riovcnt>B<,>\n"
6471 "B<                         unsigned long >I<flags>B<);>\n"
6472 msgstr ""
6473
6474 #. type: Plain text
6475 #: build/C/man2/process_vm_readv.2:49
6476 #, no-wrap
6477 msgid ""
6478 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6479 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6480 "B<                          unsigned long >I<liovcnt>B<,>\n"
6481 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6482 "B<                          unsigned long >I<riovcnt>B<,>\n"
6483 "B<                          unsigned long >I<flags>B<);>\n"
6484 msgstr ""
6485
6486 #. type: Plain text
6487 #: build/C/man2/process_vm_readv.2:57
6488 msgid ""
6489 "These system calls transfer data between the address space of the calling "
6490 "process (\"the local process\") and the process identified by I<pid> (\"the "
6491 "remote process\").  The data moves directly between the address spaces of "
6492 "the two processes, without passing through kernel space."
6493 msgstr ""
6494
6495 #. type: Plain text
6496 #: build/C/man2/process_vm_readv.2:82
6497 msgid ""
6498 "The B<process_vm_readv>()  system call transfers data from the remote "
6499 "process to the local process.  The data to be transferred is identified by "
6500 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6501 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6502 "the number of elements in I<remote_iov>.  The data is transferred to the "
6503 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6504 "pointer to an array describing address ranges in the calling process, and "
6505 "I<liovcnt> specifies the number of elements in I<local_iov>."
6506 msgstr ""
6507
6508 #. type: Plain text
6509 #: build/C/man2/process_vm_readv.2:96
6510 msgid ""
6511 "The B<process_vm_writev>()  system call is the converse of "
6512 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6513 "remote process.  Other than the direction of the transfer, the arguments "
6514 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6515 "meaning as for B<process_vm_readv>()."
6516 msgstr ""
6517
6518 #. type: Plain text
6519 #: build/C/man2/process_vm_readv.2:106
6520 msgid ""
6521 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6522 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6523 msgstr ""
6524 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6525 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6526 "されている:"
6527
6528 #. type: Plain text
6529 #: build/C/man2/process_vm_readv.2:113
6530 #, no-wrap
6531 msgid ""
6532 "struct iovec {\n"
6533 "    void  *iov_base;    /* Starting address */\n"
6534 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6535 "};\n"
6536 msgstr ""
6537 "struct iovec {\n"
6538 "    void  *iov_base;    /* Starting address */\n"
6539 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6540 "};\n"
6541
6542 #. type: Plain text
6543 #: build/C/man2/process_vm_readv.2:129
6544 msgid ""
6545 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6546 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6547 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6548 "to I<remote_iov[1]>, and so on."
6549 msgstr ""
6550 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6551 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6552 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6553 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6554 "以降も同様である。"
6555
6556 #. type: Plain text
6557 #: build/C/man2/process_vm_readv.2:140
6558 msgid ""
6559 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6560 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6561 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6562 msgstr ""
6563
6564 #. type: Plain text
6565 #: build/C/man2/process_vm_readv.2:148
6566 msgid ""
6567 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6568 "have to be the same.  Thus, it is possible to split a single local buffer "
6569 "into multiple remote buffers, or vice versa."
6570 msgstr ""
6571
6572 #. type: Plain text
6573 #: build/C/man2/process_vm_readv.2:152
6574 msgid "The I<flags> argument is currently unused and must be set to 0."
6575 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6576
6577 #.  In time, glibc might provide a wrapper that works around this limit,
6578 #.  as is done for readv()/writev()
6579 #. type: Plain text
6580 #: build/C/man2/process_vm_readv.2:165
6581 msgid ""
6582 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6583 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6584 "via the call I<sysconf(_SC_IOV_MAX)>)."
6585 msgstr ""
6586
6587 #. type: Plain text
6588 #: build/C/man2/process_vm_readv.2:175
6589 msgid ""
6590 "The count arguments and I<local_iov> are checked before doing any "
6591 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6592 "addresses refer to regions that are inaccessible to the local process, none "
6593 "of the vectors will be processed and an error will be returned immediately."
6594 msgstr ""
6595
6596 #. type: Plain text
6597 #: build/C/man2/process_vm_readv.2:195
6598 msgid ""
6599 "Note, however, that these system calls do not check the memory regions in "
6600 "the remote process until just before doing the read/write.  Consequently, a "
6601 "partial read/write (see RETURN VALUE)  may result if one of the "
6602 "I<remote_iov> elements points to an invalid memory region in the remote "
6603 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6604 "this in mind when attempting to read data of unknown length (such as C "
6605 "strings that are null-terminated) from a remote process, by avoiding "
6606 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6607 "(Instead, split the remote read into two I<remote_iov> elements and have "
6608 "them merge back into a single write I<local_iov> entry.  The first read "
6609 "entry goes up to the page boundary, while the second starts on the next page "
6610 "boundary.)"
6611 msgstr ""
6612
6613 #. type: Plain text
6614 #: build/C/man2/process_vm_readv.2:209
6615 msgid ""
6616 "In order to read from or write to another process, either the caller must "
6617 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6618 "ID, and saved set-user-ID of the remote process must match the real user ID "
6619 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6620 "group-ID of the remote process must match the real group ID of the caller.  "
6621 "(The permission required is exactly the same as that required to perform a "
6622 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6623 msgstr ""
6624
6625 #. type: Plain text
6626 #: build/C/man2/process_vm_readv.2:225
6627 msgid ""
6628 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6629 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6630 "value may be less than the total number of requested bytes, if a partial "
6631 "read/write occurred.  (Partial transfers apply at the granularity of "
6632 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6633 "splits a single I<iovec> element.)  The caller should check the return value "
6634 "to determine whether a partial read/write occurred."
6635 msgstr ""
6636
6637 #. type: Plain text
6638 #: build/C/man2/process_vm_readv.2:229
6639 msgid "On error, -1 is returned and I<errno> is set appropriately."
6640 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6641
6642 #. type: Plain text
6643 #: build/C/man2/process_vm_readv.2:241
6644 msgid ""
6645 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6646 "overflows a I<ssize_t> value."
6647 msgstr ""
6648
6649 #. type: Plain text
6650 #: build/C/man2/process_vm_readv.2:245
6651 msgid "I<flags> is not 0."
6652 msgstr "I<flags> が 0 でない。"
6653
6654 #. type: Plain text
6655 #: build/C/man2/process_vm_readv.2:251
6656 msgid "I<liovcnt> or I<riovcnt> is too large."
6657 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6658
6659 #. type: Plain text
6660 #: build/C/man2/process_vm_readv.2:256
6661 msgid ""
6662 "The memory described by I<local_iov> is outside the caller's accessible "
6663 "address space."
6664 msgstr ""
6665 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6666 "アドレス空間の外にある。"
6667
6668 #. type: Plain text
6669 #: build/C/man2/process_vm_readv.2:262
6670 msgid ""
6671 "The memory described by I<remote_iov> is outside the accessible address "
6672 "space of the process I<pid>."
6673 msgstr ""
6674
6675 #. type: Plain text
6676 #: build/C/man2/process_vm_readv.2:267
6677 msgid ""
6678 "Could not allocate memory for internal copies of the I<iovec> structures."
6679 msgstr ""
6680
6681 #. type: Plain text
6682 #: build/C/man2/process_vm_readv.2:271
6683 msgid ""
6684 "The caller does not have permission to access the address space of the "
6685 "process I<pid>."
6686 msgstr ""
6687 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6688 "持っていない。"
6689
6690 #. type: Plain text
6691 #: build/C/man2/process_vm_readv.2:276
6692 msgid "No process with ID I<pid> exists."
6693 msgstr "ID が I<pid> のプロセスが存在しない。"
6694
6695 #. type: Plain text
6696 #: build/C/man2/process_vm_readv.2:279
6697 msgid ""
6698 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6699 "since version 2.15."
6700 msgstr ""
6701 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6702 "サポートは glibc バージョン 2.15 以降で提供されている。"
6703
6704 #. type: Plain text
6705 #: build/C/man2/process_vm_readv.2:281
6706 msgid "These system calls are nonstandard Linux extensions."
6707 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6708
6709 #. type: Plain text
6710 #: build/C/man2/process_vm_readv.2:287
6711 msgid ""
6712 "The data transfers performed by B<process_vm_readv>()  and "
6713 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6714 msgstr ""
6715
6716 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6717 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6718 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6719 #. type: Plain text
6720 #: build/C/man2/process_vm_readv.2:295
6721 msgid ""
6722 "These system calls were designed to permit fast message passing by allowing "
6723 "messages to be exchanged with a single copy operation (rather than the "
6724 "double copy that would be required when using, for example, shared memory or "
6725 "pipes)."
6726 msgstr ""
6727
6728 #. type: Plain text
6729 #: build/C/man2/process_vm_readv.2:303
6730 msgid ""
6731 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6732 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6733 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6734 msgstr ""
6735
6736 #. type: Plain text
6737 #: build/C/man2/process_vm_readv.2:306
6738 #, no-wrap
6739 msgid "#include E<lt>sys/uio.hE<gt>\n"
6740 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6741
6742 #. type: Plain text
6743 #: build/C/man2/process_vm_readv.2:316
6744 #, no-wrap
6745 msgid ""
6746 "int\n"
6747 "main(void)\n"
6748 "{\n"
6749 "    struct iovec local[2];\n"
6750 "    struct iovec remote[1];\n"
6751 "    char buf1[10];\n"
6752 "    char buf2[10];\n"
6753 "    ssize_t nread;\n"
6754 "    pid_t pid = 10;             /* PID of remote process */\n"
6755 msgstr ""
6756 "int\n"
6757 "main(void)\n"
6758 "{\n"
6759 "    struct iovec local[2];\n"
6760 "    struct iovec remote[1];\n"
6761 "    char buf1[10];\n"
6762 "    char buf2[10];\n"
6763 "    ssize_t nread;\n"
6764 "    pid_t pid = 10;             /* PID of remote process */\n"
6765
6766 #. type: Plain text
6767 #: build/C/man2/process_vm_readv.2:323
6768 #, no-wrap
6769 msgid ""
6770 "    local[0].iov_base = buf1;\n"
6771 "    local[0].iov_len = 10;\n"
6772 "    local[1].iov_base = buf2;\n"
6773 "    local[1].iov_len = 10;\n"
6774 "    remote[0].iov_base = (void *) 0x10000;\n"
6775 "    remote[1].iov_len = 20;\n"
6776 msgstr ""
6777 "    local[0].iov_base = buf1;\n"
6778 "    local[0].iov_len = 10;\n"
6779 "    local[1].iov_base = buf2;\n"
6780 "    local[1].iov_len = 10;\n"
6781 "    remote[0].iov_base = (void *) 0x10000;\n"
6782 "    remote[1].iov_len = 20;\n"
6783
6784 #. type: Plain text
6785 #: build/C/man2/process_vm_readv.2:330
6786 #, no-wrap
6787 msgid ""
6788 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6789 "    if (nread != 20)\n"
6790 "        return 1;\n"
6791 "    else\n"
6792 "        return 0;\n"
6793 "}\n"
6794 msgstr ""
6795 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6796 "    if (nread != 20)\n"
6797 "        return 1;\n"
6798 "    else\n"
6799 "        return 0;\n"
6800 "}\n"
6801
6802 #. type: Plain text
6803 #: build/C/man2/process_vm_readv.2:334
6804 msgid "B<readv>(2), B<writev>(2)"
6805 msgstr "B<readv>(2), B<writev>(2)"
6806
6807 #. type: TH
6808 #: build/C/man2/ptrace.2:44
6809 #, no-wrap
6810 msgid "PTRACE"
6811 msgstr "PTRACE"
6812
6813 #. type: TH
6814 #: build/C/man2/ptrace.2:44
6815 #, no-wrap
6816 msgid "2013-02-16"
6817 msgstr "2013-02-16"
6818
6819 #. type: Plain text
6820 #: build/C/man2/ptrace.2:47
6821 msgid "ptrace - process trace"
6822 msgstr "ptrace - プロセスのトレース"
6823
6824 #. type: Plain text
6825 #: build/C/man2/ptrace.2:50
6826 #, no-wrap
6827 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6828 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6829
6830 #. type: Plain text
6831 #: build/C/man2/ptrace.2:53
6832 #, no-wrap
6833 msgid ""
6834 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6835 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6836 msgstr ""
6837 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6838 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6839
6840 #. type: Plain text
6841 #: build/C/man2/ptrace.2:62
6842 #, fuzzy
6843 #| msgid ""
6844 #| "The B<ptrace>()  system call provides a means by which a parent process "
6845 #| "may observe and control the execution of another process, and examine and "
6846 #| "change its core image and registers.  It is primarily used to implement "
6847 #| "breakpoint debugging and system call tracing."
6848 msgid ""
6849 "The B<ptrace>()  system call provides a means by which one process (the "
6850 "\"tracer\")  may observe and control the execution of another process (the "
6851 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6852 "is primarily used to implement breakpoint debugging and system call tracing."
6853 msgstr ""
6854 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6855 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6856 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6857 "コールのトレースを 実装するのに用いられる。"
6858
6859 #. type: Plain text
6860 #: build/C/man2/ptrace.2:73
6861 msgid ""
6862 "A tracee first needs to be attached to the tracer.  Attachment and "
6863 "subsequent commands are per thread: in a multithreaded process, every thread "
6864 "can be individually attached to a (potentially different) tracer, or left "
6865 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6866 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6867 "commands are always sent to a specific tracee using a call of the form"
6868 msgstr ""
6869
6870 #. type: Plain text
6871 #: build/C/man2/ptrace.2:75
6872 #, no-wrap
6873 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6874 msgstr ""
6875
6876 #. type: Plain text
6877 #: build/C/man2/ptrace.2:79
6878 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6879 msgstr ""
6880
6881 #. type: Plain text
6882 #: build/C/man2/ptrace.2:85
6883 msgid ""
6884 "(Note that in this page, a \"multithreaded process\" means a thread group "
6885 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6886 msgstr ""
6887
6888 #. type: Plain text
6889 #: build/C/man2/ptrace.2:96
6890 #, fuzzy
6891 #| msgid ""
6892 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6893 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6894 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6895 #| "using B<PTRACE_ATTACH>."
6896 msgid ""
6897 "A process can initiate a trace by calling B<fork>(2)  and having the "
6898 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6899 "(2).  Alternatively, one process may commence tracing another process using "
6900 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6901 msgstr ""
6902 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
6903 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
6904 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
6905 "を使用し、トレースを開始する。"
6906
6907 #. type: Plain text
6908 #: build/C/man2/ptrace.2:113
6909 #, fuzzy
6910 #| msgid ""
6911 #| "While being traced, the child will stop each time a signal is delivered, "
6912 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
6913 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
6914 #| "(2)  and may inspect and modify the child process while it is stopped.  "
6915 #| "The parent then causes the child to continue, optionally ignoring the "
6916 #| "delivered signal (or even delivering a different signal instead)."
6917 msgid ""
6918 "While being traced, the tracee will stop each time a signal is delivered, "
6919 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
6920 "its usual effect.)  The tracer will be notified at its next call to "
6921 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
6922 "return a I<status> value containing information that indicates the cause of "
6923 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
6924 "various ptrace requests to inspect and modify the tracee.  The tracer then "
6925 "causes the tracee to continue, optionally ignoring the delivered signal (or "
6926 "even delivering a different signal instead)."
6927 msgstr ""
6928 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
6929 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
6930 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
6931 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
6932 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
6933 "シグナルを 配送することもできる) 。"
6934
6935 #. type: Plain text
6936 #: build/C/man2/ptrace.2:123
6937 msgid ""
6938 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
6939 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
6940 "signal, giving the parent a chance to gain control before the new program "
6941 "begins execution."
6942 msgstr ""
6943
6944 #. type: Plain text
6945 #: build/C/man2/ptrace.2:127
6946 #, fuzzy
6947 #| msgid ""
6948 #| "When the parent is finished tracing, it can terminate the child with "
6949 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
6950 #| "mode via B<PTRACE_DETACH>."
6951 msgid ""
6952 "When the tracer is finished tracing, it can cause the tracee to continue "
6953 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
6954 msgstr ""
6955 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
6956 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
6957 "ドにして、 実行を継続させることもできる。"
6958
6959 #. type: Plain text
6960 #: build/C/man2/ptrace.2:131
6961 msgid "The value of I<request> determines the action to be performed:"
6962 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
6963
6964 #. type: TP
6965 #: build/C/man2/ptrace.2:131
6966 #, no-wrap
6967 msgid "B<PTRACE_TRACEME>"
6968 msgstr "B<PTRACE_TRACEME>"
6969
6970 #. type: Plain text
6971 #: build/C/man2/ptrace.2:141
6972 msgid ""
6973 "Indicate that this process is to be traced by its parent.  A process "
6974 "probably shouldn't make this request if its parent isn't expecting to trace "
6975 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
6976 msgstr "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロセスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
6977
6978 #. type: Plain text
6979 #: build/C/man2/ptrace.2:156
6980 #, fuzzy
6981 #| msgid ""
6982 #| "The above request is used only by the child process; the rest are used "
6983 #| "only by the parent.  In the following requests, I<pid> specifies the "
6984 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
6985 #| "the child process must be stopped."
6986 msgid ""
6987 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
6988 "requests are used only by the tracer.  In the following requests, I<pid> "
6989 "specifies the thread ID of the tracee to be acted on.  For requests other "
6990 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
6991 "B<PTRACE_KILL>, the tracee must be stopped."
6992 msgstr ""
6993 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
6994 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
6995 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
6996 "らない。"
6997
6998 #. type: TP
6999 #: build/C/man2/ptrace.2:156
7000 #, no-wrap
7001 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7002 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7003
7004 #. type: Plain text
7005 #: build/C/man2/ptrace.2:167
7006 #, fuzzy
7007 #| msgid ""
7008 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7009 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7010 #| "separate text and data address spaces, so the two requests are currently "
7011 #| "equivalent.  (The argument I<data> is ignored.)"
7012 msgid ""
7013 "Read a word at the address I<addr> in the tracee's memory, returning the "
7014 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7015 "text and data address spaces, so these two requests are currently "
7016 "equivalent.  (I<data> is ignored.)"
7017 msgstr ""
7018 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7019 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7020 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7021 "ものである。 (引き数 I<data> は無視される。)"
7022
7023 #. type: TP
7024 #: build/C/man2/ptrace.2:167
7025 #, no-wrap
7026 msgid "B<PTRACE_PEEKUSER>"
7027 msgstr "B<PTRACE_PEEKUSER>"
7028
7029 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7030 #.  and that is the name that seems common on other systems.
7031 #. type: Plain text
7032 #: build/C/man2/ptrace.2:185
7033 #, fuzzy
7034 #| msgid ""
7035 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7036 #| "registers and other information about the process (see I<E<lt>sys/user."
7037 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7038 #| "Typically the offset must be word-aligned, though this might vary by "
7039 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7040 msgid ""
7041 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7042 "registers and other information about the process (see I<E<lt>sys/user."
7043 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7044 "Typically, the offset must be word-aligned, though this might vary by "
7045 "architecture.  See NOTES.  (I<data> is ignored.)"
7046 msgstr ""
7047 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7048 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7049 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7050 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7051 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7052 "される。 )"
7053
7054 #. type: TP
7055 #: build/C/man2/ptrace.2:185
7056 #, no-wrap
7057 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7058 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7059
7060 #. type: Plain text
7061 #: build/C/man2/ptrace.2:197
7062 #, fuzzy
7063 #| msgid ""
7064 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7065 #| "above, the two requests are currently equivalent."
7066 msgid ""
7067 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7068 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7069 "equivalent."
7070 msgstr ""
7071 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7072 "に、現在のところ二つの 要求は同じものである。"
7073
7074 #. type: TP
7075 #: build/C/man2/ptrace.2:197
7076 #, no-wrap
7077 msgid "B<PTRACE_POKEUSER>"
7078 msgstr "B<PTRACE_POKEUSER>"
7079
7080 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7081 #.  and that is the name that seems common on other systems.
7082 #.  FIXME In the preceding sentence, which modifications are disallowed,
7083 #.  and when they are disallowed, how does user space discover that fact?
7084 #. type: Plain text
7085 #: build/C/man2/ptrace.2:213
7086 #, fuzzy
7087 #| msgid ""
7088 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7089 #| "above, the offset must typically be word-aligned.  In order to maintain "
7090 #| "the integrity of the kernel, some modifications to the USER area are "
7091 #| "disallowed."
7092 msgid ""
7093 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7094 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7095 "maintain the integrity of the kernel, some modifications to the USER area "
7096 "are disallowed."
7097 msgstr ""
7098 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7099 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7100 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7101 "されている。"
7102
7103 #. type: TP
7104 #: build/C/man2/ptrace.2:213
7105 #, no-wrap
7106 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7107 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7108
7109 #. type: Plain text
7110 #: build/C/man2/ptrace.2:236
7111 #, fuzzy
7112 #| msgid ""
7113 #| "Copies the child's general purpose or floating-point registers, "
7114 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7115 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7116 msgid ""
7117 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7118 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7119 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7120 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7121 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7122 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7123 "architectures."
7124 msgstr ""
7125 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7126 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7127 "すること。(I<addr> は無視される。)"
7128
7129 #. type: TP
7130 #: build/C/man2/ptrace.2:236
7131 #, fuzzy, no-wrap
7132 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7133 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7134 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7135
7136 #. type: Plain text
7137 #: build/C/man2/ptrace.2:257
7138 msgid ""
7139 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7140 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7141 "numerical value 1)  usually results in reading of general-purpose "
7142 "registers.  If the CPU has, for example, floating-point and/or vector "
7143 "registers, they can be retrieved by setting I<addr> to the corresponding "
7144 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7145 "the destination buffer's location and length.  On return, the kernel "
7146 "modifies B<iov.len> to indicate the actual number of bytes returned."
7147 msgstr ""
7148
7149 #. type: TP
7150 #: build/C/man2/ptrace.2:257
7151 #, no-wrap
7152 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7153 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7154
7155 #. type: Plain text
7156 #: build/C/man2/ptrace.2:269
7157 #, fuzzy
7158 #| msgid ""
7159 #| "Retrieve information about the signal that caused the stop.  Copies a "
7160 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7161 #| "I<data> in the parent.  (I<addr> is ignored.)"
7162 msgid ""
7163 "Retrieve information about the signal that caused the stop.  Copy a "
7164 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7165 "I<data> in the tracer.  (I<addr> is ignored.)"
7166 msgstr ""
7167 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7168 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7169 "る。 (I<addr> は無視される。)"
7170
7171 #. type: TP
7172 #: build/C/man2/ptrace.2:269
7173 #, no-wrap
7174 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7175 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7176
7177 #.  FIXME In the preceding sentence, which modifications are disallowed,
7178 #.  and when they are disallowed, how does user space discover that fact?
7179 #. type: Plain text
7180 #: build/C/man2/ptrace.2:294
7181 #, fuzzy
7182 #| msgid ""
7183 #| "Copies the child's general purpose or floating-point registers, "
7184 #| "respectively, from location I<data> in the parent.  As for "
7185 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7186 #| "disallowed.  (I<addr> is ignored.)"
7187 msgid ""
7188 "Modify the tracee's general-purpose or floating-point registers, "
7189 "respectively, from the address I<data> in the tracer.  As for "
7190 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7191 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7192 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7193 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7194 "B<PTRACE_SETFPREGS> are not present on all architectures."
7195 msgstr ""
7196 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7197 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7198 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7199
7200 #. type: TP
7201 #: build/C/man2/ptrace.2:294
7202 #, fuzzy, no-wrap
7203 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7204 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7205 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7206
7207 #. type: Plain text
7208 #: build/C/man2/ptrace.2:303
7209 msgid ""
7210 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7211 "analogous to B<PTRACE_GETREGSET>."
7212 msgstr ""
7213
7214 #. type: TP
7215 #: build/C/man2/ptrace.2:303
7216 #, no-wrap
7217 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7218 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7219
7220 #. type: Plain text
7221 #: build/C/man2/ptrace.2:319
7222 #, fuzzy
7223 #| msgid ""
7224 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7225 #| "I<data> in the parent to the child.  This will only affect signals that "
7226 #| "would normally be delivered to the child and were caught by the tracer.  "
7227 #| "It may be difficult to tell these normal signals from synthetic signals "
7228 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7229 msgid ""
7230 "Set signal information: copy a I<siginfo_t> structure from the address "
7231 "I<data> in the tracer to the tracee.  This will affect only signals that "
7232 "would normally be delivered to the tracee and were caught by the tracer.  It "
7233 "may be difficult to tell these normal signals from synthetic signals "
7234 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7235 msgstr ""
7236 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7237 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7238 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7239 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7240 "かもしれない。 (I<addr> は無視される。)"
7241
7242 #. type: TP
7243 #: build/C/man2/ptrace.2:319
7244 #, no-wrap
7245 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7246 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7247
7248 #. type: Plain text
7249 #: build/C/man2/ptrace.2:328
7250 #, fuzzy
7251 #| msgid ""
7252 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7253 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7254 #| "the following flags:"
7255 msgid ""
7256 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7257 "interpreted as a bit mask of options, which are specified by the following "
7258 "flags:"
7259 msgstr ""
7260 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7261 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7262 "下のフラグを指定できる:"
7263
7264 #. type: TP
7265 #: build/C/man2/ptrace.2:329
7266 #, fuzzy, no-wrap
7267 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7268 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7269 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7270
7271 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7272 #. type: Plain text
7273 #: build/C/man2/ptrace.2:337
7274 msgid ""
7275 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7276 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7277 "ensure that tracees can never escape the tracer's control."
7278 msgstr ""
7279
7280 #. type: TP
7281 #: build/C/man2/ptrace.2:337
7282 #, no-wrap
7283 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7284 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7285
7286 #. type: Plain text
7287 #: build/C/man2/ptrace.2:349
7288 #, fuzzy
7289 #| msgid ""
7290 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7291 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7292 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7293 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7294 msgid ""
7295 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7296 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7297 "by the tracer will return a I<status> value such that"
7298 msgstr ""
7299 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7300 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7301 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7302 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7303
7304 #. type: Plain text
7305 #: build/C/man2/ptrace.2:352
7306 #, no-wrap
7307 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7308 msgstr ""
7309
7310 #. type: Plain text
7311 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7312 #: build/C/man2/ptrace.2:465
7313 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7314 msgstr ""
7315
7316 #. type: Plain text
7317 #: build/C/man2/ptrace.2:377
7318 #, fuzzy
7319 #| msgid ""
7320 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7321 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7322 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7323 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7324 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7325 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7326 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7327 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7328 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7329 msgid ""
7330 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7331 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7332 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7333 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7334 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7335 msgstr ""
7336 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7337 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7338 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7339 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7340 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7341 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7342 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7343 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7344 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7345
7346 #. type: TP
7347 #: build/C/man2/ptrace.2:377
7348 #, no-wrap
7349 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7350 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7351
7352 #. type: Plain text
7353 #: build/C/man2/ptrace.2:386
7354 msgid ""
7355 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7356 "will return a I<status> value such that"
7357 msgstr ""
7358
7359 #. type: Plain text
7360 #: build/C/man2/ptrace.2:389
7361 #, no-wrap
7362 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7363 msgstr ""
7364
7365 #. type: Plain text
7366 #: build/C/man2/ptrace.2:395
7367 msgid ""
7368 "If the execing thread is not a thread group leader, the thread ID is reset "
7369 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7370 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7371 msgstr ""
7372
7373 #. type: TP
7374 #: build/C/man2/ptrace.2:395
7375 #, no-wrap
7376 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7377 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7378
7379 #. type: Plain text
7380 #: build/C/man2/ptrace.2:403
7381 msgid ""
7382 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7383 "I<status> value such that"
7384 msgstr ""
7385
7386 #. type: Plain text
7387 #: build/C/man2/ptrace.2:406
7388 #, no-wrap
7389 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7390 msgstr ""
7391
7392 #. type: Plain text
7393 #: build/C/man2/ptrace.2:410
7394 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7395 msgstr ""
7396
7397 #. type: Plain text
7398 #: build/C/man2/ptrace.2:418
7399 #, fuzzy
7400 #| msgid ""
7401 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7402 #| "8>.  The child's exit status can be retrieved with "
7403 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7404 #| "when registers are still available, allowing the tracer to see where the "
7405 #| "exit occurred, whereas the normal exit notification is done after the "
7406 #| "process is finished exiting.  Even though context is available, the "
7407 #| "tracer cannot prevent the exit from happening at this point."
7408 msgid ""
7409 "The tracee is stopped early during process exit, when registers are still "
7410 "available, allowing the tracer to see where the exit occurred, whereas the "
7411 "normal exit notification is done after the process is finished exiting.  "
7412 "Even though context is available, the tracer cannot prevent the exit from "
7413 "happening at this point."
7414 msgstr ""
7415 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7416 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7417 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7418 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7419 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7420 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7421 "できない。"
7422
7423 #. type: TP
7424 #: build/C/man2/ptrace.2:418
7425 #, no-wrap
7426 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7427 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7428
7429 #. type: Plain text
7430 #: build/C/man2/ptrace.2:430
7431 #, fuzzy
7432 #| msgid ""
7433 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7434 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7435 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7436 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7437 msgid ""
7438 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7439 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7440 "by the tracer will return a I<status> value such that"
7441 msgstr ""
7442 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7443 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7444 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7445 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7446
7447 #. type: Plain text
7448 #: build/C/man2/ptrace.2:433
7449 #, no-wrap
7450 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7451 msgstr ""
7452
7453 #. type: TP
7454 #: build/C/man2/ptrace.2:437
7455 #, no-wrap
7456 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7457 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7458
7459 #. type: Plain text
7460 #: build/C/man2/ptrace.2:446
7461 #, fuzzy
7462 #| msgid ""
7463 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7464 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7465 #| "the difference between normal traps and those caused by a syscall.  "
7466 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7467 msgid ""
7468 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7469 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7470 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7471 "may not work on all architectures.)"
7472 msgstr ""
7473 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7474 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7475 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7476 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7477
7478 #. type: TP
7479 #: build/C/man2/ptrace.2:446
7480 #, no-wrap
7481 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7482 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7483
7484 #. type: Plain text
7485 #: build/C/man2/ptrace.2:458
7486 #, fuzzy
7487 #| msgid ""
7488 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7489 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7490 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7491 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7492 msgid ""
7493 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7494 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7495 "by the tracer will return a I<status> value such that"
7496 msgstr ""
7497 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7498 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7499 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7500 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7501
7502 #. type: Plain text
7503 #: build/C/man2/ptrace.2:461
7504 #, no-wrap
7505 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7506 msgstr ""
7507
7508 #. type: TP
7509 #: build/C/man2/ptrace.2:465
7510 #, no-wrap
7511 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7512 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7513
7514 #. type: Plain text
7515 #: build/C/man2/ptrace.2:474
7516 msgid ""
7517 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7518 "by the tracer will return a I<status> value such that"
7519 msgstr ""
7520
7521 #. type: Plain text
7522 #: build/C/man2/ptrace.2:477
7523 #, no-wrap
7524 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7525 msgstr ""
7526
7527 #. type: Plain text
7528 #: build/C/man2/ptrace.2:481
7529 msgid ""
7530 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7531 "B<PTRACE_GETEVENTMSG>."
7532 msgstr ""
7533
7534 #. type: TP
7535 #: build/C/man2/ptrace.2:482
7536 #, no-wrap
7537 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7538 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7539
7540 #. type: Plain text
7541 #: build/C/man2/ptrace.2:502
7542 #, fuzzy
7543 #| msgid ""
7544 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7545 #| "just happened, placing it in the location I<data> in the parent.  For "
7546 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7547 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7548 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7549 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7550 #| "is ignored.)"
7551 msgid ""
7552 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7553 "just happened, placing it at the address I<data> in the tracer.  For "
7554 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7555 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7556 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7557 "ignored.)"
7558 msgstr ""
7559 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7560 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7561 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7562 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7563 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7564 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7565
7566 #. type: TP
7567 #: build/C/man2/ptrace.2:502
7568 #, no-wrap
7569 msgid "B<PTRACE_CONT>"
7570 msgstr "B<PTRACE_CONT>"
7571
7572 #. type: Plain text
7573 #: build/C/man2/ptrace.2:514
7574 #, fuzzy
7575 #| msgid ""
7576 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7577 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7578 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7579 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7580 #| "is ignored.)"
7581 msgid ""
7582 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7583 "interpreted as the number of a signal to be delivered to the tracee; "
7584 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7585 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7586 "is ignored.)"
7587 msgstr ""
7588 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7589 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7590 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7591 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7592 "は無視される。)"
7593
7594 #. type: TP
7595 #: build/C/man2/ptrace.2:514
7596 #, no-wrap
7597 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7598 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7599
7600 #. type: Plain text
7601 #: build/C/man2/ptrace.2:538
7602 #, fuzzy
7603 #| msgid ""
7604 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7605 #| "child to be stopped at the next entry to or exit from a system call, or "
7606 #| "after execution of a single instruction, respectively.  (The child will "
7607 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7608 #| "perspective, the child will appear to have been stopped by receipt of a "
7609 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7610 #| "inspect the arguments to the system call at the first stop, then do "
7611 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7612 #| "at the second stop.  The I<data> argument is treated as for "
7613 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7614 msgid ""
7615 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7616 "to be stopped at the next entry to or exit from a system call, or after "
7617 "execution of a single instruction, respectively.  (The tracee will also, as "
7618 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7619 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7620 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7621 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7622 "inspect the return value of the system call at the second stop.  The I<data> "
7623 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7624 msgstr ""
7625 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7626 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7627 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7628 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7629 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7630 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7631 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7632 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7633 "同じ様に解釈される。 (I<addr> は無視される。)"
7634
7635 #. type: TP
7636 #: build/C/man2/ptrace.2:538
7637 #, no-wrap
7638 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7639 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7640
7641 #.  As at 3.7
7642 #. type: Plain text
7643 #: build/C/man2/ptrace.2:559
7644 #, fuzzy
7645 #| msgid ""
7646 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7647 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7648 #| "but also singlestep if not a syscall.  This call is used by programs like "
7649 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7650 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7651 #| "not supported on all architectures.)"
7652 msgid ""
7653 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7654 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7655 "but also singlestep if not a system call.  This call is used by programs "
7656 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7657 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7658 "is ignored.  These requests are currently supported only on x86."
7659 msgstr ""
7660 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7661 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7662 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7663 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7664 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7665 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7666 "ポートされているわけではない。)"
7667
7668 #. type: TP
7669 #: build/C/man2/ptrace.2:559
7670 #, fuzzy, no-wrap
7671 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7672 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7673 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7674
7675 #. type: Plain text
7676 #: build/C/man2/ptrace.2:570
7677 msgid ""
7678 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7679 "state of the tracee is similar to a process which has been stopped by a "
7680 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7681 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
7682 "by B<PTRACE_SEIZE>."
7683 msgstr ""
7684
7685 #. type: TP
7686 #: build/C/man2/ptrace.2:570
7687 #, no-wrap
7688 msgid "B<PTRACE_KILL>"
7689 msgstr "B<PTRACE_KILL>"
7690
7691 #. type: Plain text
7692 #: build/C/man2/ptrace.2:579
7693 #, fuzzy
7694 #| msgid ""
7695 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7696 #| "ignored.)"
7697 msgid ""
7698 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7699 "ignored.)"
7700 msgstr ""
7701 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7702
7703 #.  [Note from Denys Vlasenko:
7704 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7705 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7706 #. type: Plain text
7707 #: build/C/man2/ptrace.2:598
7708 msgid ""
7709 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7710 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7711 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7712 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7713 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7714 msgstr ""
7715
7716 #. type: TP
7717 #: build/C/man2/ptrace.2:598
7718 #, fuzzy, no-wrap
7719 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7720 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7721 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7722
7723 #. type: Plain text
7724 #: build/C/man2/ptrace.2:612
7725 msgid ""
7726 "Stop a tracee.  If the tracee is running, it will stop with "
7727 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7728 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7729 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7730 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7731 msgstr ""
7732
7733 #. type: TP
7734 #: build/C/man2/ptrace.2:612
7735 #, no-wrap
7736 msgid "B<PTRACE_ATTACH>"
7737 msgstr "B<PTRACE_ATTACH>"
7738
7739 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7740 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7741 #.          Basically, it's not true for any Linux in practical use.
7742 #.  ; the behavior of the tracee is as if it had done a
7743 #.  .BR PTRACE_TRACEME .
7744 #.  The calling process actually becomes the parent of the tracee
7745 #.  process for most purposes (e.g., it will receive
7746 #.  notification of tracee events and appears in
7747 #.  .BR ps (1)
7748 #.  output as the tracee's parent), but a
7749 #.  .BR getppid (2)
7750 #.  by the tracee will still return the PID of the original parent.
7751 #. type: Plain text
7752 #: build/C/man2/ptrace.2:640
7753 msgid ""
7754 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7755 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7756 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7757 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7758 "additional information.  (I<addr> and I<data> are ignored.)"
7759 msgstr ""
7760
7761 #. type: TP
7762 #: build/C/man2/ptrace.2:640
7763 #, fuzzy, no-wrap
7764 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7765 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7766 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7767
7768 #. type: Plain text
7769 #: build/C/man2/ptrace.2:660
7770 msgid ""
7771 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7772 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7773 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7774 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7775 "mask of ptrace options to activate immediately."
7776 msgstr ""
7777
7778 #. type: TP
7779 #: build/C/man2/ptrace.2:660
7780 #, no-wrap
7781 msgid "B<PTRACE_DETACH>"
7782 msgstr "B<PTRACE_DETACH>"
7783
7784 #. type: Plain text
7785 #: build/C/man2/ptrace.2:669
7786 #, fuzzy
7787 #| msgid ""
7788 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7789 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7790 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7791 #| "a traced child can be detached in this way regardless of which method was "
7792 #| "used to initiate tracing.  (I<addr> is ignored.)"
7793 msgid ""
7794 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7795 "Under Linux, a tracee can be detached in this way regardless of which method "
7796 "was used to initiate tracing.  (I<addr> is ignored.)"
7797 msgstr ""
7798 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7799 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7800 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7801 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7802 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7803
7804 #. type: SS
7805 #: build/C/man2/ptrace.2:669
7806 #, no-wrap
7807 msgid "Death under ptrace"
7808 msgstr ""
7809
7810 #. type: Plain text
7811 #: build/C/man2/ptrace.2:678
7812 msgid ""
7813 "When a (possibly multithreaded) process receives a killing signal (one whose "
7814 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7815 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7816 "Notification of this event is delivered via B<waitpid>(2)."
7817 msgstr ""
7818
7819 #. type: Plain text
7820 #: build/C/man2/ptrace.2:687
7821 msgid ""
7822 "Note that the killing signal will first cause signal-delivery-stop (on one "
7823 "tracee only), and only after it is injected by the tracer (or after it was "
7824 "dispatched to a thread which isn't traced), will death from the signal "
7825 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7826 "delivery-stop\" is explained below.)"
7827 msgstr ""
7828
7829 #. type: Plain text
7830 #: build/C/man2/ptrace.2:699
7831 msgid ""
7832 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7833 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7834 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7835 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7836 "of the process are ptraced."
7837 msgstr ""
7838
7839 #. type: Plain text
7840 #: build/C/man2/ptrace.2:704
7841 msgid ""
7842 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7843 "Other threads are not affected."
7844 msgstr ""
7845
7846 #. type: Plain text
7847 #: build/C/man2/ptrace.2:708
7848 msgid ""
7849 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7850 "reports its death to its tracer."
7851 msgstr ""
7852
7853 #. type: Plain text
7854 #: build/C/man2/ptrace.2:722
7855 msgid ""
7856 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7857 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7858 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7859 "on B<execve>(2)  in a multithreaded process."
7860 msgstr ""
7861
7862 #. type: Plain text
7863 #: build/C/man2/ptrace.2:747
7864 msgid ""
7865 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7866 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7867 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7868 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7869 "exists but is not ptrace-stopped (for commands which require a stopped "
7870 "tracee), or if it is not traced by the process which issued the ptrace "
7871 "call.  The tracer needs to keep track of the stopped/running state of the "
7872 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7873 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7874 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7875 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7876 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7877 "yet fully dead\", but already refusing ptrace requests."
7878 msgstr ""
7879
7880 #. type: Plain text
7881 #: build/C/man2/ptrace.2:761
7882 msgid ""
7883 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7884 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7885 "does not occur.  For example, if a thread other than thread group leader "
7886 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7887 "any subsequent ptrace stops will be reported under the thread group leader's "
7888 "PID."
7889 msgstr ""
7890
7891 #. type: SS
7892 #: build/C/man2/ptrace.2:761
7893 #, no-wrap
7894 msgid "Stopped states"
7895 msgstr ""
7896
7897 #. type: Plain text
7898 #: build/C/man2/ptrace.2:763
7899 msgid "A tracee can be in two states: running or stopped."
7900 msgstr ""
7901
7902 #. type: Plain text
7903 #: build/C/man2/ptrace.2:767
7904 msgid ""
7905 "There are many kinds of states when the tracee is stopped, and in ptrace "
7906 "discussions they are often conflated.  Therefore, it is important to use "
7907 "precise terms."
7908 msgstr ""
7909
7910 #. type: Plain text
7911 #: build/C/man2/ptrace.2:778
7912 msgid ""
7913 "In this manual page, any stopped state in which the tracee is ready to "
7914 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
7915 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
7916 "I<syscall-stop>, and so on.  These stopped states are described in detail "
7917 "below."
7918 msgstr ""
7919
7920 #. type: Plain text
7921 #: build/C/man2/ptrace.2:783
7922 msgid ""
7923 "When the running tracee enters ptrace-stop, it notifies its tracer using "
7924 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
7925 "manual page assumes that the tracer waits with:"
7926 msgstr ""
7927
7928 #. type: Plain text
7929 #: build/C/man2/ptrace.2:785
7930 #, no-wrap
7931 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
7932 msgstr ""
7933
7934 #.  Denys Vlasenko:
7935 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
7936 #.      I am not 100% sure there aren't ugly corner cases.) Are the
7937 #.      rules different if user wants to use waitid? Will waitid require
7938 #.      WEXITED?
7939 #. type: Plain text
7940 #: build/C/man2/ptrace.2:797
7941 msgid ""
7942 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
7943 "and I<WIFSTOPPED(status)> true."
7944 msgstr ""
7945
7946 #. type: Plain text
7947 #: build/C/man2/ptrace.2:805
7948 msgid ""
7949 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
7950 "but implies their functionality."
7951 msgstr ""
7952
7953 #. type: Plain text
7954 #: build/C/man2/ptrace.2:812
7955 msgid ""
7956 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
7957 "recommended: the \"continued\" state is per-process and consuming it can "
7958 "confuse the real parent of the tracee."
7959 msgstr ""
7960
7961 #. type: Plain text
7962 #: build/C/man2/ptrace.2:820
7963 msgid ""
7964 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
7965 "results available yet\")  even if the tracer knows there should be a "
7966 "notification.  Example:"
7967 msgstr ""
7968
7969 #. type: Plain text
7970 #: build/C/man2/ptrace.2:829
7971 #, no-wrap
7972 msgid ""
7973 "    errno = 0;\n"
7974 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
7975 "    if (errno == ESRCH) {\n"
7976 "        /* tracee is dead */\n"
7977 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
7978 "        /* r can still be 0 here! */\n"
7979 "    }\n"
7980 msgstr ""
7981
7982 #. type: Plain text
7983 #: build/C/man2/ptrace.2:852
7984 msgid ""
7985 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
7986 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
7987 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
7988 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
7989 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
7990 "> macro can't be used to perform this examination, because it returns the "
7991 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
7992 msgstr ""
7993
7994 #. type: SS
7995 #: build/C/man2/ptrace.2:852
7996 #, no-wrap
7997 msgid "Signal-delivery-stop"
7998 msgstr ""
7999
8000 #. type: Plain text
8001 #: build/C/man2/ptrace.2:872
8002 msgid ""
8003 "When a (possibly multithreaded) process receives any signal except "
8004 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8005 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8006 "can be explicitly selected by the caller.)  If the selected thread is "
8007 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8008 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8009 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8010 "the next ptrace restart request.  This second step of signal delivery is "
8011 "called I<signal injection> in this manual page.  Note that if the signal is "
8012 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8013 "with the usual exception that B<SIGSTOP> can't be blocked."
8014 msgstr ""
8015
8016 #. type: Plain text
8017 #: build/C/man2/ptrace.2:886
8018 msgid ""
8019 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8020 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8021 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8022 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8023 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8024 "group-stop; see below."
8025 msgstr ""
8026
8027 #. type: SS
8028 #: build/C/man2/ptrace.2:886
8029 #, no-wrap
8030 msgid "Signal injection and suppression"
8031 msgstr ""
8032
8033 #. type: Plain text
8034 #: build/C/man2/ptrace.2:889
8035 msgid ""
8036 "After signal-delivery-stop is observed by the tracer, the tracer should "
8037 "restart the tracee with the call"
8038 msgstr ""
8039
8040 #. type: Plain text
8041 #: build/C/man2/ptrace.2:891
8042 #, no-wrap
8043 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8044 msgstr ""
8045
8046 #. type: Plain text
8047 #: build/C/man2/ptrace.2:904
8048 msgid ""
8049 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8050 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8051 "delivered.  This operation is called I<signal injection> in this manual "
8052 "page, to distinguish it from signal-delivery-stop."
8053 msgstr ""
8054
8055 #. type: Plain text
8056 #: build/C/man2/ptrace.2:910
8057 msgid ""
8058 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8059 "tracer can cause a different signal to be injected."
8060 msgstr ""
8061
8062 #. type: Plain text
8063 #: build/C/man2/ptrace.2:926
8064 msgid ""
8065 "Note that a suppressed signal still causes system calls to return "
8066 "prematurely.  In this case system calls will be restarted: the tracer will "
8067 "observe the tracee to reexecute the interrupted system call (or "
8068 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8069 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8070 "calls (such as B<poll>(2))  which are not restartable after signal are "
8071 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8072 "some syscalls to fail with B<EINTR> even though no observable signal is "
8073 "injected to the tracee."
8074 msgstr ""
8075
8076 #. type: Plain text
8077 #: build/C/man2/ptrace.2:937
8078 msgid ""
8079 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8080 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8081 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8082 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8083 "instead."
8084 msgstr ""
8085
8086 #. type: Plain text
8087 #: build/C/man2/ptrace.2:944
8088 msgid ""
8089 "The fact that signal injection requests may be ignored when restarting the "
8090 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8091 "confusion among ptrace users.  One typical scenario is that the tracer "
8092 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8093 "tracee with"
8094 msgstr ""
8095
8096 #. type: Plain text
8097 #: build/C/man2/ptrace.2:946
8098 #, no-wrap
8099 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8100 msgstr ""
8101
8102 #. type: Plain text
8103 #: build/C/man2/ptrace.2:952
8104 msgid ""
8105 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8106 "the tracee continues to run."
8107 msgstr ""
8108
8109 #. type: Plain text
8110 #: build/C/man2/ptrace.2:972
8111 msgid ""
8112 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8113 "group-stopped process.  This side effect happens before signal-delivery-"
8114 "stop.  The tracer can't suppress this side effect (it can only suppress "
8115 "signal injection, which only causes the B<SIGCONT> handler to not be "
8116 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8117 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8118 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8119 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8120 "by the tracee after it was sent."
8121 msgstr ""
8122
8123 #. type: Plain text
8124 #: build/C/man2/ptrace.2:976
8125 msgid ""
8126 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8127 "side effect happens after signal injection, and therefore can be suppressed "
8128 "by the tracer."
8129 msgstr ""
8130
8131 #
8132 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8133 #.  there is:
8134 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8135 #.              if (signr == SIGSTOP)
8136 #.                      continue;
8137 #. type: Plain text
8138 #: build/C/man2/ptrace.2:986
8139 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8140 msgstr ""
8141
8142 #. type: Plain text
8143 #: build/C/man2/ptrace.2:1003
8144 msgid ""
8145 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8146 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8147 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8148 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8149 "match, otherwise the result is undefined."
8150 msgstr ""
8151
8152 #. type: SS
8153 #: build/C/man2/ptrace.2:1003
8154 #, no-wrap
8155 msgid "Group-stop"
8156 msgstr ""
8157
8158 #. type: Plain text
8159 #: build/C/man2/ptrace.2:1015
8160 msgid ""
8161 "When a (possibly multithreaded) process receives a stopping signal, all "
8162 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8163 "that the stopping signal will first cause signal-delivery-stop (on one "
8164 "tracee only), and only after it is injected by the tracer (or after it was "
8165 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8166 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8167 "reports its group-stop separately to the corresponding tracer."
8168 msgstr ""
8169
8170 #. type: Plain text
8171 #: build/C/man2/ptrace.2:1024
8172 msgid ""
8173 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8174 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8175 "(status)>.  The same result is returned by some other classes of ptrace-"
8176 "stops, therefore the recommended practice is to perform the call"
8177 msgstr ""
8178
8179 #. type: Plain text
8180 #: build/C/man2/ptrace.2:1026
8181 #, no-wrap
8182 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8183 msgstr ""
8184
8185 #. type: Plain text
8186 #: build/C/man2/ptrace.2:1047
8187 msgid ""
8188 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8189 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8190 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8191 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8192 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8193 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8194 "the tracee.)"
8195 msgstr ""
8196
8197 #. type: Plain text
8198 #: build/C/man2/ptrace.2:1056
8199 msgid ""
8200 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8201 "it restarts or kills it, the tracee will not run, and will not send "
8202 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8203 "enters into another B<waitpid>(2)  call."
8204 msgstr ""
8205
8206 #. type: Plain text
8207 #: build/C/man2/ptrace.2:1070
8208 msgid ""
8209 "The kernel behavior described in the previous paragraph causes a problem "
8210 "with transparent handling of stopping signals.  If the tracer restarts the "
8211 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8212 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8213 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8214 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8215 "signals to have no effect on the tracee."
8216 msgstr ""
8217
8218 #. type: Plain text
8219 #: build/C/man2/ptrace.2:1081
8220 msgid ""
8221 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8222 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8223 "in a way where it does not execute, but waits for a new event which it can "
8224 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8225 msgstr ""
8226
8227 #. type: SS
8228 #: build/C/man2/ptrace.2:1081
8229 #, no-wrap
8230 msgid "PTRACE_EVENT stops"
8231 msgstr ""
8232
8233 #. type: Plain text
8234 #: build/C/man2/ptrace.2:1087
8235 msgid ""
8236 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8237 "stops called B<PTRACE_EVENT> stops."
8238 msgstr ""
8239
8240 #. type: Plain text
8241 #: build/C/man2/ptrace.2:1101
8242 msgid ""
8243 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8244 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8245 "additional bit is set in the higher byte of the status word: the value "
8246 "I<statusE<gt>E<gt>8> will be"
8247 msgstr ""
8248
8249 #. type: Plain text
8250 #: build/C/man2/ptrace.2:1103
8251 #, no-wrap
8252 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8253 msgstr ""
8254
8255 #. type: Plain text
8256 #: build/C/man2/ptrace.2:1105
8257 msgid "The following events exist:"
8258 msgstr ""
8259
8260 #. type: TP
8261 #: build/C/man2/ptrace.2:1105
8262 #, no-wrap
8263 msgid "B<PTRACE_EVENT_VFORK>"
8264 msgstr "B<PTRACE_EVENT_VFORK>"
8265
8266 #. type: Plain text
8267 #: build/C/man2/ptrace.2:1118
8268 msgid ""
8269 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8270 "flag.  When the tracee is continued after this stop, it will wait for child "
8271 "to exit/exec before continuing its execution (in other words, the usual "
8272 "behavior on B<vfork>(2))."
8273 msgstr ""
8274
8275 #. type: TP
8276 #: build/C/man2/ptrace.2:1118
8277 #, no-wrap
8278 msgid "B<PTRACE_EVENT_FORK>"
8279 msgstr "B<PTRACE_EVENT_FORK>"
8280
8281 #. type: Plain text
8282 #: build/C/man2/ptrace.2:1126
8283 msgid ""
8284 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8285 "to B<SIGCHLD>."
8286 msgstr ""
8287
8288 #. type: TP
8289 #: build/C/man2/ptrace.2:1126
8290 #, no-wrap
8291 msgid "B<PTRACE_EVENT_CLONE>"
8292 msgstr "B<PTRACE_EVENT_CLONE>"
8293
8294 #. type: Plain text
8295 #: build/C/man2/ptrace.2:1130
8296 msgid "Stop before return from B<clone>(2)."
8297 msgstr ""
8298
8299 #. type: TP
8300 #: build/C/man2/ptrace.2:1130
8301 #, no-wrap
8302 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8303 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8304
8305 #. type: Plain text
8306 #: build/C/man2/ptrace.2:1140
8307 msgid ""
8308 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8309 "flag, but after the child unblocked this tracee by exiting or execing."
8310 msgstr ""
8311
8312 #. type: Plain text
8313 #: build/C/man2/ptrace.2:1146
8314 msgid ""
8315 "For all four stops described above, the stop occurs in the parent (i.e., the "
8316 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8317 "to retrieve the new thread's ID."
8318 msgstr ""
8319
8320 #. type: TP
8321 #: build/C/man2/ptrace.2:1146
8322 #, no-wrap
8323 msgid "B<PTRACE_EVENT_EXEC>"
8324 msgstr "B<PTRACE_EVENT_EXEC>"
8325
8326 #. type: Plain text
8327 #: build/C/man2/ptrace.2:1153
8328 msgid ""
8329 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8330 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8331 msgstr ""
8332
8333 #. type: TP
8334 #: build/C/man2/ptrace.2:1153
8335 #, no-wrap
8336 msgid "B<PTRACE_EVENT_EXIT>"
8337 msgstr "B<PTRACE_EVENT_EXIT>"
8338
8339 #. type: Plain text
8340 #: build/C/man2/ptrace.2:1169
8341 msgid ""
8342 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8343 "exit caused by B<execve>(2)  in a multithreaded process.  "
8344 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8345 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8346 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8347 msgstr ""
8348
8349 #. type: TP
8350 #: build/C/man2/ptrace.2:1169
8351 #, fuzzy, no-wrap
8352 #| msgid "B<PTRACE_EVENT_FORK>"
8353 msgid "B<PTRACE_EVENT_STOP>"
8354 msgstr "B<PTRACE_EVENT_FORK>"
8355
8356 #. type: Plain text
8357 #: build/C/man2/ptrace.2:1174
8358 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8359 msgstr ""
8360
8361 #. type: Plain text
8362 #: build/C/man2/ptrace.2:1186
8363 msgid ""
8364 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8365 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8366 msgstr ""
8367
8368 #. type: SS
8369 #: build/C/man2/ptrace.2:1186
8370 #, no-wrap
8371 msgid "Syscall-stops"
8372 msgstr ""
8373
8374 #. type: Plain text
8375 #: build/C/man2/ptrace.2:1199
8376 msgid ""
8377 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8378 "enter-stop just prior to entering any system call.  If the tracer restarts "
8379 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8380 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8381 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8382 "exit-stop; it happens I<after> syscall-exit-stop.)"
8383 msgstr ""
8384
8385 #. type: Plain text
8386 #: build/C/man2/ptrace.2:1213
8387 msgid ""
8388 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8389 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8390 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8391 "(2)  happened in another thread, and that thread is not traced by the same "
8392 "tracer; this situation is discussed later)."
8393 msgstr ""
8394
8395 #. type: Plain text
8396 #: build/C/man2/ptrace.2:1228
8397 msgid ""
8398 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8399 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8400 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8401 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8402 "0x80)>."
8403 msgstr ""
8404
8405 #. type: Plain text
8406 #: build/C/man2/ptrace.2:1234
8407 msgid ""
8408 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8409 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8410 msgstr ""
8411
8412 #. type: TP
8413 #: build/C/man2/ptrace.2:1234
8414 #, no-wrap
8415 msgid "I<si_code> E<lt>= 0"
8416 msgstr ""
8417
8418 #. type: Plain text
8419 #: build/C/man2/ptrace.2:1246
8420 msgid ""
8421 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8422 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8423 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8424 "asynchronous I/O request."
8425 msgstr ""
8426
8427 #. type: TP
8428 #: build/C/man2/ptrace.2:1246
8429 #, no-wrap
8430 msgid "I<si_code> == SI_KERNEL (0x80)"
8431 msgstr ""
8432
8433 #. type: Plain text
8434 #: build/C/man2/ptrace.2:1250
8435 msgid "B<SIGTRAP> was sent by the kernel."
8436 msgstr ""
8437
8438 #. type: TP
8439 #: build/C/man2/ptrace.2:1250
8440 #, no-wrap
8441 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8442 msgstr ""
8443
8444 #. type: Plain text
8445 #: build/C/man2/ptrace.2:1253
8446 msgid "This is a syscall-stop."
8447 msgstr ""
8448
8449 #. type: Plain text
8450 #: build/C/man2/ptrace.2:1258
8451 msgid ""
8452 "However, syscall-stops happen very often (twice per system call), and "
8453 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8454 "expensive."
8455 msgstr ""
8456
8457 #. type: Plain text
8458 #: build/C/man2/ptrace.2:1281
8459 msgid ""
8460 "Some architectures allow the cases to be distinguished by examining "
8461 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8462 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8463 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8464 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8465 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8466 "and can be detected this way.  But such detection is fragile and is best "
8467 "avoided."
8468 msgstr ""
8469
8470 #. type: Plain text
8471 #: build/C/man2/ptrace.2:1287
8472 msgid ""
8473 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8474 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8475 "reliable and does not incur a performance penalty."
8476 msgstr ""
8477
8478 #. type: Plain text
8479 #: build/C/man2/ptrace.2:1298
8480 msgid ""
8481 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8482 "other by the tracer.  The tracer needs to keep track of the sequence of "
8483 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8484 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8485 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8486 "kinds of ptrace-stop can occur in between."
8487 msgstr ""
8488
8489 #. type: Plain text
8490 #: build/C/man2/ptrace.2:1303
8491 msgid ""
8492 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8493 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8494 msgstr ""
8495
8496 #. type: Plain text
8497 #: build/C/man2/ptrace.2:1315
8498 msgid ""
8499 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8500 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8501 msgstr ""
8502
8503 #. type: SS
8504 #: build/C/man2/ptrace.2:1315
8505 #, no-wrap
8506 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8507 msgstr ""
8508
8509 #
8510 #.  FIXME
8511 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8512 #.  PTRACE_SYSEMU_SINGLESTEP
8513 #. type: Plain text
8514 #: build/C/man2/ptrace.2:1321
8515 msgid "[Details of these kinds of stops are yet to be documented.]"
8516 msgstr ""
8517
8518 #. type: SS
8519 #: build/C/man2/ptrace.2:1321
8520 #, no-wrap
8521 msgid "Informational and restarting ptrace commands"
8522 msgstr ""
8523
8524 #. type: Plain text
8525 #: build/C/man2/ptrace.2:1331
8526 msgid ""
8527 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8528 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8529 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8530 msgstr ""
8531
8532 #. type: Plain text
8533 #: build/C/man2/ptrace.2:1336
8534 msgid ""
8535 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8536 "tracee using informational commands.  These commands leave the tracee in "
8537 "ptrace-stopped state:"
8538 msgstr ""
8539
8540 #. type: Plain text
8541 #: build/C/man2/ptrace.2:1348
8542 #, no-wrap
8543 msgid ""
8544 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8545 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8546 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8547 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8548 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8549 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8550 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8551 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8552 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8553 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8554 msgstr ""
8555
8556 #. type: Plain text
8557 #: build/C/man2/ptrace.2:1360
8558 msgid ""
8559 "Note that some errors are not reported.  For example, setting signal "
8560 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8561 "call may succeed (return 0 and not set I<errno>); querying "
8562 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8563 "ptrace-stop is not documented as returning a meaningful event message."
8564 msgstr ""
8565
8566 #. type: Plain text
8567 #: build/C/man2/ptrace.2:1362
8568 msgid "The call"
8569 msgstr ""
8570
8571 #. type: Plain text
8572 #: build/C/man2/ptrace.2:1364
8573 #, no-wrap
8574 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8575 msgstr ""
8576
8577 #. type: Plain text
8578 #: build/C/man2/ptrace.2:1373
8579 msgid ""
8580 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8581 "inherited by new tracees created and \"auto-attached\" via active "
8582 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8583 "options."
8584 msgstr ""
8585
8586 #. type: Plain text
8587 #: build/C/man2/ptrace.2:1376
8588 msgid ""
8589 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8590 "the form:"
8591 msgstr ""
8592
8593 #. type: Plain text
8594 #: build/C/man2/ptrace.2:1378
8595 #, no-wrap
8596 msgid "    ptrace(cmd, pid, 0, sig);\n"
8597 msgstr ""
8598
8599 #. type: Plain text
8600 #: build/C/man2/ptrace.2:1399
8601 msgid ""
8602 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8603 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8604 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8605 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8606 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8607 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8608 msgstr ""
8609
8610 #. type: SS
8611 #: build/C/man2/ptrace.2:1399
8612 #, no-wrap
8613 msgid "Attaching and detaching"
8614 msgstr ""
8615
8616 #. type: Plain text
8617 #: build/C/man2/ptrace.2:1401
8618 msgid "A thread can be attached to the tracer using the call"
8619 msgstr ""
8620
8621 #. type: Plain text
8622 #: build/C/man2/ptrace.2:1403
8623 #, no-wrap
8624 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8625 msgstr ""
8626
8627 #. type: Plain text
8628 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1895
8629 msgid "or"
8630 msgstr ""
8631
8632 #. type: Plain text
8633 #: build/C/man2/ptrace.2:1407
8634 #, no-wrap
8635 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8636 msgstr ""
8637
8638 #
8639 #.  FIXME: Describe how to attach to a thread which is already
8640 #.         group-stopped.
8641 #. type: Plain text
8642 #: build/C/man2/ptrace.2:1432
8643 msgid ""
8644 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8645 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8646 "signals are concurrently sent to this thread during attach, the tracer may "
8647 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8648 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8649 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8650 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8651 "B<SIGSTOP> may be lost."
8652 msgstr ""
8653
8654 #. type: Plain text
8655 #: build/C/man2/ptrace.2:1439
8656 msgid ""
8657 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8658 "may cause a stray B<EINTR> return from the currently executing system call "
8659 "in the tracee, as described in the \"Signal injection and suppression\" "
8660 "section."
8661 msgstr ""
8662
8663 #. type: Plain text
8664 #: build/C/man2/ptrace.2:1451
8665 msgid ""
8666 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8667 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
8668 "after attach (or at any other time) without sending it any signals, use "
8669 "B<PTRACE_INTERRUPT> command."
8670 msgstr ""
8671
8672 #. type: Plain text
8673 #: build/C/man2/ptrace.2:1453
8674 msgid "The request"
8675 msgstr ""
8676
8677 #. type: Plain text
8678 #: build/C/man2/ptrace.2:1455
8679 #, no-wrap
8680 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8681 msgstr ""
8682
8683 #. type: Plain text
8684 #: build/C/man2/ptrace.2:1461
8685 msgid ""
8686 "turns the calling thread into a tracee.  The thread continues to run "
8687 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8688 "B<PTRACE_TRACEME> with"
8689 msgstr ""
8690
8691 #. type: Plain text
8692 #: build/C/man2/ptrace.2:1463
8693 #, no-wrap
8694 msgid "    raise(SIGSTOP);\n"
8695 msgstr ""
8696
8697 #. type: Plain text
8698 #: build/C/man2/ptrace.2:1466
8699 msgid ""
8700 "and allow the parent (which is our tracer now) to observe our signal-"
8701 "delivery-stop."
8702 msgstr ""
8703
8704 #. type: Plain text
8705 #: build/C/man2/ptrace.2:1490
8706 msgid ""
8707 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8708 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8709 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8710 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8711 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8712 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8713 "them to enter signal-delivery-stop after they exit the system call which "
8714 "created them."
8715 msgstr ""
8716
8717 #. type: Plain text
8718 #: build/C/man2/ptrace.2:1492
8719 msgid "Detaching of the tracee is performed by:"
8720 msgstr ""
8721
8722 #. type: Plain text
8723 #: build/C/man2/ptrace.2:1494
8724 #, no-wrap
8725 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8726 msgstr ""
8727
8728 #. type: Plain text
8729 #: build/C/man2/ptrace.2:1502
8730 msgid ""
8731 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8732 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8733 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8734 msgstr ""
8735
8736 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8737 #.         doesn't run, but continues to wait for SIGCONT.
8738 #. type: Plain text
8739 #: build/C/man2/ptrace.2:1526
8740 msgid ""
8741 "If the tracee is running when the tracer wants to detach it, the usual "
8742 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8743 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8744 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8745 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8746 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8747 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8748 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8749 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8750 msgstr ""
8751
8752 #. type: Plain text
8753 #: build/C/man2/ptrace.2:1534
8754 msgid ""
8755 "If the tracer dies, all tracees are automatically detached and restarted, "
8756 "unless they were in group-stop.  Handling of restart from group-stop is "
8757 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8758 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8759 "stop, the pending signal is injected."
8760 msgstr ""
8761
8762 #. type: SS
8763 #: build/C/man2/ptrace.2:1534
8764 #, no-wrap
8765 msgid "execve(2) under ptrace"
8766 msgstr ""
8767
8768 #
8769 #.  clone(2) CLONE_THREAD says:
8770 #.      If  any  of the threads in a thread group performs an execve(2),
8771 #.      then all threads other than the thread group leader are terminated,
8772 #.      and the new program is executed in the thread group leader.
8773 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8774 #. type: Plain text
8775 #: build/C/man2/ptrace.2:1553
8776 msgid ""
8777 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8778 "destroys all other threads in the process, and resets the thread ID of the "
8779 "execing thread to the thread group ID (process ID).  (Or, to put things "
8780 "another way, when a multithreaded process does an B<execve>(2), at "
8781 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8782 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8783 "This resetting of the thread ID looks very confusing to tracers:"
8784 msgstr ""
8785
8786 #. type: Plain text
8787 #: build/C/man2/ptrace.2:1563
8788 msgid ""
8789 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8790 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8791 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8792 "exit code 0."
8793 msgstr ""
8794
8795 #. type: Plain text
8796 #: build/C/man2/ptrace.2:1571
8797 msgid ""
8798 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8799 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8800 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8801 "ID is reset to be the same as its process ID, which is the same as the "
8802 "thread group leader's thread ID."
8803 msgstr ""
8804
8805 #. type: Plain text
8806 #: build/C/man2/ptrace.2:1577
8807 msgid ""
8808 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8809 "option was turned on."
8810 msgstr ""
8811
8812 #. type: Plain text
8813 #: build/C/man2/ptrace.2:1598
8814 msgid ""
8815 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8816 "this time, it appears to the tracer that the dead thread leader \"reappears "
8817 "from nowhere\".  (Note: the thread group leader does not report death via "
8818 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8819 "eliminates the possibility that the tracer will see it dying and then "
8820 "reappearing.)  If the thread group leader was still alive, for the tracer "
8821 "this may look as if thread group leader returns from a different system call "
8822 "than it entered, or even \"returned from a system call even though it was "
8823 "not in any system call\".  If the thread group leader was not traced (or was "
8824 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8825 "if it has become a tracee of the tracer of the execing tracee."
8826 msgstr ""
8827
8828 #. type: Plain text
8829 #: build/C/man2/ptrace.2:1601
8830 msgid ""
8831 "All of the above effects are the artifacts of the thread ID change in the "
8832 "tracee."
8833 msgstr ""
8834
8835 #. type: Plain text
8836 #: build/C/man2/ptrace.2:1621
8837 msgid ""
8838 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8839 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8840 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8841 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8842 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8843 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8844 msgstr ""
8845
8846 #. type: Plain text
8847 #: build/C/man2/ptrace.2:1627
8848 msgid ""
8849 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8850 "guaranteed that except this tracee and the thread group leader, no other "
8851 "threads from the process are alive."
8852 msgstr ""
8853
8854 #. type: Plain text
8855 #: build/C/man2/ptrace.2:1635
8856 msgid ""
8857 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8858 "clean up all its internal data structures describing the threads of this "
8859 "process, and retain only one data structure\\(emone which describes the "
8860 "single still running tracee, with"
8861 msgstr ""
8862
8863 #. type: Plain text
8864 #: build/C/man2/ptrace.2:1637
8865 #, no-wrap
8866 msgid "    thread ID == thread group ID == process ID.\n"
8867 msgstr ""
8868
8869 #. type: Plain text
8870 #: build/C/man2/ptrace.2:1641
8871 msgid "Example: two threads call B<execve>(2)  at the same time:"
8872 msgstr ""
8873
8874 #. type: Plain text
8875 #: build/C/man2/ptrace.2:1652
8876 #, no-wrap
8877 msgid ""
8878 "*** we get syscall-enter-stop in thread 1: **\n"
8879 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8880 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8881 "*** we get syscall-enter-stop in thread 2: **\n"
8882 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8883 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8884 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8885 "*** we get syscall-exit-stop for PID0: **\n"
8886 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8887 msgstr ""
8888
8889 #. type: Plain text
8890 #: build/C/man2/ptrace.2:1675
8891 msgid ""
8892 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8893 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8894 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8895 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8896 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8897 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8898 "delivered (much) later."
8899 msgstr ""
8900
8901 #. type: Plain text
8902 #: build/C/man2/ptrace.2:1694
8903 msgid ""
8904 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
8905 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
8906 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
8907 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
8908 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
8909 "B<SIGTRAP> is the recommended approach."
8910 msgstr ""
8911
8912 #. type: SS
8913 #: build/C/man2/ptrace.2:1694
8914 #, no-wrap
8915 msgid "Real parent"
8916 msgstr ""
8917
8918 #. type: Plain text
8919 #: build/C/man2/ptrace.2:1701
8920 msgid ""
8921 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
8922 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
8923 "receiving several kinds of B<waitpid>(2)  notifications when the child "
8924 "process is traced by some other process."
8925 msgstr ""
8926
8927 #. type: Plain text
8928 #: build/C/man2/ptrace.2:1704
8929 msgid ""
8930 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
8931 "exist; see BUGS below."
8932 msgstr ""
8933
8934 #. type: Plain text
8935 #: build/C/man2/ptrace.2:1706
8936 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
8937 msgstr ""
8938
8939 #. type: Plain text
8940 #: build/C/man2/ptrace.2:1714
8941 msgid ""
8942 "exit/death by signal is reported first to the tracer, then, when the tracer "
8943 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
8944 "only when the whole multithreaded process exits).  If the tracer and the "
8945 "real parent are the same process, the report is sent only once."
8946 msgstr ""
8947
8948 #. type: Plain text
8949 #: build/C/man2/ptrace.2:1728
8950 #, fuzzy
8951 #| msgid ""
8952 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
8953 #| "other requests return zero.  On error, all requests return -1, and "
8954 #| "I<errno> is set appropriately.  Since the value returned by a successful "
8955 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
8956 #| "such requests to determine whether or not an error occurred."
8957 msgid ""
8958 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
8959 "requests return zero.  On error, all requests return -1, and I<errno> is set "
8960 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
8961 "request may be -1, the caller must clear I<errno> before the call, and then "
8962 "check it afterward to determine whether or not an error occurred."
8963 msgstr ""
8964 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
8965 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
8966 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
8967 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
8968 "なければならない。"
8969
8970 #. type: Plain text
8971 #: build/C/man2/ptrace.2:1732
8972 msgid ""
8973 "(i386 only) There was an error with allocating or freeing a debug register."
8974 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
8975
8976 #. type: Plain text
8977 #: build/C/man2/ptrace.2:1743
8978 #, fuzzy
8979 #| msgid ""
8980 #| "There was an attempt to read from or write to an invalid area in the "
8981 #| "parent's or child's memory, probably because the area wasn't mapped or "
8982 #| "accessible.  Unfortunately, under Linux, different variations of this "
8983 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
8984 msgid ""
8985 "There was an attempt to read from or write to an invalid area in the "
8986 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
8987 "accessible.  Unfortunately, under Linux, different variations of this fault "
8988 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
8989 msgstr ""
8990 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
8991 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
8992 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
8993 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
8994
8995 #. type: Plain text
8996 #: build/C/man2/ptrace.2:1746
8997 msgid "An attempt was made to set an invalid option."
8998 msgstr "不正なオプションを設定しようとした。"
8999
9000 #. type: Plain text
9001 #: build/C/man2/ptrace.2:1753
9002 #, fuzzy
9003 #| msgid ""
9004 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9005 #| "invalid area in the parent's or child's memory, or there was a word-"
9006 #| "alignment violation, or an invalid signal was specified during a restart "
9007 #| "request."
9008 msgid ""
9009 "I<request> is invalid, or an attempt was made to read from or write to an "
9010 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9011 "alignment violation, or an invalid signal was specified during a restart "
9012 "request."
9013 msgstr ""
9014 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9015 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9016 "開の要求で不正なシグナルを指定した。"
9017
9018 #. type: Plain text
9019 #: build/C/man2/ptrace.2:1766
9020 #, fuzzy
9021 #| msgid ""
9022 #| "The specified process cannot be traced.  This could be because the parent "
9023 #| "has insufficient privileges (the required capability is "
9024 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9025 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9026 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9027 #| "being traced, or be B<init>(8)  (PID 1)."
9028 msgid ""
9029 "The specified process cannot be traced.  This could be because the tracer "
9030 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9031 "unprivileged processes cannot trace processes that they cannot send signals "
9032 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9033 "Alternatively, the process may already be being traced, or (on kernels "
9034 "before 2.6.26) be B<init>(8)  (PID 1)."
9035 msgstr ""
9036 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9037 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9038 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9039 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9040 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9041 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9042
9043 #. type: Plain text
9044 #: build/C/man2/ptrace.2:1771
9045 #, fuzzy
9046 #| msgid ""
9047 #| "The specified process does not exist, or is not currently being traced by "
9048 #| "the caller, or is not stopped (for requests that require that)."
9049 msgid ""
9050 "The specified process does not exist, or is not currently being traced by "
9051 "the caller, or is not stopped (for requests that require a stopped tracee)."
9052 msgstr ""
9053 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9054 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9055 "ない (停止していることが必要な要求の場合)。"
9056
9057 #. type: Plain text
9058 #: build/C/man2/ptrace.2:1773
9059 msgid "SVr4, 4.3BSD."
9060 msgstr "SVr4, 4.3BSD."
9061
9062 #. type: Plain text
9063 #: build/C/man2/ptrace.2:1788
9064 #, fuzzy
9065 #| msgid ""
9066 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9067 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9068 #| "function with only the I<request> argument fixed.  This means that "
9069 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9070 #| "undocumented B<gcc>(1)  behavior."
9071 msgid ""
9072 "Although arguments to B<ptrace>()  are interpreted according to the "
9073 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9074 "function with only the I<request> argument fixed.  It is recommended to "
9075 "always supply four arguments, even if the requested operation does not use "
9076 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9077 msgstr ""
9078 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9079 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9080 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9081 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9082 "になる。"
9083
9084 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9085 #. type: Plain text
9086 #: build/C/man2/ptrace.2:1793
9087 #, fuzzy
9088 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9089 msgid ""
9090 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9091 "be traced."
9092 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9093
9094 #.  See http://lkml.org/lkml/2008/5/8/375
9095 #. type: Plain text
9096 #: build/C/man2/ptrace.2:1800
9097 #, fuzzy
9098 #| msgid ""
9099 #| "The layout of the contents of memory and the USER area are quite OS- and "
9100 #| "architecture-specific.  The offset supplied, and the data returned, might "
9101 #| "not entirely match with the definition of I<struct user>."
9102 msgid ""
9103 "The layout of the contents of memory and the USER area are quite operating-"
9104 "system- and architecture-specific.  The offset supplied, and the data "
9105 "returned, might not entirely match with the definition of I<struct user>."
9106 msgstr ""
9107 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9108 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9109 "に一致しないこともありえる。"
9110
9111 #. type: Plain text
9112 #: build/C/man2/ptrace.2:1803
9113 #, fuzzy
9114 #| msgid ""
9115 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9116 #| "Linux it is 32 bits, etc.)."
9117 msgid ""
9118 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9119 "for 32-bit Linux it is 32 bits)."
9120 msgstr ""
9121 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9122 "では 32 ビットである、など。)"
9123
9124 #. type: Plain text
9125 #: build/C/man2/ptrace.2:1811
9126 #, fuzzy
9127 #| msgid ""
9128 #| "This page documents the way the B<ptrace>()  call works currently in "
9129 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9130 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9131 msgid ""
9132 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9133 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9134 "of B<ptrace>()  is highly specific to the operating system and architecture."
9135 msgstr ""
9136 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9137 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9138 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9139
9140 #. type: Plain text
9141 #: build/C/man2/ptrace.2:1822
9142 #, fuzzy
9143 #| msgid ""
9144 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9145 #| "different value than the one for 2.4.  This leads to applications "
9146 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9147 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9148 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9149 msgid ""
9150 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9151 "different value than the one for 2.4.  This leads to applications compiled "
9152 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9153 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9154 "that is defined."
9155 msgstr ""
9156 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9157 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9158 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9159 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9160 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9161
9162 #. type: Plain text
9163 #: build/C/man2/ptrace.2:1825
9164 msgid ""
9165 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9166 "Last confirmed on 2.6.38.6."
9167 msgstr ""
9168
9169 #.  Note from Denys Vlasenko:
9170 #.      Here "exits" means any kind of death - _exit, exit_group,
9171 #.      signal death. Signal death and exit_group cases are trivial,
9172 #.      though: since signal death and exit_group kill all other threads
9173 #.      too, "until all other threads exit" thing happens rather soon
9174 #.      in these cases. Therefore, only _exit presents observably
9175 #.      puzzling behavior to ptrace users: thread leader _exit's,
9176 #.      but WIFEXITED isn't reported! We are trying to explain here
9177 #.      why it is so.
9178 #.   FIXME: ^^^ need to test/verify this scenario
9179 #. type: Plain text
9180 #: build/C/man2/ptrace.2:1856
9181 msgid ""
9182 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9183 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9184 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9185 "threads exit.  As explained above, if one of other threads calls B<execve>"
9186 "(2), the death of the thread group leader will I<never> be reported.  If the "
9187 "execed thread is not traced by this tracer, the tracer will never know that "
9188 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9189 "thread group leader instead of restarting it in this case.  Last confirmed "
9190 "on 2.6.38.6."
9191 msgstr ""
9192
9193 #. type: Plain text
9194 #: build/C/man2/ptrace.2:1866
9195 msgid ""
9196 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9197 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9198 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9199 "2.6.38.6."
9200 msgstr ""
9201
9202 #. type: Plain text
9203 #: build/C/man2/ptrace.2:1884
9204 msgid ""
9205 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9206 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9207 "is usually done by debuggers on every attach, in order to not introduce a "
9208 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9209 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9210 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9211 "that when you attach to a quiescent process with the command"
9212 msgstr ""
9213
9214 #. type: Plain text
9215 #: build/C/man2/ptrace.2:1886
9216 #, no-wrap
9217 msgid "    strace -p E<lt>process-IDE<gt>\n"
9218 msgstr ""
9219
9220 #. type: Plain text
9221 #: build/C/man2/ptrace.2:1889
9222 msgid "then, instead of the usual and expected one-line output such as"
9223 msgstr ""
9224
9225 #. type: Plain text
9226 #: build/C/man2/ptrace.2:1892
9227 #, no-wrap
9228 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9229 msgstr ""
9230
9231 #. type: Plain text
9232 #: build/C/man2/ptrace.2:1898
9233 #, no-wrap
9234 msgid "    select(6, [5], NULL, [5], NULL_\n"
9235 msgstr ""
9236
9237 #. type: Plain text
9238 #: build/C/man2/ptrace.2:1902
9239 msgid ""
9240 "('_' denotes the cursor position), you observe more than one line.  For "
9241 "example:"
9242 msgstr ""
9243
9244 #. type: Plain text
9245 #: build/C/man2/ptrace.2:1906
9246 #, no-wrap
9247 msgid ""
9248 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9249 "    epoll_wait(4,_\n"
9250 msgstr ""
9251
9252 #. type: Plain text
9253 #: build/C/man2/ptrace.2:1927
9254 msgid ""
9255 "What is not visible here is that the process was blocked in B<epoll_wait>"
9256 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9257 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9258 "case, the program reacted to B<EINTR> by checking the current time, and then "
9259 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9260 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9261 "(1)  attach.)"
9262 msgstr ""
9263
9264 #. type: Plain text
9265 #: build/C/man2/ptrace.2:1941
9266 msgid ""
9267 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9268 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9269 "B<capabilities>(7), B<signal>(7)"
9270 msgstr ""
9271 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9272 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9273 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9274
9275 #. type: TH
9276 #: build/C/man2/quotactl.2:27
9277 #, no-wrap
9278 msgid "QUOTACTL"
9279 msgstr "QUOTACTL"
9280
9281 #. type: TH
9282 #: build/C/man2/quotactl.2:27
9283 #, no-wrap
9284 msgid "2010-06-16"
9285 msgstr "2010-06-16"
9286
9287 #. type: Plain text
9288 #: build/C/man2/quotactl.2:30
9289 msgid "quotactl - manipulate disk quotas"
9290 msgstr "quotactl - ディスク quota を操作する"
9291
9292 #. type: Plain text
9293 #: build/C/man2/quotactl.2:34
9294 #, no-wrap
9295 msgid ""
9296 "B<#include E<lt>sys/quota.hE<gt>>\n"
9297 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9298 msgstr ""
9299 "B<#include E<lt>sys/quota.hE<gt>>\n"
9300 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9301
9302 #. type: Plain text
9303 #: build/C/man2/quotactl.2:37
9304 #, no-wrap
9305 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9306 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9307
9308 #. type: Plain text
9309 #: build/C/man2/quotactl.2:49
9310 #, fuzzy
9311 #| msgid ""
9312 #| "The quota system defines for each user and/or group a soft limit and a "
9313 #| "hard limit bounding the amount of disk space that can be used on a given "
9314 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9315 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9316 #| "soft limit for more than one week (by default)  at a time: after this "
9317 #| "week the soft limit counts as hard limit."
9318 msgid ""
9319 "The quota system can be used to set per-user and per-group limits on the "
9320 "amount of disk space used on a file system.  For each user and/or group, a "
9321 "soft limit and a hard limit can be set for each file system.  The hard limit "
9322 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9323 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9324 "week (by default) at a time; after this time, the soft limit counts as a "
9325 "hard limit."
9326 msgstr ""
9327 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9328 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9329 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9330 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9331 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9332 "過した後はハード・リミットを超過したと みなされる。"
9333
9334 #. type: Plain text
9335 #: build/C/man2/quotactl.2:74
9336 #, fuzzy
9337 #| msgid ""
9338 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9339 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9340 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9341 #| "respectively), and I<subcmd> is described below."
9342 msgid ""
9343 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9344 "indicates a command to be applied to the user or group ID specified in "
9345 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9346 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9347 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9348 msgstr ""
9349 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9350 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9351 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9352 "を指定する。 I<subcmd> は以下で説明する。"
9353
9354 #. type: Plain text
9355 #: build/C/man2/quotactl.2:79
9356 msgid ""
9357 "The I<special> argument is a pointer to a null-terminated string containing "
9358 "the pathname of the (mounted) block special device for the file system being "
9359 "manipulated."
9360 msgstr ""
9361
9362 #. type: Plain text
9363 #: build/C/man2/quotactl.2:87
9364 msgid ""
9365 "The I<addr> argument is the address of an optional, command-specific, data "
9366 "structure that is copied in or out of the system.  The interpretation of "
9367 "I<addr> is given with each command below."
9368 msgstr ""
9369
9370 #. type: Plain text
9371 #: build/C/man2/quotactl.2:91
9372 msgid "The I<subcmd> value is one of the following:"
9373 msgstr "I<subcmd> の値は以下のいずれかである"
9374
9375 #. type: TP
9376 #: build/C/man2/quotactl.2:91
9377 #, no-wrap
9378 msgid "B<Q_QUOTAON>"
9379 msgstr "B<Q_QUOTAON>"
9380
9381 #. type: Plain text
9382 #: build/C/man2/quotactl.2:98
9383 msgid ""
9384 "Turn on quotas for a file system.  The I<id> argument is the identification "
9385 "number of the quota format to be used.  Currently, there are three supported "
9386 "quota formats:"
9387 msgstr ""
9388
9389 #. type: TP
9390 #: build/C/man2/quotactl.2:99
9391 #, no-wrap
9392 msgid "B<QFMT_VFS_OLD>"
9393 msgstr ""
9394
9395 #. type: Plain text
9396 #: build/C/man2/quotactl.2:102
9397 msgid "The original quota format."
9398 msgstr ""
9399
9400 #. type: TP
9401 #: build/C/man2/quotactl.2:102
9402 #, no-wrap
9403 msgid "B<QFMT_VFS_V0>"
9404 msgstr ""
9405
9406 #. type: Plain text
9407 #: build/C/man2/quotactl.2:106
9408 msgid ""
9409 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9410 "quota limits up to 2^42 bytes and 2^32 inodes."
9411 msgstr ""
9412
9413 #. type: TP
9414 #: build/C/man2/quotactl.2:106
9415 #, no-wrap
9416 msgid "B<QFMT_VFS_V1>"
9417 msgstr ""
9418
9419 #. type: Plain text
9420 #: build/C/man2/quotactl.2:110
9421 msgid ""
9422 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9423 "bytes and 2^64 inodes."
9424 msgstr ""
9425
9426 #. type: Plain text
9427 #: build/C/man2/quotactl.2:121
9428 msgid ""
9429 "The I<addr> argument points to the pathname of a file containing the quotas "
9430 "for the file system.  The quota file must exist; it is normally created with "
9431 "the B<quotacheck>(8)  program.  This operation requires privilege "
9432 "(B<CAP_SYS_ADMIN>)."
9433 msgstr ""
9434
9435 #. type: TP
9436 #: build/C/man2/quotactl.2:121
9437 #, no-wrap
9438 msgid "B<Q_QUOTAOFF>"
9439 msgstr "B<Q_QUOTAOFF>"
9440
9441 #. type: Plain text
9442 #: build/C/man2/quotactl.2:131
9443 msgid ""
9444 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9445 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9446 msgstr ""
9447
9448 #. type: TP
9449 #: build/C/man2/quotactl.2:131
9450 #, no-wrap
9451 msgid "B<Q_GETQUOTA>"
9452 msgstr "B<Q_GETQUOTA>"
9453
9454 #. type: Plain text
9455 #: build/C/man2/quotactl.2:142
9456 #, fuzzy
9457 #| msgid ""
9458 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9459 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9460 msgid ""
9461 "Get disk quota limits and current usage for user or group I<id>.  The "
9462 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9463 "quota.hE<gt>> as follows:"
9464 msgstr ""
9465 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9466 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9467
9468 #. type: Plain text
9469 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9470 #, no-wrap
9471 msgid ""
9472 "/* uint64_t is an unsigned 64-bit integer;\n"
9473 "   uint32_t is an unsigned 32-bit integer */\n"
9474 msgstr ""
9475
9476 #. type: Plain text
9477 #: build/C/man2/quotactl.2:167
9478 #, no-wrap
9479 msgid ""
9480 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9481 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9482 "                                  quota blocks alloc */\n"
9483 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9484 "                                  disk quota blocks */\n"
9485 "    uint64_t dqb_curspace;     /* current quota block\n"
9486 "                                  count */\n"
9487 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9488 "                                  allocated inodes */\n"
9489 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9490 "    uint64_t dqb_curinodes;    /* current number of\n"
9491 "                                  allocated inodes */\n"
9492 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9493 "                                  disk use */\n"
9494 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9495 "                                  files */\n"
9496 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9497 "                                  constants */\n"
9498 "};\n"
9499 msgstr ""
9500
9501 #. type: Plain text
9502 #: build/C/man2/quotactl.2:170
9503 #, no-wrap
9504 msgid ""
9505 "/* Flags in dqb_valid that indicate which fields in\n"
9506 "   dqblk structure are valid. */\n"
9507 msgstr ""
9508
9509 #. type: Plain text
9510 #: build/C/man2/quotactl.2:181
9511 #, no-wrap
9512 msgid ""
9513 "#define QIF_BLIMITS   1\n"
9514 "#define QIF_SPACE     2\n"
9515 "#define QIF_ILIMITS   4\n"
9516 "#define QIF_INODES    8\n"
9517 "#define QIF_BTIME     16\n"
9518 "#define QIF_ITIME     32\n"
9519 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9520 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9521 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9522 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9523 msgstr ""
9524
9525 #. type: Plain text
9526 #: build/C/man2/quotactl.2:198
9527 msgid ""
9528 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9529 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9530 "entries of the I<dqblk> structure and marks them as valid in the "
9531 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9532 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9533 msgstr ""
9534
9535 #. type: TP
9536 #: build/C/man2/quotactl.2:198
9537 #, no-wrap
9538 msgid "B<Q_SETQUOTA>"
9539 msgstr "B<Q_SETQUOTA>"
9540
9541 #. type: Plain text
9542 #: build/C/man2/quotactl.2:218
9543 msgid ""
9544 "Set quota information for user or group I<id>, using the information "
9545 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9546 "field of the I<dqblk> structure indicates which entries in the structure "
9547 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9548 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9549 "requires privilege (B<CAP_SYS_ADMIN>)."
9550 msgstr ""
9551
9552 #. type: TP
9553 #: build/C/man2/quotactl.2:218
9554 #, no-wrap
9555 msgid "B<Q_GETINFO>"
9556 msgstr "B<Q_GETINFO>"
9557
9558 #. type: Plain text
9559 #: build/C/man2/quotactl.2:229
9560 #, fuzzy
9561 #| msgid ""
9562 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9563 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9564 msgid ""
9565 "Get information (like grace times) about quotafile.  The I<addr> argument "
9566 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9567 "I<E<lt>sys/quota.hE<gt>> as follows:"
9568 msgstr ""
9569 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9570 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9571
9572 #. type: Plain text
9573 #: build/C/man2/quotactl.2:238
9574 #, no-wrap
9575 msgid ""
9576 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9577 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9578 "                               becomes hard limit */\n"
9579 msgstr ""
9580
9581 #. type: Plain text
9582 #: build/C/man2/quotactl.2:245
9583 #, no-wrap
9584 msgid ""
9585 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9586 "                               becomes hard limit */\n"
9587 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9588 "                               (DQF_*) */\n"
9589 "    uint32_t dqi_valid;\n"
9590 "};\n"
9591 msgstr ""
9592
9593 #. type: Plain text
9594 #: build/C/man2/quotactl.2:247
9595 #, no-wrap
9596 msgid "/* Bits for dqi_flags */\n"
9597 msgstr ""
9598
9599 #. type: Plain text
9600 #: build/C/man2/quotactl.2:249
9601 #, no-wrap
9602 msgid "/* Quota format QFMT_VFS_OLD */\n"
9603 msgstr ""
9604
9605 #. type: Plain text
9606 #: build/C/man2/quotactl.2:251
9607 #, no-wrap
9608 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9609 msgstr ""
9610
9611 #. type: Plain text
9612 #: build/C/man2/quotactl.2:253
9613 #, no-wrap
9614 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9615 msgstr ""
9616
9617 #. type: Plain text
9618 #: build/C/man2/quotactl.2:256
9619 #, no-wrap
9620 msgid ""
9621 "/* Flags in dqi_valid that indicate which fields in\n"
9622 "   dqinfo structure are valid. */\n"
9623 msgstr ""
9624
9625 #. type: Plain text
9626 #: build/C/man2/quotactl.2:261
9627 #, no-wrap
9628 msgid ""
9629 "# define IIF_BGRACE\t1\n"
9630 "# define IIF_IGRACE\t2\n"
9631 "# define IIF_FLAGS\t4\n"
9632 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9633 msgstr ""
9634
9635 #. type: Plain text
9636 #: build/C/man2/quotactl.2:277
9637 msgid ""
9638 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9639 "the structure that are valid.  Currently, the kernel fills in all entries of "
9640 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9641 "field.  The I<id> argument is ignored."
9642 msgstr ""
9643
9644 #. type: TP
9645 #: build/C/man2/quotactl.2:277
9646 #, no-wrap
9647 msgid "B<Q_SETINFO>"
9648 msgstr "B<Q_SETINFO>"
9649
9650 #. type: Plain text
9651 #: build/C/man2/quotactl.2:301
9652 msgid ""
9653 "Set information about quotafile.  The I<addr> argument should be a pointer "
9654 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9655 "indicates the entries in the structure that have been set by the caller.  "
9656 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9657 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9658 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9659 msgstr ""
9660
9661 #. type: TP
9662 #: build/C/man2/quotactl.2:301
9663 #, no-wrap
9664 msgid "B<Q_GETFMT>"
9665 msgstr "B<Q_GETFMT>"
9666
9667 #. type: Plain text
9668 #: build/C/man2/quotactl.2:308
9669 msgid ""
9670 "Get quota format used on the specified file system.  The I<addr> argument "
9671 "should be a pointer to a 4-byte buffer where the format number will be "
9672 "stored."
9673 msgstr ""
9674
9675 #. type: TP
9676 #: build/C/man2/quotactl.2:308
9677 #, no-wrap
9678 msgid "B<Q_SYNC>"
9679 msgstr "B<Q_SYNC>"
9680
9681 #. type: Plain text
9682 #: build/C/man2/quotactl.2:319
9683 msgid ""
9684 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9685 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9686 "I<id> arguments are ignored."
9687 msgstr ""
9688
9689 #. type: TP
9690 #: build/C/man2/quotactl.2:319
9691 #, no-wrap
9692 msgid "B<Q_GETSTATS>"
9693 msgstr "B<Q_GETSTATS>"
9694
9695 #.  Q_GETSTATS was removed in kernel 2.4.22.
9696 #. type: Plain text
9697 #: build/C/man2/quotactl.2:339
9698 msgid ""
9699 "Get statistics and other generic information about the quota subsystem.  The "
9700 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9701 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9702 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9703 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9704 "the information instead."
9705 msgstr ""
9706
9707 #. type: Plain text
9708 #: build/C/man2/quotactl.2:342
9709 msgid ""
9710 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9711 "commands are bypassed and the following commands are used:"
9712 msgstr ""
9713
9714 #. type: TP
9715 #: build/C/man2/quotactl.2:342
9716 #, no-wrap
9717 msgid "B<Q_XQUOTAON>"
9718 msgstr "B<Q_XQUOTAON>"
9719
9720 #. type: Plain text
9721 #: build/C/man2/quotactl.2:363
9722 msgid ""
9723 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9724 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9725 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9726 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9727 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9728 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9729 "(B<CAP_SYS_ADMIN>)."
9730 msgstr ""
9731
9732 #. type: TP
9733 #: build/C/man2/quotactl.2:363
9734 #, no-wrap
9735 msgid "B<Q_XQUOTAOFF>"
9736 msgstr "B<Q_XQUOTAOFF>"
9737
9738 #. type: Plain text
9739 #: build/C/man2/quotactl.2:374
9740 msgid ""
9741 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9742 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9743 "accounting and/or limit enforcement need to be turned off.  This operation "
9744 "requires privilege (B<CAP_SYS_ADMIN>)."
9745 msgstr ""
9746
9747 #. type: TP
9748 #: build/C/man2/quotactl.2:374
9749 #, no-wrap
9750 msgid "B<Q_XGETQUOTA>"
9751 msgstr "B<Q_XGETQUOTA>"
9752
9753 #. type: Plain text
9754 #: build/C/man2/quotactl.2:388
9755 msgid ""
9756 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9757 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9758 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9759 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9760 "user."
9761 msgstr ""
9762
9763 #. type: TP
9764 #: build/C/man2/quotactl.2:388
9765 #, no-wrap
9766 msgid "B<Q_XSETQLIM>"
9767 msgstr "B<Q_XSETQLIM>"
9768
9769 #. type: Plain text
9770 #: build/C/man2/quotactl.2:400
9771 msgid ""
9772 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9773 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9774 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9775 msgstr ""
9776
9777 #. type: TP
9778 #: build/C/man2/quotactl.2:400
9779 #, no-wrap
9780 msgid "B<Q_XGETQSTAT>"
9781 msgstr "B<Q_XGETQSTAT>"
9782
9783 #. type: Plain text
9784 #: build/C/man2/quotactl.2:408
9785 msgid ""
9786 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9787 "quota information.  This is useful for finding out how much space is used to "
9788 "store quota information, and also to get quotaon/off status of a given local "
9789 "XFS file system."
9790 msgstr ""
9791
9792 #. type: TP
9793 #: build/C/man2/quotactl.2:408
9794 #, no-wrap
9795 msgid "B<Q_XQUOTARM>"
9796 msgstr "B<Q_XQUOTARM>"
9797
9798 #. type: Plain text
9799 #: build/C/man2/quotactl.2:412
9800 msgid ""
9801 "Free the disk space taken by disk quotas.  Quotas must have already been "
9802 "turned off."
9803 msgstr ""
9804
9805 #. type: Plain text
9806 #: build/C/man2/quotactl.2:419
9807 msgid ""
9808 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9809 "quota information to disk (in addition to the other file system metadata "
9810 "that it writes out)."
9811 msgstr ""
9812
9813 #. type: Plain text
9814 #: build/C/man2/quotactl.2:427
9815 msgid ""
9816 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9817 "is set to indicate the error."
9818 msgstr ""
9819 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9820 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9821
9822 #. type: Plain text
9823 #: build/C/man2/quotactl.2:434
9824 msgid "I<addr> or I<special> is invalid."
9825 msgstr ""
9826
9827 #. type: Plain text
9828 #: build/C/man2/quotactl.2:440
9829 msgid "I<cmd> or I<type> is invalid."
9830 msgstr ""
9831
9832 #. type: TP
9833 #: build/C/man2/quotactl.2:440
9834 #, no-wrap
9835 msgid "B<ENOENT>"
9836 msgstr "B<ENOENT>"
9837
9838 #. type: Plain text
9839 #: build/C/man2/quotactl.2:447
9840 msgid "The file specified by I<special> or I<addr> does not exist."
9841 msgstr ""
9842
9843 #. type: Plain text
9844 #: build/C/man2/quotactl.2:452
9845 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9846 msgstr ""
9847
9848 #. type: TP
9849 #: build/C/man2/quotactl.2:452
9850 #, no-wrap
9851 msgid "B<ENOTBLK>"
9852 msgstr "B<ENOTBLK>"
9853
9854 #. type: Plain text
9855 #: build/C/man2/quotactl.2:456
9856 msgid "I<special> is not a block device."
9857 msgstr "I<special> がブロックデバイスではない。"
9858
9859 #. type: Plain text
9860 #: build/C/man2/quotactl.2:461
9861 msgid ""
9862 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9863 "specified operation."
9864 msgstr ""
9865
9866 #. type: Plain text
9867 #: build/C/man2/quotactl.2:465
9868 msgid ""
9869 "No disk quota is found for the indicated user.  Quotas have not been turned "
9870 "on for this file system."
9871 msgstr ""
9872
9873 #. type: Plain text
9874 #: build/C/man2/quotactl.2:474
9875 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9876 msgstr ""
9877
9878 #. type: Plain text
9879 #: build/C/man2/quotactl.2:477
9880 msgid "Specified limits are out of range allowed by quota format."
9881 msgstr ""
9882
9883 #. type: Plain text
9884 #: build/C/man2/quotactl.2:486
9885 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9886 msgstr ""
9887
9888 #. type: Plain text
9889 #: build/C/man2/quotactl.2:495
9890 msgid ""
9891 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9892 "the quota file pointed to by I<addr> exists, but is not on the file system "
9893 "pointed to by I<special>."
9894 msgstr ""
9895
9896 #. type: Plain text
9897 #: build/C/man2/quotactl.2:501
9898 msgid ""
9899 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9900 msgstr ""
9901
9902 #. type: Plain text
9903 #: build/C/man2/quotactl.2:504
9904 msgid "The quota file is corrupted."
9905 msgstr "quota ファイルが壊れている。"
9906
9907 #. type: Plain text
9908 #: build/C/man2/quotactl.2:507
9909 msgid "Specified quota format was not found."
9910 msgstr ""
9911
9912 #. type: Plain text
9913 #: build/C/man2/quotactl.2:512
9914 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9915 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9916
9917 #. type: TH
9918 #: build/C/man2/sendfile.2:19
9919 #, no-wrap
9920 msgid "SENDFILE"
9921 msgstr "SENDFILE"
9922
9923 #. type: TH
9924 #: build/C/man2/sendfile.2:19
9925 #, no-wrap
9926 msgid "2011-09-14"
9927 msgstr "2011-09-14"
9928
9929 #. type: Plain text
9930 #: build/C/man2/sendfile.2:22
9931 msgid "sendfile - transfer data between file descriptors"
9932 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
9933
9934 #. type: Plain text
9935 #: build/C/man2/sendfile.2:24
9936 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
9937 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
9938
9939 #.  The below is too ugly. Comments about glibc versions belong
9940 #.  in the notes, not in the header.
9941 #.  .B #include <features.h>
9942 #.  .br
9943 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
9944 #.  .br
9945 #.  .B #include <sys/sendfile.h>
9946 #.  .br
9947 #.  #else
9948 #.  .br
9949 #.  .B #include <sys/types.h>
9950 #.  .br
9951 #.  .B /* No system prototype before glibc 2.1. */
9952 #.  .br
9953 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
9954 #.  .br
9955 #.  .B #endif
9956 #. type: Plain text
9957 #: build/C/man2/sendfile.2:47
9958 msgid ""
9959 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
9960 "size_t>I< count>B<);>"
9961 msgstr ""
9962 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
9963 "size_t>I< count>B<);>"
9964
9965 #. type: Plain text
9966 #: build/C/man2/sendfile.2:57
9967 msgid ""
9968 "B<sendfile>()  copies data between one file descriptor and another.  Because "
9969 "this copying is done within the kernel, B<sendfile>()  is more efficient "
9970 "than the combination of B<read>(2)  and B<write>(2), which would require "
9971 "transferring data to and from user space."
9972 msgstr ""
9973 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
9974 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
9975 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
9976 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
9977 "るからである。"
9978
9979 #. type: Plain text
9980 #: build/C/man2/sendfile.2:62
9981 msgid ""
9982 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
9983 "be a descriptor opened for writing."
9984 msgstr ""
9985 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
9986 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
9987
9988 #. type: Plain text
9989 #: build/C/man2/sendfile.2:83
9990 msgid ""
9991 "If I<offset> is not NULL, then it points to a variable holding the file "
9992 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
9993 "When B<sendfile>()  returns, this variable will be set to the offset of the "
9994 "byte following the last byte that was read.  If I<offset> is not NULL, then "
9995 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
9996 "otherwise the current file offset is adjusted to reflect the number of bytes "
9997 "read from I<in_fd>."
9998 msgstr ""
9999 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10000 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10001 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10002 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10003 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10004 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10005 "整する。"
10006
10007 #. type: Plain text
10008 #: build/C/man2/sendfile.2:90
10009 msgid ""
10010 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10011 "current file offset, and the file offset will be updated by the call."
10012 msgstr ""
10013 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10014 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10015
10016 #. type: Plain text
10017 #: build/C/man2/sendfile.2:93
10018 msgid "I<count> is the number of bytes to copy between the file descriptors."
10019 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10020
10021 #. type: Plain text
10022 #: build/C/man2/sendfile.2:100
10023 msgid ""
10024 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10025 "like operations (i.e., it cannot be a socket)."
10026 msgstr ""
10027 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10028 "な\n"
10029 "い (ソケットを指定することはできない)。"
10030
10031 #. type: Plain text
10032 #: build/C/man2/sendfile.2:108
10033 msgid ""
10034 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10035 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10036 "()  changes the file offset appropriately."
10037 msgstr ""
10038 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10039 "な\n"
10040 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10041 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10042
10043 #. type: Plain text
10044 #: build/C/man2/sendfile.2:115
10045 msgid ""
10046 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10047 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10048 msgstr ""
10049 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10050 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10051
10052 #. type: Plain text
10053 #: build/C/man2/sendfile.2:121
10054 msgid ""
10055 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10056 "block."
10057 msgstr ""
10058 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10059 "た。"
10060
10061 #. type: TP
10062 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10063 #: build/C/man2/vmsplice.2:123
10064 #, no-wrap
10065 msgid "B<EBADF>"
10066 msgstr "B<EBADF>"
10067
10068 #. type: Plain text
10069 #: build/C/man2/sendfile.2:125
10070 msgid ""
10071 "The input file was not opened for reading or the output file was not opened "
10072 "for writing."
10073 msgstr ""
10074 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10075 "のためにオープンされていない。"
10076
10077 #. type: Plain text
10078 #: build/C/man2/sendfile.2:128
10079 msgid "Bad address."
10080 msgstr "アドレスがおかしい。"
10081
10082 #. type: Plain text
10083 #: build/C/man2/sendfile.2:134
10084 msgid ""
10085 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10086 "available for I<in_fd>."
10087 msgstr ""
10088 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10089 "が I<in_fd> では利用できない。"
10090
10091 #. type: Plain text
10092 #: build/C/man2/sendfile.2:138
10093 msgid "Unspecified error while reading from I<in_fd>."
10094 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10095
10096 #. type: Plain text
10097 #: build/C/man2/sendfile.2:142
10098 msgid "Insufficient memory to read from I<in_fd>."
10099 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10100
10101 #. type: Plain text
10102 #: build/C/man2/sendfile.2:148
10103 msgid ""
10104 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10105 "sendfile.hE<gt>> is present since glibc 2.1."
10106 msgstr ""
10107 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10108 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10109
10110 #. type: Plain text
10111 #: build/C/man2/sendfile.2:150
10112 msgid "Not specified in POSIX.1-2001, or other standards."
10113 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10114
10115 #. type: Plain text
10116 #: build/C/man2/sendfile.2:155
10117 msgid ""
10118 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10119 "prototypes.  It should not be used in portable programs."
10120 msgstr ""
10121 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10122 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10123
10124 #. type: Plain text
10125 #: build/C/man2/sendfile.2:165
10126 msgid ""
10127 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10128 "need to send some header data in front of the file contents, you will find "
10129 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10130 "minimize the number of packets and to tune performance."
10131 msgstr ""
10132 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10133 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10134 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10135 "いいだろう。"
10136
10137 #. type: Plain text
10138 #: build/C/man2/sendfile.2:171
10139 msgid ""
10140 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10141 "B<sendfile>()  changed the current offset of that file."
10142 msgstr ""
10143 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10144 "き、\n"
10145 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10146
10147 #. type: Plain text
10148 #: build/C/man2/sendfile.2:183
10149 msgid ""
10150 "The original Linux B<sendfile>()  system call was not designed to handle "
10151 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10152 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10153 "function transparently deals with the kernel differences."
10154 msgstr ""
10155 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10156 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10157 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10158 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10159
10160 #. type: Plain text
10161 #: build/C/man2/sendfile.2:192
10162 msgid ""
10163 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10164 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10165 msgstr ""
10166 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10167 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10168
10169 #. type: Plain text
10170 #: build/C/man2/sendfile.2:197
10171 msgid ""
10172 "The Linux-specific B<splice>(2)  call supports transferring data between "
10173 "arbitrary files (e.g., a pair of sockets)."
10174 msgstr ""
10175 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10176 "ソケット同士) でのデータ転送をサポートしている。"
10177
10178 #. type: Plain text
10179 #: build/C/man2/sendfile.2:202
10180 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10181 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10182
10183 #. type: TH
10184 #: build/C/man2/set_tid_address.2:25
10185 #, no-wrap
10186 msgid "SET_TID_ADDRESS"
10187 msgstr "SET_TID_ADDRESS"
10188
10189 #. type: TH
10190 #: build/C/man2/set_tid_address.2:25
10191 #, no-wrap
10192 msgid "2012-07-19"
10193 msgstr "2012-07-19"
10194
10195 #. type: Plain text
10196 #: build/C/man2/set_tid_address.2:28
10197 msgid "set_tid_address - set pointer to thread ID"
10198 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10199
10200 #. type: Plain text
10201 #: build/C/man2/set_tid_address.2:31
10202 #, no-wrap
10203 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10204 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10205
10206 #. type: Plain text
10207 #: build/C/man2/set_tid_address.2:33
10208 #, no-wrap
10209 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10210 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10211
10212 #. type: Plain text
10213 #: build/C/man2/set_tid_address.2:40
10214 msgid ""
10215 "For each process, the kernel maintains two attributes (addresses) called "
10216 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10217 "value NULL by default."
10218 msgstr ""
10219 "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
10220 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10221
10222 #. type: TP
10223 #: build/C/man2/set_tid_address.2:40
10224 #, no-wrap
10225 msgid "I<set_child_tid>"
10226 msgstr "I<set_child_tid>"
10227
10228 #. type: Plain text
10229 #: build/C/man2/set_tid_address.2:51
10230 msgid ""
10231 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10232 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10233 "that system call."
10234 msgstr ""
10235 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10236 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
10237 "で渡された値に設定される。"
10238
10239 #. type: Plain text
10240 #: build/C/man2/set_tid_address.2:56
10241 msgid ""
10242 "When I<set_child_tid> is set, the very first thing the new process does is "
10243 "writing its PID at this address."
10244 msgstr ""
10245 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10246 "のアドレスに自身の PID を書き込むことである。"
10247
10248 #. type: TP
10249 #: build/C/man2/set_tid_address.2:56
10250 #, no-wrap
10251 msgid "I<clear_child_tid>"
10252 msgstr "I<clear_child_tid>"
10253
10254 #. type: Plain text
10255 #: build/C/man2/set_tid_address.2:67
10256 msgid ""
10257 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10258 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10259 "of that system call."
10260 msgstr ""
10261 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
10262 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
10263 "き数で渡された値に設定される。"
10264
10265 #. type: Plain text
10266 #: build/C/man2/set_tid_address.2:74
10267 msgid ""
10268 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10269 "the calling process to I<tidptr>."
10270 msgstr ""
10271 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10272 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10273
10274 #. type: Plain text
10275 #: build/C/man2/set_tid_address.2:82
10276 msgid ""
10277 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10278 "process is sharing memory with other processes or threads, then 0 is written "
10279 "at the address specified in I<clear_child_tid> and the kernel performs the "
10280 "following operation:"
10281 msgstr "I<clear_child_tid> が NULL でないプロセスが終了すると、そのプロセスが他のプロセスまたはスレッドとメモリを共有していれば、 I<clear_child_tid> で指定されたアドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。"
10282
10283 #. type: Plain text
10284 #: build/C/man2/set_tid_address.2:84
10285 #, no-wrap
10286 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10287 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10288
10289 #. type: Plain text
10290 #: build/C/man2/set_tid_address.2:88
10291 msgid ""
10292 "The effect of this operation is to wake a single process that is performing "
10293 "a futex wait on the memory location.  Errors from the futex wake operation "
10294 "are ignored."
10295 msgstr "この処理の結果、このメモリアドレスに対する futex wait を実行しているプロセスを一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
10296
10297 #. type: Plain text
10298 #: build/C/man2/set_tid_address.2:91
10299 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10300 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10301
10302 #. type: Plain text
10303 #: build/C/man2/set_tid_address.2:94
10304 msgid "B<set_tid_address>()  always succeeds."
10305 msgstr "B<set_tid_address>()  は常に成功する。"
10306
10307 #. type: Plain text
10308 #: build/C/man2/set_tid_address.2:97
10309 msgid ""
10310 "This call is present since Linux 2.5.48.  Details as given here are valid "
10311 "since Linux 2.5.49."
10312 msgstr ""
10313 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10314 "2.5.49 以降で有効である。"
10315
10316 #. type: Plain text
10317 #: build/C/man2/set_tid_address.2:102
10318 msgid "B<clone>(2), B<futex>(2)"
10319 msgstr "B<clone>(2), B<futex>(2)"
10320
10321 #. type: TH
10322 #: build/C/man2/splice.2:26
10323 #, no-wrap
10324 msgid "SPLICE"
10325 msgstr "SPLICE"
10326
10327 #. type: TH
10328 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10329 #, no-wrap
10330 msgid "2012-05-04"
10331 msgstr "2012-05-04"
10332
10333 #. type: Plain text
10334 #: build/C/man2/splice.2:29
10335 msgid "splice - splice data to/from a pipe"
10336 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10337
10338 #. type: Plain text
10339 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10340 #, no-wrap
10341 msgid ""
10342 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10343 "B<#include E<lt>fcntl.hE<gt>>\n"
10344 msgstr ""
10345 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10346 "B<#include E<lt>fcntl.hE<gt>>\n"
10347
10348 #.  Return type was long before glibc 2.7
10349 #. type: Plain text
10350 #: build/C/man2/splice.2:38
10351 #, no-wrap
10352 msgid ""
10353 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10354 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10355 msgstr ""
10356 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10357 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10358
10359 #. type: Plain text
10360 #: build/C/man2/splice.2:50
10361 msgid ""
10362 "B<splice>()  moves data between two file descriptors without copying between "
10363 "kernel address space and user address space.  It transfers up to I<len> "
10364 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10365 "I<fd_out>, where one of the descriptors must refer to a pipe."
10366 msgstr ""
10367 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10368 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10369 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10370 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10371 "ならない。"
10372
10373 #. type: Plain text
10374 #: build/C/man2/splice.2:80
10375 msgid ""
10376 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10377 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10378 "starting from the current file offset, and the current file offset is "
10379 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10380 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10381 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10382 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10383 "apply for I<fd_out> and I<off_out>."
10384 msgstr ""
10385 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10386 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10387 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10388 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10389 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10390 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10391 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10392 "る。"
10393
10394 #. type: Plain text
10395 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10396 msgid ""
10397 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10398 "or more of the following values:"
10399 msgstr ""
10400 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10401
10402 #. type: TP
10403 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10404 #, no-wrap
10405 msgid "B<SPLICE_F_MOVE>"
10406 msgstr "B<SPLICE_F_MOVE>"
10407
10408 #. type: Plain text
10409 #: build/C/man2/splice.2:98
10410 msgid ""
10411 "Attempt to move pages instead of copying.  This is only a hint to the "
10412 "kernel: pages may still be copied if the kernel cannot move the pages from "
10413 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10414 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10415 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10416 "correct implementation may be restored."
10417 msgstr ""
10418 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10419 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10420 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10421 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10422 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10423 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10424
10425 #. type: TP
10426 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10427 #, no-wrap
10428 msgid "B<SPLICE_F_NONBLOCK>"
10429 msgstr "B<SPLICE_F_NONBLOCK>"
10430
10431 #. type: Plain text
10432 #: build/C/man2/splice.2:107
10433 msgid ""
10434 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10435 "B<splice>()  may nevertheless block because the file descriptors that are "
10436 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10437 msgstr ""
10438 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10439 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10440 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10441 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10442 "らである。"
10443
10444 #. type: TP
10445 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10446 #, no-wrap
10447 msgid "B<SPLICE_F_MORE>"
10448 msgstr "B<SPLICE_F_MORE>"
10449
10450 #. type: Plain text
10451 #: build/C/man2/splice.2:121
10452 msgid ""
10453 "More data will be coming in a subsequent splice.  This is a helpful hint "
10454 "when the I<fd_out> refers to a socket (see also the description of "
10455 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10456 msgstr ""
10457 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10458 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10459 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10460
10461 #. type: TP
10462 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10463 #, no-wrap
10464 msgid "B<SPLICE_F_GIFT>"
10465 msgstr "B<SPLICE_F_GIFT>"
10466
10467 #. type: Plain text
10468 #: build/C/man2/splice.2:127
10469 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10470 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10471
10472 #. type: Plain text
10473 #: build/C/man2/splice.2:136
10474 msgid ""
10475 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10476 "to or from the pipe.  A return value of 0 means that there was no data to "
10477 "transfer, and it would not make sense to block, because there are no writers "
10478 "connected to the write end of the pipe referred to by I<fd_in>."
10479 msgstr ""
10480 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10481 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10482 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10483 "れている者がいないからである。"
10484
10485 #. type: Plain text
10486 #: build/C/man2/splice.2:142
10487 msgid ""
10488 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10489 msgstr ""
10490 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10491 "る。"
10492
10493 #. type: Plain text
10494 #: build/C/man2/splice.2:147
10495 msgid ""
10496 "One or both file descriptors are not valid, or do not have proper read-write "
10497 "mode."
10498 msgstr ""
10499 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10500 "write モードではない。"
10501
10502 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10503 #.  splice() in append mode was broken
10504 #. type: Plain text
10505 #: build/C/man2/splice.2:155
10506 msgid ""
10507 "Target file system doesn't support splicing; target file is opened in append "
10508 "mode; neither of the descriptors refers to a pipe; or offset given for "
10509 "nonseekable device."
10510 msgstr ""
10511 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10512 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10513 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10514
10515 #. type: Plain text
10516 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10517 #: build/C/man2/vmsplice.2:138
10518 msgid "Out of memory."
10519 msgstr "メモリ不足。"
10520
10521 #. type: TP
10522 #: build/C/man2/splice.2:158
10523 #, no-wrap
10524 msgid "B<ESPIPE>"
10525 msgstr "B<ESPIPE>"
10526
10527 #. type: Plain text
10528 #: build/C/man2/splice.2:165
10529 msgid ""
10530 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10531 "descriptor refers to a pipe."
10532 msgstr ""
10533 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10534 "クリプタが パイプを参照している。"
10535
10536 #. type: Plain text
10537 #: build/C/man2/splice.2:170
10538 msgid ""
10539 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10540 "was added to glibc in version 2.5."
10541 msgstr ""
10542 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10543 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10544
10545 #. type: Plain text
10546 #: build/C/man2/splice.2:182
10547 msgid ""
10548 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10549 "user-space programs with full control over an arbitrary kernel buffer, "
10550 "implemented within the kernel using the same type of buffer that is used for "
10551 "a pipe.  In overview, these system calls perform the following tasks:"
10552 msgstr ""
10553 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10554 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10555 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10556 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10557
10558 #. type: TP
10559 #: build/C/man2/splice.2:182
10560 #, no-wrap
10561 msgid "B<splice>()"
10562 msgstr "B<splice>()"
10563
10564 #. type: Plain text
10565 #: build/C/man2/splice.2:186
10566 msgid ""
10567 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10568 "or from one buffer to another."
10569 msgstr ""
10570 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10571 "から別のバッファへの、データ移動を行う。"
10572
10573 #. type: TP
10574 #: build/C/man2/splice.2:186
10575 #, no-wrap
10576 msgid "B<tee>(2)"
10577 msgstr "B<tee>(2)"
10578
10579 #. type: Plain text
10580 #: build/C/man2/splice.2:189
10581 msgid "\"copies\" the data from one buffer to another."
10582 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10583
10584 #. type: TP
10585 #: build/C/man2/splice.2:189
10586 #, no-wrap
10587 msgid "B<vmsplice>(2)"
10588 msgstr "B<vmsplice>(2)"
10589
10590 #. type: Plain text
10591 #: build/C/man2/splice.2:192
10592 msgid "\"copies\" data from user space into the buffer."
10593 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10594
10595 #.  Linus: Now, imagine using the above in a media server, for example.
10596 #.  Let's say that a year or two has passed, so that the video drivers
10597 #.  have been updated to be able to do the splice thing, and what can
10598 #.  you do? You can:
10599 #.  - splice from the (mpeg or whatever - let's just assume that the video
10600 #.    input is either digital or does the encoding on its own - like they
10601 #.    pretty much all do) video input into a pipe (remember: no copies - the
10602 #.    video input will just DMA directly into memory, and splice will just
10603 #.    set up the pages in the pipe buffer)
10604 #.  - tee that pipe to split it up
10605 #.  - splice one end to a file (ie "save the compressed stream to disk")
10606 #.  - splice the other end to a real-time video decoder window for your
10607 #.    real-time viewing pleasure.
10608 #.  Linus: Now, the advantage of splice()/tee() is that you can
10609 #.  do zero-copy movement of data, and unlike sendfile() you can
10610 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10611 #.  than just sending the data to somebody else: you can duplicate
10612 #.  the data and choose to forward it to two or more different
10613 #.  users - for things like logging etc.).
10614 #. type: Plain text
10615 #: build/C/man2/splice.2:223
10616 msgid ""
10617 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10618 "does this by implementing a pipe buffer as a set of reference-counted "
10619 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10620 "in a buffer by creating new pointers (for the output buffer) referring to "
10621 "the pages, and increasing the reference counts for the pages: only pointers "
10622 "are copied, not the pages of the buffer."
10623 msgstr ""
10624 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10625 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10626 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10627 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10628 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10629 "タだけがコピーされ、 バッファのページはコピーされない。"
10630
10631 #. type: Plain text
10632 #: build/C/man2/splice.2:226
10633 msgid "See B<tee>(2)."
10634 msgstr "B<tee>(2)  参照。"
10635
10636 #. type: Plain text
10637 #: build/C/man2/splice.2:230
10638 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10639 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10640
10641 #. type: TH
10642 #: build/C/man2/tee.2:26
10643 #, no-wrap
10644 msgid "TEE"
10645 msgstr "TEE"
10646
10647 #. type: Plain text
10648 #: build/C/man2/tee.2:29
10649 msgid "tee - duplicating pipe content"
10650 msgstr "tee - パイプの中身を複製する"
10651
10652 #. type: Plain text
10653 #: build/C/man2/tee.2:36
10654 #, no-wrap
10655 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"
10656 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"
10657
10658 #.  Example programs http://brick.kernel.dk/snaps
10659 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10660 #.  (again, incrementing their reference count, not copying the data) from
10661 #.  one pipe to two other pipes.
10662 #. type: Plain text
10663 #: build/C/man2/tee.2:56
10664 msgid ""
10665 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10666 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10667 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10668 "therefore, that data can be copied by a subsequent B<splice>(2)."
10669 msgstr ""
10670 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10671 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10672 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10673 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10674
10675 #. type: Plain text
10676 #: build/C/man2/tee.2:62
10677 msgid ""
10678 "I<flags> is a series of modifier flags, which share the name space with "
10679 "B<splice>(2)  and B<vmsplice>(2):"
10680 msgstr ""
10681 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10682 "名前である。"
10683
10684 #. type: Plain text
10685 #: build/C/man2/tee.2:68
10686 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10687 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10688
10689 #.  Not used for vmsplice
10690 #.  May be in the future -- therefore EAGAIN
10691 #. type: Plain text
10692 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10693 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10694 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10695
10696 #. type: Plain text
10697 #: build/C/man2/tee.2:79
10698 msgid ""
10699 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10700 "see B<splice>(2)."
10701 msgstr ""
10702 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10703 "る。 B<splice>(2)  参照。"
10704
10705 #. type: Plain text
10706 #: build/C/man2/tee.2:85
10707 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10708 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10709
10710 #. type: Plain text
10711 #: build/C/man2/tee.2:94
10712 msgid ""
10713 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10714 "duplicated between the input and output.  A return value of 0 means that "
10715 "there was no data to transfer, and it would not make sense to block, because "
10716 "there are no writers connected to the write end of the pipe referred to by "
10717 "I<fd_in>."
10718 msgstr ""
10719 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10720 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10721 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10722 "ている者がいないからである。"
10723
10724 #. type: Plain text
10725 #: build/C/man2/tee.2:100
10726 msgid ""
10727 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10728 msgstr ""
10729 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10730
10731 #. type: Plain text
10732 #: build/C/man2/tee.2:111
10733 msgid ""
10734 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10735 "refer to the same pipe."
10736 msgstr ""
10737 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10738 "と I<fd_out> が同じパイプを参照している。"
10739
10740 #. type: Plain text
10741 #: build/C/man2/tee.2:119
10742 msgid ""
10743 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10744 "was added to glibc in version 2.5."
10745 msgstr ""
10746 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10747 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10748
10749 #. type: Plain text
10750 #: build/C/man2/tee.2:130
10751 msgid ""
10752 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10753 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10754 "data in the output by merely grabbing a reference to the input."
10755 msgstr ""
10756 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10757 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10758 "照だけを作成することで出力側にデータを 追加する。"
10759
10760 #. type: Plain text
10761 #: build/C/man2/tee.2:136
10762 msgid ""
10763 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10764 "()  system call."
10765 msgstr ""
10766 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10767 "ムを実装したものである。"
10768
10769 #. type: Plain text
10770 #: build/C/man2/tee.2:145
10771 #, no-wrap
10772 msgid ""
10773 "#define _GNU_SOURCE\n"
10774 "#include E<lt>fcntl.hE<gt>\n"
10775 "#include E<lt>stdio.hE<gt>\n"
10776 "#include E<lt>stdlib.hE<gt>\n"
10777 "#include E<lt>unistd.hE<gt>\n"
10778 "#include E<lt>errno.hE<gt>\n"
10779 "#include E<lt>limits.hE<gt>\n"
10780 msgstr ""
10781 "#define _GNU_SOURCE\n"
10782 "#include E<lt>fcntl.hE<gt>\n"
10783 "#include E<lt>stdio.hE<gt>\n"
10784 "#include E<lt>stdlib.hE<gt>\n"
10785 "#include E<lt>unistd.hE<gt>\n"
10786 "#include E<lt>errno.hE<gt>\n"
10787 "#include E<lt>limits.hE<gt>\n"
10788
10789 #. type: Plain text
10790 #: build/C/man2/tee.2:151
10791 #, no-wrap
10792 msgid ""
10793 "int\n"
10794 "main(int argc, char *argv[])\n"
10795 "{\n"
10796 "    int fd;\n"
10797 "    int len, slen;\n"
10798 msgstr ""
10799 "int\n"
10800 "main(int argc, char *argv[])\n"
10801 "{\n"
10802 "    int fd;\n"
10803 "    int len, slen;\n"
10804
10805 #. type: Plain text
10806 #: build/C/man2/tee.2:156
10807 #, no-wrap
10808 msgid ""
10809 "    if (argc != 2) {\n"
10810 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10811 "        exit(EXIT_FAILURE);\n"
10812 "    }\n"
10813 msgstr ""
10814 "    if (argc != 2) {\n"
10815 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10816 "        exit(EXIT_FAILURE);\n"
10817 "    }\n"
10818
10819 #. type: Plain text
10820 #: build/C/man2/tee.2:162
10821 #, no-wrap
10822 msgid ""
10823 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10824 "    if (fd == -1) {\n"
10825 "        perror(\"open\");\n"
10826 "        exit(EXIT_FAILURE);\n"
10827 "    }\n"
10828 msgstr ""
10829 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10830 "    if (fd == -1) {\n"
10831 "        perror(\"open\");\n"
10832 "        exit(EXIT_FAILURE);\n"
10833 "    }\n"
10834
10835 #. type: Plain text
10836 #: build/C/man2/tee.2:169
10837 #, no-wrap
10838 msgid ""
10839 "    do {\n"
10840 "        /*\n"
10841 "         * tee stdin to stdout.\n"
10842 "         */\n"
10843 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10844 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10845 msgstr ""
10846 "    do {\n"
10847 "        /*\n"
10848 "         * tee stdin to stdout.\n"
10849 "         */\n"
10850 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10851 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10852
10853 #. type: Plain text
10854 #: build/C/man2/tee.2:178
10855 #, no-wrap
10856 msgid ""
10857 "        if (len E<lt> 0) {\n"
10858 "            if (errno == EAGAIN)\n"
10859 "                continue;\n"
10860 "            perror(\"tee\");\n"
10861 "            exit(EXIT_FAILURE);\n"
10862 "        } else\n"
10863 "            if (len == 0)\n"
10864 "                break;\n"
10865 msgstr ""
10866 "        if (len E<lt> 0) {\n"
10867 "            if (errno == EAGAIN)\n"
10868 "                continue;\n"
10869 "            perror(\"tee\");\n"
10870 "            exit(EXIT_FAILURE);\n"
10871 "        } else\n"
10872 "            if (len == 0)\n"
10873 "                break;\n"
10874
10875 #. type: Plain text
10876 #: build/C/man2/tee.2:192
10877 #, no-wrap
10878 msgid ""
10879 "        /*\n"
10880 "         * Consume stdin by splicing it to a file.\n"
10881 "         */\n"
10882 "        while (len E<gt> 0) {\n"
10883 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10884 "                          len, SPLICE_F_MOVE);\n"
10885 "            if (slen E<lt> 0) {\n"
10886 "                perror(\"splice\");\n"
10887 "                break;\n"
10888 "            }\n"
10889 "            len -= slen;\n"
10890 "        }\n"
10891 "    } while (1);\n"
10892 msgstr ""
10893 "        /*\n"
10894 "         * Consume stdin by splicing it to a file.\n"
10895 "         */\n"
10896 "        while (len E<gt> 0) {\n"
10897 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10898 "                          len, SPLICE_F_MOVE);\n"
10899 "            if (slen E<lt> 0) {\n"
10900 "                perror(\"splice\");\n"
10901 "                break;\n"
10902 "            }\n"
10903 "            len -= slen;\n"
10904 "        }\n"
10905 "    } while (1);\n"
10906
10907 #. type: Plain text
10908 #: build/C/man2/tee.2:196
10909 #, no-wrap
10910 msgid ""
10911 "    close(fd);\n"
10912 "    exit(EXIT_SUCCESS);\n"
10913 "}\n"
10914 msgstr ""
10915 "    close(fd);\n"
10916 "    exit(EXIT_SUCCESS);\n"
10917 "}\n"
10918
10919 #. type: Plain text
10920 #: build/C/man2/tee.2:200
10921 msgid "B<splice>(2), B<vmsplice>(2)"
10922 msgstr "B<splice>(2), B<vmsplice>(2)"
10923
10924 #. type: TH
10925 #: build/C/man2/vm86.2:26
10926 #, no-wrap
10927 msgid "VM86"
10928 msgstr "VM86"
10929
10930 #. type: TH
10931 #: build/C/man2/vm86.2:26
10932 #, no-wrap
10933 msgid "2009-02-20"
10934 msgstr "2009-02-20"
10935
10936 #. type: Plain text
10937 #: build/C/man2/vm86.2:29
10938 msgid "vm86old, vm86 - enter virtual 8086 mode"
10939 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
10940
10941 #. type: Plain text
10942 #: build/C/man2/vm86.2:31
10943 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
10944 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
10945
10946 #. type: Plain text
10947 #: build/C/man2/vm86.2:33
10948 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
10949 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
10950
10951 #. type: Plain text
10952 #: build/C/man2/vm86.2:35
10953 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
10954 msgstr ""
10955 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
10956
10957 #. type: Plain text
10958 #: build/C/man2/vm86.2:46
10959 msgid ""
10960 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
10961 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
10962 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
10963 "and 1.1.9."
10964 msgstr ""
10965 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
10966 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
10967 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
10968
10969 #. type: Plain text
10970 #: build/C/man2/vm86.2:50
10971 msgid ""
10972 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
10973 "literature), and are used by B<dosemu>."
10974 msgstr ""
10975 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
10976 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
10977
10978 #. type: Plain text
10979 #: build/C/man2/vm86.2:52
10980 msgid "VM86 mode is an emulation of real mode within a protected mode task."
10981 msgstr ""
10982 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
10983 "ある。"
10984
10985 #. type: Plain text
10986 #: build/C/man2/vm86.2:62
10987 msgid ""
10988 "This return value is specific to i386 and indicates a problem with getting "
10989 "user-space data."
10990 msgstr ""
10991 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
10992 "あったことを示す。"
10993
10994 #. type: Plain text
10995 #: build/C/man2/vm86.2:66
10996 msgid ""
10997 "This return value indicates the call is not implemented on the present "
10998 "architecture."
10999 msgstr ""
11000 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11001
11002 #. type: Plain text
11003 #: build/C/man2/vm86.2:71
11004 msgid ""
11005 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11006 "should exist only within vm86 mode itself.)"
11007 msgstr ""
11008 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11009 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11010 "い。)"
11011
11012 #. type: Plain text
11013 #: build/C/man2/vm86.2:74
11014 msgid ""
11015 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11016 "used in programs intended to be portable."
11017 msgstr ""
11018 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11019 "したプログラムでは使用すべきでない。"
11020
11021 #. type: TH
11022 #: build/C/man2/vmsplice.2:26
11023 #, no-wrap
11024 msgid "VMSPLICE"
11025 msgstr "VMSPLICE"
11026
11027 #. type: Plain text
11028 #: build/C/man2/vmsplice.2:29
11029 msgid "vmsplice - splice user pages into a pipe"
11030 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11031
11032 #. type: Plain text
11033 #: build/C/man2/vmsplice.2:34
11034 #, no-wrap
11035 msgid ""
11036 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11037 "B<#include E<lt>fcntl.hE<gt>>\n"
11038 "B<#include E<lt>sys/uio.hE<gt>>\n"
11039 msgstr ""
11040 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11041 "B<#include E<lt>fcntl.hE<gt>>\n"
11042 "B<#include E<lt>sys/uio.hE<gt>>\n"
11043
11044 #. type: Plain text
11045 #: build/C/man2/vmsplice.2:37
11046 #, no-wrap
11047 msgid ""
11048 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11049 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11050 msgstr ""
11051 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11052 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11053
11054 #.  Linus: vmsplice() system call to basically do a "write to
11055 #.  the buffer", but using the reference counting and VM traversal
11056 #.  to actually fill the buffer. This means that the user needs to
11057 #.  be careful not to reuse the user-space buffer it spliced into
11058 #.  the kernel-space one (contrast this to "write()", which copies
11059 #.  the actual data, and you can thus reuse the buffer immediately
11060 #.  after a successful write), but that is often easy to do.
11061 #. type: Plain text
11062 #: build/C/man2/vmsplice.2:57
11063 msgid ""
11064 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11065 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11066 "pipe."
11067 msgstr ""
11068 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11069 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11070 "ばならない。"
11071
11072 #. type: Plain text
11073 #: build/C/man2/vmsplice.2:64
11074 msgid ""
11075 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11076 "I<E<lt>sys/uio.hE<gt>>:"
11077 msgstr ""
11078 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11079 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11080
11081 #. type: Plain text
11082 #: build/C/man2/vmsplice.2:71
11083 #, no-wrap
11084 msgid ""
11085 "struct iovec {\n"
11086 "    void  *iov_base;            /* Starting address */\n"
11087 "    size_t iov_len;             /* Number of bytes */\n"
11088 "};\n"
11089 msgstr ""
11090 "struct iovec {\n"
11091 "    void  *iov_base;            /* 開始アドレス */\n"
11092 "    size_t iov_len;             /* バイト数 */\n"
11093 "};\n"
11094
11095 #. type: Plain text
11096 #: build/C/man2/vmsplice.2:84
11097 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11098 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11099
11100 #. type: Plain text
11101 #: build/C/man2/vmsplice.2:97
11102 msgid ""
11103 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11104 "future; see B<splice>(2)."
11105 msgstr ""
11106 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11107 "がある。 B<splice>(2)  参照。"
11108
11109 #.  FIXME Explain the following line in a little more detail:
11110 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11111 #. type: Plain text
11112 #: build/C/man2/vmsplice.2:113
11113 msgid ""
11114 "The user pages are a gift to the kernel.  The application may not modify "
11115 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11116 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11117 "successfully move the pages; if this flag is not specified, then a "
11118 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11119 "also be properly page aligned, both in memory and length."
11120 msgstr ""
11121 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11122 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11123 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11124 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11125 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11126 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11127 "なければならず、 長さもページ境界の倍数でなければならない。"
11128
11129 #. type: Plain text
11130 #: build/C/man2/vmsplice.2:122
11131 msgid ""
11132 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11133 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11134 "is set to indicate the error."
11135 msgstr ""
11136 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11137 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11138
11139 #. type: Plain text
11140 #: build/C/man2/vmsplice.2:127
11141 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11142 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11143
11144 #. type: Plain text
11145 #: build/C/man2/vmsplice.2:135
11146 msgid ""
11147 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11148 "B<SPLICE_F_GIFT> set."
11149 msgstr ""
11150 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11151 "設定されたがメモリがページ境界にあっていない。"
11152
11153 #. type: Plain text
11154 #: build/C/man2/vmsplice.2:143
11155 msgid ""
11156 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11157 "support was added to glibc in version 2.5."
11158 msgstr ""
11159 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11160 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11161
11162 #. type: Plain text
11163 #: build/C/man2/vmsplice.2:154
11164 msgid ""
11165 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11166 "it comes to limitations on number of segments being passed in.  This limit "
11167 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11168 "writing, that limit is 1024."
11169 msgstr ""
11170 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11171 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11172 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11173 "は 1024 である。"
11174
11175 #. type: Plain text
11176 #: build/C/man2/vmsplice.2:157
11177 msgid "B<splice>(2), B<tee>(2)"
11178 msgstr "B<splice>(2), B<tee>(2)"
11179
11180 #~ msgid ""
11181 #~ "Depending on which operation was executed, the returned value for a "
11182 #~ "successful call can have differing meanings."
11183 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11184
11185 #~ msgid ""
11186 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11187 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11188 #~ "was not equal to the expected value, the operation fails with the error "
11189 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11190 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11191 #~ msgstr ""
11192 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11193 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11194 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11195 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11196 #~ "敗する。"
11197
11198 #~ msgid "An operation was not defined or error in page alignment."
11199 #~ msgstr ""
11200 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11201
11202 #, fuzzy
11203 #~| msgid ""
11204 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11205 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11206 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11207 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11208 #~| "giving the parent a chance to gain control before the new program begins "
11209 #~| "execution.  A process probably shouldn't make this request if its parent "
11210 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11211 #~ msgid ""
11212 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11213 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11214 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11215 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11216 #~ "be sent to it, giving the parent a chance to gain control before the new "
11217 #~ "program begins execution.  A process probably shouldn't make this request "
11218 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11219 #~ "are ignored.)"
11220 #~ msgstr ""
11221 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11222 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11223 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11224 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11225 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11226 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11227 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11228 #~ "は無視される。)"
11229
11230 #~ msgid ""
11231 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11232 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11233 #~ msgstr ""
11234 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11235 #~ "\\ 8> で子プロセスの動作を停止させる。"
11236
11237 #~ msgid ""
11238 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11239 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11240 #~ msgstr ""
11241 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11242 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11243
11244 #~ msgid ""
11245 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11246 #~ "of the calling process; the behavior of the child is as if it had done a "
11247 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11248 #~ "the child process for most purposes (e.g., it will receive notification "
11249 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11250 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11251 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11252 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11253 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11254 #~ msgstr ""
11255 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11256 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11257 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11258 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11259 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11260 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11261 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11262 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11263 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11264
11265 #~ msgid ""
11266 #~ "Tracing causes a few subtle differences in the semantics of traced "
11267 #~ "processes.  For example, if a process is attached to with "
11268 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11269 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11270 #~ "effectively simulate this notification."
11271 #~ msgstr ""
11272 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11273 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11274 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11275 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11276
11277 #~ msgid ""
11278 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11279 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11280 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11281 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11282 #~ "child process after receiving one of these messages."
11283 #~ msgstr ""
11284 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11285 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11286 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11287 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11288 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11289 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11290
11291 #~ msgid ""
11292 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11293 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11294 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11295 #~ "and uniform way."
11296 #~ msgstr ""
11297 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11298 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11299 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11300 #~ "るものとなっている。"
11301
11302 #~ msgid ""
11303 #~ "The second argument I<special> is the block special device these quota "
11304 #~ "apply to.  It must be mounted."
11305 #~ msgstr ""
11306 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11307 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11308
11309 #~ msgid ""
11310 #~ "The third argument I<id> is the user or group ID these quota apply to "
11311 #~ "(when relevant)."
11312 #~ msgstr ""
11313 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11314 #~ "グループの ID を指定する。"
11315
11316 #~ msgid ""
11317 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11318 #~ "on the command."
11319 #~ msgstr ""
11320 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11321 #~ "指定する。"
11322
11323 #~ msgid ""
11324 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11325 #~ "containing the quota for the file system."
11326 #~ msgstr ""
11327 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11328 #~ "記録されているファイルの パス名を指定する。"
11329
11330 #~ msgid "Disable quota."
11331 #~ msgstr "quota を無効にする。"
11332
11333 #~ msgid "Set limits and current usage; I<addr> is as before."
11334 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11335
11336 #~ msgid "Set limits; I<addr> is as before."
11337 #~ msgstr "制限値を設定する; I<addr> は同上。"
11338
11339 #~ msgid "Set usage."
11340 #~ msgstr "使用量を設定する。"
11341
11342 #~ msgid "Sync disk copy of a file system's quota."
11343 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11344
11345 #~ msgid "Get collected stats."
11346 #~ msgstr "収集された統計を取得する。"
11347
11348 #~ msgid ""
11349 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11350 #~ "I<errno> is set appropriately."
11351 #~ msgstr ""
11352 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11353 #~ "I<errno> が適切な値に設定される。"
11354
11355 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11356 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11357
11358 #~ msgid "Bad I<addr> value."
11359 #~ msgstr "I<addr> の値に誤りがある。"
11360
11361 #~ msgid ""
11362 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11363 #~ msgstr ""
11364 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11365 #~ "付からなかった。"
11366
11367 #~ msgid "Cannot read or write the quota file."
11368 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11369
11370 #~ msgid "Too many open files: cannot open quota file."
11371 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11372
11373 #~ msgid "I<special> cannot be found in the mount table."
11374 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11375
11376 #~ msgid "The kernel was compiled without quota support."
11377 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11378
11379 #~ msgid ""
11380 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11381 #~ "asked for another I<id> than that of the process itself, or anything "
11382 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11383 #~ msgstr ""
11384 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11385 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11386 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11387
11388 #~ msgid ""
11389 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11390 #~ "for a file system that didn't have quota enabled."
11391 #~ msgstr ""
11392 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11393 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"