OSDN Git Service

(split) LDP: Update ja.po (editorical changes only)
[linuxjm/LDP_man-pages.git] / po4a / man2 / po / ja.po
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2013-03-22 01:05+0900\n"
10 "PO-Revision-Date: 2013-03-24 01:20+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 msgid "Sub functions for x86-64 are:"
152 msgstr "x86-64 の副機能は以下の通り:"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:54
156 #, no-wrap
157 msgid "B<ARCH_SET_FS>"
158 msgstr "B<ARCH_SET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:60
162 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
163 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
164
165 #. type: TP
166 #: build/C/man2/arch_prctl.2:60
167 #, no-wrap
168 msgid "B<ARCH_GET_FS>"
169 msgstr "B<ARCH_GET_FS>"
170
171 #. type: Plain text
172 #: build/C/man2/arch_prctl.2:68
173 msgid ""
174 "Return the 64-bit base value for the I<FS> register of the current thread in "
175 "the I<unsigned long> pointed to by I<addr>."
176 msgstr ""
177 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
178 "I<unsigned long> の領域に格納する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:68
182 #, no-wrap
183 msgid "B<ARCH_SET_GS>"
184 msgstr "B<ARCH_SET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:74
188 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
189 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
190
191 #. type: TP
192 #: build/C/man2/arch_prctl.2:74
193 #, no-wrap
194 msgid "B<ARCH_GET_GS>"
195 msgstr "B<ARCH_GET_GS>"
196
197 #. type: Plain text
198 #: build/C/man2/arch_prctl.2:82
199 msgid ""
200 "Return the 64-bit base value for the I<GS> register of the current thread in "
201 "the I<unsigned long> pointed to by I<addr>."
202 msgstr ""
203 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
204 "I<unsigned long> の領域に格納する。"
205
206 #. type: SH
207 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209
208 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:1804
212 #: build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57
213 #: build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209
214 #: build/C/man2/ptrace.2:1713 build/C/man2/sendfile.2:108
215 #: build/C/man2/set_tid_address.2:88 build/C/man2/splice.2:127
216 #: build/C/man2/tee.2:85 build/C/man2/vm86.2:52 build/C/man2/vmsplice.2:113
217 #, no-wrap
218 msgid "RETURN VALUE"
219 msgstr "返り値"
220
221 #. type: Plain text
222 #: build/C/man2/arch_prctl.2:88
223 msgid ""
224 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
225 "I<errno> is set to indicate the error."
226 msgstr ""
227 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
228 "I<errno> をエラーを示す値に設定する。"
229
230 #. type: SH
231 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
232 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
233 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
234 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
235 #: build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64
236 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
237 #: build/C/man2/ptrace.2:1727 build/C/man2/quotactl.2:427
238 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
239 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
240 #: build/C/man2/vmsplice.2:122
241 #, no-wrap
242 msgid "ERRORS"
243 msgstr "エラー"
244
245 #. type: TP
246 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
247 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
248 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
249 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1731
250 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
251 #: build/C/man2/vm86.2:58
252 #, no-wrap
253 msgid "B<EFAULT>"
254 msgstr "B<EFAULT>"
255
256 #. type: Plain text
257 #: build/C/man2/arch_prctl.2:93
258 msgid ""
259 "I<addr> points to an unmapped address or is outside the process address "
260 "space."
261 msgstr ""
262 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
263 "にある。"
264
265 #. type: TP
266 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
267 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
268 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
269 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811
270 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
271 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
272 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1742
273 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
274 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
275 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
276 #, no-wrap
277 msgid "B<EINVAL>"
278 msgstr "B<EINVAL>"
279
280 #. type: Plain text
281 #: build/C/man2/arch_prctl.2:97
282 msgid "I<code> is not a valid subcommand."
283 msgstr "I<code> が有効なサブコマンドでない。"
284
285 #. type: TP
286 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
287 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
288 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
289 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1752
290 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
291 #, no-wrap
292 msgid "B<EPERM>"
293 msgstr "B<EPERM>"
294
295 #.  .SH AUTHOR
296 #.  Man page written by Andi Kleen.
297 #. type: Plain text
298 #: build/C/man2/arch_prctl.2:103
299 msgid "I<addr> is outside the process address space."
300 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
301
302 #. type: SH
303 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
304 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
305 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
306 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
307 #: build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829
308 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
309 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
310 #: build/C/man2/ptrace.2:1770 build/C/man2/sendfile.2:148
311 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
312 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
313 #, no-wrap
314 msgid "CONFORMING TO"
315 msgstr "準拠"
316
317 #. type: Plain text
318 #: build/C/man2/arch_prctl.2:107
319 msgid ""
320 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
321 "programs intended to be portable."
322 msgstr ""
323 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
324 "うべきでない。"
325
326 #. type: SH
327 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
328 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
329 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
330 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834
331 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
332 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1772
333 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
334 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
335 #, no-wrap
336 msgid "NOTES"
337 msgstr "注意"
338
339 #. type: Plain text
340 #: build/C/man2/arch_prctl.2:110
341 msgid ""
342 "B<arch_prctl>()  is only supported on Linux/x86-64 for 64-bit programs "
343 "currently."
344 msgstr ""
345 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
346 "ポートされている。"
347
348 #. type: Plain text
349 #: build/C/man2/arch_prctl.2:112
350 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
351 msgstr ""
352 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
353 "される。"
354
355 #. type: Plain text
356 #: build/C/man2/arch_prctl.2:115
357 msgid "B<ARCH_SET_GS> is disabled in some kernels."
358 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
359
360 #. type: Plain text
361 #: build/C/man2/arch_prctl.2:130
362 msgid ""
363 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
364 "faster alternative to set a 32-bit base using a segment selector by setting "
365 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
366 "call in kernel 2.5 or later.  B<arch_prctl>()  is only needed when you want "
367 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
368 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
369 msgstr ""
370 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
371 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
372 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
373 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
374 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
375 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
376
377 #. type: Plain text
378 #: build/C/man2/arch_prctl.2:135
379 msgid ""
380 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
381 "have to declare it yourself for now.  This may be fixed in future glibc "
382 "versions."
383 msgstr ""
384 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
385 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
386 "ジョンで修正されるかもしれない。"
387
388 #. type: Plain text
389 #: build/C/man2/arch_prctl.2:138
390 msgid "I<FS> may be already used by the threading library."
391 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
392
393 #. type: SH
394 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
395 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
396 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
397 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112
398 #: build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205
399 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
400 #: build/C/man2/ptrace.2:1926 build/C/man2/quotactl.2:507
401 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
402 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
403 #: build/C/man2/vmsplice.2:154
404 #, no-wrap
405 msgid "SEE ALSO"
406 msgstr "関連項目"
407
408 #. type: Plain text
409 #: build/C/man2/arch_prctl.2:143
410 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
411 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412
413 #. type: Plain text
414 #: build/C/man2/arch_prctl.2:145
415 msgid "AMD X86-64 Programmer's manual"
416 msgstr "AMD X86-64 Programmer's manual"
417
418 #. type: SH
419 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325
420 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
421 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
422 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
423 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114
424 #: build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209
425 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
426 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1940
427 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
428 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
429 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
430 #, no-wrap
431 msgid "COLOPHON"
432 msgstr "この文書について"
433
434 #. type: Plain text
435 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332
436 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
437 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
438 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
439 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121
440 #: build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216
441 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
442 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1947
443 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
444 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
445 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
446 msgid ""
447 "This page is part of release 3.50 of the Linux I<man-pages> project.  A "
448 "description of the project, and information about reporting bugs, can be "
449 "found at http://www.kernel.org/doc/man-pages/."
450 msgstr ""
451 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.50 の一部\n"
452 "である。プロジェクトの説明とバグ報告に関する情報は\n"
453 "http://www.kernel.org/doc/man-pages/ に書かれている。"
454
455 #. type: TH
456 #: build/C/man2/futex.2:53
457 #, no-wrap
458 msgid "FUTEX"
459 msgstr "FUTEX"
460
461 #. type: TH
462 #: build/C/man2/futex.2:53
463 #, no-wrap
464 msgid "2013-03-15"
465 msgstr "2013-03-15"
466
467 #. type: Plain text
468 #: build/C/man2/futex.2:56
469 #, fuzzy
470 #| msgid "futex - Fast Userspace Locking system call"
471 msgid "futex - fast user-space locking"
472 msgstr "futex - 高速ユーザ空間ロック機構のシステムコール"
473
474 #. type: Plain text
475 #: build/C/man2/futex.2:61
476 #, no-wrap
477 msgid ""
478 "B<#include E<lt>linux/futex.hE<gt>>\n"
479 "B<#include E<lt>sys/time.hE<gt>>\n"
480 msgstr ""
481 "B<#include E<lt>linux/futex.hE<gt>>\n"
482 "B<#include E<lt>sys/time.hE<gt>>\n"
483
484 #. type: Plain text
485 #: build/C/man2/futex.2:64
486 #, no-wrap
487 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
488 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
489
490 #.  int *? void *? u32 *?
491 #. type: Plain text
492 #: build/C/man2/futex.2:67
493 #, no-wrap
494 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
495 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
496
497 #. type: Plain text
498 #: build/C/man2/futex.2:84
499 msgid ""
500 "The B<futex>()  system call provides a method for a program to wait for a "
501 "value at a given address to change, and a method to wake up anyone waiting "
502 "on a particular address (while the addresses for the same memory in separate "
503 "processes may not be equal, the kernel maps them internally so the same "
504 "memory mapped in different locations will correspond for B<futex>()  "
505 "calls).  This system call is typically used to implement the contended case "
506 "of a lock in shared memory, as described in B<futex>(7)."
507 msgstr ""
508 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
509 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
510 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
511 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
512 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
513 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
514 "る。"
515
516 #. type: Plain text
517 #: build/C/man2/futex.2:91
518 #, fuzzy
519 #| msgid ""
520 #| "When a B<futex>(7)  operation did not finish uncontended in userspace, a "
521 #| "call needs to be made to the kernel to arbitrate.  Arbitration can either "
522 #| "mean putting the calling process to sleep or, conversely, waking a "
523 #| "waiting process."
524 msgid ""
525 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
526 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
527 "mean putting the calling process to sleep or, conversely, waking a waiting "
528 "process."
529 msgstr ""
530 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
531 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
532 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
533 "味する。"
534
535 #. type: Plain text
536 #: build/C/man2/futex.2:98
537 msgid ""
538 "Callers of this function are expected to adhere to the semantics as set out "
539 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
540 "instructions, this in turn probably means that most users will in fact be "
541 "library authors and not general application developers."
542 msgstr ""
543 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
544 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
545 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
546 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
547 "る。"
548
549 #. type: Plain text
550 #: build/C/man2/futex.2:106
551 msgid ""
552 "The I<uaddr> argument needs to point to an aligned integer which stores the "
553 "counter.  The operation to execute is passed via the I<op> argument, along "
554 "with a value I<val>."
555 msgstr ""
556 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
557 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
558 "渡される。"
559
560 #. type: Plain text
561 #: build/C/man2/futex.2:108
562 msgid "Five operations are currently defined:"
563 msgstr "現在のところ 5 つの操作が定義されている:"
564
565 #. type: TP
566 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
567 #, no-wrap
568 msgid "B<FUTEX_WAIT>"
569 msgstr "B<FUTEX_WAIT>"
570
571 #. type: Plain text
572 #: build/C/man2/futex.2:126
573 #, fuzzy
574 #| msgid ""
575 #| "This operation atomically verifies that the futex address I<uaddr> still "
576 #| "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this "
577 #| "futex address.  If the I<timeout> argument is non-NULL, its contents "
578 #| "describe the maximum duration of the wait, which is infinite otherwise.  "
579 #| "The arguments I<uaddr2> and I<val3> are ignored."
580 msgid ""
581 "This operation atomically verifies that the futex address I<uaddr> still "
582 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
583 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
584 "minimum duration of the wait, which is infinite otherwise.  The arguments "
585 "I<uaddr2> and I<val3> are ignored."
586 msgstr ""
587 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
588 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
589 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
590 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
591 "I<uaddr2> と I<val3> は無視される。"
592
593 #. type: Plain text
594 #: build/C/man2/futex.2:134
595 msgid ""
596 "For B<futex>(7), this call is executed if decrementing the count gave a "
597 "negative value (indicating contention), and will sleep until another process "
598 "releases the futex and executes the B<FUTEX_WAKE> operation."
599 msgstr ""
600 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
601 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
602 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
603
604 #. type: TP
605 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
606 #, no-wrap
607 msgid "B<FUTEX_WAKE>"
608 msgstr "B<FUTEX_WAKE>"
609
610 #. type: Plain text
611 #: build/C/man2/futex.2:145
612 msgid ""
613 "This operation wakes at most I<val> processes waiting on this futex address "
614 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
615 "I<val3> are ignored."
616 msgstr ""
617 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
618 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
619 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
620
621 #. type: Plain text
622 #: build/C/man2/futex.2:151
623 msgid ""
624 "For B<futex>(7), this is executed if incrementing the count showed that "
625 "there were waiters, once the futex value has been set to 1 (indicating that "
626 "it is available)."
627 msgstr ""
628 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
629 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
630 "場合に実行される。"
631
632 #. type: TP
633 #: build/C/man2/futex.2:151
634 #, no-wrap
635 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
636 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
637
638 #.  , suitable for .BR poll (2).
639 #. type: Plain text
640 #: build/C/man2/futex.2:167
641 msgid ""
642 "To support asynchronous wakeups, this operation associates a file descriptor "
643 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
644 "receive the signal number that was passed in I<val>.  The calling process "
645 "must close the returned file descriptor after use.  The arguments "
646 "I<timeout>, I<uaddr2> and I<val3> are ignored."
647 msgstr ""
648 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
649 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
650 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
651 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
652 "I<uaddr2>, I<val3> は無視される。"
653
654 #. type: Plain text
655 #: build/C/man2/futex.2:172
656 msgid ""
657 "To prevent race conditions, the caller should test if the futex has been "
658 "upped after B<FUTEX_FD> returns."
659 msgstr ""
660 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
661 "up されたかどうかを確認しなければならない。"
662
663 #. type: Plain text
664 #: build/C/man2/futex.2:176
665 msgid ""
666 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
667 "2.6.26 onward."
668 msgstr ""
669 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
670 "ている。"
671
672 #. type: TP
673 #: build/C/man2/futex.2:176
674 #, no-wrap
675 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
676 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
677
678 #. type: Plain text
679 #: build/C/man2/futex.2:191
680 msgid ""
681 "This operation was introduced in order to avoid a \"thundering herd\" effect "
682 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
683 "another futex.  This call wakes up I<val> processes, and requeues all other "
684 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
685 "I<val3> are ignored."
686 msgstr ""
687 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
688 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
689 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
690 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
691 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
692
693 #. type: TP
694 #: build/C/man2/futex.2:191
695 #, no-wrap
696 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
697 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
698
699 #. type: Plain text
700 #: build/C/man2/futex.2:209
701 msgid ""
702 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
703 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
704 "but first checks whether the location I<uaddr> still contains the value "
705 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
706 "argument I<timeout> is ignored."
707 msgstr ""
708 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
709 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
710 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
711 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
712
713 #. type: Plain text
714 #: build/C/man2/futex.2:216
715 #, fuzzy
716 #| msgid ""
717 #| "In the event of an error, all operations return -1, and set I<errno> to "
718 #| "indicate the error."
719 msgid ""
720 "In the event of an error, all operations return -1, and set I<errno> to "
721 "indicate the error.  The return value on success depends on the operation, "
722 "as described in the following list:"
723 msgstr ""
724 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
725 "される。"
726
727 #. type: Plain text
728 #: build/C/man2/futex.2:222
729 msgid ""
730 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
731 "the various possible error returns."
732 msgstr ""
733
734 #. type: Plain text
735 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
736 msgid "Returns the number of processes woken up."
737 msgstr "wake したプロセスの数を返す。"
738
739 #. type: TP
740 #: build/C/man2/futex.2:225
741 #, no-wrap
742 msgid "B<FUTEX_FD>"
743 msgstr "B<FUTEX_FD>"
744
745 #. type: Plain text
746 #: build/C/man2/futex.2:228
747 msgid "Returns the new file descriptor associated with the futex."
748 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
749
750 #. type: TP
751 #: build/C/man2/futex.2:228
752 #, no-wrap
753 msgid "B<FUTEX_REQUEUE>"
754 msgstr "B<FUTEX_REQUEUE>"
755
756 #. type: TP
757 #: build/C/man2/futex.2:231
758 #, no-wrap
759 msgid "B<FUTEX_CMP_REQUEUE>"
760 msgstr "B<FUTEX_CMP_REQUEUE>"
761
762 #. type: TP
763 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
764 #, no-wrap
765 msgid "B<EACCES>"
766 msgstr "B<EACCES>"
767
768 #. type: Plain text
769 #: build/C/man2/futex.2:238
770 msgid "No read access to futex memory."
771 msgstr "futex メモリに読み込みアクセス権がなかった。"
772
773 #. type: TP
774 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
775 #, no-wrap
776 msgid "B<EAGAIN>"
777 msgstr "B<EAGAIN>"
778
779 #. type: Plain text
780 #: build/C/man2/futex.2:249
781 #, fuzzy
782 #| msgid ""
783 #| "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
784 #| "indicates a race; use the safe B<FUTEX_WAKE> now.)"
785 msgid ""
786 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
787 "equal to the expected value I<val3>.  (This probably indicates a race; use "
788 "the safe B<FUTEX_WAKE> now.)"
789 msgstr ""
790 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
791 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
792
793 #. type: Plain text
794 #: build/C/man2/futex.2:254
795 #, fuzzy
796 #| msgid "Error in getting I<timeout> information from userspace."
797 msgid "Error retrieving I<timeout> information from user space."
798 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
799
800 #. type: TP
801 #: build/C/man2/futex.2:254
802 #, no-wrap
803 msgid "B<EINTR>"
804 msgstr "B<EINTR>"
805
806 #. type: Plain text
807 #: build/C/man2/futex.2:261
808 msgid ""
809 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
810 "a spurious wakeup."
811 msgstr ""
812
813 #. type: Plain text
814 #: build/C/man2/futex.2:264
815 msgid "Invalid argument."
816 msgstr ""
817
818 #. type: TP
819 #: build/C/man2/futex.2:264
820 #, no-wrap
821 msgid "B<ENFILE>"
822 msgstr "B<ENFILE>"
823
824 #. type: Plain text
825 #: build/C/man2/futex.2:267
826 msgid "The system limit on the total number of open files has been reached."
827 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
828
829 #. type: TP
830 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
831 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
832 #: build/C/man2/vm86.2:62
833 #, no-wrap
834 msgid "B<ENOSYS>"
835 msgstr "B<ENOSYS>"
836
837 #. type: Plain text
838 #: build/C/man2/futex.2:271
839 msgid "Invalid operation specified in I<op>."
840 msgstr "I<op> に無効な操作が指定された。"
841
842 #. type: TP
843 #: build/C/man2/futex.2:271
844 #, no-wrap
845 msgid "B<ETIMEDOUT>"
846 msgstr ""
847
848 #. type: Plain text
849 #: build/C/man2/futex.2:276
850 msgid "Timeout during the B<FUTEX_WAIT> operation."
851 msgstr ""
852
853 #. type: TP
854 #: build/C/man2/futex.2:276
855 #, no-wrap
856 msgid "B<EWOULDBLOCK>"
857 msgstr ""
858
859 #. type: Plain text
860 #: build/C/man2/futex.2:286
861 msgid ""
862 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
863 "to the expected value I<val> at the time of the call."
864 msgstr ""
865
866 #. type: SH
867 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
868 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
869 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
870 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
871 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
872 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
873 #: build/C/man2/vmsplice.2:138
874 #, no-wrap
875 msgid "VERSIONS"
876 msgstr "バージョン"
877
878 #. type: Plain text
879 #: build/C/man2/futex.2:296
880 msgid ""
881 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
882 "from what was described above.  A 4-argument system call with the semantics "
883 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
884 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
885 "especially on the s390 architecture."
886 msgstr ""
887 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
888 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
889 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
890 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
891 "上の特別のものである。"
892
893 #. type: Plain text
894 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
895 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
896 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
897 msgid "This system call is Linux-specific."
898 msgstr "このシステムコールは Linux 固有である。"
899
900 #.  .SH "AUTHORS"
901 #.  .PP
902 #.  Futexes were designed and worked on by
903 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
904 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
905 #.  and Rusty Russell (IBM Linux Technology Center).
906 #.  This page written by bert hubert.
907 #. type: Plain text
908 #: build/C/man2/futex.2:312
909 #, fuzzy
910 #| msgid ""
911 #| "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
912 #| "for end-users.  (There is no wrapper function for this system call in "
913 #| "glibc.)  Implementors are expected to be assembly literate and to have "
914 #| "read the sources of the futex userspace library referenced below."
915 msgid ""
916 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
917 "for end-users.  (There is no wrapper function for this system call in "
918 "glibc.)  Implementors are expected to be assembly literate and to have read "
919 "the sources of the futex user-space library referenced below."
920 msgstr ""
921 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
922 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
923 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
924 "ブラリの ソースを読み終えていることが要求される。"
925
926 #. type: Plain text
927 #: build/C/man2/futex.2:314
928 msgid "B<futex>(7)"
929 msgstr "B<futex>(7)"
930
931 #. type: Plain text
932 #: build/C/man2/futex.2:317
933 msgid ""
934 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
935 "of the Ottawa Linux Symposium 2002), online at"
936 msgstr ""
937 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
938 "of the Ottawa Linux Symposium 2002), online at"
939
940 #. type: Plain text
941 #: build/C/man2/futex.2:320
942 #, fuzzy
943 #| msgid "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
944 msgid ""
945 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
946 "E<.UE>"
947 msgstr "http://kernel.org/doc/ols/2002/ols2002-pages-479-495.pdf"
948
949 #. type: Plain text
950 #: build/C/man2/futex.2:322
951 msgid "Futex example library, futex-*.tar.bz2 at"
952 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
953
954 #. type: Plain text
955 #: build/C/man2/futex.2:325
956 #, fuzzy
957 #| msgid "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
958 msgid ""
959 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
960 "E<.UE>"
961 msgstr "ftp://ftp.nl.kernel.org/pub/linux/kernel/people/rusty/."
962
963 #. type: TH
964 #: build/C/man2/get_robust_list.2:29
965 #, no-wrap
966 msgid "GET_ROBUST_LIST"
967 msgstr ""
968
969 #. type: TH
970 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
971 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
972 #, fuzzy, no-wrap
973 #| msgid "2012-05-03"
974 msgid "2012-07-13"
975 msgstr "2012-05-03"
976
977 #. type: TH
978 #: build/C/man2/get_robust_list.2:29
979 #, no-wrap
980 msgid "Linux System Calls"
981 msgstr ""
982
983 #. type: Plain text
984 #: build/C/man2/get_robust_list.2:32
985 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
986 msgstr ""
987
988 #. type: Plain text
989 #: build/C/man2/get_robust_list.2:36
990 #, no-wrap
991 msgid ""
992 "B<#include E<lt>linux/futex.hE<gt>>\n"
993 "B<#include E<lt>syscall.hE<gt>>\n"
994 msgstr ""
995 "B<#include E<lt>linux/futex.hE<gt>>\n"
996 "B<#include E<lt>syscall.hE<gt>>\n"
997
998 #. type: Plain text
999 #: build/C/man2/get_robust_list.2:40
1000 #, no-wrap
1001 msgid ""
1002 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
1003 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
1004 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
1005 msgstr ""
1006
1007 #. type: Plain text
1008 #: build/C/man2/get_robust_list.2:44
1009 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
1010 msgstr ""
1011
1012 #. type: Plain text
1013 #: build/C/man2/get_robust_list.2:49
1014 msgid ""
1015 "The robust futex implementation needs to maintain per-thread lists of robust "
1016 "futexes which are unlocked when the thread exits.  These lists are managed "
1017 "in user space; the kernel is only notified about the location of the head of "
1018 "the list."
1019 msgstr ""
1020
1021 #. type: Plain text
1022 #: build/C/man2/get_robust_list.2:65
1023 msgid ""
1024 "The B<get_robust_list>()  system call returns the head of the robust futex "
1025 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1026 "the head of the list for the calling thread is returned.  The list head is "
1027 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1028 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1029 msgstr ""
1030
1031 #. type: Plain text
1032 #: build/C/man2/get_robust_list.2:77
1033 msgid ""
1034 "The B<set_robust_list>()  system call requests the kernel to record the head "
1035 "of the list of robust futexes owned by the calling thread.  The I<head> "
1036 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1037 "(*head)>."
1038 msgstr ""
1039
1040 #. type: Plain text
1041 #: build/C/man2/get_robust_list.2:84
1042 msgid ""
1043 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1044 "when the operation is successful, an error code otherwise."
1045 msgstr ""
1046
1047 #. type: Plain text
1048 #: build/C/man2/get_robust_list.2:88
1049 msgid ""
1050 "The B<set_robust_list>()  system call can fail with the following error:"
1051 msgstr ""
1052
1053 #. type: Plain text
1054 #: build/C/man2/get_robust_list.2:94
1055 msgid ""
1056 "I<len> does not match the size of structure B<struct robust_list_head> "
1057 "expected by kernel."
1058 msgstr ""
1059
1060 #. type: Plain text
1061 #: build/C/man2/get_robust_list.2:98
1062 msgid ""
1063 "The B<get_robust_list>()  system call can fail with the following errors:"
1064 msgstr ""
1065
1066 #. type: Plain text
1067 #: build/C/man2/get_robust_list.2:106
1068 msgid ""
1069 "The calling process does not have permission to see the robust futex list of "
1070 "the thread with the thread ID I<pid>, and does not have the "
1071 "B<CAP_SYS_PTRACE> capability."
1072 msgstr ""
1073
1074 #. type: TP
1075 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1076 #: build/C/man2/ptrace.2:1765 build/C/man2/quotactl.2:461
1077 #: build/C/man2/quotactl.2:504
1078 #, no-wrap
1079 msgid "B<ESRCH>"
1080 msgstr "B<ESRCH>"
1081
1082 #. type: Plain text
1083 #: build/C/man2/get_robust_list.2:111
1084 msgid "No thread with the thread ID I<pid> could be found."
1085 msgstr ""
1086
1087 #. type: Plain text
1088 #: build/C/man2/get_robust_list.2:115
1089 msgid ""
1090 "The head of the robust futex list can't be stored at the location I<head>."
1091 msgstr ""
1092
1093 #. type: Plain text
1094 #: build/C/man2/get_robust_list.2:119
1095 msgid ""
1096 "These system calls were added in Linux 2.6.17.  No library support is "
1097 "provided; use B<syscall>(2)."
1098 msgstr ""
1099 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1100 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1101
1102 #. type: Plain text
1103 #: build/C/man2/get_robust_list.2:124
1104 #, fuzzy
1105 #| msgid ""
1106 #| "These system calls are not needed by normal applications.  No support for "
1107 #| "them is provided in glibc."
1108 msgid ""
1109 "These system calls are not needed by normal applications.  No support for "
1110 "them is provided in glibc.  In the unlikely event that you want to call them "
1111 "directly, use B<syscall>(2)."
1112 msgstr ""
1113 "通常のアプリケーションでは、これらのシステムコールは必要ではない。\n"
1114 "glibc によるサポートは提供されていない。"
1115
1116 #. type: Plain text
1117 #: build/C/man2/get_robust_list.2:128
1118 msgid ""
1119 "A thread can have only one robust futex list; therefore applications that "
1120 "wish to use this functionality should use the robust mutexes provided by "
1121 "glibc."
1122 msgstr ""
1123
1124 #.  .BR pthread_mutexattr_setrobust_np (3)
1125 #. type: Plain text
1126 #: build/C/man2/get_robust_list.2:131
1127 msgid "B<futex>(2)"
1128 msgstr "B<futex>(2)"
1129
1130 #.  http://lwn.net/Articles/172149/
1131 #. type: Plain text
1132 #: build/C/man2/get_robust_list.2:137
1133 msgid ""
1134 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1135 "txt> in the Linux kernel source tree"
1136 msgstr ""
1137
1138 #. type: TH
1139 #: build/C/man2/getunwind.2:27
1140 #, no-wrap
1141 msgid "GETUNWIND"
1142 msgstr ""
1143
1144 #. type: TH
1145 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1146 #, fuzzy, no-wrap
1147 #| msgid "2009-02-20"
1148 msgid "2013-02-13"
1149 msgstr "2009-02-20"
1150
1151 #. type: Plain text
1152 #: build/C/man2/getunwind.2:30
1153 msgid "getunwind - copy the unwind data to caller's buffer"
1154 msgstr ""
1155
1156 #. type: Plain text
1157 #: build/C/man2/getunwind.2:34
1158 #, fuzzy, no-wrap
1159 #| msgid ""
1160 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
1161 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1162 msgid ""
1163 "B<#include E<lt>syscall.hE<gt>>\n"
1164 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1165 msgstr ""
1166 "B<#include E<lt>sys/quota.hE<gt>>\n"
1167 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1168
1169 #. type: Plain text
1170 #: build/C/man2/getunwind.2:36
1171 #, no-wrap
1172 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1173 msgstr ""
1174
1175 #. type: Plain text
1176 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1177 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1178 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1179 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1180 msgstr ""
1181
1182 #. type: Plain text
1183 #: build/C/man2/getunwind.2:42
1184 msgid "I<Note: this function is obsolete.>"
1185 msgstr ""
1186
1187 #. type: Plain text
1188 #: build/C/man2/getunwind.2:52
1189 msgid ""
1190 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1191 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1192 "of the unwind data; this data describes the gate page (kernel code that is "
1193 "mapped into user space)."
1194 msgstr ""
1195
1196 #. type: Plain text
1197 #: build/C/man2/getunwind.2:64
1198 msgid ""
1199 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1200 "copied only if I<buf_size> is greater than or equal to the size of the "
1201 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1202 "call succeeds, returning the size that would be needed to store the unwind "
1203 "data."
1204 msgstr ""
1205
1206 #. type: Plain text
1207 #: build/C/man2/getunwind.2:68
1208 msgid ""
1209 "The first part of the unwind data contains an unwind table.  The rest "
1210 "contains the associated unwind information, in no particular order.  The "
1211 "unwind table contains entries of the following form:"
1212 msgstr ""
1213
1214 #. type: Plain text
1215 #: build/C/man2/getunwind.2:73
1216 #, no-wrap
1217 msgid ""
1218 "\tu64 start;      (64-bit address of start of function)\n"
1219 "\tu64 end;        (64-bit address of end of function)\n"
1220 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1221 msgstr ""
1222
1223 #. type: Plain text
1224 #: build/C/man2/getunwind.2:81
1225 msgid ""
1226 "An entry whose I<start> value is zero indicates the end of the table.  For "
1227 "more information about the format, see the I<IA-64 Software Conventions and "
1228 "Runtime Architecture> manual."
1229 msgstr ""
1230
1231 #. type: Plain text
1232 #: build/C/man2/getunwind.2:88
1233 #, fuzzy
1234 #| msgid ""
1235 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1236 #| "I<errno> is set to indicate the error."
1237 msgid ""
1238 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1239 "is returned and I<errno> is set to indicate the error."
1240 msgstr ""
1241 "成功すると、 B<kexec_load> は 0 を返す。\n"
1242 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1243
1244 #. type: Plain text
1245 #: build/C/man2/getunwind.2:94
1246 msgid ""
1247 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1248 "stored in the space specified by I<buf>."
1249 msgstr ""
1250
1251 #. type: Plain text
1252 #: build/C/man2/getunwind.2:96
1253 #, fuzzy
1254 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1255 msgid "This system call is available since Linux 2.4."
1256 msgstr ""
1257 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1258 "である。"
1259
1260 #. type: Plain text
1261 #: build/C/man2/getunwind.2:99
1262 msgid ""
1263 "This system call is Linux specific, and is available only on the IA-64 "
1264 "architecture."
1265 msgstr ""
1266
1267 #. type: Plain text
1268 #: build/C/man2/getunwind.2:107
1269 msgid ""
1270 "This system call has been deprecated.  The modern way to obtain the kernel's "
1271 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1272 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1273 msgstr ""
1274
1275 #. type: Plain text
1276 #: build/C/man2/getunwind.2:111
1277 #, fuzzy
1278 #| msgid ""
1279 #| "Glibc does not provide a wrapper for this system call; call it using "
1280 #| "B<syscall>(2)."
1281 msgid ""
1282 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1283 "that you want to call it, use B<syscall>(2)."
1284 msgstr ""
1285 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1286 "(2)  を使って呼び出すこと。"
1287
1288 #. type: Plain text
1289 #: build/C/man2/getunwind.2:113
1290 msgid "B<getauxval>(3)"
1291 msgstr ""
1292
1293 #. type: TH
1294 #: build/C/man2/kexec_load.2:26
1295 #, no-wrap
1296 msgid "KEXEC_LOAD"
1297 msgstr "KEXEC_LOAD"
1298
1299 #. type: Plain text
1300 #: build/C/man2/kexec_load.2:29
1301 msgid "kexec_load - load a new kernel for later execution"
1302 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1303
1304 #. type: Plain text
1305 #: build/C/man2/kexec_load.2:31
1306 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1307 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1308
1309 #. type: Plain text
1310 #: build/C/man2/kexec_load.2:33
1311 msgid ""
1312 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1313 ">"
1314 msgstr ""
1315 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1316 ">"
1317
1318 #. type: Plain text
1319 #: build/C/man2/kexec_load.2:36
1320 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1321 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1322
1323 #. type: Plain text
1324 #: build/C/man2/kexec_load.2:44
1325 msgid ""
1326 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1327 "later by B<reboot>(2)."
1328 msgstr ""
1329 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1330 "その後の B<reboot>(2) で実行できるようにする。"
1331
1332 #. type: Plain text
1333 #: build/C/man2/kexec_load.2:50
1334 msgid ""
1335 "The I<flags> argument is a mask whose high-order bits control the operation "
1336 "of the call.  The following values can be specified in I<flags>:"
1337 msgstr ""
1338 "I<flags> 引き数はマスクビットで、\n"
1339 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1340 "I<flags> には以下の値を指定できる。"
1341
1342 #. type: TP
1343 #: build/C/man2/kexec_load.2:50
1344 #, no-wrap
1345 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1346 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1347
1348 #.  FIXME figure out how this is really used
1349 #. type: Plain text
1350 #: build/C/man2/kexec_load.2:54
1351 msgid "Execute the new kernel automatically on a system crash."
1352 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1353
1354 #. type: TP
1355 #: build/C/man2/kexec_load.2:54
1356 #, fuzzy, no-wrap
1357 #| msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
1358 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1359 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.7.27 以降)"
1360
1361 #. type: Plain text
1362 #: build/C/man2/kexec_load.2:64
1363 msgid ""
1364 "Preserve the system hardware and software states before executing the new "
1365 "kernel.  This could be used for system suspend.  This flag is only available "
1366 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
1367 "effective if I<nr_segments> is greater than 0."
1368 msgstr ""
1369 "新しいカーネルを実行する前に、\n"
1370 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1371 "システムの中断時 (suspend) などで使用できる。\n"
1372 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1373 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1374
1375 #. type: Plain text
1376 #: build/C/man2/kexec_load.2:84
1377 msgid ""
1378 "The low-order bits of I<flags> contain the architecture of the to-be-"
1379 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1380 "current architecture, or one of the following architecture constants "
1381 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1382 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1383 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1384 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1385 "the system."
1386 msgstr ""
1387 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1388 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1389 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1390 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1391 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1392 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1393 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1394 "システムの CPU で実行可能なものでなければならない。"
1395
1396 #. type: Plain text
1397 #: build/C/man2/kexec_load.2:98
1398 msgid ""
1399 "The I<entry> argument is the physical entry address in the kernel image.  "
1400 "The I<nr_segments> argument is the number of segments pointed to by the "
1401 "I<segments> pointer.  The I<segments> argument is an array of "
1402 "I<kexec_segment> structures which define the kernel layout:"
1403 msgstr ""
1404 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1405 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1406 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1407 "この構造体によりカーネルの配置が定義される。"
1408
1409 #. type: Plain text
1410 #: build/C/man2/kexec_load.2:107
1411 #, no-wrap
1412 msgid ""
1413 "struct kexec_segment {\n"
1414 "    void   *buf;        /* Buffer in user space */\n"
1415 "    size_t  bufsz;      /* Buffer length in user space */\n"
1416 "    void   *mem;        /* Physical address of kernel */\n"
1417 "    size_t  memsz;      /* Physical address length */\n"
1418 "};\n"
1419 msgstr ""
1420 "struct kexec_segment {\n"
1421 "    void   *buf;        /* Buffer in user space */\n"
1422 "    size_t  bufsz;      /* Buffer length in user space */\n"
1423 "    void   *mem;        /* Physical address of kernel */\n"
1424 "    size_t  memsz;      /* Physical address length */\n"
1425 "};\n"
1426
1427 #.  FIXME elaborate on the following:
1428 #. type: Plain text
1429 #: build/C/man2/kexec_load.2:114
1430 msgid ""
1431 "The kernel image defined by I<segments> is copied from the calling process "
1432 "into previously reserved memory."
1433 msgstr ""
1434 "I<segments> で定義されたカーネルイメージは、\n"
1435 "呼び出したプロセスから予約済みメモリにコピーされる。"
1436
1437 #. type: Plain text
1438 #: build/C/man2/kexec_load.2:121
1439 msgid ""
1440 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1441 "I<errno> is set to indicate the error."
1442 msgstr ""
1443 "成功すると、 B<kexec_load> は 0 を返す。\n"
1444 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1445
1446 #. type: TP
1447 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1448 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:495
1449 #, no-wrap
1450 msgid "B<EBUSY>"
1451 msgstr "B<EBUSY>"
1452
1453 #. type: Plain text
1454 #: build/C/man2/kexec_load.2:126
1455 msgid ""
1456 "Another crash kernel is already being loaded or a crash kernel is already in "
1457 "use."
1458 msgstr ""
1459 "別のクラッシュカーネルがすでにロードされているか、\n"
1460 "クラッシュカーネルがすでに使用されている。"
1461
1462 #.  KEXEC_SEGMENT_MAX == 16
1463 #. type: Plain text
1464 #: build/C/man2/kexec_load.2:133
1465 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1466 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1467
1468 #. type: Plain text
1469 #: build/C/man2/kexec_load.2:138
1470 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1471 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1472
1473 #. type: Plain text
1474 #: build/C/man2/kexec_load.2:142
1475 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1476 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1477
1478 #. type: Plain text
1479 #: build/C/man2/kexec_load.2:149
1480 msgid ""
1481 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1482 "B<syscall>(2)."
1483 msgstr ""
1484 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1485 "B<syscall>(2) を使って呼び出すこと。"
1486
1487 #.  FIXME Andi submitted a patch for this.
1488 #.  Check if it got accepted later.
1489 #. type: Plain text
1490 #: build/C/man2/kexec_load.2:156
1491 #, fuzzy
1492 #| msgid ""
1493 #| "The required constants are in the kernel source file I<linux/kexec.h>, "
1494 #| "which is not currently exported to glibc.  Therefore, these constants "
1495 #| "must be defined manually."
1496 msgid ""
1497 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1498 "which is not currently exported to glibc.  Therefore, these constants must "
1499 "be defined manually."
1500 msgstr ""
1501 "必要な定数はカーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1502 "が、現在のところ glibc には公開されていない。\n"
1503 "そのため、これらの定数は手動で定義しなければならない。"
1504
1505 #. type: Plain text
1506 #: build/C/man2/kexec_load.2:159
1507 msgid ""
1508 "This system call is only available if the kernel was configured with "
1509 "B<CONFIG_KEXEC>."
1510 msgstr ""
1511 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1512 "いる場合にのみ利用できる。"
1513
1514 #. type: Plain text
1515 #: build/C/man2/kexec_load.2:162
1516 msgid "B<reboot>(2), B<syscall>(2)"
1517 msgstr "B<reboot>(2), B<syscall>(2)"
1518
1519 #. type: TH
1520 #: build/C/man2/lookup_dcookie.2:27
1521 #, no-wrap
1522 msgid "LOOKUP_DCOOKIE"
1523 msgstr "LOOKUP_DCOOKIE"
1524
1525 #. type: TH
1526 #: build/C/man2/lookup_dcookie.2:27
1527 #, no-wrap
1528 msgid "2004-06-17"
1529 msgstr "2004-06-17"
1530
1531 #. type: Plain text
1532 #: build/C/man2/lookup_dcookie.2:30
1533 msgid "lookup_dcookie - return a directory entry's path"
1534 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1535
1536 #. type: Plain text
1537 #: build/C/man2/lookup_dcookie.2:32
1538 msgid ""
1539 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1540 ">"
1541 msgstr ""
1542 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1543 ">"
1544
1545 #. type: Plain text
1546 #: build/C/man2/lookup_dcookie.2:38
1547 msgid ""
1548 "Look up the full path of the directory entry specified by the value "
1549 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1550 "particular directory entry.  The buffer given is filled in with the full "
1551 "path of the directory entry."
1552 msgstr ""
1553 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1554 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1555 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1556 "ルパス名が格納される。"
1557
1558 #. type: Plain text
1559 #: build/C/man2/lookup_dcookie.2:43
1560 msgid ""
1561 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1562 "a cookie reference to the directory entry."
1563 msgstr ""
1564 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1565 "リへの cookie 参照を 保持していなければならない。"
1566
1567 #. type: Plain text
1568 #: build/C/man2/lookup_dcookie.2:50
1569 msgid ""
1570 "On success, B<lookup_dcookie>()  returns the length of the path string "
1571 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1572 "appropriately."
1573 msgstr ""
1574 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1575 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1576
1577 #. type: Plain text
1578 #: build/C/man2/lookup_dcookie.2:54
1579 msgid "The buffer was not valid."
1580 msgstr "バッファが有効でなかった。"
1581
1582 #. type: Plain text
1583 #: build/C/man2/lookup_dcookie.2:58
1584 msgid ""
1585 "The kernel has no registered cookie/directory entry mappings at the time of "
1586 "lookup, or the cookie does not refer to a valid directory entry."
1587 msgstr ""
1588 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1589 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1590 "いない。"
1591
1592 #. type: TP
1593 #: build/C/man2/lookup_dcookie.2:58
1594 #, no-wrap
1595 msgid "B<ENAMETOOLONG>"
1596 msgstr "B<ENAMETOOLONG>"
1597
1598 #. type: Plain text
1599 #: build/C/man2/lookup_dcookie.2:61
1600 msgid "The name could not fit in the buffer."
1601 msgstr "名前がバッファに入り切らなかった。"
1602
1603 #. type: TP
1604 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1605 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1606 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1607 #, no-wrap
1608 msgid "B<ENOMEM>"
1609 msgstr "B<ENOMEM>"
1610
1611 #. type: Plain text
1612 #: build/C/man2/lookup_dcookie.2:65
1613 msgid ""
1614 "The kernel could not allocate memory for the temporary buffer holding the "
1615 "path."
1616 msgstr ""
1617 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1618 "かった。"
1619
1620 #. type: Plain text
1621 #: build/C/man2/lookup_dcookie.2:70
1622 msgid ""
1623 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1624 "up cookie values."
1625 msgstr ""
1626 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1627 "持っていない。"
1628
1629 #. type: TP
1630 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1631 #, no-wrap
1632 msgid "B<ERANGE>"
1633 msgstr "B<ERANGE>"
1634
1635 #. type: Plain text
1636 #: build/C/man2/lookup_dcookie.2:73
1637 msgid ""
1638 "The buffer was not large enough to hold the path of the directory entry."
1639 msgstr ""
1640 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1641 "かった。"
1642
1643 #. type: Plain text
1644 #: build/C/man2/lookup_dcookie.2:78
1645 msgid ""
1646 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1647 "2.5.70."
1648 msgstr ""
1649 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1650 "追加された。"
1651
1652 #. type: Plain text
1653 #: build/C/man2/lookup_dcookie.2:81
1654 msgid "B<lookup_dcookie>()  is Linux-specific."
1655 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1656
1657 #. type: Plain text
1658 #: build/C/man2/lookup_dcookie.2:85
1659 msgid ""
1660 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1661 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1662 "for directory entries."
1663 msgstr ""
1664 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1665 "oprofile profiler で 使われているだけである。"
1666
1667 #. type: Plain text
1668 #: build/C/man2/lookup_dcookie.2:88
1669 msgid ""
1670 "The path returned may be suffixed by the string \" (deleted)\" if the "
1671 "directory entry has been removed."
1672 msgstr ""
1673 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1674 "\" (deleted)\" という文字列が付加されることがある。"
1675
1676 #. type: TH
1677 #: build/C/man2/modify_ldt.2:24
1678 #, no-wrap
1679 msgid "MODIFY_LDT"
1680 msgstr "MODIFY_LDT"
1681
1682 #. type: Plain text
1683 #: build/C/man2/modify_ldt.2:27
1684 msgid "modify_ldt - get or set ldt"
1685 msgstr "modify_ldt - ldt を設定または取得する"
1686
1687 #. type: Plain text
1688 #: build/C/man2/modify_ldt.2:30
1689 #, no-wrap
1690 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1691 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1692
1693 #. type: Plain text
1694 #: build/C/man2/modify_ldt.2:32
1695 #, no-wrap
1696 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1697 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1698
1699 #. type: Plain text
1700 #: build/C/man2/modify_ldt.2:41
1701 msgid ""
1702 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1703 "process.  The ldt is a per-process memory management table used by the i386 "
1704 "processor.  For more information on this table, see an Intel 386 processor "
1705 "handbook."
1706 msgstr ""
1707 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1708 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1709 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1710 "は Intel 386 processor handbook を 参照すること。"
1711
1712 #. type: Plain text
1713 #: build/C/man2/modify_ldt.2:51
1714 msgid ""
1715 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1716 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1717 "actual size of the ldt."
1718 msgstr ""
1719 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1720 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1721 "である。"
1722
1723 #.  FIXME ? say something about func == 2 and func == 0x11?
1724 #.  In Linux 2.4, func == 2 returned "the default ldt"
1725 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1726 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1727 #. type: Plain text
1728 #: build/C/man2/modify_ldt.2:69
1729 msgid ""
1730 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1731 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1732 "structure."
1733 msgstr ""
1734 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1735 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1736 "くなければならない。"
1737
1738 #. type: Plain text
1739 #: build/C/man2/modify_ldt.2:73
1740 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1741 msgstr ""
1742 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1743
1744 #. type: Plain text
1745 #: build/C/man2/modify_ldt.2:87
1746 #, no-wrap
1747 msgid ""
1748 "struct user_desc {\n"
1749 "    unsigned int  entry_number;\n"
1750 "    unsigned long base_addr;\n"
1751 "    unsigned int  limit;\n"
1752 "    unsigned int  seg_32bit:1;\n"
1753 "    unsigned int  contents:2;\n"
1754 "    unsigned int  read_exec_only:1;\n"
1755 "    unsigned int  limit_in_pages:1;\n"
1756 "    unsigned int  seg_not_present:1;\n"
1757 "    unsigned int  useable:1;\n"
1758 "};\n"
1759 msgstr ""
1760 "struct user_desc {\n"
1761 "    unsigned int  entry_number;\n"
1762 "    unsigned long base_addr;\n"
1763 "    unsigned int  limit;\n"
1764 "    unsigned int  seg_32bit:1;\n"
1765 "    unsigned int  contents:2;\n"
1766 "    unsigned int  read_exec_only:1;\n"
1767 "    unsigned int  limit_in_pages:1;\n"
1768 "    unsigned int  seg_not_present:1;\n"
1769 "    unsigned int  useable:1;\n"
1770 "};\n"
1771
1772 #.  .PP
1773 #.  The ldt is specific for the calling process. Any attempts to change
1774 #.  the ldt to include the address space of another process or the kernel
1775 #.  will result in a segmentation violation when trying to access the memory
1776 #.  outside of the process address space. The memory protection is enforced
1777 #.  at the paging layer.
1778 #. type: Plain text
1779 #: build/C/man2/modify_ldt.2:98
1780 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1781 msgstr ""
1782 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1783
1784 #. type: Plain text
1785 #: build/C/man2/modify_ldt.2:108
1786 msgid ""
1787 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1788 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1789 "and sets I<errno> to indicate the error."
1790 msgstr ""
1791 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1792 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1793 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1794
1795 #. type: Plain text
1796 #: build/C/man2/modify_ldt.2:113
1797 msgid "I<ptr> points outside the address space."
1798 msgstr "I<ptr> がアドレス空間の外を指している。"
1799
1800 #. type: Plain text
1801 #: build/C/man2/modify_ldt.2:126
1802 msgid ""
1803 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1804 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1805 "invalid values."
1806 msgstr ""
1807 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1808 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1809 "エントリが無効な値である。"
1810
1811 #. type: Plain text
1812 #: build/C/man2/modify_ldt.2:130
1813 msgid "I<func> is neither 0 nor 1."
1814 msgstr "I<func> が 0 でも 1 でもない。"
1815
1816 #. type: Plain text
1817 #: build/C/man2/modify_ldt.2:133
1818 msgid ""
1819 "This call is Linux-specific and should not be used in programs intended to "
1820 "be portable."
1821 msgstr ""
1822 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1823 "い。"
1824
1825 #. type: Plain text
1826 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1827 #: build/C/man2/pivot_root.2:134
1828 msgid ""
1829 "Glibc does not provide a wrapper for this system call; call it using "
1830 "B<syscall>(2)."
1831 msgstr ""
1832 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1833 "(2)  を使って呼び出すこと。"
1834
1835 #. type: Plain text
1836 #: build/C/man2/modify_ldt.2:138
1837 msgid "B<vm86>(2)"
1838 msgstr "B<vm86>(2)"
1839
1840 #. type: TH
1841 #: build/C/man2/nfsservctl.2:8
1842 #, no-wrap
1843 msgid "NFSSERVCTL"
1844 msgstr "NFSSERVCTL"
1845
1846 #. type: TH
1847 #: build/C/man2/nfsservctl.2:8
1848 #, no-wrap
1849 msgid "2012-03-05"
1850 msgstr "2012-03-05"
1851
1852 #. type: Plain text
1853 #: build/C/man2/nfsservctl.2:11
1854 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1855 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1856
1857 #. type: Plain text
1858 #: build/C/man2/nfsservctl.2:14
1859 #, no-wrap
1860 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1861 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1862
1863 #. type: Plain text
1864 #: build/C/man2/nfsservctl.2:17
1865 #, no-wrap
1866 msgid ""
1867 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1868 "B<                union nfsctl_res *>I<resp>B<);>\n"
1869 msgstr ""
1870 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1871 "B<                union nfsctl_res *>I<resp>B<);>\n"
1872
1873 #. type: Plain text
1874 #: build/C/man2/nfsservctl.2:21
1875 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1876 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1877
1878 #. type: Plain text
1879 #: build/C/man2/nfsservctl.2:33
1880 #, no-wrap
1881 msgid ""
1882 "/*\n"
1883 " * These are the commands understood by nfsctl().\n"
1884 " */\n"
1885 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1886 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1887 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1888 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1889 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1890 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1891 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1892 msgstr ""
1893 "/*\n"
1894 " * nfsctl() によって理解されるコマンド\n"
1895 " */\n"
1896 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1897 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1898 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1899 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1900 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1901 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1902 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1903
1904 #. type: Plain text
1905 #: build/C/man2/nfsservctl.2:45
1906 #, no-wrap
1907 msgid ""
1908 "struct nfsctl_arg {\n"
1909 "    int                       ca_version;     /* safeguard */\n"
1910 "    union {\n"
1911 "        struct nfsctl_svc     u_svc;\n"
1912 "        struct nfsctl_client  u_client;\n"
1913 "        struct nfsctl_export  u_export;\n"
1914 "        struct nfsctl_uidmap  u_umap;\n"
1915 "        struct nfsctl_fhparm  u_getfh;\n"
1916 "        unsigned int          u_debug;\n"
1917 "    } u;\n"
1918 "}\n"
1919 msgstr ""
1920 "struct nfsctl_arg {\n"
1921 "    int                       ca_version;     /* safeguard */\n"
1922 "    union {\n"
1923 "        struct nfsctl_svc     u_svc;\n"
1924 "        struct nfsctl_client  u_client;\n"
1925 "        struct nfsctl_export  u_export;\n"
1926 "        struct nfsctl_uidmap  u_umap;\n"
1927 "        struct nfsctl_fhparm  u_getfh;\n"
1928 "        unsigned int          u_debug;\n"
1929 "    } u;\n"
1930 "}\n"
1931
1932 #. type: Plain text
1933 #: build/C/man2/nfsservctl.2:50
1934 #, no-wrap
1935 msgid ""
1936 "union nfsctl_res {\n"
1937 "        struct knfs_fh          cr_getfh;\n"
1938 "        unsigned int            cr_debug;\n"
1939 "};\n"
1940 msgstr ""
1941 "union nfsctl_res {\n"
1942 "        struct knfs_fh          cr_getfh;\n"
1943 "        unsigned int            cr_debug;\n"
1944 "};\n"
1945
1946 #. type: Plain text
1947 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1948 #: build/C/man2/vm86.2:57
1949 msgid ""
1950 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1951 "appropriately."
1952 msgstr ""
1953 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1954 "定される。"
1955
1956 #. type: Plain text
1957 #: build/C/man2/nfsservctl.2:58
1958 msgid "This call is Linux-specific."
1959 msgstr "このコールは Linux 特有である。"
1960
1961 #. type: TH
1962 #: build/C/man2/outb.2:26
1963 #, no-wrap
1964 msgid "OUTB"
1965 msgstr "OUTB"
1966
1967 #. type: TH
1968 #: build/C/man2/outb.2:26
1969 #, fuzzy, no-wrap
1970 #| msgid "2012-05-03"
1971 msgid "2012-12-31"
1972 msgstr "2012-05-03"
1973
1974 #. type: Plain text
1975 #: build/C/man2/outb.2:31
1976 msgid ""
1977 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1978 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1979 msgstr ""
1980 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1981 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1982
1983 #. type: Plain text
1984 #: build/C/man2/outb.2:34
1985 #, fuzzy, no-wrap
1986 #| msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
1987 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1988 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
1989
1990 #. type: Plain text
1991 #: build/C/man2/outb.2:41
1992 #, no-wrap
1993 msgid ""
1994 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1995 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1996 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1997 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1998 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1999 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
2000 msgstr ""
2001
2002 #. type: Plain text
2003 #: build/C/man2/outb.2:48
2004 #, no-wrap
2005 msgid ""
2006 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2007 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
2008 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2009 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
2010 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2011 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
2012 msgstr ""
2013
2014 #. type: Plain text
2015 #: build/C/man2/outb.2:61
2016 #, no-wrap
2017 msgid ""
2018 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2019 "B<           unsigned long int >I<count>B<);>\n"
2020 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2021 "B<           unsigned long int >I<count>B<);>\n"
2022 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2023 "B<           unsigned long int >I<count>B<);>\n"
2024 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2025 "B<           unsigned long int >I<count>B<);>\n"
2026 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2027 "B<           unsigned long int >I<count>B<);>\n"
2028 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2029 "B<           unsigned long int >I<count>B<);>\n"
2030 msgstr ""
2031
2032 #. type: Plain text
2033 #: build/C/man2/outb.2:67
2034 msgid ""
2035 "This family of functions is used to do low-level port input and output.  The "
2036 "out* functions do port output, the in* functions do port input; the b-suffix "
2037 "functions are byte-width and the w-suffix functions word-width; the _p-"
2038 "suffix functions pause until the I/O completes."
2039 msgstr ""
2040 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2041 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2042 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2043 "待つ。"
2044
2045 #.  , given the following information
2046 #.  in addition to that given in
2047 #.  .BR outb (9).
2048 #. type: Plain text
2049 #: build/C/man2/outb.2:73
2050 msgid ""
2051 "They are primarily designed for internal kernel use, but can be used from "
2052 "user space."
2053 msgstr ""
2054 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2055 "ザー空間からでも使用できる。"
2056
2057 #. type: Plain text
2058 #: build/C/man2/outb.2:78
2059 #, fuzzy
2060 #| msgid ""
2061 #| "You compile with B<-O> or B<-O2> or similar.  The functions are defined "
2062 #| "as inline macros, and will not be substituted in without optimization "
2063 #| "enabled, causing unresolved references at link time."
2064 msgid ""
2065 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2066 "as inline macros, and will not be substituted in without optimization "
2067 "enabled, causing unresolved references at link time."
2068 msgstr ""
2069 "B<-O> や B<-O2> などを指定してコンパイルすること。 これらの関数はインライン・"
2070 "マクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンク"
2071 "の時に「解決できない参照(unresolved reference)」が発生する。"
2072
2073 #. type: Plain text
2074 #: build/C/man2/outb.2:87
2075 msgid ""
2076 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2077 "allow the user space application to access the I/O ports in question.  "
2078 "Failure to do this will cause the application to receive a segmentation "
2079 "fault."
2080 msgstr ""
2081 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2082 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2083 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2084 "になる。"
2085
2086 #. type: Plain text
2087 #: build/C/man2/outb.2:96
2088 msgid ""
2089 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2090 "passed first and the I<port> argument is passed second, which is the "
2091 "opposite order from most DOS implementations."
2092 msgstr ""
2093 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2094 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2095 "である。"
2096
2097 #. type: Plain text
2098 #: build/C/man2/outb.2:99
2099 msgid "B<ioperm>(2), B<iopl>(2)"
2100 msgstr "B<ioperm>(2), B<iopl>(2)"
2101
2102 #. type: TH
2103 #: build/C/man2/pciconfig_read.2:8
2104 #, no-wrap
2105 msgid "PCICONFIG_READ"
2106 msgstr "PCICONFIG_READ"
2107
2108 #. type: TH
2109 #: build/C/man2/pciconfig_read.2:8
2110 #, no-wrap
2111 msgid "2003-07-14"
2112 msgstr "2003-07-14"
2113
2114 #. type: Plain text
2115 #: build/C/man2/pciconfig_read.2:11
2116 msgid ""
2117 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2118 "handling"
2119 msgstr ""
2120 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2121
2122 #. type: Plain text
2123 #: build/C/man2/pciconfig_read.2:14
2124 #, no-wrap
2125 msgid "B<#include E<lt>pci.hE<gt>>\n"
2126 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2127
2128 #. type: Plain text
2129 #: build/C/man2/pciconfig_read.2:21
2130 #, no-wrap
2131 msgid ""
2132 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2133 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2134 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2135 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2136 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2137 "B<          unsigned long >I<devfn>B<);>\n"
2138 msgstr ""
2139 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2140 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2141 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2142 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2143 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2144 "B<          unsigned long >I<devfn>B<);>\n"
2145
2146 #. type: Plain text
2147 #: build/C/man2/pciconfig_read.2:27
2148 #, fuzzy
2149 #| msgid ""
2150 #| "Most of the interaction with PCI devices is already handled by the kernel "
2151 #| "PCI layer, and thus these calls should not normally need to be accessed "
2152 #| "from userspace."
2153 msgid ""
2154 "Most of the interaction with PCI devices is already handled by the kernel "
2155 "PCI layer, and thus these calls should not normally need to be accessed from "
2156 "user space."
2157 msgstr ""
2158 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2159 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2160
2161 #. type: TP
2162 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2163 #, no-wrap
2164 msgid "B<pciconfig_read>()"
2165 msgstr "B<pciconfig_read>()"
2166
2167 #. type: Plain text
2168 #: build/C/man2/pciconfig_read.2:36
2169 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2170 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2171
2172 #. type: TP
2173 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2174 #, no-wrap
2175 msgid "B<pciconfig_write>()"
2176 msgstr "B<pciconfig_write>()"
2177
2178 #. type: Plain text
2179 #: build/C/man2/pciconfig_read.2:45
2180 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2181 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2182
2183 #. type: TP
2184 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2185 #, no-wrap
2186 msgid "B<pciconfig_iobase>()"
2187 msgstr "B<pciconfig_iobase>()"
2188
2189 #. type: Plain text
2190 #: build/C/man2/pciconfig_read.2:50
2191 msgid ""
2192 "You pass it a bus/devfn pair and get a physical address for either the "
2193 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2194 "PIO cycles, or the ISA holes if any."
2195 msgstr ""
2196 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2197 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2198 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2199
2200 #. type: Plain text
2201 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2202 msgid ""
2203 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2204 "appropriately."
2205 msgstr ""
2206 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2207 "定される。"
2208
2209 #. type: Plain text
2210 #: build/C/man2/pciconfig_read.2:77
2211 msgid ""
2212 "Returns information on locations of various I/O regions in physical memory "
2213 "according to the I<which> value.  Values for I<which> are: "
2214 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2215 "B<IOBASE_ISA_MEM>."
2216 msgstr ""
2217 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2218 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2219 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2220
2221 #. type: Plain text
2222 #: build/C/man2/pciconfig_read.2:84
2223 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2224 msgstr ""
2225 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2226 "い。"
2227
2228 #. type: TP
2229 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1745
2230 #: build/C/man2/sendfile.2:134
2231 #, no-wrap
2232 msgid "B<EIO>"
2233 msgstr "B<EIO>"
2234
2235 #. type: Plain text
2236 #: build/C/man2/pciconfig_read.2:87
2237 msgid "I/O error."
2238 msgstr "I/O エラー。"
2239
2240 #. type: TP
2241 #: build/C/man2/pciconfig_read.2:87
2242 #, no-wrap
2243 msgid "B<ENODEV>"
2244 msgstr "B<ENODEV>"
2245
2246 #. type: Plain text
2247 #: build/C/man2/pciconfig_read.2:93
2248 msgid ""
2249 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2250 "could not find a slot."
2251 msgstr ""
2252 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2253 "出しの場合、スロット (slot) が見つからない。"
2254
2255 #. type: Plain text
2256 #: build/C/man2/pciconfig_read.2:98
2257 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2258 msgstr ""
2259 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2260 "いない)。"
2261
2262 #. type: TP
2263 #: build/C/man2/pciconfig_read.2:98
2264 #, no-wrap
2265 msgid "B<EOPNOTSUPP>"
2266 msgstr "B<EOPNOTSUPP>"
2267
2268 #. type: Plain text
2269 #: build/C/man2/pciconfig_read.2:105
2270 msgid ""
2271 "This return value is only valid for B<pciconfig_iobase>().  It is returned "
2272 "if the value for I<which> is invalid."
2273 msgstr ""
2274 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2275 "の値が無効であるときに返される。"
2276
2277 #. type: Plain text
2278 #: build/C/man2/pciconfig_read.2:110
2279 msgid ""
2280 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2281 "B<pciconfig_iobase>()."
2282 msgstr ""
2283 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2284 "B<pciconfig_iobase>()  には適用されない。"
2285
2286 #. type: Plain text
2287 #: build/C/man2/pciconfig_read.2:112
2288 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2289 msgstr ""
2290 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2291 "である。"
2292
2293 #. type: Plain text
2294 #: build/C/man2/pciconfig_read.2:114
2295 msgid "B<capabilities>(7)"
2296 msgstr "B<capabilities>(7)"
2297
2298 #. type: TH
2299 #: build/C/man2/perf_event_open.2:27
2300 #, fuzzy, no-wrap
2301 #| msgid "B<PTRACE_EVENT_CLONE>"
2302 msgid "PERF_EVENT_OPEN"
2303 msgstr "B<PTRACE_EVENT_CLONE>"
2304
2305 #. type: TH
2306 #: build/C/man2/perf_event_open.2:27
2307 #, fuzzy, no-wrap
2308 #| msgid "2012-04-25"
2309 msgid "2013-02-04"
2310 msgstr "2012-04-25"
2311
2312 #. type: Plain text
2313 #: build/C/man2/perf_event_open.2:30
2314 msgid "perf_event_open - set up performance monitoring"
2315 msgstr ""
2316
2317 #. type: Plain text
2318 #: build/C/man2/perf_event_open.2:34
2319 #, fuzzy, no-wrap
2320 #| msgid ""
2321 #| "B<#include E<lt>linux/futex.hE<gt>>\n"
2322 #| "B<#include E<lt>sys/time.hE<gt>>\n"
2323 msgid ""
2324 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2325 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2326 msgstr ""
2327 "B<#include E<lt>linux/futex.hE<gt>>\n"
2328 "B<#include E<lt>sys/time.hE<gt>>\n"
2329
2330 #. type: Plain text
2331 #: build/C/man2/perf_event_open.2:38
2332 #, no-wrap
2333 msgid ""
2334 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2335 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2336 "B<                    unsigned long >I<flags>B<);>\n"
2337 msgstr ""
2338
2339 #. type: Plain text
2340 #: build/C/man2/perf_event_open.2:47
2341 msgid ""
2342 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2343 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2344 "B<fcntl>(2), etc.)."
2345 msgstr ""
2346
2347 #. type: Plain text
2348 #: build/C/man2/perf_event_open.2:55
2349 msgid ""
2350 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2351 "measuring performance information.  Each file descriptor corresponds to one "
2352 "event that is measured; these can be grouped together to measure multiple "
2353 "events simultaneously."
2354 msgstr ""
2355
2356 #. type: Plain text
2357 #: build/C/man2/perf_event_open.2:62
2358 msgid ""
2359 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2360 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2361 "overflows but does continue to exist and maintain its count value."
2362 msgstr ""
2363
2364 #. type: Plain text
2365 #: build/C/man2/perf_event_open.2:76
2366 msgid ""
2367 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2368 "one that is used for counting the aggregate number of events that occur.  In "
2369 "general, counting event results are gathered with a B<read>(2)  call.  A "
2370 "I<sampling> event periodically writes measurements to a buffer that can then "
2371 "be accessed via B<mmap>(2)B<.>"
2372 msgstr ""
2373
2374 #. type: SS
2375 #: build/C/man2/perf_event_open.2:76
2376 #, no-wrap
2377 msgid "Arguments"
2378 msgstr ""
2379
2380 #. type: Plain text
2381 #: build/C/man2/perf_event_open.2:90
2382 msgid ""
2383 "The argument I<pid> allows events to be attached to processes in various "
2384 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2385 "is greater than 0, the process indicated by I<pid> is measured, and if "
2386 "I<pid> is -1, all processes are counted."
2387 msgstr ""
2388
2389 #. type: Plain text
2390 #: build/C/man2/perf_event_open.2:101
2391 msgid ""
2392 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2393 "is greater than or equal to 0, measurements are restricted to the specified "
2394 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2395 msgstr ""
2396
2397 #. type: Plain text
2398 #: build/C/man2/perf_event_open.2:107
2399 msgid ""
2400 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2401 msgstr ""
2402
2403 #. type: Plain text
2404 #: build/C/man2/perf_event_open.2:115
2405 msgid ""
2406 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2407 "that process to whatever CPU the process gets scheduled to.  Per-process "
2408 "events can be created by any user."
2409 msgstr ""
2410
2411 #. type: Plain text
2412 #: build/C/man2/perf_event_open.2:126
2413 msgid ""
2414 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2415 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2416 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2417 msgstr ""
2418
2419 #. type: Plain text
2420 #: build/C/man2/perf_event_open.2:148
2421 msgid ""
2422 "The I<group_fd> argument allows event groups to be created.  An event group "
2423 "has one event which is the group leader.  The leader is created first, with "
2424 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2425 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2426 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2427 "and is considered to be a group with only 1 member.)  An event group is "
2428 "scheduled onto the CPU as a unit: it will only be put onto the CPU if all of "
2429 "the events in the group can be put onto the CPU.  This means that the values "
2430 "of the member events can be meaningfully compared, added, divided (to get "
2431 "ratios), etc., with each other, since they have counted events for the same "
2432 "set of executed instructions."
2433 msgstr ""
2434
2435 #. type: Plain text
2436 #: build/C/man2/perf_event_open.2:152
2437 #, fuzzy
2438 #| msgid "The I<subcmd> value is one of the following:"
2439 msgid "The I<flags> argument takes one of the following values:"
2440 msgstr "I<subcmd> の値は以下のいずれかである"
2441
2442 #. type: TP
2443 #: build/C/man2/perf_event_open.2:152
2444 #, no-wrap
2445 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2446 msgstr ""
2447
2448 #.  FIXME The following sentence is unclear
2449 #.  FIXME So, why is it useful?
2450 #. type: Plain text
2451 #: build/C/man2/perf_event_open.2:159
2452 msgid ""
2453 "This flag allows creating an event as part of an event group but having no "
2454 "group leader.  It is unclear why this is useful."
2455 msgstr ""
2456
2457 #. type: TP
2458 #: build/C/man2/perf_event_open.2:159
2459 #, no-wrap
2460 msgid "B<PERF_FLAG_FD_OUTPUT>"
2461 msgstr ""
2462
2463 #. type: Plain text
2464 #: build/C/man2/perf_event_open.2:162
2465 msgid "This flag re-routes the output from an event to the group leader."
2466 msgstr ""
2467
2468 #. type: TP
2469 #: build/C/man2/perf_event_open.2:162
2470 #, fuzzy, no-wrap
2471 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2472 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2473 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2474
2475 #. type: Plain text
2476 #: build/C/man2/perf_event_open.2:185
2477 msgid ""
2478 "This flag activates per-container system-wide monitoring.  A container is an "
2479 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2480 "memory, etc...).  In this mode, the event is measured only if the thread "
2481 "running on the monitored CPU belongs to the designated container (cgroup).  "
2482 "The cgroup is identified by passing a file descriptor opened on its "
2483 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2484 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2485 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2486 "the I<pid> parameter.  cgroup monitoring is only available for system-wide "
2487 "events and may therefore require extra permissions."
2488 msgstr ""
2489
2490 #. type: Plain text
2491 #: build/C/man2/perf_event_open.2:190
2492 msgid ""
2493 "The I<perf_event_attr> structure provides detailed configuration information "
2494 "for the event being created."
2495 msgstr ""
2496
2497 #. type: Plain text
2498 #: build/C/man2/perf_event_open.2:197
2499 #, no-wrap
2500 msgid ""
2501 "struct perf_event_attr {\n"
2502 "    __u32     type;         /* Type of event */\n"
2503 "    __u32     size;         /* Size of attribute structure */\n"
2504 "    __u64     config;       /* Type-specific configuration */\n"
2505 msgstr ""
2506
2507 #. type: Plain text
2508 #: build/C/man2/perf_event_open.2:202
2509 #, no-wrap
2510 msgid ""
2511 "    union {\n"
2512 "        __u64 sample_period;    /* Period of sampling */\n"
2513 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2514 "    };\n"
2515 msgstr ""
2516
2517 #. type: Plain text
2518 #: build/C/man2/perf_event_open.2:205
2519 #, no-wrap
2520 msgid ""
2521 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2522 "    __u64     read_format;  /* Specifies values returned in read */\n"
2523 msgstr ""
2524
2525 #. type: Plain text
2526 #: build/C/man2/perf_event_open.2:231
2527 #, no-wrap
2528 msgid ""
2529 "    __u64     disabled       : 1,   /* off by default */\n"
2530 "              inherit        : 1,   /* children inherit it */\n"
2531 "              pinned         : 1,   /* must always be on PMU */\n"
2532 "              exclusive      : 1,   /* only group on PMU */\n"
2533 "              exclude_user   : 1,   /* don't count user */\n"
2534 "              exclude_kernel : 1,   /* don't count kernel */\n"
2535 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2536 "              exclude_idle   : 1,   /* don't count when idle */\n"
2537 "              mmap           : 1,   /* include mmap data */\n"
2538 "              comm           : 1,   /* include comm data */\n"
2539 "              freq           : 1,   /* use freq, not period */\n"
2540 "              inherit_stat   : 1,   /* per task counts */\n"
2541 "              enable_on_exec : 1,   /* next exec enables */\n"
2542 "              task           : 1,   /* trace fork/exit */\n"
2543 "              watermark      : 1,   /* wakeup_watermark */\n"
2544 "              precise_ip     : 2,   /* skid constraint */\n"
2545 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2546 "              sample_id_all  : 1,   /* sample_type all events */\n"
2547 "              exclude_host   : 1,   /* don't count in host */\n"
2548 "              exclude_guest  : 1,   /* don't count in guest */\n"
2549 "              exclude_callchain_kernel : 1,\n"
2550 "                                    /* exclude kernel callchains */\n"
2551 "              exclude_callchain_user   : 1,\n"
2552 "\t                            /* exclude user callchains */\n"
2553 "              __reserved_1   : 41;\n"
2554 msgstr ""
2555
2556 #. type: Plain text
2557 #: build/C/man2/perf_event_open.2:236
2558 #, no-wrap
2559 msgid ""
2560 "    union {\n"
2561 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2562 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2563 "    };\n"
2564 msgstr ""
2565
2566 #. type: Plain text
2567 #: build/C/man2/perf_event_open.2:238
2568 #, no-wrap
2569 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2570 msgstr ""
2571
2572 #. type: Plain text
2573 #: build/C/man2/perf_event_open.2:243
2574 #, no-wrap
2575 msgid ""
2576 "    union {\n"
2577 "        __u64 bp_addr;          /* breakpoint address */\n"
2578 "        __u64 config1;          /* extension of config */\n"
2579 "    };\n"
2580 msgstr ""
2581
2582 #. type: Plain text
2583 #: build/C/man2/perf_event_open.2:253
2584 #, no-wrap
2585 msgid ""
2586 "    union {\n"
2587 "        __u64 bp_len;           /* breakpoint length */\n"
2588 "        __u64 config2;          /* extension of config1 */\n"
2589 "    };\n"
2590 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2591 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2592 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2593 "                                   samples */\n"
2594 "    __u32   __reserved_2;       /* Align to u64 */\n"
2595 msgstr ""
2596
2597 #. type: Plain text
2598 #: build/C/man2/perf_event_open.2:255
2599 #, no-wrap
2600 msgid "};\n"
2601 msgstr ""
2602
2603 #. type: Plain text
2604 #: build/C/man2/perf_event_open.2:261
2605 msgid ""
2606 "The fields of the I<perf_event_attr> structure are described in more detail "
2607 "below:"
2608 msgstr ""
2609
2610 #. type: TP
2611 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2612 #, no-wrap
2613 msgid "I<type>"
2614 msgstr ""
2615
2616 #. type: Plain text
2617 #: build/C/man2/perf_event_open.2:265
2618 msgid ""
2619 "This field specifies the overall event type.  It has one of the following "
2620 "values:"
2621 msgstr ""
2622
2623 #. type: TP
2624 #: build/C/man2/perf_event_open.2:266
2625 #, no-wrap
2626 msgid "B<PERF_TYPE_HARDWARE>"
2627 msgstr ""
2628
2629 #. type: Plain text
2630 #: build/C/man2/perf_event_open.2:273
2631 msgid ""
2632 "This indicates one of the \"generalized\" hardware events provided by the "
2633 "kernel.  See the I<config> field definition for more details."
2634 msgstr ""
2635
2636 #. type: TP
2637 #: build/C/man2/perf_event_open.2:273
2638 #, no-wrap
2639 msgid "B<PERF_TYPE_SOFTWARE>"
2640 msgstr ""
2641
2642 #. type: Plain text
2643 #: build/C/man2/perf_event_open.2:277
2644 msgid ""
2645 "This indicates one of the software-defined events provided by the kernel "
2646 "(even if no hardware support is available)."
2647 msgstr ""
2648
2649 #. type: TP
2650 #: build/C/man2/perf_event_open.2:277
2651 #, fuzzy, no-wrap
2652 #| msgid "B<PTRACE_CONT>"
2653 msgid "B<PERF_TYPE_TRACEPOINT>"
2654 msgstr "B<PTRACE_CONT>"
2655
2656 #. type: Plain text
2657 #: build/C/man2/perf_event_open.2:281
2658 msgid ""
2659 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2660 msgstr ""
2661
2662 #. type: TP
2663 #: build/C/man2/perf_event_open.2:281
2664 #, no-wrap
2665 msgid "B<PERF_TYPE_HW_CACHE>"
2666 msgstr ""
2667
2668 #. type: Plain text
2669 #: build/C/man2/perf_event_open.2:287
2670 msgid ""
2671 "This indicates a hardware cache event.  This has a special encoding, "
2672 "described in the I<config> field definition."
2673 msgstr ""
2674
2675 #. type: TP
2676 #: build/C/man2/perf_event_open.2:287
2677 #, no-wrap
2678 msgid "B<PERF_TYPE_RAW>"
2679 msgstr ""
2680
2681 #. type: Plain text
2682 #: build/C/man2/perf_event_open.2:291
2683 msgid ""
2684 "This indicates a \"raw\" implementation-specific event in the I<config> "
2685 "field."
2686 msgstr ""
2687
2688 #. type: TP
2689 #: build/C/man2/perf_event_open.2:291
2690 #, fuzzy, no-wrap
2691 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2692 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2693 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2694
2695 #. type: Plain text
2696 #: build/C/man2/perf_event_open.2:296
2697 msgid ""
2698 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2699 "can be read/write accesses to an address as well as execution of an "
2700 "instruction address."
2701 msgstr ""
2702
2703 #. type: TP
2704 #: build/C/man2/perf_event_open.2:296
2705 #, no-wrap
2706 msgid "dynamic PMU"
2707 msgstr ""
2708
2709 #. type: Plain text
2710 #: build/C/man2/perf_event_open.2:315
2711 msgid ""
2712 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2713 "enable this, a value exported by the kernel can be used in the I<type> field "
2714 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2715 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2716 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2717 "content is an integer that can be used in the I<type> field.  For instance, "
2718 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2719 "CPU PMU, which is usually 4."
2720 msgstr ""
2721
2722 #. type: TP
2723 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2724 #, no-wrap
2725 msgid "I<size>"
2726 msgstr ""
2727
2728 #. type: Plain text
2729 #: build/C/man2/perf_event_open.2:325
2730 msgid ""
2731 "The size of the I<perf_event_attr> structure for forward/backward "
2732 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2733 "the kernel to see the struct size at the time of compilation."
2734 msgstr ""
2735
2736 #. type: Plain text
2737 #: build/C/man2/perf_event_open.2:340
2738 msgid ""
2739 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2740 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2741 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2742 "corresponding to the addition of branch sampling in Linux 3.4.  "
2743 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2744 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2745 msgstr ""
2746
2747 #. type: TP
2748 #: build/C/man2/perf_event_open.2:340
2749 #, no-wrap
2750 msgid "I<config>"
2751 msgstr ""
2752
2753 #. type: Plain text
2754 #: build/C/man2/perf_event_open.2:351
2755 msgid ""
2756 "This specifies which event you want, in conjunction with the I<type> field.  "
2757 "The I<config1> and I<config2> fields are also taken into account in cases "
2758 "where 64 bits is not enough to fully specify the event.  The encoding of "
2759 "these fields are event dependent."
2760 msgstr ""
2761
2762 #. type: Plain text
2763 #: build/C/man2/perf_event_open.2:357
2764 msgid ""
2765 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2766 "counter configuration data; if the most significant bit is unset, the next 7 "
2767 "bits are an event type and the rest of the bits are the event identifier."
2768 msgstr ""
2769
2770 #. type: Plain text
2771 #: build/C/man2/perf_event_open.2:368
2772 msgid ""
2773 "There are various ways to set the I<config> field that are dependent on the "
2774 "value of the previously described I<type> field.  What follows are various "
2775 "possible settings for I<config> separated out by I<type>."
2776 msgstr ""
2777
2778 #. type: Plain text
2779 #: build/C/man2/perf_event_open.2:378
2780 msgid ""
2781 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2782 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2783 "I<config> to one of the following:"
2784 msgstr ""
2785
2786 #. type: TP
2787 #: build/C/man2/perf_event_open.2:379
2788 #, no-wrap
2789 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2790 msgstr ""
2791
2792 #. type: Plain text
2793 #: build/C/man2/perf_event_open.2:383
2794 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2795 msgstr ""
2796
2797 #. type: TP
2798 #: build/C/man2/perf_event_open.2:383
2799 #, no-wrap
2800 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2801 msgstr ""
2802
2803 #. type: Plain text
2804 #: build/C/man2/perf_event_open.2:388
2805 msgid ""
2806 "Retired instructions.  Be careful, these can be affected by various issues, "
2807 "most notably hardware interrupt counts"
2808 msgstr ""
2809
2810 #. type: TP
2811 #: build/C/man2/perf_event_open.2:388
2812 #, no-wrap
2813 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2814 msgstr ""
2815
2816 #. type: Plain text
2817 #: build/C/man2/perf_event_open.2:395
2818 msgid ""
2819 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2820 "may vary depending on your CPU.  This may include prefetches and coherency "
2821 "messages; again this depends on the design of your CPU."
2822 msgstr ""
2823
2824 #. type: TP
2825 #: build/C/man2/perf_event_open.2:395
2826 #, no-wrap
2827 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2828 msgstr ""
2829
2830 #. type: Plain text
2831 #: build/C/man2/perf_event_open.2:402
2832 msgid ""
2833 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2834 "intended to be used in conjunction with the "
2835 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2836 msgstr ""
2837
2838 #. type: TP
2839 #: build/C/man2/perf_event_open.2:402
2840 #, no-wrap
2841 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2842 msgstr ""
2843
2844 #. type: Plain text
2845 #: build/C/man2/perf_event_open.2:407
2846 msgid ""
2847 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2848 "event on AMD processors."
2849 msgstr ""
2850
2851 #. type: TP
2852 #: build/C/man2/perf_event_open.2:407
2853 #, no-wrap
2854 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2855 msgstr ""
2856
2857 #. type: Plain text
2858 #: build/C/man2/perf_event_open.2:410
2859 msgid "Mispredicted branch instructions."
2860 msgstr ""
2861
2862 #. type: TP
2863 #: build/C/man2/perf_event_open.2:410
2864 #, no-wrap
2865 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2866 msgstr ""
2867
2868 #. type: Plain text
2869 #: build/C/man2/perf_event_open.2:413
2870 msgid "Bus cycles, which can be different from total cycles."
2871 msgstr ""
2872
2873 #. type: TP
2874 #: build/C/man2/perf_event_open.2:413
2875 #, fuzzy, no-wrap
2876 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2877 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2878 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2879
2880 #. type: Plain text
2881 #: build/C/man2/perf_event_open.2:416
2882 msgid "Stalled cycles during issue."
2883 msgstr ""
2884
2885 #. type: TP
2886 #: build/C/man2/perf_event_open.2:416
2887 #, no-wrap
2888 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2889 msgstr ""
2890
2891 #. type: Plain text
2892 #: build/C/man2/perf_event_open.2:419
2893 msgid "Stalled cycles during retirement."
2894 msgstr ""
2895
2896 #. type: TP
2897 #: build/C/man2/perf_event_open.2:419
2898 #, fuzzy, no-wrap
2899 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2900 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2901 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2902
2903 #. type: Plain text
2904 #: build/C/man2/perf_event_open.2:422
2905 msgid "Total cycles; not affected by CPU frequency scaling."
2906 msgstr ""
2907
2908 #. type: Plain text
2909 #: build/C/man2/perf_event_open.2:432
2910 msgid ""
2911 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2912 "provided by the kernel.  Set I<config> to one of the following:"
2913 msgstr ""
2914
2915 #. type: TP
2916 #: build/C/man2/perf_event_open.2:433
2917 #, no-wrap
2918 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2919 msgstr ""
2920
2921 #. type: Plain text
2922 #: build/C/man2/perf_event_open.2:436
2923 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2924 msgstr ""
2925
2926 #. type: TP
2927 #: build/C/man2/perf_event_open.2:436
2928 #, no-wrap
2929 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2930 msgstr ""
2931
2932 #. type: Plain text
2933 #: build/C/man2/perf_event_open.2:439
2934 msgid "This reports a clock count specific to the task that is running."
2935 msgstr ""
2936
2937 #. type: TP
2938 #: build/C/man2/perf_event_open.2:439
2939 #, no-wrap
2940 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2941 msgstr ""
2942
2943 #. type: Plain text
2944 #: build/C/man2/perf_event_open.2:442
2945 msgid "This reports the number of page faults."
2946 msgstr ""
2947
2948 #. type: TP
2949 #: build/C/man2/perf_event_open.2:442
2950 #, no-wrap
2951 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2952 msgstr ""
2953
2954 #. type: Plain text
2955 #: build/C/man2/perf_event_open.2:447
2956 msgid ""
2957 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2958 "as user-space events, after that they are reported as happening in the "
2959 "kernel."
2960 msgstr ""
2961
2962 #. type: TP
2963 #: build/C/man2/perf_event_open.2:447
2964 #, no-wrap
2965 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2966 msgstr ""
2967
2968 #. type: Plain text
2969 #: build/C/man2/perf_event_open.2:451
2970 msgid "This reports the number of times the process has migrated to a new CPU."
2971 msgstr ""
2972
2973 #. type: TP
2974 #: build/C/man2/perf_event_open.2:451
2975 #, no-wrap
2976 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2977 msgstr ""
2978
2979 #. type: Plain text
2980 #: build/C/man2/perf_event_open.2:455
2981 msgid ""
2982 "This counts the number of minor page faults.  These did not require disk I/O "
2983 "to handle."
2984 msgstr ""
2985
2986 #. type: TP
2987 #: build/C/man2/perf_event_open.2:455
2988 #, no-wrap
2989 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2990 msgstr ""
2991
2992 #. type: Plain text
2993 #: build/C/man2/perf_event_open.2:459
2994 msgid ""
2995 "This counts the number of major page faults.  These required disk I/O to "
2996 "handle."
2997 msgstr ""
2998
2999 #. type: TP
3000 #: build/C/man2/perf_event_open.2:459
3001 #, fuzzy, no-wrap
3002 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3003 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
3004 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3005
3006 #. type: Plain text
3007 #: build/C/man2/perf_event_open.2:465
3008 msgid ""
3009 "This counts the number of alignment faults.  These happen when unaligned "
3010 "memory accesses happen; the kernel can handle these but it reduces "
3011 "performance.  This only happens on some architectures (never on x86)."
3012 msgstr ""
3013
3014 #. type: TP
3015 #: build/C/man2/perf_event_open.2:465
3016 #, fuzzy, no-wrap
3017 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3018 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
3019 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3020
3021 #. type: Plain text
3022 #: build/C/man2/perf_event_open.2:471
3023 msgid ""
3024 "This counts the number of emulation faults.  The kernel sometimes traps on "
3025 "unimplemented instructions and emulates them for user space.  This can "
3026 "negatively impact performance."
3027 msgstr ""
3028
3029 #. type: Plain text
3030 #: build/C/man2/perf_event_open.2:484
3031 msgid ""
3032 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3033 "tracepoints.  The value to use in I<config> can be obtained from under "
3034 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3035 msgstr ""
3036
3037 #. type: Plain text
3038 #: build/C/man2/perf_event_open.2:495
3039 msgid ""
3040 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3041 "cache event.  To calculate the appropriate I<config> value use the following "
3042 "equation:"
3043 msgstr ""
3044
3045 #. type: Plain text
3046 #: build/C/man2/perf_event_open.2:500
3047 #, no-wrap
3048 msgid ""
3049 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3050 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3051 msgstr ""
3052
3053 #. type: Plain text
3054 #: build/C/man2/perf_event_open.2:505
3055 msgid "where I<perf_hw_cache_id> is one of:"
3056 msgstr ""
3057
3058 #. type: TP
3059 #: build/C/man2/perf_event_open.2:506
3060 #, no-wrap
3061 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3062 msgstr ""
3063
3064 #. type: Plain text
3065 #: build/C/man2/perf_event_open.2:509
3066 msgid "for measuring Level 1 Data Cache"
3067 msgstr ""
3068
3069 #. type: TP
3070 #: build/C/man2/perf_event_open.2:509
3071 #, no-wrap
3072 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3073 msgstr ""
3074
3075 #. type: Plain text
3076 #: build/C/man2/perf_event_open.2:512
3077 msgid "for measuring Level 1 Instruction Cache"
3078 msgstr ""
3079
3080 #. type: TP
3081 #: build/C/man2/perf_event_open.2:512
3082 #, no-wrap
3083 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3084 msgstr ""
3085
3086 #. type: Plain text
3087 #: build/C/man2/perf_event_open.2:515
3088 msgid "for measuring Last-Level Cache"
3089 msgstr ""
3090
3091 #. type: TP
3092 #: build/C/man2/perf_event_open.2:515
3093 #, no-wrap
3094 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3095 msgstr ""
3096
3097 #. type: Plain text
3098 #: build/C/man2/perf_event_open.2:518
3099 msgid "for measuring the Data TLB"
3100 msgstr ""
3101
3102 #. type: TP
3103 #: build/C/man2/perf_event_open.2:518
3104 #, no-wrap
3105 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3106 msgstr ""
3107
3108 #. type: Plain text
3109 #: build/C/man2/perf_event_open.2:521
3110 msgid "for measuring the Instruction TLB"
3111 msgstr ""
3112
3113 #. type: TP
3114 #: build/C/man2/perf_event_open.2:521
3115 #, no-wrap
3116 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3117 msgstr ""
3118
3119 #. type: Plain text
3120 #: build/C/man2/perf_event_open.2:524
3121 msgid "for measuring the branch prediction unit"
3122 msgstr ""
3123
3124 #. type: TP
3125 #: build/C/man2/perf_event_open.2:524
3126 #, fuzzy, no-wrap
3127 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3128 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3129 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3130
3131 #. type: Plain text
3132 #: build/C/man2/perf_event_open.2:527
3133 msgid "for measuring local memory accesses"
3134 msgstr ""
3135
3136 #. type: Plain text
3137 #: build/C/man2/perf_event_open.2:532
3138 msgid "and I<perf_hw_cache_op_id> is one of"
3139 msgstr ""
3140
3141 #. type: TP
3142 #: build/C/man2/perf_event_open.2:533
3143 #, no-wrap
3144 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3145 msgstr ""
3146
3147 #. type: Plain text
3148 #: build/C/man2/perf_event_open.2:536
3149 msgid "for read accesses"
3150 msgstr ""
3151
3152 #. type: TP
3153 #: build/C/man2/perf_event_open.2:536
3154 #, no-wrap
3155 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3156 msgstr ""
3157
3158 #. type: Plain text
3159 #: build/C/man2/perf_event_open.2:539
3160 msgid "for write accesses"
3161 msgstr ""
3162
3163 #. type: TP
3164 #: build/C/man2/perf_event_open.2:539
3165 #, no-wrap
3166 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3167 msgstr ""
3168
3169 #. type: Plain text
3170 #: build/C/man2/perf_event_open.2:542
3171 msgid "for prefetch accesses"
3172 msgstr ""
3173
3174 #. type: Plain text
3175 #: build/C/man2/perf_event_open.2:547
3176 msgid "and I<perf_hw_cache_op_result_id> is one of"
3177 msgstr ""
3178
3179 #. type: TP
3180 #: build/C/man2/perf_event_open.2:548
3181 #, no-wrap
3182 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3183 msgstr ""
3184
3185 #. type: Plain text
3186 #: build/C/man2/perf_event_open.2:551
3187 msgid "to measure accesses"
3188 msgstr ""
3189
3190 #. type: TP
3191 #: build/C/man2/perf_event_open.2:551
3192 #, no-wrap
3193 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3194 msgstr ""
3195
3196 #. type: Plain text
3197 #: build/C/man2/perf_event_open.2:554
3198 msgid "to measure misses"
3199 msgstr ""
3200
3201 #. type: Plain text
3202 #: build/C/man2/perf_event_open.2:572
3203 msgid ""
3204 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3205 "needed.  Most CPUs support events that are not covered by the \"generalized"
3206 "\" events.  These are implementation defined; see your CPU manual (for "
3207 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3208 "Developer Guide).  The libpfm4 library can be used to translate from the "
3209 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3210 "expects in this field."
3211 msgstr ""
3212
3213 #. type: Plain text
3214 #: build/C/man2/perf_event_open.2:581
3215 msgid ""
3216 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3217 "Its parameters are set in other places."
3218 msgstr ""
3219
3220 #. type: TP
3221 #: build/C/man2/perf_event_open.2:582
3222 #, no-wrap
3223 msgid "I<sample_period>, I<sample_freq>"
3224 msgstr ""
3225
3226 #. type: Plain text
3227 #: build/C/man2/perf_event_open.2:594
3228 msgid ""
3229 "A \"sampling\" counter is one that generates an interrupt every N events, "
3230 "where N is given by I<sample_period>.  A sampling counter has "
3231 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3232 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3233 "is recorded on each interrupt."
3234 msgstr ""
3235
3236 #. type: Plain text
3237 #: build/C/man2/perf_event_open.2:604
3238 msgid ""
3239 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3240 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3241 "period to try and achieve the desired rate.  The rate of adjustment is a "
3242 "timer tick."
3243 msgstr ""
3244
3245 #. type: TP
3246 #: build/C/man2/perf_event_open.2:604
3247 #, no-wrap
3248 msgid "I<sample_type>"
3249 msgstr ""
3250
3251 #. type: Plain text
3252 #: build/C/man2/perf_event_open.2:616
3253 msgid ""
3254 "The various bits in this field specify which values to include in the "
3255 "sample.  They will be recorded in a ring-buffer, which is available to user "
3256 "space using B<mmap>(2).  The order in which the values are saved in the "
3257 "sample are documented in the MMAP Layout subsection below; it is not the "
3258 "I<enum perf_event_sample_format> order."
3259 msgstr ""
3260
3261 #. type: TP
3262 #: build/C/man2/perf_event_open.2:617
3263 #, no-wrap
3264 msgid "B<PERF_SAMPLE_IP>"
3265 msgstr ""
3266
3267 #. type: Plain text
3268 #: build/C/man2/perf_event_open.2:620
3269 msgid "Records instruction pointer."
3270 msgstr ""
3271
3272 #. type: TP
3273 #: build/C/man2/perf_event_open.2:620
3274 #, no-wrap
3275 msgid "B<PERF_SAMPLE_TID>"
3276 msgstr ""
3277
3278 #. type: Plain text
3279 #: build/C/man2/perf_event_open.2:623
3280 msgid "Records the process and thread IDs."
3281 msgstr ""
3282
3283 #. type: TP
3284 #: build/C/man2/perf_event_open.2:623
3285 #, no-wrap
3286 msgid "B<PERF_SAMPLE_TIME>"
3287 msgstr ""
3288
3289 #. type: Plain text
3290 #: build/C/man2/perf_event_open.2:626
3291 msgid "Records a timestamp."
3292 msgstr ""
3293
3294 #. type: TP
3295 #: build/C/man2/perf_event_open.2:626
3296 #, no-wrap
3297 msgid "B<PERF_SAMPLE_ADDR>"
3298 msgstr ""
3299
3300 #. type: Plain text
3301 #: build/C/man2/perf_event_open.2:629
3302 msgid "Records an address, if applicable."
3303 msgstr ""
3304
3305 #. type: TP
3306 #: build/C/man2/perf_event_open.2:629
3307 #, no-wrap
3308 msgid "B<PERF_SAMPLE_READ>"
3309 msgstr ""
3310
3311 #. type: Plain text
3312 #: build/C/man2/perf_event_open.2:632
3313 msgid ""
3314 "Record counter values for all events in a group, not just the group leader."
3315 msgstr ""
3316
3317 #. type: TP
3318 #: build/C/man2/perf_event_open.2:632
3319 #, no-wrap
3320 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3321 msgstr ""
3322
3323 #. type: Plain text
3324 #: build/C/man2/perf_event_open.2:635
3325 msgid "Records the callchain (stack backtrace)."
3326 msgstr ""
3327
3328 #. type: TP
3329 #: build/C/man2/perf_event_open.2:635
3330 #, no-wrap
3331 msgid "B<PERF_SAMPLE_ID>"
3332 msgstr ""
3333
3334 #. type: Plain text
3335 #: build/C/man2/perf_event_open.2:638
3336 msgid "Records a unique ID for the opened event's group leader."
3337 msgstr ""
3338
3339 #. type: TP
3340 #: build/C/man2/perf_event_open.2:638
3341 #, no-wrap
3342 msgid "B<PERF_SAMPLE_CPU>"
3343 msgstr ""
3344
3345 #. type: Plain text
3346 #: build/C/man2/perf_event_open.2:641
3347 msgid "Records CPU number."
3348 msgstr ""
3349
3350 #. type: TP
3351 #: build/C/man2/perf_event_open.2:641
3352 #, no-wrap
3353 msgid "B<PERF_SAMPLE_PERIOD>"
3354 msgstr ""
3355
3356 #. type: Plain text
3357 #: build/C/man2/perf_event_open.2:644
3358 msgid "Records the current sampling period."
3359 msgstr ""
3360
3361 #. type: TP
3362 #: build/C/man2/perf_event_open.2:644
3363 #, no-wrap
3364 msgid "B<PERF_SAMPLE_STREAM_ID>"
3365 msgstr ""
3366
3367 #. type: Plain text
3368 #: build/C/man2/perf_event_open.2:651
3369 msgid ""
3370 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3371 "actual ID is returned, not the group leader.  This ID is the same as the one "
3372 "returned by PERF_FORMAT_ID."
3373 msgstr ""
3374
3375 #. type: TP
3376 #: build/C/man2/perf_event_open.2:651
3377 #, no-wrap
3378 msgid "B<PERF_SAMPLE_RAW>"
3379 msgstr ""
3380
3381 #. type: Plain text
3382 #: build/C/man2/perf_event_open.2:655
3383 msgid ""
3384 "Records additional data, if applicable.  Usually returned by tracepoint "
3385 "events."
3386 msgstr ""
3387
3388 #. type: TP
3389 #: build/C/man2/perf_event_open.2:655
3390 #, fuzzy, no-wrap
3391 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3392 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3393 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3394
3395 #. type: Plain text
3396 #: build/C/man2/perf_event_open.2:659
3397 msgid "Records the branch stack.  See branch_sample_type."
3398 msgstr ""
3399
3400 #. type: TP
3401 #: build/C/man2/perf_event_open.2:659
3402 #, fuzzy, no-wrap
3403 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3404 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3405 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3406
3407 #. type: Plain text
3408 #: build/C/man2/perf_event_open.2:662
3409 msgid "Records the current register state."
3410 msgstr ""
3411
3412 #. type: TP
3413 #: build/C/man2/perf_event_open.2:662
3414 #, fuzzy, no-wrap
3415 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3416 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3417 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3418
3419 #. type: Plain text
3420 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3421 #: build/C/man2/perf_event_open.2:1803
3422 msgid "[To be documented]"
3423 msgstr ""
3424
3425 #. type: TP
3426 #: build/C/man2/perf_event_open.2:666
3427 #, no-wrap
3428 msgid "I<read_format>"
3429 msgstr ""
3430
3431 #. type: Plain text
3432 #: build/C/man2/perf_event_open.2:673
3433 msgid ""
3434 "This field specifies the format of the data returned by B<read>(2)  on a "
3435 "B<perf_event_open>()  file descriptor."
3436 msgstr ""
3437
3438 #. type: TP
3439 #: build/C/man2/perf_event_open.2:674
3440 #, no-wrap
3441 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3442 msgstr ""
3443
3444 #. type: Plain text
3445 #: build/C/man2/perf_event_open.2:681
3446 msgid ""
3447 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3448 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3449 msgstr ""
3450
3451 #. type: TP
3452 #: build/C/man2/perf_event_open.2:681
3453 #, no-wrap
3454 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3455 msgstr ""
3456
3457 #. type: Plain text
3458 #: build/C/man2/perf_event_open.2:688
3459 msgid ""
3460 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3461 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3462 msgstr ""
3463
3464 #. type: TP
3465 #: build/C/man2/perf_event_open.2:688
3466 #, no-wrap
3467 msgid "B<PERF_FORMAT_ID>"
3468 msgstr ""
3469
3470 #. type: Plain text
3471 #: build/C/man2/perf_event_open.2:691
3472 msgid "Adds a 64-bit unique value that corresponds to the event group."
3473 msgstr ""
3474
3475 #. type: TP
3476 #: build/C/man2/perf_event_open.2:691
3477 #, no-wrap
3478 msgid "B<PERF_FORMAT_GROUP>"
3479 msgstr ""
3480
3481 #. type: Plain text
3482 #: build/C/man2/perf_event_open.2:694
3483 msgid "Allows all counter values in an event group to be read with one read."
3484 msgstr ""
3485
3486 #. type: TP
3487 #: build/C/man2/perf_event_open.2:695
3488 #, no-wrap
3489 msgid "I<disabled>"
3490 msgstr ""
3491
3492 #. type: Plain text
3493 #: build/C/man2/perf_event_open.2:705
3494 msgid ""
3495 "The I<disabled> bit specifies whether the counter starts out disabled or "
3496 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3497 "B<prctl>(2), or I<enable_on_exec>."
3498 msgstr ""
3499
3500 #. type: TP
3501 #: build/C/man2/perf_event_open.2:705
3502 #, no-wrap
3503 msgid "I<inherit>"
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man2/perf_event_open.2:714
3508 msgid ""
3509 "The I<inherit> bit specifies that this counter should count events of child "
3510 "tasks as well as the task specified.  This only applies to new children, not "
3511 "to any existing children at the time the counter is created (nor to any new "
3512 "children of existing children)."
3513 msgstr ""
3514
3515 #. type: Plain text
3516 #: build/C/man2/perf_event_open.2:719
3517 msgid ""
3518 "Inherit does not work for some combinations of I<read_format>s, such as "
3519 "B<PERF_FORMAT_GROUP>."
3520 msgstr ""
3521
3522 #. type: TP
3523 #: build/C/man2/perf_event_open.2:719
3524 #, no-wrap
3525 msgid "I<pinned>"
3526 msgstr ""
3527
3528 #. type: Plain text
3529 #: build/C/man2/perf_event_open.2:732
3530 msgid ""
3531 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3532 "at all possible.  It only applies to hardware counters and only to group "
3533 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3534 "there are not enough hardware counters or because of a conflict with some "
3535 "other event), then the counter goes into an 'error' state, where reads "
3536 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3537 "subsequently enabled or disabled."
3538 msgstr ""
3539
3540 #. type: TP
3541 #: build/C/man2/perf_event_open.2:732
3542 #, no-wrap
3543 msgid "I<exclusive>"
3544 msgstr ""
3545
3546 #. type: Plain text
3547 #: build/C/man2/perf_event_open.2:741
3548 msgid ""
3549 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3550 "it should be the only group using the CPU's counters.  In the future this "
3551 "may allow monitoring programs to support PMU features that need to run alone "
3552 "so that they do not disrupt other hardware counters."
3553 msgstr ""
3554
3555 #. type: TP
3556 #: build/C/man2/perf_event_open.2:741
3557 #, no-wrap
3558 msgid "I<exclude_user>"
3559 msgstr ""
3560
3561 #. type: Plain text
3562 #: build/C/man2/perf_event_open.2:744
3563 msgid ""
3564 "If this bit is set, the count excludes events that happen in user space."
3565 msgstr ""
3566
3567 #. type: TP
3568 #: build/C/man2/perf_event_open.2:744
3569 #, no-wrap
3570 msgid "I<exclude_kernel>"
3571 msgstr ""
3572
3573 #. type: Plain text
3574 #: build/C/man2/perf_event_open.2:747
3575 msgid ""
3576 "If this bit is set, the count excludes events that happen in kernel-space."
3577 msgstr ""
3578
3579 #. type: TP
3580 #: build/C/man2/perf_event_open.2:747
3581 #, no-wrap
3582 msgid "I<exclude_hv>"
3583 msgstr ""
3584
3585 #. type: Plain text
3586 #: build/C/man2/perf_event_open.2:755
3587 msgid ""
3588 "If this bit is set, the count excludes events that happen in the "
3589 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3590 "this (such as POWER).  Extra support is needed for handling hypervisor "
3591 "measurements on most machines."
3592 msgstr ""
3593
3594 #. type: TP
3595 #: build/C/man2/perf_event_open.2:755
3596 #, no-wrap
3597 msgid "I<exclude_idle>"
3598 msgstr ""
3599
3600 #. type: Plain text
3601 #: build/C/man2/perf_event_open.2:758
3602 msgid "If set, don't count when the CPU is idle."
3603 msgstr ""
3604
3605 #. type: TP
3606 #: build/C/man2/perf_event_open.2:758
3607 #, no-wrap
3608 msgid "I<mmap>"
3609 msgstr ""
3610
3611 #. type: Plain text
3612 #: build/C/man2/perf_event_open.2:763
3613 msgid "The I<mmap> bit enables recording of exec mmap events."
3614 msgstr ""
3615
3616 #. type: TP
3617 #: build/C/man2/perf_event_open.2:763
3618 #, no-wrap
3619 msgid "I<comm>"
3620 msgstr ""
3621
3622 #. type: Plain text
3623 #: build/C/man2/perf_event_open.2:774
3624 msgid ""
3625 "The I<comm> bit enables tracking of process command name as modified by the "
3626 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3627 "tools, there is no way to distinguish one system call versus the other."
3628 msgstr ""
3629
3630 #. type: TP
3631 #: build/C/man2/perf_event_open.2:774
3632 #, no-wrap
3633 msgid "I<freq>"
3634 msgstr ""
3635
3636 #. type: Plain text
3637 #: build/C/man2/perf_event_open.2:781
3638 msgid ""
3639 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3640 "when setting up the sampling interval."
3641 msgstr ""
3642
3643 #. type: TP
3644 #: build/C/man2/perf_event_open.2:781
3645 #, no-wrap
3646 msgid "I<inherit_stat>"
3647 msgstr ""
3648
3649 #. type: Plain text
3650 #: build/C/man2/perf_event_open.2:788
3651 msgid ""
3652 "This bit enables saving of event counts on context switch for inherited "
3653 "tasks.  This is only meaningful if the I<inherit> field is set."
3654 msgstr ""
3655
3656 #. type: TP
3657 #: build/C/man2/perf_event_open.2:788
3658 #, no-wrap
3659 msgid "I<enable_on_exec>"
3660 msgstr ""
3661
3662 #. type: Plain text
3663 #: build/C/man2/perf_event_open.2:793
3664 msgid ""
3665 "If this bit is set, a counter is automatically enabled after a call to "
3666 "B<exec>(2)."
3667 msgstr ""
3668
3669 #. type: TP
3670 #: build/C/man2/perf_event_open.2:793
3671 #, no-wrap
3672 msgid "I<task>"
3673 msgstr ""
3674
3675 #. type: Plain text
3676 #: build/C/man2/perf_event_open.2:797
3677 msgid ""
3678 "If this bit is set, then fork/exit notifications are included in the ring "
3679 "buffer."
3680 msgstr ""
3681
3682 #. type: TP
3683 #: build/C/man2/perf_event_open.2:797
3684 #, no-wrap
3685 msgid "I<watermark>"
3686 msgstr ""
3687
3688 #. type: Plain text
3689 #: build/C/man2/perf_event_open.2:805
3690 msgid ""
3691 "If set, have a sampling interrupt happen when we cross the "
3692 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3693 "I<wakeup_events> samples."
3694 msgstr ""
3695
3696 #. type: TP
3697 #: build/C/man2/perf_event_open.2:805
3698 #, fuzzy, no-wrap
3699 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3700 msgid "I<precise_ip> (Since Linux 2.6.35)"
3701 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3702
3703 #. type: Plain text
3704 #: build/C/man2/perf_event_open.2:815
3705 msgid ""
3706 "This controls the amount of skid.  Skid is how many instructions execute "
3707 "between an event of interest happening and the kernel being able to stop and "
3708 "record the event.  Smaller skid is better and allows more accurate reporting "
3709 "of which events correspond to which instructions, but hardware is often "
3710 "limited with how small this can be."
3711 msgstr ""
3712
3713 #. type: Plain text
3714 #: build/C/man2/perf_event_open.2:817
3715 #, fuzzy
3716 #| msgid "The I<subcmd> value is one of the following:"
3717 msgid "The values of this are the following:"
3718 msgstr "I<subcmd> の値は以下のいずれかである"
3719
3720 #. type: TP
3721 #: build/C/man2/perf_event_open.2:818
3722 #, no-wrap
3723 msgid "0 -"
3724 msgstr ""
3725
3726 #. type: Plain text
3727 #: build/C/man2/perf_event_open.2:822
3728 msgid "B<SAMPLE_IP> can have arbitrary skid"
3729 msgstr ""
3730
3731 #. type: TP
3732 #: build/C/man2/perf_event_open.2:822
3733 #, no-wrap
3734 msgid "1 -"
3735 msgstr ""
3736
3737 #. type: Plain text
3738 #: build/C/man2/perf_event_open.2:826
3739 msgid "B<SAMPLE_IP> must have constant skid"
3740 msgstr ""
3741
3742 #. type: TP
3743 #: build/C/man2/perf_event_open.2:826
3744 #, no-wrap
3745 msgid "2 -"
3746 msgstr ""
3747
3748 #. type: Plain text
3749 #: build/C/man2/perf_event_open.2:830
3750 msgid "B<SAMPLE_IP> requested to have 0 skid"
3751 msgstr ""
3752
3753 #. type: TP
3754 #: build/C/man2/perf_event_open.2:830
3755 #, no-wrap
3756 msgid "3 -"
3757 msgstr ""
3758
3759 #. type: Plain text
3760 #: build/C/man2/perf_event_open.2:836
3761 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3762 msgstr ""
3763
3764 #. type: TP
3765 #: build/C/man2/perf_event_open.2:837
3766 #, fuzzy, no-wrap
3767 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3768 msgid "I<mmap_data> (Since Linux 2.6.36)"
3769 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3770
3771 #. type: Plain text
3772 #: build/C/man2/perf_event_open.2:843
3773 msgid ""
3774 "The counterpart of the I<mmap> field, but enables including data mmap events "
3775 "in the ring-buffer."
3776 msgstr ""
3777
3778 #. type: TP
3779 #: build/C/man2/perf_event_open.2:843
3780 #, fuzzy, no-wrap
3781 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3782 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3783 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3784
3785 #. type: Plain text
3786 #: build/C/man2/perf_event_open.2:851
3787 msgid ""
3788 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3789 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3790 "selected."
3791 msgstr ""
3792
3793 #. type: TP
3794 #: build/C/man2/perf_event_open.2:851
3795 #, no-wrap
3796 msgid "I<exclude_host> (Since Linux 3.2)"
3797 msgstr ""
3798
3799 #. type: Plain text
3800 #: build/C/man2/perf_event_open.2:854
3801 msgid "Do not measure time spent in VM host"
3802 msgstr ""
3803
3804 #. type: TP
3805 #: build/C/man2/perf_event_open.2:854
3806 #, no-wrap
3807 msgid "I<exclude_guest> (Since Linux 3.2)"
3808 msgstr ""
3809
3810 #. type: Plain text
3811 #: build/C/man2/perf_event_open.2:857
3812 msgid "Do not measure time spent in VM guest"
3813 msgstr ""
3814
3815 #. type: TP
3816 #: build/C/man2/perf_event_open.2:857
3817 #, no-wrap
3818 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3819 msgstr ""
3820
3821 #. type: Plain text
3822 #: build/C/man2/perf_event_open.2:860
3823 msgid "Do not include kernel callchains."
3824 msgstr ""
3825
3826 #. type: TP
3827 #: build/C/man2/perf_event_open.2:860
3828 #, no-wrap
3829 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3830 msgstr ""
3831
3832 #. type: Plain text
3833 #: build/C/man2/perf_event_open.2:863
3834 msgid "Do not include user callchains."
3835 msgstr ""
3836
3837 #. type: TP
3838 #: build/C/man2/perf_event_open.2:863
3839 #, no-wrap
3840 msgid "I<wakeup_events>, I<wakeup_watermark>"
3841 msgstr ""
3842
3843 #. type: Plain text
3844 #: build/C/man2/perf_event_open.2:873
3845 msgid ""
3846 "This union sets how many samples (I<wakeup_events>)  or bytes "
3847 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3848 "is used is selected by the I<watermark> bitflag."
3849 msgstr ""
3850
3851 #. type: TP
3852 #: build/C/man2/perf_event_open.2:873
3853 #, fuzzy, no-wrap
3854 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3855 msgid "I<bp_type> (Since Linux 2.6.33)"
3856 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3857
3858 #. type: Plain text
3859 #: build/C/man2/perf_event_open.2:877
3860 msgid "This chooses the breakpoint type.  It is one of:"
3861 msgstr ""
3862
3863 #. type: TP
3864 #: build/C/man2/perf_event_open.2:878
3865 #, no-wrap
3866 msgid "B<HW_BREAKPOINT_EMPTY>"
3867 msgstr ""
3868
3869 #. type: Plain text
3870 #: build/C/man2/perf_event_open.2:881
3871 msgid "no breakpoint"
3872 msgstr ""
3873
3874 #. type: TP
3875 #: build/C/man2/perf_event_open.2:881
3876 #, no-wrap
3877 msgid "B<HW_BREAKPOINT_R>"
3878 msgstr ""
3879
3880 #. type: Plain text
3881 #: build/C/man2/perf_event_open.2:884
3882 msgid "count when we read the memory location"
3883 msgstr ""
3884
3885 #. type: TP
3886 #: build/C/man2/perf_event_open.2:884
3887 #, no-wrap
3888 msgid "B<HW_BREAKPOINT_W>"
3889 msgstr ""
3890
3891 #. type: Plain text
3892 #: build/C/man2/perf_event_open.2:887
3893 msgid "count when we write the memory location"
3894 msgstr ""
3895
3896 #. type: TP
3897 #: build/C/man2/perf_event_open.2:887
3898 #, no-wrap
3899 msgid "B<HW_BREAKPOINT_RW>"
3900 msgstr ""
3901
3902 #. type: Plain text
3903 #: build/C/man2/perf_event_open.2:890
3904 msgid "count when we read or write the memory location"
3905 msgstr ""
3906
3907 #. type: TP
3908 #: build/C/man2/perf_event_open.2:890
3909 #, no-wrap
3910 msgid "B<HW_BREAKPOINT_X>"
3911 msgstr ""
3912
3913 #. type: Plain text
3914 #: build/C/man2/perf_event_open.2:893
3915 msgid "count when we execute code at the memory location"
3916 msgstr ""
3917
3918 #. type: Plain text
3919 #: build/C/man2/perf_event_open.2:902
3920 msgid ""
3921 "The values can be combined via a bitwise or, but the combination of "
3922 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3923 "allowed."
3924 msgstr ""
3925
3926 #. type: TP
3927 #: build/C/man2/perf_event_open.2:903
3928 #, fuzzy, no-wrap
3929 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3930 msgid "I<bp_addr> (Since Linux 2.6.33)"
3931 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3932
3933 #. type: Plain text
3934 #: build/C/man2/perf_event_open.2:910
3935 msgid ""
3936 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3937 "memory address of the instruction of interest; for read and write "
3938 "breakpoints it is the memory address of the memory location of interest."
3939 msgstr ""
3940
3941 #. type: TP
3942 #: build/C/man2/perf_event_open.2:910
3943 #, fuzzy, no-wrap
3944 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3945 msgid "I<config1> (Since Linux 2.6.39)"
3946 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3947
3948 #. type: Plain text
3949 #: build/C/man2/perf_event_open.2:917
3950 msgid ""
3951 "I<config1> is used for setting events that need an extra register or "
3952 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3953 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3954 msgstr ""
3955
3956 #. type: TP
3957 #: build/C/man2/perf_event_open.2:917
3958 #, fuzzy, no-wrap
3959 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3960 msgid "I<bp_len> (Since Linux 2.6.33)"
3961 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3962
3963 #. type: Plain text
3964 #: build/C/man2/perf_event_open.2:931
3965 msgid ""
3966 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3967 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3968 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3969 "an execution breakpoint, set this to I<sizeof(long)>."
3970 msgstr ""
3971
3972 #. type: TP
3973 #: build/C/man2/perf_event_open.2:931
3974 #, fuzzy, no-wrap
3975 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3976 msgid "I<config2> (Since Linux 2.6.39)"
3977 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3978
3979 #. type: Plain text
3980 #: build/C/man2/perf_event_open.2:938
3981 msgid "I<config2> is a further extension of the I<config1> field."
3982 msgstr ""
3983
3984 #. type: TP
3985 #: build/C/man2/perf_event_open.2:938
3986 #, no-wrap
3987 msgid "I<branch_sample_type> (Since Linux 3.4)"
3988 msgstr ""
3989
3990 #. type: Plain text
3991 #: build/C/man2/perf_event_open.2:942
3992 msgid ""
3993 "This is used with the CPUs hardware branch sampling, if available.  It can "
3994 "have one of the following values:"
3995 msgstr ""
3996
3997 #. type: TP
3998 #: build/C/man2/perf_event_open.2:943
3999 #, no-wrap
4000 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4001 msgstr ""
4002
4003 #. type: Plain text
4004 #: build/C/man2/perf_event_open.2:946
4005 msgid "Branch target is in user space"
4006 msgstr ""
4007
4008 #. type: TP
4009 #: build/C/man2/perf_event_open.2:946
4010 #, no-wrap
4011 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4012 msgstr ""
4013
4014 #. type: Plain text
4015 #: build/C/man2/perf_event_open.2:949
4016 msgid "Branch target is in kernel space"
4017 msgstr ""
4018
4019 #. type: TP
4020 #: build/C/man2/perf_event_open.2:949
4021 #, no-wrap
4022 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4023 msgstr ""
4024
4025 #. type: Plain text
4026 #: build/C/man2/perf_event_open.2:952
4027 msgid "Branch target is in hypervisor"
4028 msgstr ""
4029
4030 #. type: TP
4031 #: build/C/man2/perf_event_open.2:952
4032 #, no-wrap
4033 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4034 msgstr ""
4035
4036 #. type: Plain text
4037 #: build/C/man2/perf_event_open.2:955
4038 msgid "Any branch type."
4039 msgstr ""
4040
4041 #. type: TP
4042 #: build/C/man2/perf_event_open.2:955
4043 #, no-wrap
4044 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4045 msgstr ""
4046
4047 #. type: Plain text
4048 #: build/C/man2/perf_event_open.2:958
4049 msgid "Any call branch"
4050 msgstr ""
4051
4052 #. type: TP
4053 #: build/C/man2/perf_event_open.2:958
4054 #, no-wrap
4055 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4056 msgstr ""
4057
4058 #. type: Plain text
4059 #: build/C/man2/perf_event_open.2:961
4060 msgid "Any return branch"
4061 msgstr ""
4062
4063 #. type: TP
4064 #: build/C/man2/perf_event_open.2:961
4065 #, no-wrap
4066 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4067 msgstr ""
4068
4069 #. type: Plain text
4070 #: build/C/man2/perf_event_open.2:964
4071 msgid "Indirect calls"
4072 msgstr ""
4073
4074 #. type: TP
4075 #: build/C/man2/perf_event_open.2:964
4076 #, no-wrap
4077 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4078 msgstr ""
4079
4080 #. type: Plain text
4081 #: build/C/man2/perf_event_open.2:967
4082 msgid "User, kernel, and hv"
4083 msgstr ""
4084
4085 #. type: TP
4086 #: build/C/man2/perf_event_open.2:968
4087 #, no-wrap
4088 msgid "I<sample_regs_user> (Since Linux 3.7)"
4089 msgstr ""
4090
4091 #.  FIXME: The following reference seems to be not quite right:
4092 #. type: Plain text
4093 #: build/C/man2/perf_event_open.2:974
4094 msgid ""
4095 "This defines the set of user registers to dump on samples.  See I<asm/"
4096 "perf_regs.h>."
4097 msgstr ""
4098
4099 #. type: TP
4100 #: build/C/man2/perf_event_open.2:974
4101 #, no-wrap
4102 msgid "I<sample_stack_user> (Since Linux 3.7)"
4103 msgstr ""
4104
4105 #. type: Plain text
4106 #: build/C/man2/perf_event_open.2:977
4107 msgid "This defines the size of the user stack to dump on samples."
4108 msgstr ""
4109
4110 #. type: SS
4111 #: build/C/man2/perf_event_open.2:977
4112 #, no-wrap
4113 msgid "Reading results"
4114 msgstr ""
4115
4116 #. type: Plain text
4117 #: build/C/man2/perf_event_open.2:987
4118 msgid ""
4119 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4120 "the events can be read from the file descriptor.  The values that are there "
4121 "are specified by the I<read_format> field in the I<attr> structure at open "
4122 "time."
4123 msgstr ""
4124
4125 #. type: Plain text
4126 #: build/C/man2/perf_event_open.2:992
4127 msgid ""
4128 "If you attempt to read into a buffer that is not big enough to hold the data "
4129 "B<ENOSPC> is returned"
4130 msgstr ""
4131
4132 #. type: Plain text
4133 #: build/C/man2/perf_event_open.2:994
4134 msgid "Here is the layout of the data returned by a read:"
4135 msgstr ""
4136
4137 #. type: IP
4138 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4139 #: build/C/man2/ptrace.2:1552 build/C/man2/ptrace.2:1562
4140 #: build/C/man2/ptrace.2:1570 build/C/man2/ptrace.2:1576
4141 #: build/C/man2/ptrace.2:1705
4142 #, no-wrap
4143 msgid "*"
4144 msgstr ""
4145
4146 #. type: Plain text
4147 #: build/C/man2/perf_event_open.2:998
4148 msgid ""
4149 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4150 "at once:"
4151 msgstr ""
4152
4153 #. type: Plain text
4154 #: build/C/man2/perf_event_open.2:1010
4155 #, no-wrap
4156 msgid ""
4157 "struct read_format {\n"
4158 "    u64 nr;            /* The number of events */\n"
4159 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4160 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4161 "    struct\n"
4162 "        u64 value;     /* The value of the event */\n"
4163 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4164 "    } values[nr];\n"
4165 "};\n"
4166 msgstr ""
4167
4168 #. type: Plain text
4169 #: build/C/man2/perf_event_open.2:1018
4170 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4171 msgstr ""
4172
4173 #. type: Plain text
4174 #: build/C/man2/perf_event_open.2:1027
4175 #, no-wrap
4176 msgid ""
4177 "struct read_format {\n"
4178 "    u64 value;         /* The value of the event */\n"
4179 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4180 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4181 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4182 "};\n"
4183 msgstr ""
4184
4185 #. type: Plain text
4186 #: build/C/man2/perf_event_open.2:1031
4187 msgid "The values read are as follows:"
4188 msgstr ""
4189
4190 #. type: TP
4191 #: build/C/man2/perf_event_open.2:1031
4192 #, no-wrap
4193 msgid "I<nr>"
4194 msgstr ""
4195
4196 #. type: Plain text
4197 #: build/C/man2/perf_event_open.2:1037
4198 msgid ""
4199 "The number of events in this file descriptor.  Only available if "
4200 "B<PERF_FORMAT_GROUP> was specified."
4201 msgstr ""
4202
4203 #. type: TP
4204 #: build/C/man2/perf_event_open.2:1037
4205 #, no-wrap
4206 msgid "I<time_enabled>, I<time_running>"
4207 msgstr ""
4208
4209 #. type: Plain text
4210 #: build/C/man2/perf_event_open.2:1049
4211 msgid ""
4212 "Total time the event was enabled and running.  Normally these are the same.  "
4213 "If more events are started than available counter slots on the PMU, then "
4214 "multiplexing happens and events only run part of the time.  In that case the "
4215 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4216 "value for the count."
4217 msgstr ""
4218
4219 #. type: TP
4220 #: build/C/man2/perf_event_open.2:1049
4221 #, no-wrap
4222 msgid "I<value>"
4223 msgstr ""
4224
4225 #. type: Plain text
4226 #: build/C/man2/perf_event_open.2:1052
4227 msgid "An unsigned 64-bit value containing the counter result."
4228 msgstr ""
4229
4230 #. type: TP
4231 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4232 #: build/C/man2/perf_event_open.2:1451
4233 #, no-wrap
4234 msgid "I<id>"
4235 msgstr ""
4236
4237 #. type: Plain text
4238 #: build/C/man2/perf_event_open.2:1058
4239 msgid ""
4240 "A globally unique value for this particular event, only there if "
4241 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4242 msgstr ""
4243
4244 #. type: SS
4245 #: build/C/man2/perf_event_open.2:1058
4246 #, no-wrap
4247 msgid "MMAP layout"
4248 msgstr ""
4249
4250 #. type: Plain text
4251 #: build/C/man2/perf_event_open.2:1068
4252 msgid ""
4253 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4254 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4255 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4256 msgstr ""
4257
4258 #. type: Plain text
4259 #: build/C/man2/perf_event_open.2:1074
4260 msgid ""
4261 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4262 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4263 "such as where the ring-buffer head is."
4264 msgstr ""
4265
4266 #. type: Plain text
4267 #: build/C/man2/perf_event_open.2:1077
4268 msgid ""
4269 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4270 "ring buffer when sampling even if you do not plan to access it."
4271 msgstr ""
4272
4273 #. type: Plain text
4274 #: build/C/man2/perf_event_open.2:1079
4275 msgid "The structure of the first metadata mmap page is as follows:"
4276 msgstr ""
4277
4278 #. type: Plain text
4279 #: build/C/man2/perf_event_open.2:1103
4280 #, no-wrap
4281 msgid ""
4282 "struct perf_event_mmap_page {\n"
4283 "    __u32 version;          /* version number of this structure */\n"
4284 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4285 "    __u32 lock;             /* seqlock for synchronization */\n"
4286 "    __u32 index;            /* hardware counter identifier */\n"
4287 "    __s64 offset;           /* add to hardware counter value */\n"
4288 "    __u64 time_enabled;     /* time event active */\n"
4289 "    __u64 time_running;     /* time event on CPU */\n"
4290 "    union {\n"
4291 "        __u64   capabilities;\n"
4292 "        __u64   cap_usr_time  : 1,\n"
4293 "                cap_usr_rdpmc : 1,\n"
4294 "    };\n"
4295 "    __u16   pmc_width;\n"
4296 "    __u16   time_shift;\n"
4297 "    __u32   time_mult;\n"
4298 "    __u64   time_offset;\n"
4299 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4300 "    __u64   data_head;         /* head in the data section */\n"
4301 "    __u64   data_tail;         /* user-space written tail */\n"
4302 "}\n"
4303 msgstr ""
4304
4305 #. type: Plain text
4306 #: build/C/man2/perf_event_open.2:1109
4307 msgid ""
4308 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4309 "in more detail:"
4310 msgstr ""
4311
4312 #. type: TP
4313 #: build/C/man2/perf_event_open.2:1109
4314 #, no-wrap
4315 msgid "I<version>"
4316 msgstr ""
4317
4318 #. type: Plain text
4319 #: build/C/man2/perf_event_open.2:1112
4320 msgid "Version number of this structure."
4321 msgstr ""
4322
4323 #. type: TP
4324 #: build/C/man2/perf_event_open.2:1112
4325 #, no-wrap
4326 msgid "I<compat_version>"
4327 msgstr ""
4328
4329 #. type: Plain text
4330 #: build/C/man2/perf_event_open.2:1115
4331 msgid "The lowest version this is compatible with."
4332 msgstr ""
4333
4334 #. type: TP
4335 #: build/C/man2/perf_event_open.2:1115
4336 #, no-wrap
4337 msgid "I<lock>"
4338 msgstr ""
4339
4340 #. type: Plain text
4341 #: build/C/man2/perf_event_open.2:1118
4342 msgid "A seqlock for synchronization."
4343 msgstr ""
4344
4345 #. type: TP
4346 #: build/C/man2/perf_event_open.2:1118
4347 #, no-wrap
4348 msgid "I<index>"
4349 msgstr ""
4350
4351 #. type: Plain text
4352 #: build/C/man2/perf_event_open.2:1121
4353 msgid "A unique hardware counter identifier."
4354 msgstr ""
4355
4356 #. type: TP
4357 #: build/C/man2/perf_event_open.2:1121
4358 #, no-wrap
4359 msgid "I<offset>"
4360 msgstr ""
4361
4362 #.  FIXME clarify
4363 #. type: Plain text
4364 #: build/C/man2/perf_event_open.2:1125
4365 msgid "Add this to hardware counter value??"
4366 msgstr ""
4367
4368 #. type: TP
4369 #: build/C/man2/perf_event_open.2:1125
4370 #, no-wrap
4371 msgid "I<time_enabled>"
4372 msgstr ""
4373
4374 #. type: Plain text
4375 #: build/C/man2/perf_event_open.2:1128
4376 msgid "Time the event was active."
4377 msgstr ""
4378
4379 #. type: TP
4380 #: build/C/man2/perf_event_open.2:1128
4381 #, no-wrap
4382 msgid "I<time_running>"
4383 msgstr ""
4384
4385 #. type: Plain text
4386 #: build/C/man2/perf_event_open.2:1131
4387 msgid "Time the event was running."
4388 msgstr ""
4389
4390 #. type: TP
4391 #: build/C/man2/perf_event_open.2:1131
4392 #, no-wrap
4393 msgid "I<cap_usr_time>"
4394 msgstr ""
4395
4396 #. type: Plain text
4397 #: build/C/man2/perf_event_open.2:1134
4398 msgid "User time capability"
4399 msgstr ""
4400
4401 #. type: TP
4402 #: build/C/man2/perf_event_open.2:1134
4403 #, no-wrap
4404 msgid "I<cap_usr_rdpmc>"
4405 msgstr ""
4406
4407 #. type: Plain text
4408 #: build/C/man2/perf_event_open.2:1139
4409 msgid ""
4410 "If the hardware supports user-space read of performance counters without "
4411 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4412 "can be used to do a read:"
4413 msgstr ""
4414
4415 #. type: Plain text
4416 #: build/C/man2/perf_event_open.2:1146
4417 #, no-wrap
4418 msgid ""
4419 "u32 seq, time_mult, time_shift, idx, width;\n"
4420 "u64 count, enabled, running;\n"
4421 "u64 cyc, time_offset;\n"
4422 "s64 pmc = 0;\n"
4423 msgstr ""
4424
4425 #. type: Plain text
4426 #: build/C/man2/perf_event_open.2:1152
4427 #, no-wrap
4428 msgid ""
4429 "do {\n"
4430 "    seq = pc-E<gt>lock;\n"
4431 "    barrier();\n"
4432 "    enabled = pc-E<gt>time_enabled;\n"
4433 "    running = pc-E<gt>time_running;\n"
4434 msgstr ""
4435
4436 #. type: Plain text
4437 #: build/C/man2/perf_event_open.2:1159
4438 #, no-wrap
4439 msgid ""
4440 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4441 "        cyc = rdtsc();\n"
4442 "        time_offset = pc-E<gt>time_offset;\n"
4443 "        time_mult   = pc-E<gt>time_mult;\n"
4444 "        time_shift  = pc-E<gt>time_shift;\n"
4445 "    }\n"
4446 msgstr ""
4447
4448 #. type: Plain text
4449 #: build/C/man2/perf_event_open.2:1162
4450 #, no-wrap
4451 msgid ""
4452 "    idx = pc-E<gt>index;\n"
4453 "    count = pc-E<gt>offset;\n"
4454 msgstr ""
4455
4456 #. type: Plain text
4457 #: build/C/man2/perf_event_open.2:1167
4458 #, no-wrap
4459 msgid ""
4460 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4461 "        width = pc-E<gt>pmc_width;\n"
4462 "        pmc = rdpmc(idx - 1);\n"
4463 "    }\n"
4464 msgstr ""
4465
4466 #. type: Plain text
4467 #: build/C/man2/perf_event_open.2:1170
4468 #, no-wrap
4469 msgid ""
4470 "    barrier();\n"
4471 "} while (pc-E<gt>lock != seq);\n"
4472 msgstr ""
4473
4474 #. type: TP
4475 #: build/C/man2/perf_event_open.2:1172
4476 #, no-wrap
4477 msgid "I<pmc_width>"
4478 msgstr ""
4479
4480 #. type: Plain text
4481 #: build/C/man2/perf_event_open.2:1179
4482 msgid ""
4483 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4484 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4485 "the result like:"
4486 msgstr ""
4487
4488 #. type: Plain text
4489 #: build/C/man2/perf_event_open.2:1185
4490 #, no-wrap
4491 msgid ""
4492 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4493 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4494 "count += pmc;\n"
4495 msgstr ""
4496
4497 #. type: TP
4498 #: build/C/man2/perf_event_open.2:1187
4499 #, no-wrap
4500 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4501 msgstr ""
4502
4503 #. type: Plain text
4504 #: build/C/man2/perf_event_open.2:1194
4505 msgid ""
4506 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4507 "time_enabled (in nanoseconds) using rdtsc or similar."
4508 msgstr ""
4509
4510 #. type: Plain text
4511 #: build/C/man2/perf_event_open.2:1202
4512 #, no-wrap
4513 msgid ""
4514 "    u64 quot, rem;\n"
4515 "    u64 delta;\n"
4516 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4517 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4518 "    delta = time_offset + quot * time_mult +\n"
4519 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4520 msgstr ""
4521
4522 #. type: Plain text
4523 #: build/C/man2/perf_event_open.2:1214
4524 msgid ""
4525 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4526 "the seqcount loop described above.  This delta can then be added to enabled "
4527 "and possible running (if idx), improving the scaling:"
4528 msgstr ""
4529
4530 #. type: Plain text
4531 #: build/C/man2/perf_event_open.2:1222
4532 #, no-wrap
4533 msgid ""
4534 "    enabled += delta;\n"
4535 "    if (idx)\n"
4536 "        running += delta;\n"
4537 "    quot = count / running;\n"
4538 "    rem  = count % running;\n"
4539 "    count = quot * enabled + (rem * enabled) / running;\n"
4540 msgstr ""
4541
4542 #. type: TP
4543 #: build/C/man2/perf_event_open.2:1223
4544 #, no-wrap
4545 msgid "I<data_head>"
4546 msgstr ""
4547
4548 #. type: Plain text
4549 #: build/C/man2/perf_event_open.2:1229
4550 msgid ""
4551 "This points to the head of the data section.  The value continuously "
4552 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4553 "size of the mmap buffer before accessing the samples."
4554 msgstr ""
4555
4556 #. type: Plain text
4557 #: build/C/man2/perf_event_open.2:1232
4558 msgid ""
4559 "On SMP-capable platforms, after reading the data_head value, user space "
4560 "should issue an rmb()."
4561 msgstr ""
4562
4563 #. type: TP
4564 #: build/C/man2/perf_event_open.2:1232
4565 #, no-wrap
4566 msgid "I<data_tail;>"
4567 msgstr ""
4568
4569 #. type: Plain text
4570 #: build/C/man2/perf_event_open.2:1240
4571 msgid ""
4572 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4573 "by user space to reflect the last read data.  In this case the kernel will "
4574 "not over-write unread data."
4575 msgstr ""
4576
4577 #. type: Plain text
4578 #: build/C/man2/perf_event_open.2:1242
4579 msgid "The following 2^n ring-buffer pages have the layout described below."
4580 msgstr ""
4581
4582 #. type: Plain text
4583 #: build/C/man2/perf_event_open.2:1256
4584 msgid ""
4585 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4586 "the sample_type selected fields related to where/when (identity)  an event "
4587 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4588 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4589 "I<perf_event_header> and the fields already present for the existing fields, "
4590 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4591 "supported by older perf tools, with these new optional fields being ignored."
4592 msgstr ""
4593
4594 #. type: Plain text
4595 #: build/C/man2/perf_event_open.2:1258
4596 msgid "The mmap values start with a header:"
4597 msgstr ""
4598
4599 #. type: Plain text
4600 #: build/C/man2/perf_event_open.2:1266
4601 #, no-wrap
4602 msgid ""
4603 "struct perf_event_header {\n"
4604 "    __u32   type;\n"
4605 "    __u16   misc;\n"
4606 "    __u16   size;\n"
4607 "};\n"
4608 msgstr ""
4609
4610 #. type: Plain text
4611 #: build/C/man2/perf_event_open.2:1272
4612 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4613 msgstr ""
4614
4615 #. type: Plain text
4616 #: build/C/man2/perf_event_open.2:1281
4617 msgid ""
4618 "The I<type> value is one of the below.  The values in the corresponding "
4619 "record (that follows the header)  depend on the I<type> selected as shown."
4620 msgstr ""
4621
4622 #. type: TP
4623 #: build/C/man2/perf_event_open.2:1282
4624 #, no-wrap
4625 msgid "B<PERF_RECORD_MMAP>"
4626 msgstr ""
4627
4628 #. type: Plain text
4629 #: build/C/man2/perf_event_open.2:1289
4630 msgid ""
4631 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4632 "user-space IPs to code.  They have the following structure:"
4633 msgstr ""
4634
4635 #. type: Plain text
4636 #: build/C/man2/perf_event_open.2:1300
4637 #, no-wrap
4638 msgid ""
4639 "struct {\n"
4640 "    struct perf_event_header header;\n"
4641 "    u32    pid, tid;\n"
4642 "    u64    addr;\n"
4643 "    u64    len;\n"
4644 "    u64    pgoff;\n"
4645 "    char   filename[];\n"
4646 "};\n"
4647 msgstr ""
4648
4649 #. type: TP
4650 #: build/C/man2/perf_event_open.2:1302
4651 #, no-wrap
4652 msgid "B<PERF_RECORD_LOST>"
4653 msgstr ""
4654
4655 #. type: Plain text
4656 #: build/C/man2/perf_event_open.2:1305
4657 msgid "This record indicates when events are lost."
4658 msgstr ""
4659
4660 #. type: Plain text
4661 #: build/C/man2/perf_event_open.2:1313
4662 #, no-wrap
4663 msgid ""
4664 "struct {\n"
4665 "    struct perf_event_header header;\n"
4666 "    u64 id;\n"
4667 "    u64 lost;\n"
4668 "};\n"
4669 msgstr ""
4670
4671 #. type: Plain text
4672 #: build/C/man2/perf_event_open.2:1319
4673 msgid "is the unique event ID for the samples that were lost."
4674 msgstr ""
4675
4676 #. type: TP
4677 #: build/C/man2/perf_event_open.2:1319
4678 #, no-wrap
4679 msgid "I<lost>"
4680 msgstr ""
4681
4682 #. type: Plain text
4683 #: build/C/man2/perf_event_open.2:1322
4684 #, fuzzy
4685 #| msgid "Returns the number of processes woken up."
4686 msgid "is the number of events that were lost."
4687 msgstr "wake したプロセスの数を返す。"
4688
4689 #. type: TP
4690 #: build/C/man2/perf_event_open.2:1323
4691 #, no-wrap
4692 msgid "B<PERF_RECORD_COMM>"
4693 msgstr ""
4694
4695 #. type: Plain text
4696 #: build/C/man2/perf_event_open.2:1326
4697 msgid "This record indicates a change in the process name."
4698 msgstr ""
4699
4700 #. type: Plain text
4701 #: build/C/man2/perf_event_open.2:1334
4702 #, no-wrap
4703 msgid ""
4704 "struct {\n"
4705 "    struct perf_event_header header;\n"
4706 "    u32 pid, tid;\n"
4707 "    char comm[];\n"
4708 "};\n"
4709 msgstr ""
4710
4711 #. type: TP
4712 #: build/C/man2/perf_event_open.2:1336
4713 #, fuzzy, no-wrap
4714 #| msgid "B<PTRACE_EVENT_EXIT>"
4715 msgid "B<PERF_RECORD_EXIT>"
4716 msgstr "B<PTRACE_EVENT_EXIT>"
4717
4718 #. type: Plain text
4719 #: build/C/man2/perf_event_open.2:1339
4720 msgid "This record indicates a process exit event."
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4725 #, no-wrap
4726 msgid ""
4727 "struct {\n"
4728 "    struct perf_event_header header;\n"
4729 "    u32 pid, ppid;\n"
4730 "    u32 tid, ptid;\n"
4731 "    u64 time;\n"
4732 "};\n"
4733 msgstr ""
4734
4735 #. type: TP
4736 #: build/C/man2/perf_event_open.2:1350
4737 #, no-wrap
4738 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4739 msgstr ""
4740
4741 #. type: Plain text
4742 #: build/C/man2/perf_event_open.2:1353
4743 msgid "This record indicates a throttle/unthrottle event."
4744 msgstr ""
4745
4746 #. type: Plain text
4747 #: build/C/man2/perf_event_open.2:1362
4748 #, no-wrap
4749 msgid ""
4750 "struct {\n"
4751 "    struct perf_event_header header;\n"
4752 "    u64 time;\n"
4753 "    u64 id;\n"
4754 "    u64 stream_id;\n"
4755 "};\n"
4756 msgstr ""
4757
4758 #. type: TP
4759 #: build/C/man2/perf_event_open.2:1364
4760 #, fuzzy, no-wrap
4761 #| msgid "B<PTRACE_EVENT_FORK>"
4762 msgid "B<PERF_RECORD_FORK>"
4763 msgstr "B<PTRACE_EVENT_FORK>"
4764
4765 #. type: Plain text
4766 #: build/C/man2/perf_event_open.2:1367
4767 msgid "This record indicates a fork event."
4768 msgstr ""
4769
4770 #. type: TP
4771 #: build/C/man2/perf_event_open.2:1378
4772 #, no-wrap
4773 msgid "B<PERF_RECORD_READ>"
4774 msgstr ""
4775
4776 #. type: Plain text
4777 #: build/C/man2/perf_event_open.2:1381
4778 msgid "This record indicates a read event."
4779 msgstr ""
4780
4781 #. type: Plain text
4782 #: build/C/man2/perf_event_open.2:1389
4783 #, no-wrap
4784 msgid ""
4785 "struct {\n"
4786 "    struct perf_event_header header;\n"
4787 "    u32 pid, tid;\n"
4788 "    struct read_format values;\n"
4789 "};\n"
4790 msgstr ""
4791
4792 #. type: TP
4793 #: build/C/man2/perf_event_open.2:1391
4794 #, no-wrap
4795 msgid "B<PERF_RECORD_SAMPLE>"
4796 msgstr ""
4797
4798 #. type: Plain text
4799 #: build/C/man2/perf_event_open.2:1394
4800 msgid "This record indicates a sample."
4801 msgstr ""
4802
4803 #. type: Plain text
4804 #: build/C/man2/perf_event_open.2:1422
4805 #, no-wrap
4806 msgid ""
4807 "struct {\n"
4808 "    struct perf_event_header header;\n"
4809 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4810 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4811 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4812 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4813 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4814 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4815 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4816 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4817 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4818 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4819 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4820 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4821 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4822 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4823 "    struct perf_branch_entry lbr[bnr];\n"
4824 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4825 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4826 "    u64   regs[weight(mask)];\n"
4827 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4828 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4829 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4830 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4831 "};\n"
4832 msgstr ""
4833
4834 #. type: TP
4835 #: build/C/man2/perf_event_open.2:1424
4836 #, no-wrap
4837 msgid "I<ip>"
4838 msgstr ""
4839
4840 #. type: Plain text
4841 #: build/C/man2/perf_event_open.2:1430
4842 msgid ""
4843 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4844 "included."
4845 msgstr ""
4846
4847 #. type: TP
4848 #: build/C/man2/perf_event_open.2:1430
4849 #, no-wrap
4850 msgid "I<pid>, I<tid>"
4851 msgstr ""
4852
4853 #. type: Plain text
4854 #: build/C/man2/perf_event_open.2:1436
4855 msgid ""
4856 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4857 "ID are included."
4858 msgstr ""
4859
4860 #. type: TP
4861 #: build/C/man2/perf_event_open.2:1436
4862 #, no-wrap
4863 msgid "I<time>"
4864 msgstr ""
4865
4866 #. type: Plain text
4867 #: build/C/man2/perf_event_open.2:1444
4868 msgid ""
4869 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4870 "This is obtained via local_clock() which is a hardware timestamp if "
4871 "available and the jiffies value if not."
4872 msgstr ""
4873
4874 #. type: TP
4875 #: build/C/man2/perf_event_open.2:1444
4876 #, no-wrap
4877 msgid "I<addr>"
4878 msgstr ""
4879
4880 #. type: Plain text
4881 #: build/C/man2/perf_event_open.2:1451
4882 msgid ""
4883 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4884 "is usually the address of a tracepoint, breakpoint, or software event; "
4885 "otherwise the value is 0."
4886 msgstr ""
4887
4888 #. type: Plain text
4889 #: build/C/man2/perf_event_open.2:1459
4890 msgid ""
4891 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4892 "event is a member of an event group, the group leader ID is returned.  This "
4893 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4894 msgstr ""
4895
4896 #. type: TP
4897 #: build/C/man2/perf_event_open.2:1459
4898 #, no-wrap
4899 msgid "I<stream_id>"
4900 msgstr ""
4901
4902 #. type: Plain text
4903 #: build/C/man2/perf_event_open.2:1469
4904 msgid ""
4905 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4906 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4907 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4908 msgstr ""
4909
4910 #. type: TP
4911 #: build/C/man2/perf_event_open.2:1469
4912 #, no-wrap
4913 msgid "I<cpu>, I<res>"
4914 msgstr ""
4915
4916 #. type: Plain text
4917 #: build/C/man2/perf_event_open.2:1476
4918 msgid ""
4919 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4920 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4921 msgstr ""
4922
4923 #. type: TP
4924 #: build/C/man2/perf_event_open.2:1476
4925 #, no-wrap
4926 msgid "I<period>"
4927 msgstr ""
4928
4929 #. type: Plain text
4930 #: build/C/man2/perf_event_open.2:1482
4931 msgid ""
4932 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4933 "sampling period is written."
4934 msgstr ""
4935
4936 #. type: TP
4937 #: build/C/man2/perf_event_open.2:1482
4938 #, no-wrap
4939 msgid "I<v>"
4940 msgstr ""
4941
4942 #. type: Plain text
4943 #: build/C/man2/perf_event_open.2:1493
4944 msgid ""
4945 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4946 "included which has values for all events in the event group.  The values "
4947 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4948 "time."
4949 msgstr ""
4950
4951 #. type: TP
4952 #: build/C/man2/perf_event_open.2:1493
4953 #, no-wrap
4954 msgid "I<nr>, I<ips[nr]>"
4955 msgstr ""
4956
4957 #. type: Plain text
4958 #: build/C/man2/perf_event_open.2:1501
4959 msgid ""
4960 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4961 "which indicates how many following 64-bit instruction pointers will follow.  "
4962 "This is the current callchain."
4963 msgstr ""
4964
4965 #. type: TP
4966 #: build/C/man2/perf_event_open.2:1501
4967 #, no-wrap
4968 msgid "I<size>, I<data[size]>"
4969 msgstr ""
4970
4971 #. type: Plain text
4972 #: build/C/man2/perf_event_open.2:1508
4973 msgid ""
4974 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4975 "included followed by an array of 8-bit values of length size.  The values "
4976 "are padded with 0 to have 64-bit alignment."
4977 msgstr ""
4978
4979 #. type: Plain text
4980 #: build/C/man2/perf_event_open.2:1513
4981 msgid ""
4982 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4983 "make any promises with respect to the stability of its content, it may vary "
4984 "depending on event, hardware, and kernel version."
4985 msgstr ""
4986
4987 #. type: TP
4988 #: build/C/man2/perf_event_open.2:1513
4989 #, no-wrap
4990 msgid "I<bnr>, I<lbr[bnr]>"
4991 msgstr ""
4992
4993 #. type: Plain text
4994 #: build/C/man2/perf_event_open.2:1524
4995 msgid ""
4996 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
4997 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
4998 "structures.  These structures have from, to, and flags values indicating the "
4999 "from and to addresses from the branches on the callstack."
5000 msgstr ""
5001
5002 #. type: TP
5003 #: build/C/man2/perf_event_open.2:1524
5004 #, no-wrap
5005 msgid "I<abi>, I<regs[weight(mask)]>"
5006 msgstr ""
5007
5008 #. type: Plain text
5009 #: build/C/man2/perf_event_open.2:1530
5010 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
5011 msgstr ""
5012
5013 #. type: Plain text
5014 #: build/C/man2/perf_event_open.2:1536
5015 msgid ""
5016 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5017 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5018 msgstr ""
5019
5020 #. type: TP
5021 #: build/C/man2/perf_event_open.2:1536
5022 #, no-wrap
5023 msgid "I<size>, I<data[size]>, I<dyn_size>"
5024 msgstr ""
5025
5026 #. type: Plain text
5027 #: build/C/man2/perf_event_open.2:1542
5028 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
5029 msgstr ""
5030
5031 #. type: TP
5032 #: build/C/man2/perf_event_open.2:1544
5033 #, no-wrap
5034 msgid "I<misc>"
5035 msgstr ""
5036
5037 #. type: Plain text
5038 #: build/C/man2/perf_event_open.2:1549
5039 msgid "The I<misc> field contains additional information about the sample."
5040 msgstr ""
5041
5042 #. type: Plain text
5043 #: build/C/man2/perf_event_open.2:1554
5044 msgid ""
5045 "The CPU mode can be determined from this value by masking with "
5046 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5047 "these are not bit masks, only one can be set at a time):"
5048 msgstr ""
5049
5050 #. type: TP
5051 #: build/C/man2/perf_event_open.2:1555
5052 #, no-wrap
5053 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5054 msgstr ""
5055
5056 #. type: Plain text
5057 #: build/C/man2/perf_event_open.2:1558
5058 msgid "Unknown CPU mode."
5059 msgstr ""
5060
5061 #. type: TP
5062 #: build/C/man2/perf_event_open.2:1558
5063 #, no-wrap
5064 msgid "B<PERF_RECORD_MISC_KERNEL>"
5065 msgstr ""
5066
5067 #. type: Plain text
5068 #: build/C/man2/perf_event_open.2:1561
5069 msgid "Sample happened in the kernel."
5070 msgstr ""
5071
5072 #. type: TP
5073 #: build/C/man2/perf_event_open.2:1561
5074 #, no-wrap
5075 msgid "B<PERF_RECORD_MISC_USER>"
5076 msgstr ""
5077
5078 #. type: Plain text
5079 #: build/C/man2/perf_event_open.2:1564
5080 msgid "Sample happened in user code."
5081 msgstr ""
5082
5083 #. type: TP
5084 #: build/C/man2/perf_event_open.2:1564
5085 #, no-wrap
5086 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5087 msgstr ""
5088
5089 #. type: Plain text
5090 #: build/C/man2/perf_event_open.2:1567
5091 msgid "Sample happened in the hypervisor."
5092 msgstr ""
5093
5094 #. type: TP
5095 #: build/C/man2/perf_event_open.2:1567
5096 #, no-wrap
5097 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5098 msgstr ""
5099
5100 #. type: Plain text
5101 #: build/C/man2/perf_event_open.2:1570
5102 msgid "Sample happened in the guest kernel."
5103 msgstr ""
5104
5105 #. type: TP
5106 #: build/C/man2/perf_event_open.2:1570
5107 #, no-wrap
5108 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5109 msgstr ""
5110
5111 #. type: Plain text
5112 #: build/C/man2/perf_event_open.2:1573
5113 msgid "Sample happened in guest user code."
5114 msgstr ""
5115
5116 #. type: Plain text
5117 #: build/C/man2/perf_event_open.2:1576
5118 msgid "In addition, one of the following bits can be set:"
5119 msgstr ""
5120
5121 #. type: TP
5122 #: build/C/man2/perf_event_open.2:1577
5123 #, no-wrap
5124 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5125 msgstr ""
5126
5127 #. type: Plain text
5128 #: build/C/man2/perf_event_open.2:1585
5129 msgid ""
5130 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5131 "instruction that triggered the event.  See also I<perf_event_attr."
5132 "precise_ip>."
5133 msgstr ""
5134
5135 #. type: TP
5136 #: build/C/man2/perf_event_open.2:1585
5137 #, no-wrap
5138 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man2/perf_event_open.2:1588
5143 msgid "This indicates there is extended data available (currently not used)."
5144 msgstr ""
5145
5146 #. type: Plain text
5147 #: build/C/man2/perf_event_open.2:1591
5148 msgid "This indicates the size of the record."
5149 msgstr ""
5150
5151 #. type: SS
5152 #: build/C/man2/perf_event_open.2:1592
5153 #, no-wrap
5154 msgid "Signal overflow"
5155 msgstr ""
5156
5157 #. type: Plain text
5158 #: build/C/man2/perf_event_open.2:1601
5159 msgid ""
5160 "Events can be set to deliver a signal when a threshold is crossed.  The "
5161 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5162 "and B<fcntl>(2), system calls."
5163 msgstr ""
5164
5165 #. type: Plain text
5166 #: build/C/man2/perf_event_open.2:1605
5167 msgid ""
5168 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5169 "non-zero value)."
5170 msgstr ""
5171
5172 #. type: Plain text
5173 #: build/C/man2/perf_event_open.2:1607
5174 msgid "There are two ways to generate signals."
5175 msgstr ""
5176
5177 #. type: Plain text
5178 #: build/C/man2/perf_event_open.2:1617
5179 msgid ""
5180 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5181 "will generate a signal if a certain number of samples or bytes have been "
5182 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5183 "is sent."
5184 msgstr ""
5185
5186 #. type: Plain text
5187 #: build/C/man2/perf_event_open.2:1629
5188 msgid ""
5189 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5190 "adds to a counter that decrements each time the event overflows.  When non-"
5191 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5192 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5193 msgstr ""
5194
5195 #.  FIXME(Vince) : Find out when this was introduced
5196 #. type: Plain text
5197 #: build/C/man2/perf_event_open.2:1635
5198 msgid ""
5199 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5200 "for every overflow, even if I<wakeup_events> is not set."
5201 msgstr ""
5202
5203 #. type: SS
5204 #: build/C/man2/perf_event_open.2:1635
5205 #, no-wrap
5206 msgid "rdpmc instruction"
5207 msgstr ""
5208
5209 #. type: Plain text
5210 #: build/C/man2/perf_event_open.2:1642
5211 msgid ""
5212 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5213 "low-latency reads without having to enter the kernel.  Note that using "
5214 "I<rdpmc> is not necessarily faster than other methods for reading event "
5215 "values."
5216 msgstr ""
5217
5218 #. type: Plain text
5219 #: build/C/man2/perf_event_open.2:1647
5220 msgid ""
5221 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5222 "page; documentation on how to calculate event values can be found in that "
5223 "section."
5224 msgstr ""
5225
5226 #. type: SS
5227 #: build/C/man2/perf_event_open.2:1647
5228 #, no-wrap
5229 msgid "perf_event ioctl calls"
5230 msgstr ""
5231
5232 #. type: Plain text
5233 #: build/C/man2/perf_event_open.2:1652
5234 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5235 msgstr ""
5236
5237 #. type: TP
5238 #: build/C/man2/perf_event_open.2:1652
5239 #, fuzzy, no-wrap
5240 #| msgid "B<PTRACE_EVENT_CLONE>"
5241 msgid "B<PERF_EVENT_IOC_ENABLE>"
5242 msgstr "B<PTRACE_EVENT_CLONE>"
5243
5244 #. type: Plain text
5245 #: build/C/man2/perf_event_open.2:1656
5246 msgid ""
5247 "Enables the individual event or event group specified by the file descriptor "
5248 "argument."
5249 msgstr ""
5250
5251 #. type: Plain text
5252 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5253 #: build/C/man2/perf_event_open.2:1699
5254 msgid "The ioctl argument is ignored."
5255 msgstr ""
5256
5257 #. type: TP
5258 #: build/C/man2/perf_event_open.2:1658
5259 #, fuzzy, no-wrap
5260 #| msgid "B<PTRACE_EVENT_CLONE>"
5261 msgid "B<PERF_EVENT_IOC_DISABLE>"
5262 msgstr "B<PTRACE_EVENT_CLONE>"
5263
5264 #. type: Plain text
5265 #: build/C/man2/perf_event_open.2:1662
5266 msgid ""
5267 "Disables the individual counter or event group specified by the file "
5268 "descriptor argument."
5269 msgstr ""
5270
5271 #. type: Plain text
5272 #: build/C/man2/perf_event_open.2:1669
5273 msgid ""
5274 "Enabling or disabling the leader of a group enables or disables the entire "
5275 "group; that is, while the group leader is disabled, none of the counters in "
5276 "the group will count.  Enabling or disabling a member of a group other than "
5277 "the leader only affects that counter; disabling a non-leader stops that "
5278 "counter from counting but doesn't affect any other counter."
5279 msgstr ""
5280
5281 #. type: TP
5282 #: build/C/man2/perf_event_open.2:1671
5283 #, fuzzy, no-wrap
5284 #| msgid "B<PTRACE_EVENT_FORK>"
5285 msgid "B<PERF_EVENT_IOC_REFRESH>"
5286 msgstr "B<PTRACE_EVENT_FORK>"
5287
5288 #. type: Plain text
5289 #: build/C/man2/perf_event_open.2:1685
5290 msgid ""
5291 "Non-inherited overflow counters can use this to enable a counter for a "
5292 "number of overflows specified by the argument, after which it is disabled.  "
5293 "Subsequent calls of this ioctl add the argument value to the current count.  "
5294 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5295 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5296 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5297 msgstr ""
5298
5299 #. type: TP
5300 #: build/C/man2/perf_event_open.2:1685
5301 #, fuzzy, no-wrap
5302 #| msgid "B<PTRACE_EVENT_FORK>"
5303 msgid "B<PERF_EVENT_IOC_RESET>"
5304 msgstr "B<PTRACE_EVENT_FORK>"
5305
5306 #. type: Plain text
5307 #: build/C/man2/perf_event_open.2:1697
5308 msgid ""
5309 "Reset the event count specified by the file descriptor argumentto zero.  "
5310 "This only resets the counts; there is no way to reset the multiplexing "
5311 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5312 "only the leader is reset (child events are not)."
5313 msgstr ""
5314
5315 #. type: TP
5316 #: build/C/man2/perf_event_open.2:1699
5317 #, fuzzy, no-wrap
5318 #| msgid "B<PTRACE_EVENT_FORK>"
5319 msgid "B<PERF_EVENT_IOC_PERIOD>"
5320 msgstr "B<PTRACE_EVENT_FORK>"
5321
5322 #. type: Plain text
5323 #: build/C/man2/perf_event_open.2:1703
5324 msgid ""
5325 "IOC_PERIOD is the command to update the period; it does not update the "
5326 "current period but instead defers until next."
5327 msgstr ""
5328
5329 #. type: Plain text
5330 #: build/C/man2/perf_event_open.2:1706
5331 msgid ""
5332 "The argument is a pointer to a 64-bit value containing the desired new "
5333 "period."
5334 msgstr ""
5335
5336 #. type: TP
5337 #: build/C/man2/perf_event_open.2:1706
5338 #, no-wrap
5339 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5340 msgstr ""
5341
5342 #. type: Plain text
5343 #: build/C/man2/perf_event_open.2:1711
5344 msgid ""
5345 "This tells the kernel to report event notifications to the specified file "
5346 "descriptor rather than the default one.  The file descriptors must all be on "
5347 "the same CPU."
5348 msgstr ""
5349
5350 #. type: Plain text
5351 #: build/C/man2/perf_event_open.2:1714
5352 msgid ""
5353 "The argument specifies the desired file descriptor, or -1 if output should "
5354 "be ignored."
5355 msgstr ""
5356
5357 #. type: TP
5358 #: build/C/man2/perf_event_open.2:1714
5359 #, fuzzy, no-wrap
5360 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5361 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5362 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5363
5364 #. type: Plain text
5365 #: build/C/man2/perf_event_open.2:1717
5366 msgid "This adds an ftrace filter to this event."
5367 msgstr ""
5368
5369 #. type: Plain text
5370 #: build/C/man2/perf_event_open.2:1719
5371 msgid "The argument is a pointer to the desired ftrace filter."
5372 msgstr ""
5373
5374 #. type: SS
5375 #: build/C/man2/perf_event_open.2:1719
5376 #, no-wrap
5377 msgid "Using prctl"
5378 msgstr ""
5379
5380 #. type: Plain text
5381 #: build/C/man2/perf_event_open.2:1732
5382 msgid ""
5383 "A process can enable or disable all the event groups that are attached to it "
5384 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5385 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5386 "the current process, whether created by this process or by another, and does "
5387 "not affect any counters that this process has created on other processes.  "
5388 "It only enables or disables the group leaders, not any other members in the "
5389 "groups."
5390 msgstr ""
5391
5392 #. type: SS
5393 #: build/C/man2/perf_event_open.2:1732
5394 #, no-wrap
5395 msgid "perf_event related configuration files"
5396 msgstr ""
5397
5398 #. type: Plain text
5399 #: build/C/man2/perf_event_open.2:1735
5400 msgid "Files in I</proc/sys/kernel/>"
5401 msgstr ""
5402
5403 #. type: TP
5404 #: build/C/man2/perf_event_open.2:1736
5405 #, no-wrap
5406 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5407 msgstr ""
5408
5409 #. type: Plain text
5410 #: build/C/man2/perf_event_open.2:1742
5411 msgid ""
5412 "The I<perf_event_paranoid> file can be set to restrict access to the "
5413 "performance counters."
5414 msgstr ""
5415
5416 #. type: Plain text
5417 #: build/C/man2/perf_event_open.2:1744
5418 msgid "2 - only allow user-space measurements"
5419 msgstr ""
5420
5421 #. type: Plain text
5422 #: build/C/man2/perf_event_open.2:1746
5423 msgid "1 - (default) allow both kernel and user measurements"
5424 msgstr ""
5425
5426 #. type: Plain text
5427 #: build/C/man2/perf_event_open.2:1748
5428 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5429 msgstr ""
5430
5431 #. type: Plain text
5432 #: build/C/man2/perf_event_open.2:1750
5433 msgid "-1 - no restrictions"
5434 msgstr ""
5435
5436 #. type: Plain text
5437 #: build/C/man2/perf_event_open.2:1755
5438 msgid ""
5439 "The existence of the I<perf_event_paranoid> file is the official method for "
5440 "determining if a kernel supports B<perf_event_open>()."
5441 msgstr ""
5442
5443 #. type: TP
5444 #: build/C/man2/perf_event_open.2:1755
5445 #, no-wrap
5446 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5447 msgstr ""
5448
5449 #. type: Plain text
5450 #: build/C/man2/perf_event_open.2:1764
5451 msgid ""
5452 "This sets the maximum sample rate.  Setting this too high can allow users to "
5453 "sample at a rate that impacts overall machine performance and potentially "
5454 "lock up the machine.  The default value is 100000 (samples per second)."
5455 msgstr ""
5456
5457 #. type: TP
5458 #: build/C/man2/perf_event_open.2:1764
5459 #, no-wrap
5460 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5461 msgstr ""
5462
5463 #. type: Plain text
5464 #: build/C/man2/perf_event_open.2:1769
5465 msgid ""
5466 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5467 "516 (kB)."
5468 msgstr ""
5469
5470 #. type: Plain text
5471 #: build/C/man2/perf_event_open.2:1772
5472 msgid "Files in I</sys/bus/event_source/devices/>"
5473 msgstr ""
5474
5475 #. type: Plain text
5476 #: build/C/man2/perf_event_open.2:1778
5477 msgid ""
5478 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5479 "monitoring.  Information on how to program these PMUs can be found under I</"
5480 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5481 "different PMU."
5482 msgstr ""
5483
5484 #. type: TP
5485 #: build/C/man2/perf_event_open.2:1778
5486 #, no-wrap
5487 msgid "I</sys/bus/event_source/devices/*/type>"
5488 msgstr ""
5489
5490 #. type: Plain text
5491 #: build/C/man2/perf_event_open.2:1783
5492 msgid ""
5493 "This contains an integer that can be used in the I<type> field of "
5494 "perf_event_attr to indicate you wish to use this PMU."
5495 msgstr ""
5496
5497 #. type: TP
5498 #: build/C/man2/perf_event_open.2:1783
5499 #, no-wrap
5500 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5501 msgstr ""
5502
5503 #. type: TP
5504 #: build/C/man2/perf_event_open.2:1786
5505 #, no-wrap
5506 msgid "I</sys/bus/event_source/devices/*/format/>"
5507 msgstr ""
5508
5509 #. type: Plain text
5510 #: build/C/man2/perf_event_open.2:1791
5511 msgid ""
5512 "This sub-directory contains information on what bits in the I<config> field "
5513 "of perf_event_attr correspond to."
5514 msgstr ""
5515
5516 #. type: TP
5517 #: build/C/man2/perf_event_open.2:1791
5518 #, no-wrap
5519 msgid "I</sys/bus/event_source/devices/*/events/>"
5520 msgstr ""
5521
5522 #. type: Plain text
5523 #: build/C/man2/perf_event_open.2:1800
5524 msgid ""
5525 "This sub-directory contains files with pre-defined events.  The contents are "
5526 "strings describing the event settings expressed in terms of the fields found "
5527 "in the I<./format/> directory.  These are not necessarily complete lists of "
5528 "all events supported by a PMU, but usually a subset of events deemed useful "
5529 "or interesting."
5530 msgstr ""
5531
5532 #. type: TP
5533 #: build/C/man2/perf_event_open.2:1800
5534 #, no-wrap
5535 msgid "I</sys/bus/event_source/devices/*/uevent>"
5536 msgstr ""
5537
5538 #. type: Plain text
5539 #: build/C/man2/perf_event_open.2:1810
5540 msgid ""
5541 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5542 "occurred (in which case, I<errno> is set appropriately)."
5543 msgstr ""
5544
5545 #. type: Plain text
5546 #: build/C/man2/perf_event_open.2:1814
5547 msgid "Returned if the specified event is not available."
5548 msgstr ""
5549
5550 #. type: TP
5551 #: build/C/man2/perf_event_open.2:1814
5552 #, fuzzy, no-wrap
5553 #| msgid "B<ENOSYS>"
5554 msgid "B<ENOSPC>"
5555 msgstr "B<ENOSYS>"
5556
5557 #. type: Plain text
5558 #: build/C/man2/perf_event_open.2:1824
5559 msgid ""
5560 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5561 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5562 "B<ENOSPC> is still returned if you try to read results into too small of a "
5563 "buffer."
5564 msgstr ""
5565
5566 #. type: SH
5567 #: build/C/man2/perf_event_open.2:1824
5568 #, fuzzy, no-wrap
5569 #| msgid "VERSIONS"
5570 msgid "VERSION"
5571 msgstr "バージョン"
5572
5573 #. type: Plain text
5574 #: build/C/man2/perf_event_open.2:1829
5575 msgid ""
5576 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5577 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5578 msgstr ""
5579
5580 #. type: Plain text
5581 #: build/C/man2/perf_event_open.2:1834
5582 #, fuzzy
5583 #| msgid ""
5584 #| "B<personality>()  is Linux-specific and should not be used in programs "
5585 #| "intended to be portable."
5586 msgid ""
5587 "This B<perf_event_open>()  system call Linux- specific and should not be "
5588 "used in programs intended to be portable."
5589 msgstr ""
5590 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5591 "はない。"
5592
5593 #. type: Plain text
5594 #: build/C/man2/perf_event_open.2:1838
5595 #, fuzzy
5596 #| msgid ""
5597 #| "Glibc does not provide a wrapper for this system call; call it using "
5598 #| "B<syscall>(2)."
5599 msgid ""
5600 "Glibc does not provide a wrapper for this system call; call it using "
5601 "B<syscall>(2).  See the example below."
5602 msgstr ""
5603 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5604 "(2)  を使って呼び出すこと。"
5605
5606 #. type: Plain text
5607 #: build/C/man2/perf_event_open.2:1844
5608 msgid ""
5609 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5610 "checking for the existence of the file I</proc/sys/kernel/"
5611 "perf_event_paranoid>."
5612 msgstr ""
5613
5614 #. type: SH
5615 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5616 #: build/C/man2/ptrace.2:1810
5617 #, no-wrap
5618 msgid "BUGS"
5619 msgstr "バグ"
5620
5621 #. type: Plain text
5622 #: build/C/man2/perf_event_open.2:1851
5623 msgid ""
5624 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5625 "signals in threads.  This was introduced in Linux 2.6.32."
5626 msgstr ""
5627
5628 #. type: Plain text
5629 #: build/C/man2/perf_event_open.2:1859
5630 msgid ""
5631 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5632 "could be scheduled together until read time.  The same happens on all known "
5633 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5634 "events works you have to B<perf_event_open>(), start, then read before you "
5635 "know for sure you can get valid measurements."
5636 msgstr ""
5637
5638 #. type: Plain text
5639 #: build/C/man2/perf_event_open.2:1863
5640 msgid ""
5641 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5642 "that case, some events would silently return \"0\" if the kernel scheduled "
5643 "them in an improper counter slot."
5644 msgstr ""
5645
5646 #. type: Plain text
5647 #: build/C/man2/perf_event_open.2:1866
5648 msgid ""
5649 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5650 "results could be returned."
5651 msgstr ""
5652
5653 #. type: Plain text
5654 #: build/C/man2/perf_event_open.2:1869
5655 msgid ""
5656 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5657 "\"inherit\" is enabled and many threads are started."
5658 msgstr ""
5659
5660 #. type: Plain text
5661 #: build/C/man2/perf_event_open.2:1873
5662 msgid ""
5663 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5664 "processes."
5665 msgstr ""
5666
5667 #. type: Plain text
5668 #: build/C/man2/perf_event_open.2:1878
5669 msgid ""
5670 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5671 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5672 "This behavior is unsupported and should not be relied on."
5673 msgstr ""
5674
5675 #. type: Plain text
5676 #: build/C/man2/perf_event_open.2:1884
5677 msgid ""
5678 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5679 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5680 "the union has a non-zero value in it."
5681 msgstr ""
5682
5683 #. type: Plain text
5684 #: build/C/man2/perf_event_open.2:1889
5685 msgid ""
5686 "Always double-check your results! Various generalized events have had wrong "
5687 "values.  For example, retired branches measured the wrong thing on AMD "
5688 "machines until Linux 2.6.35."
5689 msgstr ""
5690
5691 #. type: SH
5692 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5693 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5694 #, no-wrap
5695 msgid "EXAMPLE"
5696 msgstr "例"
5697
5698 #. type: Plain text
5699 #: build/C/man2/perf_event_open.2:1893
5700 msgid ""
5701 "The following is a short example that measures the total instruction count "
5702 "of a call to B<printf>(3)."
5703 msgstr ""
5704
5705 #. type: Plain text
5706 #: build/C/man2/perf_event_open.2:1902
5707 #, fuzzy, no-wrap
5708 #| msgid ""
5709 #| "#define _GNU_SOURCE\n"
5710 #| "#include E<lt>fcntl.hE<gt>\n"
5711 #| "#include E<lt>stdio.hE<gt>\n"
5712 #| "#include E<lt>stdlib.hE<gt>\n"
5713 #| "#include E<lt>unistd.hE<gt>\n"
5714 #| "#include E<lt>errno.hE<gt>\n"
5715 #| "#include E<lt>limits.hE<gt>\n"
5716 msgid ""
5717 "#include E<lt>stdlib.hE<gt>\n"
5718 "#include E<lt>stdio.hE<gt>\n"
5719 "#include E<lt>unistd.hE<gt>\n"
5720 "#include E<lt>string.hE<gt>\n"
5721 "#include E<lt>sys/ioctl.hE<gt>\n"
5722 "#include E<lt>linux/perf_event.hE<gt>\n"
5723 "#include E<lt>asm/unistd.hE<gt>\n"
5724 msgstr ""
5725 "#define _GNU_SOURCE\n"
5726 "#include E<lt>fcntl.hE<gt>\n"
5727 "#include E<lt>stdio.hE<gt>\n"
5728 "#include E<lt>stdlib.hE<gt>\n"
5729 "#include E<lt>unistd.hE<gt>\n"
5730 "#include E<lt>errno.hE<gt>\n"
5731 "#include E<lt>limits.hE<gt>\n"
5732
5733 #. type: Plain text
5734 #: build/C/man2/perf_event_open.2:1908
5735 #, no-wrap
5736 msgid ""
5737 "long\n"
5738 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5739 "                int cpu, int group_fd, unsigned long flags)\n"
5740 "{\n"
5741 "    int ret;\n"
5742 msgstr ""
5743
5744 #. type: Plain text
5745 #: build/C/man2/perf_event_open.2:1913
5746 #, no-wrap
5747 msgid ""
5748 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5749 "                   group_fd, flags);\n"
5750 "    return ret;\n"
5751 "}\n"
5752 msgstr ""
5753
5754 #. type: Plain text
5755 #: build/C/man2/perf_event_open.2:1920
5756 #, fuzzy, no-wrap
5757 #| msgid ""
5758 #| "int\n"
5759 #| "main(int argc, char *argv[])\n"
5760 #| "{\n"
5761 #| "    int fd;\n"
5762 #| "    int len, slen;\n"
5763 msgid ""
5764 "int\n"
5765 "main(int argc, char **argv)\n"
5766 "{\n"
5767 "    struct perf_event_attr pe;\n"
5768 "    long long count;\n"
5769 "    int fd;\n"
5770 msgstr ""
5771 "int\n"
5772 "main(int argc, char *argv[])\n"
5773 "{\n"
5774 "    int fd;\n"
5775 "    int len, slen;\n"
5776
5777 #. type: Plain text
5778 #: build/C/man2/perf_event_open.2:1928
5779 #, no-wrap
5780 msgid ""
5781 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5782 "    pe.type = PERF_TYPE_HARDWARE;\n"
5783 "    pe.size = sizeof(struct perf_event_attr);\n"
5784 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5785 "    pe.disabled = 1;\n"
5786 "    pe.exclude_kernel = 1;\n"
5787 "    pe.exclude_hv = 1;\n"
5788 msgstr ""
5789
5790 #. type: Plain text
5791 #: build/C/man2/perf_event_open.2:1934
5792 #, fuzzy, no-wrap
5793 #| msgid ""
5794 #| "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5795 #| "    if (fd == -1) {\n"
5796 #| "        perror(\"open\");\n"
5797 #| "        exit(EXIT_FAILURE);\n"
5798 #| "    }\n"
5799 msgid ""
5800 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5801 "    if (fd == -1) {\n"
5802 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5803 "       exit(EXIT_FAILURE);\n"
5804 "    }\n"
5805 msgstr ""
5806 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5807 "    if (fd == -1) {\n"
5808 "        perror(\"open\");\n"
5809 "        exit(EXIT_FAILURE);\n"
5810 "    }\n"
5811
5812 #. type: Plain text
5813 #: build/C/man2/perf_event_open.2:1937
5814 #, no-wrap
5815 msgid ""
5816 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5817 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5818 msgstr ""
5819
5820 #. type: Plain text
5821 #: build/C/man2/perf_event_open.2:1939
5822 #, no-wrap
5823 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5824 msgstr ""
5825
5826 #. type: Plain text
5827 #: build/C/man2/perf_event_open.2:1942
5828 #, no-wrap
5829 msgid ""
5830 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5831 "    read(fd, &count, sizeof(long long));\n"
5832 msgstr ""
5833
5834 #. type: Plain text
5835 #: build/C/man2/perf_event_open.2:1944
5836 #, no-wrap
5837 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5838 msgstr ""
5839
5840 #. type: Plain text
5841 #: build/C/man2/perf_event_open.2:1947
5842 #, no-wrap
5843 msgid ""
5844 "    close(fd);\n"
5845 "}\n"
5846 msgstr ""
5847
5848 #. type: Plain text
5849 #: build/C/man2/perf_event_open.2:1954
5850 #, fuzzy
5851 #| msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5852 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5853 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5854
5855 #. type: TH
5856 #: build/C/man2/perfmonctl.2:27
5857 #, no-wrap
5858 msgid "PERFMONCTL"
5859 msgstr ""
5860
5861 #. type: Plain text
5862 #: build/C/man2/perfmonctl.2:30
5863 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5864 msgstr ""
5865
5866 #. type: Plain text
5867 #: build/C/man2/perfmonctl.2:34
5868 #, fuzzy, no-wrap
5869 #| msgid ""
5870 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
5871 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5872 msgid ""
5873 "B<#include E<lt>syscall.hE<gt>>\n"
5874 "B<#include E<lt>perfmon.hE<gt>>\n"
5875 msgstr ""
5876 "B<#include E<lt>sys/quota.hE<gt>>\n"
5877 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5878
5879 #. type: Plain text
5880 #: build/C/man2/perfmonctl.2:36
5881 #, fuzzy, no-wrap
5882 #| msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5883 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5884 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5885
5886 #. type: Plain text
5887 #: build/C/man2/perfmonctl.2:47
5888 msgid ""
5889 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5890 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5891 "monitoring data) registers and PMC (performance monitoring control) "
5892 "registers, which gather hardware statistics."
5893 msgstr ""
5894
5895 #. type: Plain text
5896 #: build/C/man2/perfmonctl.2:57
5897 msgid ""
5898 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5899 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5900 "I<fd> argument specifies the perfmon context to operate on."
5901 msgstr ""
5902
5903 #. type: Plain text
5904 #: build/C/man2/perfmonctl.2:61
5905 msgid "Supported values for I<cmd> are:"
5906 msgstr ""
5907
5908 #. type: TP
5909 #: build/C/man2/perfmonctl.2:61
5910 #, fuzzy, no-wrap
5911 #| msgid "B<PTRACE_CONT>"
5912 msgid "B<PFM_CREATE_CONTEXT>"
5913 msgstr "B<PTRACE_CONT>"
5914
5915 #. type: Plain text
5916 #: build/C/man2/perfmonctl.2:65
5917 #, no-wrap
5918 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5919 msgstr ""
5920
5921 #. type: Plain text
5922 #: build/C/man2/perfmonctl.2:67
5923 msgid "Set up a context."
5924 msgstr ""
5925
5926 #. type: Plain text
5927 #: build/C/man2/perfmonctl.2:74
5928 msgid ""
5929 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5930 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5931 "E<gt>ctx_fd>."
5932 msgstr ""
5933
5934 #. type: Plain text
5935 #: build/C/man2/perfmonctl.2:86
5936 msgid ""
5937 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5938 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5939 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5940 "B<epoll>(7)."
5941 msgstr ""
5942
5943 #. type: Plain text
5944 #: build/C/man2/perfmonctl.2:90
5945 msgid ""
5946 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5947 msgstr ""
5948
5949 #. type: TP
5950 #: build/C/man2/perfmonctl.2:90
5951 #, no-wrap
5952 msgid "B<PFM_WRITE_PMCS>"
5953 msgstr ""
5954
5955 #. type: Plain text
5956 #: build/C/man2/perfmonctl.2:95
5957 #, no-wrap
5958 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5959 msgstr ""
5960
5961 #. type: Plain text
5962 #: build/C/man2/perfmonctl.2:97
5963 msgid "Set PMC registers."
5964 msgstr ""
5965
5966 #. type: TP
5967 #: build/C/man2/perfmonctl.2:97
5968 #, no-wrap
5969 msgid "B<PFM_WRITE_PMDS>"
5970 msgstr ""
5971
5972 #. type: Plain text
5973 #: build/C/man2/perfmonctl.2:101
5974 #, no-wrap
5975 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5976 msgstr ""
5977
5978 #.  pfm_write_pmds()
5979 #. type: Plain text
5980 #: build/C/man2/perfmonctl.2:104
5981 msgid "Set PMD registers."
5982 msgstr ""
5983
5984 #. type: TP
5985 #: build/C/man2/perfmonctl.2:104
5986 #, no-wrap
5987 msgid "B<PFM_READ_PMDS>"
5988 msgstr ""
5989
5990 #. type: Plain text
5991 #: build/C/man2/perfmonctl.2:109
5992 #, no-wrap
5993 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5994 msgstr ""
5995
5996 #. type: Plain text
5997 #: build/C/man2/perfmonctl.2:111
5998 msgid "Read PMD registers."
5999 msgstr ""
6000
6001 #. type: TP
6002 #: build/C/man2/perfmonctl.2:111
6003 #, no-wrap
6004 msgid "B<PFM_START>"
6005 msgstr ""
6006
6007 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6008 #. type: Plain text
6009 #: build/C/man2/perfmonctl.2:117
6010 #, no-wrap
6011 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6012 msgstr ""
6013
6014 #. type: Plain text
6015 #: build/C/man2/perfmonctl.2:119
6016 msgid "Start monitoring."
6017 msgstr ""
6018
6019 #. type: TP
6020 #: build/C/man2/perfmonctl.2:119
6021 #, no-wrap
6022 msgid "B<PFM_STOP>"
6023 msgstr ""
6024
6025 #. type: Plain text
6026 #: build/C/man2/perfmonctl.2:124
6027 #, no-wrap
6028 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6029 msgstr ""
6030
6031 #. type: Plain text
6032 #: build/C/man2/perfmonctl.2:126
6033 msgid "Stop monitoring."
6034 msgstr ""
6035
6036 #. type: TP
6037 #: build/C/man2/perfmonctl.2:126
6038 #, fuzzy, no-wrap
6039 #| msgid "B<PTRACE_CONT>"
6040 msgid "B<PFM_LOAD_CONTEXT>"
6041 msgstr "B<PTRACE_CONT>"
6042
6043 #. type: Plain text
6044 #: build/C/man2/perfmonctl.2:131
6045 #, no-wrap
6046 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6047 msgstr ""
6048
6049 #. type: Plain text
6050 #: build/C/man2/perfmonctl.2:133
6051 msgid "Attach the context to a thread."
6052 msgstr ""
6053
6054 #. type: TP
6055 #: build/C/man2/perfmonctl.2:133
6056 #, no-wrap
6057 msgid "B<PFM_UNLOAD_CONTEXT>"
6058 msgstr ""
6059
6060 #. type: Plain text
6061 #: build/C/man2/perfmonctl.2:138
6062 #, no-wrap
6063 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6064 msgstr ""
6065
6066 #. type: Plain text
6067 #: build/C/man2/perfmonctl.2:140
6068 msgid "Detach the context from a thread."
6069 msgstr ""
6070
6071 #. type: TP
6072 #: build/C/man2/perfmonctl.2:140
6073 #, no-wrap
6074 msgid "B<PFM_RESTART>"
6075 msgstr ""
6076
6077 #. type: Plain text
6078 #: build/C/man2/perfmonctl.2:145
6079 #, no-wrap
6080 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6081 msgstr ""
6082
6083 #. type: Plain text
6084 #: build/C/man2/perfmonctl.2:147
6085 msgid "Restart monitoring after receiving an overflow notification."
6086 msgstr ""
6087
6088 #. type: TP
6089 #: build/C/man2/perfmonctl.2:147
6090 #, fuzzy, no-wrap
6091 #| msgid "B<Q_GETSTATS>"
6092 msgid "B<PFM_GET_FEATURES>"
6093 msgstr "B<Q_GETSTATS>"
6094
6095 #. type: Plain text
6096 #: build/C/man2/perfmonctl.2:152
6097 #, no-wrap
6098 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6099 msgstr ""
6100
6101 #. type: TP
6102 #: build/C/man2/perfmonctl.2:153
6103 #, no-wrap
6104 msgid "B<PFM_DEBUG>"
6105 msgstr ""
6106
6107 #. type: Plain text
6108 #: build/C/man2/perfmonctl.2:158
6109 #, no-wrap
6110 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6111 msgstr ""
6112
6113 #. type: Plain text
6114 #: build/C/man2/perfmonctl.2:162
6115 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6116 msgstr ""
6117
6118 #. type: TP
6119 #: build/C/man2/perfmonctl.2:162
6120 #, no-wrap
6121 msgid "B<PFM_GET_PMC_RESET_VAL>"
6122 msgstr ""
6123
6124 #. type: Plain text
6125 #: build/C/man2/perfmonctl.2:167
6126 #, no-wrap
6127 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6128 msgstr ""
6129
6130 #
6131 #
6132 #
6133 #.  .TP
6134 #.  .B PFM_CREATE_EVTSETS
6135 #.  create or modify event sets
6136 #.  .nf
6137 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6138 #.  .fi
6139 #.  .TP
6140 #.  .B PFM_DELETE_EVTSETS
6141 #.  delete event sets
6142 #.  .nf
6143 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6144 #.  .fi
6145 #.  .TP
6146 #.  .B PFM_GETINFO_EVTSETS
6147 #.  get information about event sets
6148 #.  .nf
6149 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6150 #.  .fi
6151 #. type: Plain text
6152 #: build/C/man2/perfmonctl.2:190
6153 msgid "Reset PMC registers to default values."
6154 msgstr ""
6155
6156 #. type: Plain text
6157 #: build/C/man2/perfmonctl.2:196
6158 #, fuzzy
6159 #| msgid ""
6160 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6161 #| "I<errno> is set to indicate the error."
6162 msgid ""
6163 "B<performctl>()  returns zero when the operation is successful.  On error, "
6164 "-1 is returned and I<errno> is set to indicate the cause of the error."
6165 msgstr ""
6166 "成功すると、 B<kexec_load> は 0 を返す。\n"
6167 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6168
6169 #. type: Plain text
6170 #: build/C/man2/perfmonctl.2:199
6171 #, fuzzy
6172 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6173 msgid "B<perfmonctl>()  is available since Linux 2.4."
6174 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6175
6176 #. type: Plain text
6177 #: build/C/man2/perfmonctl.2:202
6178 msgid ""
6179 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6180 "architecture."
6181 msgstr ""
6182
6183 #. type: Plain text
6184 #: build/C/man2/perfmonctl.2:207
6185 msgid "B<gprof>(1)"
6186 msgstr ""
6187
6188 #. type: Plain text
6189 #: build/C/man2/perfmonctl.2:209
6190 msgid "The perfmon2 interface specification"
6191 msgstr ""
6192
6193 #. type: TH
6194 #: build/C/man2/personality.2:32
6195 #, no-wrap
6196 msgid "PERSONALITY"
6197 msgstr "PERSONALITY"
6198
6199 #. type: TH
6200 #: build/C/man2/personality.2:32
6201 #, no-wrap
6202 msgid "2003-01-01"
6203 msgstr "2003-01-01"
6204
6205 #. type: Plain text
6206 #: build/C/man2/personality.2:35
6207 msgid "personality - set the process execution domain"
6208 msgstr "personality - プロセスを実行するドメインを設定する"
6209
6210 #. type: Plain text
6211 #: build/C/man2/personality.2:37
6212 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6213 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6214
6215 #. type: Plain text
6216 #: build/C/man2/personality.2:39
6217 msgid "B<int personality(unsigned long >I<persona>B<);>"
6218 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6219
6220 #. type: Plain text
6221 #: build/C/man2/personality.2:47
6222 msgid ""
6223 "Linux supports different execution domains, or personalities, for each "
6224 "process.  Among other things, execution domains tell Linux how to map signal "
6225 "numbers into signal actions.  The execution domain system allows Linux to "
6226 "provide limited support for binaries compiled under other UNIX-like "
6227 "operating systems."
6228 msgstr ""
6229 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6230 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6231 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6232 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6233 "対する限定的なサポートを提供している。"
6234
6235 #. type: Plain text
6236 #: build/C/man2/personality.2:57
6237 msgid ""
6238 "This function will return the current B<personality>()  when I<persona> "
6239 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6240 "by I<persona> the new execution domain of the calling process."
6241 msgstr ""
6242 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6243 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6244 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6245
6246 #. type: Plain text
6247 #: build/C/man2/personality.2:64
6248 msgid ""
6249 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6250 "and I<errno> is set appropriately."
6251 msgstr ""
6252 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6253 "I<errno> が適切に設定される。"
6254
6255 #. type: Plain text
6256 #: build/C/man2/personality.2:68
6257 msgid "The kernel was unable to change the personality."
6258 msgstr "カーネルがパーソナリティを変更できなかった。"
6259
6260 #. type: Plain text
6261 #: build/C/man2/personality.2:72
6262 msgid ""
6263 "B<personality>()  is Linux-specific and should not be used in programs "
6264 "intended to be portable."
6265 msgstr ""
6266 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6267 "はない。"
6268
6269 #. type: TH
6270 #: build/C/man2/pivot_root.2:10
6271 #, no-wrap
6272 msgid "PIVOT_ROOT"
6273 msgstr "PIVOT_ROOT"
6274
6275 #. type: Plain text
6276 #: build/C/man2/pivot_root.2:13
6277 msgid "pivot_root - change the root file system"
6278 msgstr "pivot_root - root ファイルシステムを変更する"
6279
6280 #. type: Plain text
6281 #: build/C/man2/pivot_root.2:15
6282 msgid ""
6283 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6284 msgstr ""
6285 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6286
6287 #.  The
6288 #.  .B CAP_SYS_ADMIN
6289 #.  capability is required.
6290 #. type: Plain text
6291 #: build/C/man2/pivot_root.2:27
6292 msgid ""
6293 "B<pivot_root>()  moves the root file system of the calling process to the "
6294 "directory I<put_old> and makes I<new_root> the new root file system of the "
6295 "calling process."
6296 msgstr ""
6297 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6298 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6299 "ルシステムにする。"
6300
6301 #. type: Plain text
6302 #: build/C/man2/pivot_root.2:34
6303 msgid ""
6304 "The typical use of B<pivot_root>()  is during system startup, when the "
6305 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6306 "the real root file system, and eventually turns the latter into the current "
6307 "root of all relevant processes or threads."
6308 msgstr ""
6309 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6310 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6311 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6312 "レント root に変更するような場合である。"
6313
6314 #. type: Plain text
6315 #: build/C/man2/pivot_root.2:46
6316 msgid ""
6317 "B<pivot_root>()  may or may not change the current root and the current "
6318 "working directory of any processes or threads which use the old root "
6319 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6320 "root or current working directory at the old root operate correctly in "
6321 "either case.  An easy way to ensure this is to change their root and current "
6322 "working directory to I<new_root> before invoking B<pivot_root>()."
6323 msgstr ""
6324 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6325 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6326 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6327 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6328 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6329 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6330 "更しておくことである。"
6331
6332 #. type: Plain text
6333 #: build/C/man2/pivot_root.2:64
6334 msgid ""
6335 "The paragraph above is intentionally vague because the implementation of "
6336 "B<pivot_root>()  may change in the future.  At the time of writing, "
6337 "B<pivot_root>()  changes root and current working directory of each process "
6338 "or thread to I<new_root> if they point to the old root directory.  This is "
6339 "necessary in order to prevent kernel threads from keeping the old root "
6340 "directory busy with their root and current working directory, even if they "
6341 "never access the file system in any way.  In the future, there may be a "
6342 "mechanism for kernel threads to explicitly relinquish any access to the file "
6343 "system, such that this fairly intrusive mechanism can be removed from "
6344 "B<pivot_root>()."
6345 msgstr ""
6346 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6347 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6348 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6349 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6350 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6351 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6352 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6353 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6354 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6355 "除されるかもしれない。"
6356
6357 #. type: Plain text
6358 #: build/C/man2/pivot_root.2:72
6359 msgid ""
6360 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6361 "may not affect its current working directory.  It is therefore recommended "
6362 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6363 msgstr ""
6364 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6365 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6366 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6367
6368 #. type: Plain text
6369 #: build/C/man2/pivot_root.2:74
6370 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6371 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6372
6373 #. type: IP
6374 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6375 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6376 #, no-wrap
6377 msgid "-"
6378 msgstr "-"
6379
6380 #. type: Plain text
6381 #: build/C/man2/pivot_root.2:76
6382 msgid "They must be directories."
6383 msgstr "ディレクトリでなければならない。"
6384
6385 #. type: Plain text
6386 #: build/C/man2/pivot_root.2:79
6387 msgid ""
6388 "I<new_root> and I<put_old> must not be on the same file system as the "
6389 "current root."
6390 msgstr ""
6391 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6392 "ない。"
6393
6394 #. type: Plain text
6395 #: build/C/man2/pivot_root.2:83
6396 msgid ""
6397 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6398 "of I</..> to the string pointed to by I<put_old> must yield the same "
6399 "directory as I<new_root>."
6400 msgstr ""
6401 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6402 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6403 "リが得られなければならない。"
6404
6405 #. type: Plain text
6406 #: build/C/man2/pivot_root.2:85
6407 msgid "No other file system may be mounted on I<put_old>."
6408 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6409
6410 #. type: Plain text
6411 #: build/C/man2/pivot_root.2:89
6412 msgid "See also B<pivot_root>(8)  for additional usage examples."
6413 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6414
6415 #. type: Plain text
6416 #: build/C/man2/pivot_root.2:96
6417 msgid ""
6418 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6419 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6420 "point of that file system is mounted on I<put_old>."
6421 msgstr ""
6422 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6423 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6424 "テムのマウントポイントが I<put_old> にマウントされる。"
6425
6426 #. type: Plain text
6427 #: build/C/man2/pivot_root.2:101
6428 msgid ""
6429 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6430 "mounts> will show the mount point of the file system containing I<new_root> "
6431 "as root (I</>)."
6432 msgstr ""
6433 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6434 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6435 "る。"
6436
6437 #. type: Plain text
6438 #: build/C/man2/pivot_root.2:110
6439 msgid ""
6440 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6441 "B<stat>(2).  Additionally, it may return:"
6442 msgstr ""
6443 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6444 "性がある。さらに以下を返すことがある:"
6445
6446 #. type: Plain text
6447 #: build/C/man2/pivot_root.2:114
6448 msgid ""
6449 "I<new_root> or I<put_old> are on the current root file system, or a file "
6450 "system is already mounted on I<put_old>."
6451 msgstr ""
6452 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6453 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6454
6455 #. type: Plain text
6456 #: build/C/man2/pivot_root.2:117
6457 msgid "I<put_old> is not underneath I<new_root>."
6458 msgstr "I<put_old> が I<new_root> の下層にない。"
6459
6460 #. type: TP
6461 #: build/C/man2/pivot_root.2:117
6462 #, no-wrap
6463 msgid "B<ENOTDIR>"
6464 msgstr "B<ENOTDIR>"
6465
6466 #. type: Plain text
6467 #: build/C/man2/pivot_root.2:120
6468 msgid "I<new_root> or I<put_old> is not a directory."
6469 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6470
6471 #. type: Plain text
6472 #: build/C/man2/pivot_root.2:125
6473 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6474 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6475
6476 #. type: Plain text
6477 #: build/C/man2/pivot_root.2:128
6478 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6479 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6480
6481 #. type: Plain text
6482 #: build/C/man2/pivot_root.2:131
6483 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6484 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6485
6486 #. type: Plain text
6487 #: build/C/man2/pivot_root.2:138
6488 msgid ""
6489 "B<pivot_root>()  should not have to change root and current working "
6490 "directory of all other processes in the system."
6491 msgstr ""
6492 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6493 "ディレクトリとを変更しなくてもよいはずである。"
6494
6495 #. type: Plain text
6496 #: build/C/man2/pivot_root.2:143
6497 msgid ""
6498 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6499 "insanity."
6500 msgstr ""
6501 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6502 "からない状態になってしまうだろう"
6503
6504 #. type: Plain text
6505 #: build/C/man2/pivot_root.2:149
6506 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6507 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6508
6509 #. type: TH
6510 #: build/C/man2/process_vm_readv.2:29
6511 #, no-wrap
6512 msgid "PROCESS_VM_READV"
6513 msgstr ""
6514
6515 #. type: TH
6516 #: build/C/man2/process_vm_readv.2:29
6517 #, no-wrap
6518 msgid "2012-04-25"
6519 msgstr "2012-04-25"
6520
6521 #. type: Plain text
6522 #: build/C/man2/process_vm_readv.2:32
6523 msgid ""
6524 "process_vm_readv, process_vm_writev - transfer data between process address "
6525 "spaces"
6526 msgstr ""
6527
6528 #. type: Plain text
6529 #: build/C/man2/process_vm_readv.2:35
6530 #, no-wrap
6531 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6532 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6533
6534 #. type: Plain text
6535 #: build/C/man2/process_vm_readv.2:42
6536 #, no-wrap
6537 msgid ""
6538 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6539 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6540 "B<                         unsigned long >I<liovcnt>B<,>\n"
6541 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6542 "B<                         unsigned long >I<riovcnt>B<,>\n"
6543 "B<                         unsigned long >I<flags>B<);>\n"
6544 msgstr ""
6545
6546 #. type: Plain text
6547 #: build/C/man2/process_vm_readv.2:49
6548 #, no-wrap
6549 msgid ""
6550 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6551 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6552 "B<                          unsigned long >I<liovcnt>B<,>\n"
6553 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6554 "B<                          unsigned long >I<riovcnt>B<,>\n"
6555 "B<                          unsigned long >I<flags>B<);>\n"
6556 msgstr ""
6557
6558 #. type: Plain text
6559 #: build/C/man2/process_vm_readv.2:57
6560 msgid ""
6561 "These system calls transfer data between the address space of the calling "
6562 "process (\"the local process\") and the process identified by I<pid> (\"the "
6563 "remote process\").  The data moves directly between the address spaces of "
6564 "the two processes, without passing through kernel space."
6565 msgstr ""
6566
6567 #. type: Plain text
6568 #: build/C/man2/process_vm_readv.2:82
6569 msgid ""
6570 "The B<process_vm_readv>()  system call transfers data from the remote "
6571 "process to the local process.  The data to be transferred is identified by "
6572 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6573 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6574 "the number of elements in I<remote_iov>.  The data is transferred to the "
6575 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6576 "pointer to an array describing address ranges in the calling process, and "
6577 "I<liovcnt> specifies the number of elements in I<local_iov>."
6578 msgstr ""
6579
6580 #. type: Plain text
6581 #: build/C/man2/process_vm_readv.2:96
6582 msgid ""
6583 "The B<process_vm_writev>()  system call is the converse of "
6584 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6585 "remote process.  Other than the direction of the transfer, the arguments "
6586 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6587 "meaning as for B<process_vm_readv>()."
6588 msgstr ""
6589
6590 #. type: Plain text
6591 #: build/C/man2/process_vm_readv.2:106
6592 msgid ""
6593 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6594 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6595 msgstr ""
6596 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6597 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6598 "されている:"
6599
6600 #. type: Plain text
6601 #: build/C/man2/process_vm_readv.2:113
6602 #, no-wrap
6603 msgid ""
6604 "struct iovec {\n"
6605 "    void  *iov_base;    /* Starting address */\n"
6606 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6607 "};\n"
6608 msgstr ""
6609 "struct iovec {\n"
6610 "    void  *iov_base;    /* Starting address */\n"
6611 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6612 "};\n"
6613
6614 #. type: Plain text
6615 #: build/C/man2/process_vm_readv.2:129
6616 msgid ""
6617 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6618 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6619 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6620 "to I<remote_iov[1]>, and so on."
6621 msgstr ""
6622 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6623 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6624 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6625 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6626 "以降も同様である。"
6627
6628 #. type: Plain text
6629 #: build/C/man2/process_vm_readv.2:140
6630 msgid ""
6631 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6632 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6633 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6634 msgstr ""
6635
6636 #. type: Plain text
6637 #: build/C/man2/process_vm_readv.2:148
6638 msgid ""
6639 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6640 "have to be the same.  Thus, it is possible to split a single local buffer "
6641 "into multiple remote buffers, or vice versa."
6642 msgstr ""
6643
6644 #. type: Plain text
6645 #: build/C/man2/process_vm_readv.2:152
6646 msgid "The I<flags> argument is currently unused and must be set to 0."
6647 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6648
6649 #.  In time, glibc might provide a wrapper that works around this limit,
6650 #.  as is done for readv()/writev()
6651 #. type: Plain text
6652 #: build/C/man2/process_vm_readv.2:165
6653 msgid ""
6654 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6655 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6656 "via the call I<sysconf(_SC_IOV_MAX)>)."
6657 msgstr ""
6658
6659 #. type: Plain text
6660 #: build/C/man2/process_vm_readv.2:175
6661 msgid ""
6662 "The count arguments and I<local_iov> are checked before doing any "
6663 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6664 "addresses refer to regions that are inaccessible to the local process, none "
6665 "of the vectors will be processed and an error will be returned immediately."
6666 msgstr ""
6667
6668 #. type: Plain text
6669 #: build/C/man2/process_vm_readv.2:195
6670 msgid ""
6671 "Note, however, that these system calls do not check the memory regions in "
6672 "the remote process until just before doing the read/write.  Consequently, a "
6673 "partial read/write (see RETURN VALUE)  may result if one of the "
6674 "I<remote_iov> elements points to an invalid memory region in the remote "
6675 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6676 "this in mind when attempting to read data of unknown length (such as C "
6677 "strings that are null-terminated) from a remote process, by avoiding "
6678 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6679 "(Instead, split the remote read into two I<remote_iov> elements and have "
6680 "them merge back into a single write I<local_iov> entry.  The first read "
6681 "entry goes up to the page boundary, while the second starts on the next page "
6682 "boundary.)"
6683 msgstr ""
6684
6685 #. type: Plain text
6686 #: build/C/man2/process_vm_readv.2:209
6687 msgid ""
6688 "In order to read from or write to another process, either the caller must "
6689 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6690 "ID, and saved set-user-ID of the remote process must match the real user ID "
6691 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6692 "group-ID of the remote process must match the real group ID of the caller.  "
6693 "(The permission required is exactly the same as that required to perform a "
6694 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6695 msgstr ""
6696
6697 #. type: Plain text
6698 #: build/C/man2/process_vm_readv.2:225
6699 msgid ""
6700 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6701 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6702 "value may be less than the total number of requested bytes, if a partial "
6703 "read/write occurred.  (Partial transfers apply at the granularity of "
6704 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6705 "splits a single I<iovec> element.)  The caller should check the return value "
6706 "to determine whether a partial read/write occurred."
6707 msgstr ""
6708
6709 #. type: Plain text
6710 #: build/C/man2/process_vm_readv.2:229
6711 msgid "On error, -1 is returned and I<errno> is set appropriately."
6712 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6713
6714 #. type: Plain text
6715 #: build/C/man2/process_vm_readv.2:241
6716 msgid ""
6717 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6718 "overflows a I<ssize_t> value."
6719 msgstr ""
6720
6721 #. type: Plain text
6722 #: build/C/man2/process_vm_readv.2:245
6723 msgid "I<flags> is not 0."
6724 msgstr "I<flags> が 0 でない。"
6725
6726 #. type: Plain text
6727 #: build/C/man2/process_vm_readv.2:251
6728 msgid "I<liovcnt> or I<riovcnt> is too large."
6729 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6730
6731 #. type: Plain text
6732 #: build/C/man2/process_vm_readv.2:256
6733 msgid ""
6734 "The memory described by I<local_iov> is outside the caller's accessible "
6735 "address space."
6736 msgstr ""
6737 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6738 "アドレス空間の外にある。"
6739
6740 #. type: Plain text
6741 #: build/C/man2/process_vm_readv.2:262
6742 msgid ""
6743 "The memory described by I<remote_iov> is outside the accessible address "
6744 "space of the process I<pid>."
6745 msgstr ""
6746
6747 #. type: Plain text
6748 #: build/C/man2/process_vm_readv.2:267
6749 msgid ""
6750 "Could not allocate memory for internal copies of the I<iovec> structures."
6751 msgstr ""
6752
6753 #. type: Plain text
6754 #: build/C/man2/process_vm_readv.2:271
6755 msgid ""
6756 "The caller does not have permission to access the address space of the "
6757 "process I<pid>."
6758 msgstr ""
6759 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6760 "持っていない。"
6761
6762 #. type: Plain text
6763 #: build/C/man2/process_vm_readv.2:276
6764 msgid "No process with ID I<pid> exists."
6765 msgstr "ID が I<pid> のプロセスが存在しない。"
6766
6767 #. type: Plain text
6768 #: build/C/man2/process_vm_readv.2:279
6769 msgid ""
6770 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6771 "since version 2.15."
6772 msgstr ""
6773 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6774 "サポートは glibc バージョン 2.15 以降で提供されている。"
6775
6776 #. type: Plain text
6777 #: build/C/man2/process_vm_readv.2:281
6778 msgid "These system calls are nonstandard Linux extensions."
6779 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6780
6781 #. type: Plain text
6782 #: build/C/man2/process_vm_readv.2:287
6783 msgid ""
6784 "The data transfers performed by B<process_vm_readv>()  and "
6785 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6786 msgstr ""
6787
6788 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6789 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6790 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6791 #. type: Plain text
6792 #: build/C/man2/process_vm_readv.2:295
6793 msgid ""
6794 "These system calls were designed to permit fast message passing by allowing "
6795 "messages to be exchanged with a single copy operation (rather than the "
6796 "double copy that would be required when using, for example, shared memory or "
6797 "pipes)."
6798 msgstr ""
6799
6800 #. type: Plain text
6801 #: build/C/man2/process_vm_readv.2:303
6802 msgid ""
6803 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6804 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6805 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6806 msgstr ""
6807
6808 #. type: Plain text
6809 #: build/C/man2/process_vm_readv.2:306
6810 #, no-wrap
6811 msgid "#include E<lt>sys/uio.hE<gt>\n"
6812 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6813
6814 #. type: Plain text
6815 #: build/C/man2/process_vm_readv.2:316
6816 #, no-wrap
6817 msgid ""
6818 "int\n"
6819 "main(void)\n"
6820 "{\n"
6821 "    struct iovec local[2];\n"
6822 "    struct iovec remote[1];\n"
6823 "    char buf1[10];\n"
6824 "    char buf2[10];\n"
6825 "    ssize_t nread;\n"
6826 "    pid_t pid = 10;             /* PID of remote process */\n"
6827 msgstr ""
6828 "int\n"
6829 "main(void)\n"
6830 "{\n"
6831 "    struct iovec local[2];\n"
6832 "    struct iovec remote[1];\n"
6833 "    char buf1[10];\n"
6834 "    char buf2[10];\n"
6835 "    ssize_t nread;\n"
6836 "    pid_t pid = 10;             /* PID of remote process */\n"
6837
6838 #. type: Plain text
6839 #: build/C/man2/process_vm_readv.2:323
6840 #, no-wrap
6841 msgid ""
6842 "    local[0].iov_base = buf1;\n"
6843 "    local[0].iov_len = 10;\n"
6844 "    local[1].iov_base = buf2;\n"
6845 "    local[1].iov_len = 10;\n"
6846 "    remote[0].iov_base = (void *) 0x10000;\n"
6847 "    remote[1].iov_len = 20;\n"
6848 msgstr ""
6849 "    local[0].iov_base = buf1;\n"
6850 "    local[0].iov_len = 10;\n"
6851 "    local[1].iov_base = buf2;\n"
6852 "    local[1].iov_len = 10;\n"
6853 "    remote[0].iov_base = (void *) 0x10000;\n"
6854 "    remote[1].iov_len = 20;\n"
6855
6856 #. type: Plain text
6857 #: build/C/man2/process_vm_readv.2:330
6858 #, no-wrap
6859 msgid ""
6860 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6861 "    if (nread != 20)\n"
6862 "        return 1;\n"
6863 "    else\n"
6864 "        return 0;\n"
6865 "}\n"
6866 msgstr ""
6867 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6868 "    if (nread != 20)\n"
6869 "        return 1;\n"
6870 "    else\n"
6871 "        return 0;\n"
6872 "}\n"
6873
6874 #. type: Plain text
6875 #: build/C/man2/process_vm_readv.2:334
6876 msgid "B<readv>(2), B<writev>(2)"
6877 msgstr "B<readv>(2), B<writev>(2)"
6878
6879 #. type: TH
6880 #: build/C/man2/ptrace.2:44
6881 #, no-wrap
6882 msgid "PTRACE"
6883 msgstr "PTRACE"
6884
6885 #. type: TH
6886 #: build/C/man2/ptrace.2:44
6887 #, fuzzy, no-wrap
6888 #| msgid "2009-02-20"
6889 msgid "2013-02-16"
6890 msgstr "2009-02-20"
6891
6892 #. type: Plain text
6893 #: build/C/man2/ptrace.2:47
6894 msgid "ptrace - process trace"
6895 msgstr "ptrace - プロセスのトレース"
6896
6897 #. type: Plain text
6898 #: build/C/man2/ptrace.2:50
6899 #, no-wrap
6900 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6901 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6902
6903 #. type: Plain text
6904 #: build/C/man2/ptrace.2:53
6905 #, no-wrap
6906 msgid ""
6907 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6908 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6909 msgstr ""
6910 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6911 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6912
6913 #. type: Plain text
6914 #: build/C/man2/ptrace.2:62
6915 #, fuzzy
6916 #| msgid ""
6917 #| "The B<ptrace>()  system call provides a means by which a parent process "
6918 #| "may observe and control the execution of another process, and examine and "
6919 #| "change its core image and registers.  It is primarily used to implement "
6920 #| "breakpoint debugging and system call tracing."
6921 msgid ""
6922 "The B<ptrace>()  system call provides a means by which one process (the "
6923 "\"tracer\")  may observe and control the execution of another process (the "
6924 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6925 "is primarily used to implement breakpoint debugging and system call tracing."
6926 msgstr ""
6927 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6928 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6929 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6930 "コールのトレースを 実装するのに用いられる。"
6931
6932 #. type: Plain text
6933 #: build/C/man2/ptrace.2:73
6934 msgid ""
6935 "A tracee first needs to be attached to the tracer.  Attachment and "
6936 "subsequent commands are per thread: in a multithreaded process, every thread "
6937 "can be individually attached to a (potentially different) tracer, or left "
6938 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6939 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6940 "commands are always sent to a specific tracee using a call of the form"
6941 msgstr ""
6942
6943 #. type: Plain text
6944 #: build/C/man2/ptrace.2:75
6945 #, no-wrap
6946 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6947 msgstr ""
6948
6949 #. type: Plain text
6950 #: build/C/man2/ptrace.2:79
6951 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6952 msgstr ""
6953
6954 #. type: Plain text
6955 #: build/C/man2/ptrace.2:85
6956 msgid ""
6957 "(Note that in this page, a \"multithreaded process\" means a thread group "
6958 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6959 msgstr ""
6960
6961 #. type: Plain text
6962 #: build/C/man2/ptrace.2:96
6963 #, fuzzy
6964 #| msgid ""
6965 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6966 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6967 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6968 #| "using B<PTRACE_ATTACH>."
6969 msgid ""
6970 "A process can initiate a trace by calling B<fork>(2)  and having the "
6971 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6972 "(2).  Alternatively, one process may commence tracing another process using "
6973 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6974 msgstr ""
6975 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
6976 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
6977 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
6978 "を使用し、トレースを開始する。"
6979
6980 #. type: Plain text
6981 #: build/C/man2/ptrace.2:113
6982 #, fuzzy
6983 #| msgid ""
6984 #| "While being traced, the child will stop each time a signal is delivered, "
6985 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
6986 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
6987 #| "(2)  and may inspect and modify the child process while it is stopped.  "
6988 #| "The parent then causes the child to continue, optionally ignoring the "
6989 #| "delivered signal (or even delivering a different signal instead)."
6990 msgid ""
6991 "While being traced, the tracee will stop each time a signal is delivered, "
6992 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
6993 "its usual effect.)  The tracer will be notified at its next call to "
6994 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
6995 "return a I<status> value containing information that indicates the cause of "
6996 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
6997 "various ptrace requests to inspect and modify the tracee.  The tracer then "
6998 "causes the tracee to continue, optionally ignoring the delivered signal (or "
6999 "even delivering a different signal instead)."
7000 msgstr ""
7001 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7002 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7003 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7004 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7005 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7006 "シグナルを 配送することもできる) 。"
7007
7008 #. type: Plain text
7009 #: build/C/man2/ptrace.2:123
7010 msgid ""
7011 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7012 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7013 "signal, giving the parent a chance to gain control before the new program "
7014 "begins execution."
7015 msgstr ""
7016
7017 #. type: Plain text
7018 #: build/C/man2/ptrace.2:127
7019 #, fuzzy
7020 #| msgid ""
7021 #| "When the parent is finished tracing, it can terminate the child with "
7022 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7023 #| "mode via B<PTRACE_DETACH>."
7024 msgid ""
7025 "When the tracer is finished tracing, it can cause the tracee to continue "
7026 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7027 msgstr ""
7028 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7029 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7030 "ドにして、 実行を継続させることもできる。"
7031
7032 #. type: Plain text
7033 #: build/C/man2/ptrace.2:131
7034 msgid "The value of I<request> determines the action to be performed:"
7035 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7036
7037 #. type: TP
7038 #: build/C/man2/ptrace.2:131
7039 #, no-wrap
7040 msgid "B<PTRACE_TRACEME>"
7041 msgstr "B<PTRACE_TRACEME>"
7042
7043 #. type: Plain text
7044 #: build/C/man2/ptrace.2:141
7045 msgid ""
7046 "Indicate that this process is to be traced by its parent.  A process "
7047 "probably shouldn't make this request if its parent isn't expecting to trace "
7048 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7049 msgstr ""
7050
7051 #. type: Plain text
7052 #: build/C/man2/ptrace.2:156
7053 #, fuzzy
7054 #| msgid ""
7055 #| "The above request is used only by the child process; the rest are used "
7056 #| "only by the parent.  In the following requests, I<pid> specifies the "
7057 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7058 #| "the child process must be stopped."
7059 msgid ""
7060 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7061 "requests are used only by the tracer.  In the following requests, I<pid> "
7062 "specifies the thread ID of the tracee to be acted on.  For requests other "
7063 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7064 "B<PTRACE_KILL>, the tracee must be stopped."
7065 msgstr ""
7066 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7067 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7068 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7069 "らない。"
7070
7071 #. type: TP
7072 #: build/C/man2/ptrace.2:156
7073 #, no-wrap
7074 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7075 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7076
7077 #. type: Plain text
7078 #: build/C/man2/ptrace.2:167
7079 #, fuzzy
7080 #| msgid ""
7081 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7082 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7083 #| "separate text and data address spaces, so the two requests are currently "
7084 #| "equivalent.  (The argument I<data> is ignored.)"
7085 msgid ""
7086 "Read a word at the address I<addr> in the tracee's memory, returning the "
7087 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7088 "text and data address spaces, so these two requests are currently "
7089 "equivalent.  (I<data> is ignored.)"
7090 msgstr ""
7091 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7092 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7093 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7094 "ものである。 (引き数 I<data> は無視される。)"
7095
7096 #. type: TP
7097 #: build/C/man2/ptrace.2:167
7098 #, no-wrap
7099 msgid "B<PTRACE_PEEKUSER>"
7100 msgstr "B<PTRACE_PEEKUSER>"
7101
7102 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7103 #.  and that is the name that seems common on other systems.
7104 #. type: Plain text
7105 #: build/C/man2/ptrace.2:185
7106 #, fuzzy
7107 #| msgid ""
7108 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7109 #| "registers and other information about the process (see I<E<lt>sys/user."
7110 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7111 #| "Typically the offset must be word-aligned, though this might vary by "
7112 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7113 msgid ""
7114 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7115 "registers and other information about the process (see I<E<lt>sys/user."
7116 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7117 "Typically, the offset must be word-aligned, though this might vary by "
7118 "architecture.  See NOTES.  (I<data> is ignored.)"
7119 msgstr ""
7120 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7121 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7122 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7123 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7124 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7125 "される。 )"
7126
7127 #. type: TP
7128 #: build/C/man2/ptrace.2:185
7129 #, no-wrap
7130 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7131 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7132
7133 #. type: Plain text
7134 #: build/C/man2/ptrace.2:197
7135 #, fuzzy
7136 #| msgid ""
7137 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7138 #| "above, the two requests are currently equivalent."
7139 msgid ""
7140 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7141 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7142 "equivalent."
7143 msgstr ""
7144 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7145 "に、現在のところ二つの 要求は同じものである。"
7146
7147 #. type: TP
7148 #: build/C/man2/ptrace.2:197
7149 #, no-wrap
7150 msgid "B<PTRACE_POKEUSER>"
7151 msgstr "B<PTRACE_POKEUSER>"
7152
7153 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7154 #.  and that is the name that seems common on other systems.
7155 #.  FIXME In the preceding sentence, which modifications are disallowed,
7156 #.  and when they are disallowed, how does user space discover that fact?
7157 #. type: Plain text
7158 #: build/C/man2/ptrace.2:213
7159 #, fuzzy
7160 #| msgid ""
7161 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7162 #| "above, the offset must typically be word-aligned.  In order to maintain "
7163 #| "the integrity of the kernel, some modifications to the USER area are "
7164 #| "disallowed."
7165 msgid ""
7166 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7167 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7168 "maintain the integrity of the kernel, some modifications to the USER area "
7169 "are disallowed."
7170 msgstr ""
7171 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7172 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7173 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7174 "されている。"
7175
7176 #. type: TP
7177 #: build/C/man2/ptrace.2:213
7178 #, no-wrap
7179 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7180 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7181
7182 #. type: Plain text
7183 #: build/C/man2/ptrace.2:236
7184 #, fuzzy
7185 #| msgid ""
7186 #| "Copies the child's general purpose or floating-point registers, "
7187 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7188 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7189 msgid ""
7190 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7191 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7192 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7193 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7194 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7195 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7196 "architectures."
7197 msgstr ""
7198 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7199 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7200 "すること。(I<addr> は無視される。)"
7201
7202 #. type: TP
7203 #: build/C/man2/ptrace.2:236
7204 #, fuzzy, no-wrap
7205 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7206 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7207 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7208
7209 #. type: Plain text
7210 #: build/C/man2/ptrace.2:257
7211 msgid ""
7212 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7213 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7214 "numerical value 1)  usually results in reading of general-purpose "
7215 "registers.  If the CPU has, for example, floating-point and/or vector "
7216 "registers, they can be retrieved by setting I<addr> to the corresponding "
7217 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7218 "the destination buffer's location and length.  On return, the kernel "
7219 "modifies B<iov.len> to indicate the actual number of bytes returned."
7220 msgstr ""
7221
7222 #. type: TP
7223 #: build/C/man2/ptrace.2:257
7224 #, no-wrap
7225 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7226 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7227
7228 #. type: Plain text
7229 #: build/C/man2/ptrace.2:269
7230 #, fuzzy
7231 #| msgid ""
7232 #| "Retrieve information about the signal that caused the stop.  Copies a "
7233 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7234 #| "I<data> in the parent.  (I<addr> is ignored.)"
7235 msgid ""
7236 "Retrieve information about the signal that caused the stop.  Copy a "
7237 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7238 "I<data> in the tracer.  (I<addr> is ignored.)"
7239 msgstr ""
7240 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7241 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7242 "る。 (I<addr> は無視される。)"
7243
7244 #. type: TP
7245 #: build/C/man2/ptrace.2:269
7246 #, no-wrap
7247 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7248 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7249
7250 #.  FIXME In the preceding sentence, which modifications are disallowed,
7251 #.  and when they are disallowed, how does user space discover that fact?
7252 #. type: Plain text
7253 #: build/C/man2/ptrace.2:294
7254 #, fuzzy
7255 #| msgid ""
7256 #| "Copies the child's general purpose or floating-point registers, "
7257 #| "respectively, from location I<data> in the parent.  As for "
7258 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7259 #| "disallowed.  (I<addr> is ignored.)"
7260 msgid ""
7261 "Modify the tracee's general-purpose or floating-point registers, "
7262 "respectively, from the address I<data> in the tracer.  As for "
7263 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7264 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7265 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7266 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7267 "B<PTRACE_SETFPREGS> are not present on all architectures."
7268 msgstr ""
7269 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7270 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7271 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7272
7273 #. type: TP
7274 #: build/C/man2/ptrace.2:294
7275 #, fuzzy, no-wrap
7276 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7277 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7278 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7279
7280 #. type: Plain text
7281 #: build/C/man2/ptrace.2:303
7282 msgid ""
7283 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7284 "analogous to B<PTRACE_GETREGSET>."
7285 msgstr ""
7286
7287 #. type: TP
7288 #: build/C/man2/ptrace.2:303
7289 #, no-wrap
7290 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7291 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7292
7293 #. type: Plain text
7294 #: build/C/man2/ptrace.2:319
7295 #, fuzzy
7296 #| msgid ""
7297 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7298 #| "I<data> in the parent to the child.  This will only affect signals that "
7299 #| "would normally be delivered to the child and were caught by the tracer.  "
7300 #| "It may be difficult to tell these normal signals from synthetic signals "
7301 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7302 msgid ""
7303 "Set signal information: copy a I<siginfo_t> structure from the address "
7304 "I<data> in the tracer to the tracee.  This will affect only signals that "
7305 "would normally be delivered to the tracee and were caught by the tracer.  It "
7306 "may be difficult to tell these normal signals from synthetic signals "
7307 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7308 msgstr ""
7309 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7310 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7311 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7312 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7313 "かもしれない。 (I<addr> は無視される。)"
7314
7315 #. type: TP
7316 #: build/C/man2/ptrace.2:319
7317 #, no-wrap
7318 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7319 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7320
7321 #. type: Plain text
7322 #: build/C/man2/ptrace.2:328
7323 #, fuzzy
7324 #| msgid ""
7325 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7326 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7327 #| "the following flags:"
7328 msgid ""
7329 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7330 "interpreted as a bit mask of options, which are specified by the following "
7331 "flags:"
7332 msgstr ""
7333 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7334 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7335 "下のフラグを指定できる:"
7336
7337 #. type: TP
7338 #: build/C/man2/ptrace.2:329
7339 #, fuzzy, no-wrap
7340 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7341 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7342 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7343
7344 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7345 #. type: Plain text
7346 #: build/C/man2/ptrace.2:337
7347 msgid ""
7348 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7349 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7350 "ensure that tracees can never escape the tracer's control."
7351 msgstr ""
7352
7353 #. type: TP
7354 #: build/C/man2/ptrace.2:337
7355 #, no-wrap
7356 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7357 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7358
7359 #. type: Plain text
7360 #: build/C/man2/ptrace.2:349
7361 #, fuzzy
7362 #| msgid ""
7363 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7364 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7365 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7366 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7367 msgid ""
7368 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7369 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7370 "by the tracer will return a I<status> value such that"
7371 msgstr ""
7372 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7373 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7374 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7375 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7376
7377 #. type: Plain text
7378 #: build/C/man2/ptrace.2:352
7379 #, no-wrap
7380 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7381 msgstr ""
7382
7383 #. type: Plain text
7384 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7385 #: build/C/man2/ptrace.2:465
7386 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7387 msgstr ""
7388
7389 #. type: Plain text
7390 #: build/C/man2/ptrace.2:377
7391 #, fuzzy
7392 #| msgid ""
7393 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7394 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7395 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7396 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7397 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7398 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7399 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7400 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7401 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7402 msgid ""
7403 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7404 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7405 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7406 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7407 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7408 msgstr ""
7409 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7410 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7411 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7412 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7413 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7414 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7415 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7416 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7417 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7418
7419 #. type: TP
7420 #: build/C/man2/ptrace.2:377
7421 #, no-wrap
7422 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7423 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7424
7425 #. type: Plain text
7426 #: build/C/man2/ptrace.2:386
7427 msgid ""
7428 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7429 "will return a I<status> value such that"
7430 msgstr ""
7431
7432 #. type: Plain text
7433 #: build/C/man2/ptrace.2:389
7434 #, no-wrap
7435 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7436 msgstr ""
7437
7438 #. type: Plain text
7439 #: build/C/man2/ptrace.2:395
7440 msgid ""
7441 "If the execing thread is not a thread group leader, the thread ID is reset "
7442 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7443 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7444 msgstr ""
7445
7446 #. type: TP
7447 #: build/C/man2/ptrace.2:395
7448 #, no-wrap
7449 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7450 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7451
7452 #. type: Plain text
7453 #: build/C/man2/ptrace.2:403
7454 msgid ""
7455 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7456 "I<status> value such that"
7457 msgstr ""
7458
7459 #. type: Plain text
7460 #: build/C/man2/ptrace.2:406
7461 #, no-wrap
7462 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7463 msgstr ""
7464
7465 #. type: Plain text
7466 #: build/C/man2/ptrace.2:410
7467 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7468 msgstr ""
7469
7470 #. type: Plain text
7471 #: build/C/man2/ptrace.2:418
7472 #, fuzzy
7473 #| msgid ""
7474 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7475 #| "8>.  The child's exit status can be retrieved with "
7476 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7477 #| "when registers are still available, allowing the tracer to see where the "
7478 #| "exit occurred, whereas the normal exit notification is done after the "
7479 #| "process is finished exiting.  Even though context is available, the "
7480 #| "tracer cannot prevent the exit from happening at this point."
7481 msgid ""
7482 "The tracee is stopped early during process exit, when registers are still "
7483 "available, allowing the tracer to see where the exit occurred, whereas the "
7484 "normal exit notification is done after the process is finished exiting.  "
7485 "Even though context is available, the tracer cannot prevent the exit from "
7486 "happening at this point."
7487 msgstr ""
7488 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7489 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7490 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7491 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7492 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7493 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7494 "できない。"
7495
7496 #. type: TP
7497 #: build/C/man2/ptrace.2:418
7498 #, no-wrap
7499 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7500 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7501
7502 #. type: Plain text
7503 #: build/C/man2/ptrace.2:430
7504 #, fuzzy
7505 #| msgid ""
7506 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7507 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7508 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7509 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7510 msgid ""
7511 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7512 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7513 "by the tracer will return a I<status> value such that"
7514 msgstr ""
7515 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7516 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7517 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7518 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7519
7520 #. type: Plain text
7521 #: build/C/man2/ptrace.2:433
7522 #, no-wrap
7523 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7524 msgstr ""
7525
7526 #. type: TP
7527 #: build/C/man2/ptrace.2:437
7528 #, no-wrap
7529 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7530 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7531
7532 #. type: Plain text
7533 #: build/C/man2/ptrace.2:446
7534 #, fuzzy
7535 #| msgid ""
7536 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7537 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7538 #| "the difference between normal traps and those caused by a syscall.  "
7539 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7540 msgid ""
7541 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7542 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7543 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7544 "may not work on all architectures.)"
7545 msgstr ""
7546 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7547 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7548 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7549 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7550
7551 #. type: TP
7552 #: build/C/man2/ptrace.2:446
7553 #, no-wrap
7554 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7555 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7556
7557 #. type: Plain text
7558 #: build/C/man2/ptrace.2:458
7559 #, fuzzy
7560 #| msgid ""
7561 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7562 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7563 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7564 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7565 msgid ""
7566 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7567 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7568 "by the tracer will return a I<status> value such that"
7569 msgstr ""
7570 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7571 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7572 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7573 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7574
7575 #. type: Plain text
7576 #: build/C/man2/ptrace.2:461
7577 #, no-wrap
7578 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7579 msgstr ""
7580
7581 #. type: TP
7582 #: build/C/man2/ptrace.2:465
7583 #, no-wrap
7584 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7585 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7586
7587 #. type: Plain text
7588 #: build/C/man2/ptrace.2:474
7589 msgid ""
7590 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7591 "by the tracer will return a I<status> value such that"
7592 msgstr ""
7593
7594 #. type: Plain text
7595 #: build/C/man2/ptrace.2:477
7596 #, no-wrap
7597 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7598 msgstr ""
7599
7600 #. type: Plain text
7601 #: build/C/man2/ptrace.2:481
7602 msgid ""
7603 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7604 "B<PTRACE_GETEVENTMSG>."
7605 msgstr ""
7606
7607 #. type: TP
7608 #: build/C/man2/ptrace.2:482
7609 #, no-wrap
7610 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7611 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7612
7613 #. type: Plain text
7614 #: build/C/man2/ptrace.2:502
7615 #, fuzzy
7616 #| msgid ""
7617 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7618 #| "just happened, placing it in the location I<data> in the parent.  For "
7619 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7620 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7621 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7622 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7623 #| "is ignored.)"
7624 msgid ""
7625 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7626 "just happened, placing it at the address I<data> in the tracer.  For "
7627 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7628 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7629 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7630 "ignored.)"
7631 msgstr ""
7632 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7633 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7634 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7635 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7636 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7637 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7638
7639 #. type: TP
7640 #: build/C/man2/ptrace.2:502
7641 #, no-wrap
7642 msgid "B<PTRACE_CONT>"
7643 msgstr "B<PTRACE_CONT>"
7644
7645 #. type: Plain text
7646 #: build/C/man2/ptrace.2:514
7647 #, fuzzy
7648 #| msgid ""
7649 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7650 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7651 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7652 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7653 #| "is ignored.)"
7654 msgid ""
7655 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7656 "interpreted as the number of a signal to be delivered to the tracee; "
7657 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7658 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7659 "is ignored.)"
7660 msgstr ""
7661 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7662 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7663 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7664 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7665 "は無視される。)"
7666
7667 #. type: TP
7668 #: build/C/man2/ptrace.2:514
7669 #, no-wrap
7670 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7671 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7672
7673 #. type: Plain text
7674 #: build/C/man2/ptrace.2:538
7675 #, fuzzy
7676 #| msgid ""
7677 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7678 #| "child to be stopped at the next entry to or exit from a system call, or "
7679 #| "after execution of a single instruction, respectively.  (The child will "
7680 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7681 #| "perspective, the child will appear to have been stopped by receipt of a "
7682 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7683 #| "inspect the arguments to the system call at the first stop, then do "
7684 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7685 #| "at the second stop.  The I<data> argument is treated as for "
7686 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7687 msgid ""
7688 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7689 "to be stopped at the next entry to or exit from a system call, or after "
7690 "execution of a single instruction, respectively.  (The tracee will also, as "
7691 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7692 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7693 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7694 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7695 "inspect the return value of the system call at the second stop.  The I<data> "
7696 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7697 msgstr ""
7698 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7699 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7700 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7701 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7702 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7703 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7704 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7705 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7706 "同じ様に解釈される。 (I<addr> は無視される。)"
7707
7708 #. type: TP
7709 #: build/C/man2/ptrace.2:538
7710 #, no-wrap
7711 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7712 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7713
7714 #.  As at 3.7
7715 #. type: Plain text
7716 #: build/C/man2/ptrace.2:559
7717 #, fuzzy
7718 #| msgid ""
7719 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7720 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7721 #| "but also singlestep if not a syscall.  This call is used by programs like "
7722 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7723 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7724 #| "not supported on all architectures.)"
7725 msgid ""
7726 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7727 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7728 "but also singlestep if not a system call.  This call is used by programs "
7729 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7730 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7731 "is ignored.  These requests are currently supported only on x86."
7732 msgstr ""
7733 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7734 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7735 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7736 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7737 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7738 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7739 "ポートされているわけではない。)"
7740
7741 #. type: TP
7742 #: build/C/man2/ptrace.2:559
7743 #, fuzzy, no-wrap
7744 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7745 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7746 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7747
7748 #. type: Plain text
7749 #: build/C/man2/ptrace.2:570
7750 msgid ""
7751 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7752 "state of the tracee is similar to a process which has been stopped by a "
7753 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7754 "for additional information.  B<PTRACE_LISTEN> only works on tracees attached "
7755 "by B<PTRACE_SEIZE>."
7756 msgstr ""
7757
7758 #. type: TP
7759 #: build/C/man2/ptrace.2:570
7760 #, no-wrap
7761 msgid "B<PTRACE_KILL>"
7762 msgstr "B<PTRACE_KILL>"
7763
7764 #. type: Plain text
7765 #: build/C/man2/ptrace.2:579
7766 #, fuzzy
7767 #| msgid ""
7768 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7769 #| "ignored.)"
7770 msgid ""
7771 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7772 "ignored.)"
7773 msgstr ""
7774 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7775
7776 #.  [Note from Denys Vlasenko:
7777 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7778 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7779 #. type: Plain text
7780 #: build/C/man2/ptrace.2:598
7781 msgid ""
7782 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7783 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7784 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7785 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7786 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7787 msgstr ""
7788
7789 #. type: TP
7790 #: build/C/man2/ptrace.2:598
7791 #, fuzzy, no-wrap
7792 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7793 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7794 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7795
7796 #. type: Plain text
7797 #: build/C/man2/ptrace.2:612
7798 msgid ""
7799 "Stop a tracee.  If the tracee is running, it will stop with "
7800 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7801 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7802 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7803 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7804 msgstr ""
7805
7806 #. type: TP
7807 #: build/C/man2/ptrace.2:612
7808 #, no-wrap
7809 msgid "B<PTRACE_ATTACH>"
7810 msgstr "B<PTRACE_ATTACH>"
7811
7812 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7813 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7814 #.          Basically, it's not true for any Linux in practical use.
7815 #.  ; the behavior of the tracee is as if it had done a
7816 #.  .BR PTRACE_TRACEME .
7817 #.  The calling process actually becomes the parent of the tracee
7818 #.  process for most purposes (e.g., it will receive
7819 #.  notification of tracee events and appears in
7820 #.  .BR ps (1)
7821 #.  output as the tracee's parent), but a
7822 #.  .BR getppid (2)
7823 #.  by the tracee will still return the PID of the original parent.
7824 #. type: Plain text
7825 #: build/C/man2/ptrace.2:640
7826 msgid ""
7827 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7828 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7829 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7830 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7831 "additional information.  (I<addr> and I<data> are ignored.)"
7832 msgstr ""
7833
7834 #. type: TP
7835 #: build/C/man2/ptrace.2:640
7836 #, fuzzy, no-wrap
7837 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7838 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7839 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7840
7841 #. type: Plain text
7842 #: build/C/man2/ptrace.2:660
7843 msgid ""
7844 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7845 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7846 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7847 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7848 "mask of ptrace options to activate immediately."
7849 msgstr ""
7850
7851 #. type: TP
7852 #: build/C/man2/ptrace.2:660
7853 #, no-wrap
7854 msgid "B<PTRACE_DETACH>"
7855 msgstr "B<PTRACE_DETACH>"
7856
7857 #. type: Plain text
7858 #: build/C/man2/ptrace.2:669
7859 #, fuzzy
7860 #| msgid ""
7861 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7862 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7863 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7864 #| "a traced child can be detached in this way regardless of which method was "
7865 #| "used to initiate tracing.  (I<addr> is ignored.)"
7866 msgid ""
7867 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7868 "Under Linux, a tracee can be detached in this way regardless of which method "
7869 "was used to initiate tracing.  (I<addr> is ignored.)"
7870 msgstr ""
7871 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7872 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7873 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7874 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7875 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7876
7877 #. type: SS
7878 #: build/C/man2/ptrace.2:669
7879 #, no-wrap
7880 msgid "Death under ptrace"
7881 msgstr ""
7882
7883 #. type: Plain text
7884 #: build/C/man2/ptrace.2:678
7885 msgid ""
7886 "When a (possibly multithreaded) process receives a killing signal (one whose "
7887 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7888 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7889 "Notification of this event is delivered via B<waitpid>(2)."
7890 msgstr ""
7891
7892 #. type: Plain text
7893 #: build/C/man2/ptrace.2:687
7894 msgid ""
7895 "Note that the killing signal will first cause signal-delivery-stop (on one "
7896 "tracee only), and only after it is injected by the tracer (or after it was "
7897 "dispatched to a thread which isn't traced), will death from the signal "
7898 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7899 "delivery-stop\" is explained below.)"
7900 msgstr ""
7901
7902 #. type: Plain text
7903 #: build/C/man2/ptrace.2:699
7904 msgid ""
7905 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7906 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7907 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7908 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7909 "of the process are ptraced."
7910 msgstr ""
7911
7912 #. type: Plain text
7913 #: build/C/man2/ptrace.2:704
7914 msgid ""
7915 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7916 "Other threads are not affected."
7917 msgstr ""
7918
7919 #. type: Plain text
7920 #: build/C/man2/ptrace.2:708
7921 msgid ""
7922 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7923 "reports its death to its tracer."
7924 msgstr ""
7925
7926 #. type: Plain text
7927 #: build/C/man2/ptrace.2:722
7928 msgid ""
7929 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7930 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7931 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7932 "on B<execve>(2)  in a multithreaded process."
7933 msgstr ""
7934
7935 #. type: Plain text
7936 #: build/C/man2/ptrace.2:747
7937 msgid ""
7938 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7939 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7940 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7941 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7942 "exists but is not ptrace-stopped (for commands which require a stopped "
7943 "tracee), or if it is not traced by the process which issued the ptrace "
7944 "call.  The tracer needs to keep track of the stopped/running state of the "
7945 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7946 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7947 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7948 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7949 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7950 "yet fully dead\", but already refusing ptrace requests."
7951 msgstr ""
7952
7953 #. type: Plain text
7954 #: build/C/man2/ptrace.2:761
7955 msgid ""
7956 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7957 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7958 "does not occur.  For example, if a thread other than thread group leader "
7959 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7960 "any subsequent ptrace stops will be reported under the thread group leader's "
7961 "PID."
7962 msgstr ""
7963
7964 #. type: SS
7965 #: build/C/man2/ptrace.2:761
7966 #, no-wrap
7967 msgid "Stopped states"
7968 msgstr ""
7969
7970 #. type: Plain text
7971 #: build/C/man2/ptrace.2:763
7972 msgid "A tracee can be in two states: running or stopped."
7973 msgstr ""
7974
7975 #. type: Plain text
7976 #: build/C/man2/ptrace.2:767
7977 msgid ""
7978 "There are many kinds of states when the tracee is stopped, and in ptrace "
7979 "discussions they are often conflated.  Therefore, it is important to use "
7980 "precise terms."
7981 msgstr ""
7982
7983 #. type: Plain text
7984 #: build/C/man2/ptrace.2:778
7985 msgid ""
7986 "In this manual page, any stopped state in which the tracee is ready to "
7987 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
7988 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
7989 "I<syscall-stop>, and so on.  These stopped states are described in detail "
7990 "below."
7991 msgstr ""
7992
7993 #. type: Plain text
7994 #: build/C/man2/ptrace.2:783
7995 msgid ""
7996 "When the running tracee enters ptrace-stop, it notifies its tracer using "
7997 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
7998 "manual page assumes that the tracer waits with:"
7999 msgstr ""
8000
8001 #. type: Plain text
8002 #: build/C/man2/ptrace.2:785
8003 #, no-wrap
8004 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8005 msgstr ""
8006
8007 #.  Denys Vlasenko:
8008 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8009 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8010 #.      rules different if user wants to use waitid? Will waitid require
8011 #.      WEXITED?
8012 #. type: Plain text
8013 #: build/C/man2/ptrace.2:797
8014 msgid ""
8015 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8016 "and I<WIFSTOPPED(status)> true."
8017 msgstr ""
8018
8019 #. type: Plain text
8020 #: build/C/man2/ptrace.2:805
8021 msgid ""
8022 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8023 "but implies their functionality."
8024 msgstr ""
8025
8026 #. type: Plain text
8027 #: build/C/man2/ptrace.2:812
8028 msgid ""
8029 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8030 "recommended: the \"continued\" state is per-process and consuming it can "
8031 "confuse the real parent of the tracee."
8032 msgstr ""
8033
8034 #. type: Plain text
8035 #: build/C/man2/ptrace.2:820
8036 msgid ""
8037 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8038 "results available yet\")  even if the tracer knows there should be a "
8039 "notification.  Example:"
8040 msgstr ""
8041
8042 #. type: Plain text
8043 #: build/C/man2/ptrace.2:829
8044 #, no-wrap
8045 msgid ""
8046 "    errno = 0;\n"
8047 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8048 "    if (errno == ESRCH) {\n"
8049 "        /* tracee is dead */\n"
8050 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8051 "        /* r can still be 0 here! */\n"
8052 "    }\n"
8053 msgstr ""
8054
8055 #. type: Plain text
8056 #: build/C/man2/ptrace.2:852
8057 msgid ""
8058 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8059 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8060 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8061 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8062 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8063 "> macro can't be used to perform this examination, because it returns the "
8064 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8065 msgstr ""
8066
8067 #. type: SS
8068 #: build/C/man2/ptrace.2:852
8069 #, no-wrap
8070 msgid "Signal-delivery-stop"
8071 msgstr ""
8072
8073 #. type: Plain text
8074 #: build/C/man2/ptrace.2:872
8075 msgid ""
8076 "When a (possibly multithreaded) process receives any signal except "
8077 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8078 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8079 "can be explicitly selected by the caller.)  If the selected thread is "
8080 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8081 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8082 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8083 "the next ptrace restart request.  This second step of signal delivery is "
8084 "called I<signal injection> in this manual page.  Note that if the signal is "
8085 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8086 "with the usual exception that B<SIGSTOP> can't be blocked."
8087 msgstr ""
8088
8089 #. type: Plain text
8090 #: build/C/man2/ptrace.2:886
8091 msgid ""
8092 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8093 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8094 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8095 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8096 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8097 "group-stop; see below."
8098 msgstr ""
8099
8100 #. type: SS
8101 #: build/C/man2/ptrace.2:886
8102 #, no-wrap
8103 msgid "Signal injection and suppression"
8104 msgstr ""
8105
8106 #. type: Plain text
8107 #: build/C/man2/ptrace.2:889
8108 msgid ""
8109 "After signal-delivery-stop is observed by the tracer, the tracer should "
8110 "restart the tracee with the call"
8111 msgstr ""
8112
8113 #. type: Plain text
8114 #: build/C/man2/ptrace.2:891
8115 #, no-wrap
8116 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8117 msgstr ""
8118
8119 #. type: Plain text
8120 #: build/C/man2/ptrace.2:904
8121 msgid ""
8122 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8123 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8124 "delivered.  This operation is called I<signal injection> in this manual "
8125 "page, to distinguish it from signal-delivery-stop."
8126 msgstr ""
8127
8128 #. type: Plain text
8129 #: build/C/man2/ptrace.2:910
8130 msgid ""
8131 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8132 "tracer can cause a different signal to be injected."
8133 msgstr ""
8134
8135 #. type: Plain text
8136 #: build/C/man2/ptrace.2:926
8137 msgid ""
8138 "Note that a suppressed signal still causes system calls to return "
8139 "prematurely.  In this case system calls will be restarted: the tracer will "
8140 "observe the tracee to reexecute the interrupted system call (or "
8141 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8142 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8143 "calls (such as B<poll>(2))  which are not restartable after signal are "
8144 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8145 "some syscalls to fail with B<EINTR> even though no observable signal is "
8146 "injected to the tracee."
8147 msgstr ""
8148
8149 #. type: Plain text
8150 #: build/C/man2/ptrace.2:937
8151 msgid ""
8152 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8153 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8154 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8155 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8156 "instead."
8157 msgstr ""
8158
8159 #. type: Plain text
8160 #: build/C/man2/ptrace.2:944
8161 msgid ""
8162 "The fact that signal injection requests may be ignored when restarting the "
8163 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8164 "confusion among ptrace users.  One typical scenario is that the tracer "
8165 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8166 "tracee with"
8167 msgstr ""
8168
8169 #. type: Plain text
8170 #: build/C/man2/ptrace.2:946
8171 #, no-wrap
8172 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8173 msgstr ""
8174
8175 #. type: Plain text
8176 #: build/C/man2/ptrace.2:952
8177 msgid ""
8178 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8179 "the tracee continues to run."
8180 msgstr ""
8181
8182 #. type: Plain text
8183 #: build/C/man2/ptrace.2:972
8184 msgid ""
8185 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8186 "group-stopped process.  This side effect happens before signal-delivery-"
8187 "stop.  The tracer can't suppress this side effect (it can only suppress "
8188 "signal injection, which only causes the B<SIGCONT> handler to not be "
8189 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8190 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8191 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8192 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8193 "by the tracee after it was sent."
8194 msgstr ""
8195
8196 #. type: Plain text
8197 #: build/C/man2/ptrace.2:976
8198 msgid ""
8199 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8200 "side effect happens after signal injection, and therefore can be suppressed "
8201 "by the tracer."
8202 msgstr ""
8203
8204 #
8205 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8206 #.  there is:
8207 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8208 #.              if (signr == SIGSTOP)
8209 #.                      continue;
8210 #. type: Plain text
8211 #: build/C/man2/ptrace.2:986
8212 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8213 msgstr ""
8214
8215 #. type: Plain text
8216 #: build/C/man2/ptrace.2:1003
8217 msgid ""
8218 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8219 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8220 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8221 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8222 "match, otherwise the result is undefined."
8223 msgstr ""
8224
8225 #. type: SS
8226 #: build/C/man2/ptrace.2:1003
8227 #, no-wrap
8228 msgid "Group-stop"
8229 msgstr ""
8230
8231 #. type: Plain text
8232 #: build/C/man2/ptrace.2:1015
8233 msgid ""
8234 "When a (possibly multithreaded) process receives a stopping signal, all "
8235 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8236 "that the stopping signal will first cause signal-delivery-stop (on one "
8237 "tracee only), and only after it is injected by the tracer (or after it was "
8238 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8239 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8240 "reports its group-stop separately to the corresponding tracer."
8241 msgstr ""
8242
8243 #. type: Plain text
8244 #: build/C/man2/ptrace.2:1024
8245 msgid ""
8246 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8247 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8248 "(status)>.  The same result is returned by some other classes of ptrace-"
8249 "stops, therefore the recommended practice is to perform the call"
8250 msgstr ""
8251
8252 #. type: Plain text
8253 #: build/C/man2/ptrace.2:1026
8254 #, no-wrap
8255 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8256 msgstr ""
8257
8258 #. type: Plain text
8259 #: build/C/man2/ptrace.2:1047
8260 msgid ""
8261 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8262 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8263 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8264 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8265 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8266 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8267 "the tracee.)"
8268 msgstr ""
8269
8270 #. type: Plain text
8271 #: build/C/man2/ptrace.2:1056
8272 msgid ""
8273 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8274 "it restarts or kills it, the tracee will not run, and will not send "
8275 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8276 "enters into another B<waitpid>(2)  call."
8277 msgstr ""
8278
8279 #. type: Plain text
8280 #: build/C/man2/ptrace.2:1070
8281 msgid ""
8282 "The kernel behavior described in the previous paragraph causes a problem "
8283 "with transparent handling of stopping signals.  If the tracer restarts the "
8284 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8285 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8286 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8287 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8288 "signals to have no effect on the tracee."
8289 msgstr ""
8290
8291 #. type: Plain text
8292 #: build/C/man2/ptrace.2:1081
8293 msgid ""
8294 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8295 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8296 "in a way where it does not execute, but waits for a new event which it can "
8297 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8298 msgstr ""
8299
8300 #. type: SS
8301 #: build/C/man2/ptrace.2:1081
8302 #, no-wrap
8303 msgid "PTRACE_EVENT stops"
8304 msgstr ""
8305
8306 #. type: Plain text
8307 #: build/C/man2/ptrace.2:1087
8308 msgid ""
8309 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8310 "stops called B<PTRACE_EVENT> stops."
8311 msgstr ""
8312
8313 #. type: Plain text
8314 #: build/C/man2/ptrace.2:1101
8315 msgid ""
8316 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8317 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8318 "additional bit is set in the higher byte of the status word: the value "
8319 "I<statusE<gt>E<gt>8> will be"
8320 msgstr ""
8321
8322 #. type: Plain text
8323 #: build/C/man2/ptrace.2:1103
8324 #, no-wrap
8325 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8326 msgstr ""
8327
8328 #. type: Plain text
8329 #: build/C/man2/ptrace.2:1105
8330 msgid "The following events exist:"
8331 msgstr ""
8332
8333 #. type: TP
8334 #: build/C/man2/ptrace.2:1105
8335 #, no-wrap
8336 msgid "B<PTRACE_EVENT_VFORK>"
8337 msgstr "B<PTRACE_EVENT_VFORK>"
8338
8339 #. type: Plain text
8340 #: build/C/man2/ptrace.2:1118
8341 msgid ""
8342 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8343 "flag.  When the tracee is continued after this stop, it will wait for child "
8344 "to exit/exec before continuing its execution (in other words, the usual "
8345 "behavior on B<vfork>(2))."
8346 msgstr ""
8347
8348 #. type: TP
8349 #: build/C/man2/ptrace.2:1118
8350 #, no-wrap
8351 msgid "B<PTRACE_EVENT_FORK>"
8352 msgstr "B<PTRACE_EVENT_FORK>"
8353
8354 #. type: Plain text
8355 #: build/C/man2/ptrace.2:1126
8356 msgid ""
8357 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8358 "to B<SIGCHLD>."
8359 msgstr ""
8360
8361 #. type: TP
8362 #: build/C/man2/ptrace.2:1126
8363 #, no-wrap
8364 msgid "B<PTRACE_EVENT_CLONE>"
8365 msgstr "B<PTRACE_EVENT_CLONE>"
8366
8367 #. type: Plain text
8368 #: build/C/man2/ptrace.2:1130
8369 msgid "Stop before return from B<clone>(2)."
8370 msgstr ""
8371
8372 #. type: TP
8373 #: build/C/man2/ptrace.2:1130
8374 #, no-wrap
8375 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8376 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8377
8378 #. type: Plain text
8379 #: build/C/man2/ptrace.2:1140
8380 msgid ""
8381 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8382 "flag, but after the child unblocked this tracee by exiting or execing."
8383 msgstr ""
8384
8385 #. type: Plain text
8386 #: build/C/man2/ptrace.2:1146
8387 msgid ""
8388 "For all four stops described above, the stop occurs in the parent (i.e., the "
8389 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8390 "to retrieve the new thread's ID."
8391 msgstr ""
8392
8393 #. type: TP
8394 #: build/C/man2/ptrace.2:1146
8395 #, no-wrap
8396 msgid "B<PTRACE_EVENT_EXEC>"
8397 msgstr "B<PTRACE_EVENT_EXEC>"
8398
8399 #. type: Plain text
8400 #: build/C/man2/ptrace.2:1153
8401 msgid ""
8402 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8403 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8404 msgstr ""
8405
8406 #. type: TP
8407 #: build/C/man2/ptrace.2:1153
8408 #, no-wrap
8409 msgid "B<PTRACE_EVENT_EXIT>"
8410 msgstr "B<PTRACE_EVENT_EXIT>"
8411
8412 #. type: Plain text
8413 #: build/C/man2/ptrace.2:1169
8414 msgid ""
8415 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8416 "exit caused by B<execve>(2)  in a multithreaded process.  "
8417 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8418 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8419 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8420 msgstr ""
8421
8422 #. type: TP
8423 #: build/C/man2/ptrace.2:1169
8424 #, fuzzy, no-wrap
8425 #| msgid "B<PTRACE_EVENT_FORK>"
8426 msgid "B<PTRACE_EVENT_STOP>"
8427 msgstr "B<PTRACE_EVENT_FORK>"
8428
8429 #. type: Plain text
8430 #: build/C/man2/ptrace.2:1174
8431 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8432 msgstr ""
8433
8434 #. type: Plain text
8435 #: build/C/man2/ptrace.2:1186
8436 msgid ""
8437 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8438 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8439 msgstr ""
8440
8441 #. type: SS
8442 #: build/C/man2/ptrace.2:1186
8443 #, no-wrap
8444 msgid "Syscall-stops"
8445 msgstr ""
8446
8447 #. type: Plain text
8448 #: build/C/man2/ptrace.2:1199
8449 msgid ""
8450 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8451 "enter-stop just prior to entering any system call.  If the tracer restarts "
8452 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8453 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8454 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8455 "exit-stop; it happens I<after> syscall-exit-stop.)"
8456 msgstr ""
8457
8458 #. type: Plain text
8459 #: build/C/man2/ptrace.2:1213
8460 msgid ""
8461 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8462 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8463 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8464 "(2)  happened in another thread, and that thread is not traced by the same "
8465 "tracer; this situation is discussed later)."
8466 msgstr ""
8467
8468 #. type: Plain text
8469 #: build/C/man2/ptrace.2:1228
8470 msgid ""
8471 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8472 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8473 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8474 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8475 "0x80)>."
8476 msgstr ""
8477
8478 #. type: Plain text
8479 #: build/C/man2/ptrace.2:1234
8480 msgid ""
8481 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8482 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8483 msgstr ""
8484
8485 #. type: TP
8486 #: build/C/man2/ptrace.2:1234
8487 #, no-wrap
8488 msgid "I<si_code> E<lt>= 0"
8489 msgstr ""
8490
8491 #. type: Plain text
8492 #: build/C/man2/ptrace.2:1246
8493 msgid ""
8494 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8495 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8496 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8497 "asynchronous I/O request."
8498 msgstr ""
8499
8500 #. type: TP
8501 #: build/C/man2/ptrace.2:1246
8502 #, no-wrap
8503 msgid "I<si_code> == SI_KERNEL (0x80)"
8504 msgstr ""
8505
8506 #. type: Plain text
8507 #: build/C/man2/ptrace.2:1250
8508 msgid "B<SIGTRAP> was sent by the kernel."
8509 msgstr ""
8510
8511 #. type: TP
8512 #: build/C/man2/ptrace.2:1250
8513 #, no-wrap
8514 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8515 msgstr ""
8516
8517 #. type: Plain text
8518 #: build/C/man2/ptrace.2:1253
8519 msgid "This is a syscall-stop."
8520 msgstr ""
8521
8522 #. type: Plain text
8523 #: build/C/man2/ptrace.2:1258
8524 msgid ""
8525 "However, syscall-stops happen very often (twice per system call), and "
8526 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8527 "expensive."
8528 msgstr ""
8529
8530 #. type: Plain text
8531 #: build/C/man2/ptrace.2:1281
8532 msgid ""
8533 "Some architectures allow the cases to be distinguished by examining "
8534 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8535 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8536 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8537 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8538 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8539 "and can be detected this way.  But such detection is fragile and is best "
8540 "avoided."
8541 msgstr ""
8542
8543 #. type: Plain text
8544 #: build/C/man2/ptrace.2:1287
8545 msgid ""
8546 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8547 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8548 "reliable and does not incur a performance penalty."
8549 msgstr ""
8550
8551 #. type: Plain text
8552 #: build/C/man2/ptrace.2:1298
8553 msgid ""
8554 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8555 "other by the tracer.  The tracer needs to keep track of the sequence of "
8556 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8557 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8558 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8559 "kinds of ptrace-stop can occur in between."
8560 msgstr ""
8561
8562 #. type: Plain text
8563 #: build/C/man2/ptrace.2:1303
8564 msgid ""
8565 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8566 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8567 msgstr ""
8568
8569 #. type: Plain text
8570 #: build/C/man2/ptrace.2:1315
8571 msgid ""
8572 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8573 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8574 msgstr ""
8575
8576 #. type: SS
8577 #: build/C/man2/ptrace.2:1315
8578 #, no-wrap
8579 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8580 msgstr ""
8581
8582 #
8583 #.  FIXME
8584 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8585 #.  PTRACE_SYSEMU_SINGLESTEP
8586 #. type: Plain text
8587 #: build/C/man2/ptrace.2:1321
8588 msgid "[Details of these kinds of stops are yet to be documented.]"
8589 msgstr ""
8590
8591 #. type: SS
8592 #: build/C/man2/ptrace.2:1321
8593 #, no-wrap
8594 msgid "Informational and restarting ptrace commands"
8595 msgstr ""
8596
8597 #. type: Plain text
8598 #: build/C/man2/ptrace.2:1331
8599 msgid ""
8600 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8601 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8602 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8603 msgstr ""
8604
8605 #. type: Plain text
8606 #: build/C/man2/ptrace.2:1336
8607 msgid ""
8608 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8609 "tracee using informational commands.  These commands leave the tracee in "
8610 "ptrace-stopped state:"
8611 msgstr ""
8612
8613 #. type: Plain text
8614 #: build/C/man2/ptrace.2:1348
8615 #, no-wrap
8616 msgid ""
8617 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8618 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8619 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8620 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8621 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8622 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8623 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8624 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8625 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8626 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8627 msgstr ""
8628
8629 #. type: Plain text
8630 #: build/C/man2/ptrace.2:1360
8631 msgid ""
8632 "Note that some errors are not reported.  For example, setting signal "
8633 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8634 "call may succeed (return 0 and not set I<errno>); querying "
8635 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8636 "ptrace-stop is not documented as returning a meaningful event message."
8637 msgstr ""
8638
8639 #. type: Plain text
8640 #: build/C/man2/ptrace.2:1362
8641 msgid "The call"
8642 msgstr ""
8643
8644 #. type: Plain text
8645 #: build/C/man2/ptrace.2:1364
8646 #, no-wrap
8647 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8648 msgstr ""
8649
8650 #. type: Plain text
8651 #: build/C/man2/ptrace.2:1373
8652 msgid ""
8653 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8654 "inherited by new tracees created and \"auto-attached\" via active "
8655 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8656 "options."
8657 msgstr ""
8658
8659 #. type: Plain text
8660 #: build/C/man2/ptrace.2:1376
8661 msgid ""
8662 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8663 "the form:"
8664 msgstr ""
8665
8666 #. type: Plain text
8667 #: build/C/man2/ptrace.2:1378
8668 #, no-wrap
8669 msgid "    ptrace(cmd, pid, 0, sig);\n"
8670 msgstr ""
8671
8672 #. type: Plain text
8673 #: build/C/man2/ptrace.2:1399
8674 msgid ""
8675 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8676 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8677 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8678 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8679 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8680 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8681 msgstr ""
8682
8683 #. type: SS
8684 #: build/C/man2/ptrace.2:1399
8685 #, no-wrap
8686 msgid "Attaching and detaching"
8687 msgstr ""
8688
8689 #. type: Plain text
8690 #: build/C/man2/ptrace.2:1401
8691 msgid "A thread can be attached to the tracer using the call"
8692 msgstr ""
8693
8694 #. type: Plain text
8695 #: build/C/man2/ptrace.2:1403
8696 #, no-wrap
8697 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8698 msgstr ""
8699
8700 #. type: Plain text
8701 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1894
8702 msgid "or"
8703 msgstr ""
8704
8705 #. type: Plain text
8706 #: build/C/man2/ptrace.2:1407
8707 #, no-wrap
8708 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8709 msgstr ""
8710
8711 #
8712 #.  FIXME: Describe how to attach to a thread which is already
8713 #.         group-stopped.
8714 #. type: Plain text
8715 #: build/C/man2/ptrace.2:1432
8716 msgid ""
8717 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8718 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8719 "signals are concurrently sent to this thread during attach, the tracer may "
8720 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8721 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8722 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8723 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8724 "B<SIGSTOP> may be lost."
8725 msgstr ""
8726
8727 #. type: Plain text
8728 #: build/C/man2/ptrace.2:1439
8729 msgid ""
8730 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8731 "may cause a stray B<EINTR> return from the currently executing system call "
8732 "in the tracee, as described in the \"Signal injection and suppression\" "
8733 "section."
8734 msgstr ""
8735
8736 #. type: Plain text
8737 #: build/C/man2/ptrace.2:1450
8738 msgid ""
8739 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8740 "B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it "
8741 "after attach (or at any other time) without sending it any signals, use "
8742 "B<PTRACE_INTERRUPT> command."
8743 msgstr ""
8744
8745 #. type: Plain text
8746 #: build/C/man2/ptrace.2:1452
8747 msgid "The request"
8748 msgstr ""
8749
8750 #. type: Plain text
8751 #: build/C/man2/ptrace.2:1454
8752 #, no-wrap
8753 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8754 msgstr ""
8755
8756 #. type: Plain text
8757 #: build/C/man2/ptrace.2:1460
8758 msgid ""
8759 "turns the calling thread into a tracee.  The thread continues to run "
8760 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8761 "B<PTRACE_TRACEME> with"
8762 msgstr ""
8763
8764 #. type: Plain text
8765 #: build/C/man2/ptrace.2:1462
8766 #, no-wrap
8767 msgid "    raise(SIGSTOP);\n"
8768 msgstr ""
8769
8770 #. type: Plain text
8771 #: build/C/man2/ptrace.2:1465
8772 msgid ""
8773 "and allow the parent (which is our tracer now) to observe our signal-"
8774 "delivery-stop."
8775 msgstr ""
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:1489
8779 msgid ""
8780 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8781 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8782 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8783 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8784 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8785 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8786 "them to enter signal-delivery-stop after they exit the system call which "
8787 "created them."
8788 msgstr ""
8789
8790 #. type: Plain text
8791 #: build/C/man2/ptrace.2:1491
8792 msgid "Detaching of the tracee is performed by:"
8793 msgstr ""
8794
8795 #. type: Plain text
8796 #: build/C/man2/ptrace.2:1493
8797 #, no-wrap
8798 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8799 msgstr ""
8800
8801 #. type: Plain text
8802 #: build/C/man2/ptrace.2:1501
8803 msgid ""
8804 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8805 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8806 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8807 msgstr ""
8808
8809 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8810 #.         doesn't run, but continues to wait for SIGCONT.
8811 #. type: Plain text
8812 #: build/C/man2/ptrace.2:1525
8813 msgid ""
8814 "If the tracee is running when the tracer wants to detach it, the usual "
8815 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8816 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8817 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8818 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8819 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8820 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8821 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8822 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8823 msgstr ""
8824
8825 #. type: Plain text
8826 #: build/C/man2/ptrace.2:1533
8827 msgid ""
8828 "If the tracer dies, all tracees are automatically detached and restarted, "
8829 "unless they were in group-stop.  Handling of restart from group-stop is "
8830 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8831 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8832 "stop, the pending signal is injected."
8833 msgstr ""
8834
8835 #. type: SS
8836 #: build/C/man2/ptrace.2:1533
8837 #, no-wrap
8838 msgid "execve(2) under ptrace"
8839 msgstr ""
8840
8841 #
8842 #.  clone(2) CLONE_THREAD says:
8843 #.      If  any  of the threads in a thread group performs an execve(2),
8844 #.      then all threads other than the thread group leader are terminated,
8845 #.      and the new program is executed in the thread group leader.
8846 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8847 #. type: Plain text
8848 #: build/C/man2/ptrace.2:1552
8849 msgid ""
8850 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8851 "destroys all other threads in the process, and resets the thread ID of the "
8852 "execing thread to the thread group ID (process ID).  (Or, to put things "
8853 "another way, when a multithreaded process does an B<execve>(2), at "
8854 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8855 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8856 "This resetting of the thread ID looks very confusing to tracers:"
8857 msgstr ""
8858
8859 #. type: Plain text
8860 #: build/C/man2/ptrace.2:1562
8861 msgid ""
8862 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8863 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8864 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8865 "exit code 0."
8866 msgstr ""
8867
8868 #. type: Plain text
8869 #: build/C/man2/ptrace.2:1570
8870 msgid ""
8871 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8872 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8873 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8874 "ID is reset to be the same as its process ID, which is the same as the "
8875 "thread group leader's thread ID."
8876 msgstr ""
8877
8878 #. type: Plain text
8879 #: build/C/man2/ptrace.2:1576
8880 msgid ""
8881 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8882 "option was turned on."
8883 msgstr ""
8884
8885 #. type: Plain text
8886 #: build/C/man2/ptrace.2:1597
8887 msgid ""
8888 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8889 "this time, it appears to the tracer that the dead thread leader \"reappears "
8890 "from nowhere\".  (Note: the thread group leader does not report death via "
8891 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8892 "eliminates the possibility that the tracer will see it dying and then "
8893 "reappearing.)  If the thread group leader was still alive, for the tracer "
8894 "this may look as if thread group leader returns from a different system call "
8895 "than it entered, or even \"returned from a system call even though it was "
8896 "not in any system call\".  If the thread group leader was not traced (or was "
8897 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8898 "if it has become a tracee of the tracer of the execing tracee."
8899 msgstr ""
8900
8901 #. type: Plain text
8902 #: build/C/man2/ptrace.2:1600
8903 msgid ""
8904 "All of the above effects are the artifacts of the thread ID change in the "
8905 "tracee."
8906 msgstr ""
8907
8908 #. type: Plain text
8909 #: build/C/man2/ptrace.2:1620
8910 msgid ""
8911 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8912 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8913 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8914 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8915 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8916 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8917 msgstr ""
8918
8919 #. type: Plain text
8920 #: build/C/man2/ptrace.2:1626
8921 msgid ""
8922 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8923 "guaranteed that except this tracee and the thread group leader, no other "
8924 "threads from the process are alive."
8925 msgstr ""
8926
8927 #. type: Plain text
8928 #: build/C/man2/ptrace.2:1634
8929 msgid ""
8930 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8931 "clean up all its internal data structures describing the threads of this "
8932 "process, and retain only one data structure\\(emone which describes the "
8933 "single still running tracee, with"
8934 msgstr ""
8935
8936 #. type: Plain text
8937 #: build/C/man2/ptrace.2:1636
8938 #, no-wrap
8939 msgid "    thread ID == thread group ID == process ID.\n"
8940 msgstr ""
8941
8942 #. type: Plain text
8943 #: build/C/man2/ptrace.2:1640
8944 msgid "Example: two threads call B<execve>(2)  at the same time:"
8945 msgstr ""
8946
8947 #. type: Plain text
8948 #: build/C/man2/ptrace.2:1651
8949 #, no-wrap
8950 msgid ""
8951 "*** we get syscall-enter-stop in thread 1: **\n"
8952 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8953 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8954 "*** we get syscall-enter-stop in thread 2: **\n"
8955 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8956 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8957 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8958 "*** we get syscall-exit-stop for PID0: **\n"
8959 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8960 msgstr ""
8961
8962 #. type: Plain text
8963 #: build/C/man2/ptrace.2:1674
8964 msgid ""
8965 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8966 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8967 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8968 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8969 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8970 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8971 "delivered (much) later."
8972 msgstr ""
8973
8974 #. type: Plain text
8975 #: build/C/man2/ptrace.2:1693
8976 msgid ""
8977 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
8978 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
8979 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
8980 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
8981 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
8982 "B<SIGTRAP> is the recommended approach."
8983 msgstr ""
8984
8985 #. type: SS
8986 #: build/C/man2/ptrace.2:1693
8987 #, no-wrap
8988 msgid "Real parent"
8989 msgstr ""
8990
8991 #. type: Plain text
8992 #: build/C/man2/ptrace.2:1700
8993 msgid ""
8994 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
8995 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
8996 "receiving several kinds of B<waitpid>(2)  notifications when the child "
8997 "process is traced by some other process."
8998 msgstr ""
8999
9000 #. type: Plain text
9001 #: build/C/man2/ptrace.2:1703
9002 msgid ""
9003 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9004 "exist; see BUGS below."
9005 msgstr ""
9006
9007 #. type: Plain text
9008 #: build/C/man2/ptrace.2:1705
9009 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9010 msgstr ""
9011
9012 #. type: Plain text
9013 #: build/C/man2/ptrace.2:1713
9014 msgid ""
9015 "exit/death by signal is reported first to the tracer, then, when the tracer "
9016 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9017 "only when the whole multithreaded process exits).  If the tracer and the "
9018 "real parent are the same process, the report is sent only once."
9019 msgstr ""
9020
9021 #. type: Plain text
9022 #: build/C/man2/ptrace.2:1727
9023 #, fuzzy
9024 #| msgid ""
9025 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9026 #| "other requests return zero.  On error, all requests return -1, and "
9027 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9028 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9029 #| "such requests to determine whether or not an error occurred."
9030 msgid ""
9031 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9032 "requests return zero.  On error, all requests return -1, and I<errno> is set "
9033 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
9034 "request may be -1, the caller must clear I<errno> before the call, and then "
9035 "check it afterward to determine whether or not an error occurred."
9036 msgstr ""
9037 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9038 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9039 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9040 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9041 "なければならない。"
9042
9043 #. type: Plain text
9044 #: build/C/man2/ptrace.2:1731
9045 msgid ""
9046 "(i386 only) There was an error with allocating or freeing a debug register."
9047 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9048
9049 #. type: Plain text
9050 #: build/C/man2/ptrace.2:1742
9051 #, fuzzy
9052 #| msgid ""
9053 #| "There was an attempt to read from or write to an invalid area in the "
9054 #| "parent's or child's memory, probably because the area wasn't mapped or "
9055 #| "accessible.  Unfortunately, under Linux, different variations of this "
9056 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9057 msgid ""
9058 "There was an attempt to read from or write to an invalid area in the "
9059 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9060 "accessible.  Unfortunately, under Linux, different variations of this fault "
9061 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9062 msgstr ""
9063 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9064 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9065 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9066 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9067
9068 #. type: Plain text
9069 #: build/C/man2/ptrace.2:1745
9070 msgid "An attempt was made to set an invalid option."
9071 msgstr "不正なオプションを設定しようとした。"
9072
9073 #. type: Plain text
9074 #: build/C/man2/ptrace.2:1752
9075 #, fuzzy
9076 #| msgid ""
9077 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9078 #| "invalid area in the parent's or child's memory, or there was a word-"
9079 #| "alignment violation, or an invalid signal was specified during a restart "
9080 #| "request."
9081 msgid ""
9082 "I<request> is invalid, or an attempt was made to read from or write to an "
9083 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9084 "alignment violation, or an invalid signal was specified during a restart "
9085 "request."
9086 msgstr ""
9087 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9088 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9089 "開の要求で不正なシグナルを指定した。"
9090
9091 #. type: Plain text
9092 #: build/C/man2/ptrace.2:1765
9093 #, fuzzy
9094 #| msgid ""
9095 #| "The specified process cannot be traced.  This could be because the parent "
9096 #| "has insufficient privileges (the required capability is "
9097 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9098 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9099 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9100 #| "being traced, or be B<init>(8)  (PID 1)."
9101 msgid ""
9102 "The specified process cannot be traced.  This could be because the tracer "
9103 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9104 "unprivileged processes cannot trace processes that they cannot send signals "
9105 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9106 "Alternatively, the process may already be being traced, or (on kernels "
9107 "before 2.6.26) be B<init>(8)  (PID 1)."
9108 msgstr ""
9109 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9110 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9111 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9112 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9113 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9114 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9115
9116 #. type: Plain text
9117 #: build/C/man2/ptrace.2:1770
9118 #, fuzzy
9119 #| msgid ""
9120 #| "The specified process does not exist, or is not currently being traced by "
9121 #| "the caller, or is not stopped (for requests that require that)."
9122 msgid ""
9123 "The specified process does not exist, or is not currently being traced by "
9124 "the caller, or is not stopped (for requests that require a stopped tracee)."
9125 msgstr ""
9126 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9127 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9128 "ない (停止していることが必要な要求の場合)。"
9129
9130 #. type: Plain text
9131 #: build/C/man2/ptrace.2:1772
9132 msgid "SVr4, 4.3BSD."
9133 msgstr "SVr4, 4.3BSD."
9134
9135 #. type: Plain text
9136 #: build/C/man2/ptrace.2:1787
9137 #, fuzzy
9138 #| msgid ""
9139 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9140 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9141 #| "function with only the I<request> argument fixed.  This means that "
9142 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9143 #| "undocumented B<gcc>(1)  behavior."
9144 msgid ""
9145 "Although arguments to B<ptrace>()  are interpreted according to the "
9146 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9147 "function with only the I<request> argument fixed.  It is recommended to "
9148 "always supply four arguments, even if the requested operation does not use "
9149 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9150 msgstr ""
9151 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9152 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9153 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9154 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9155 "になる。"
9156
9157 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9158 #. type: Plain text
9159 #: build/C/man2/ptrace.2:1792
9160 #, fuzzy
9161 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9162 msgid ""
9163 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9164 "be traced."
9165 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9166
9167 #.  See http://lkml.org/lkml/2008/5/8/375
9168 #. type: Plain text
9169 #: build/C/man2/ptrace.2:1799
9170 #, fuzzy
9171 #| msgid ""
9172 #| "The layout of the contents of memory and the USER area are quite OS- and "
9173 #| "architecture-specific.  The offset supplied, and the data returned, might "
9174 #| "not entirely match with the definition of I<struct user>."
9175 msgid ""
9176 "The layout of the contents of memory and the USER area are quite operating-"
9177 "system- and architecture-specific.  The offset supplied, and the data "
9178 "returned, might not entirely match with the definition of I<struct user>."
9179 msgstr ""
9180 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9181 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9182 "に一致しないこともありえる。"
9183
9184 #. type: Plain text
9185 #: build/C/man2/ptrace.2:1802
9186 #, fuzzy
9187 #| msgid ""
9188 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9189 #| "Linux it is 32 bits, etc.)."
9190 msgid ""
9191 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9192 "for 32-bit Linux it is 32 bits)."
9193 msgstr ""
9194 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9195 "では 32 ビットである、など。)"
9196
9197 #. type: Plain text
9198 #: build/C/man2/ptrace.2:1810
9199 #, fuzzy
9200 #| msgid ""
9201 #| "This page documents the way the B<ptrace>()  call works currently in "
9202 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9203 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9204 msgid ""
9205 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9206 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9207 "of B<ptrace>()  is highly specific to the operating system and architecture."
9208 msgstr ""
9209 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9210 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9211 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9212
9213 #. type: Plain text
9214 #: build/C/man2/ptrace.2:1821
9215 #, fuzzy
9216 #| msgid ""
9217 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9218 #| "different value than the one for 2.4.  This leads to applications "
9219 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9220 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9221 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9222 msgid ""
9223 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9224 "different value than the one for 2.4.  This leads to applications compiled "
9225 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9226 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9227 "that is defined."
9228 msgstr ""
9229 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9230 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9231 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9232 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9233 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9234
9235 #. type: Plain text
9236 #: build/C/man2/ptrace.2:1824
9237 msgid ""
9238 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9239 "Last confirmed on 2.6.38.6."
9240 msgstr ""
9241
9242 #.  Note from Denys Vlasenko:
9243 #.      Here "exits" means any kind of death - _exit, exit_group,
9244 #.      signal death. Signal death and exit_group cases are trivial,
9245 #.      though: since signal death and exit_group kill all other threads
9246 #.      too, "until all other threads exit" thing happens rather soon
9247 #.      in these cases. Therefore, only _exit presents observably
9248 #.      puzzling behavior to ptrace users: thread leader _exit's,
9249 #.      but WIFEXITED isn't reported! We are trying to explain here
9250 #.      why it is so.
9251 #.   FIXME: ^^^ need to test/verify this scenario
9252 #. type: Plain text
9253 #: build/C/man2/ptrace.2:1855
9254 msgid ""
9255 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9256 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9257 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9258 "threads exit.  As explained above, if one of other threads calls B<execve>"
9259 "(2), the death of the thread group leader will I<never> be reported.  If the "
9260 "execed thread is not traced by this tracer, the tracer will never know that "
9261 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9262 "thread group leader instead of restarting it in this case.  Last confirmed "
9263 "on 2.6.38.6."
9264 msgstr ""
9265
9266 #. type: Plain text
9267 #: build/C/man2/ptrace.2:1865
9268 msgid ""
9269 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9270 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9271 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9272 "2.6.38.6."
9273 msgstr ""
9274
9275 #. type: Plain text
9276 #: build/C/man2/ptrace.2:1883
9277 msgid ""
9278 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9279 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9280 "is usually done by debuggers on every attach, in order to not introduce a "
9281 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9282 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9283 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9284 "that when you attach to a quiescent process with the command"
9285 msgstr ""
9286
9287 #. type: Plain text
9288 #: build/C/man2/ptrace.2:1885
9289 #, no-wrap
9290 msgid "    strace -p E<lt>process-IDE<gt>\n"
9291 msgstr ""
9292
9293 #. type: Plain text
9294 #: build/C/man2/ptrace.2:1888
9295 msgid "then, instead of the usual and expected one-line output such as"
9296 msgstr ""
9297
9298 #. type: Plain text
9299 #: build/C/man2/ptrace.2:1891
9300 #, no-wrap
9301 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9302 msgstr ""
9303
9304 #. type: Plain text
9305 #: build/C/man2/ptrace.2:1897
9306 #, no-wrap
9307 msgid "    select(6, [5], NULL, [5], NULL_\n"
9308 msgstr ""
9309
9310 #. type: Plain text
9311 #: build/C/man2/ptrace.2:1901
9312 msgid ""
9313 "('_' denotes the cursor position), you observe more than one line.  For "
9314 "example:"
9315 msgstr ""
9316
9317 #. type: Plain text
9318 #: build/C/man2/ptrace.2:1905
9319 #, no-wrap
9320 msgid ""
9321 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9322 "    epoll_wait(4,_\n"
9323 msgstr ""
9324
9325 #. type: Plain text
9326 #: build/C/man2/ptrace.2:1926
9327 msgid ""
9328 "What is not visible here is that the process was blocked in B<epoll_wait>"
9329 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9330 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9331 "case, the program reacted to B<EINTR> by checking the current time, and then "
9332 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9333 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9334 "(1)  attach.)"
9335 msgstr ""
9336
9337 #. type: Plain text
9338 #: build/C/man2/ptrace.2:1940
9339 msgid ""
9340 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9341 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9342 "B<capabilities>(7), B<signal>(7)"
9343 msgstr ""
9344 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9345 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9346 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9347
9348 #. type: TH
9349 #: build/C/man2/quotactl.2:27
9350 #, no-wrap
9351 msgid "QUOTACTL"
9352 msgstr "QUOTACTL"
9353
9354 #. type: TH
9355 #: build/C/man2/quotactl.2:27
9356 #, no-wrap
9357 msgid "2010-06-16"
9358 msgstr "2010-06-16"
9359
9360 #. type: Plain text
9361 #: build/C/man2/quotactl.2:30
9362 msgid "quotactl - manipulate disk quotas"
9363 msgstr "quotactl - ディスク quota を操作する"
9364
9365 #. type: Plain text
9366 #: build/C/man2/quotactl.2:34
9367 #, no-wrap
9368 msgid ""
9369 "B<#include E<lt>sys/quota.hE<gt>>\n"
9370 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9371 msgstr ""
9372 "B<#include E<lt>sys/quota.hE<gt>>\n"
9373 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9374
9375 #. type: Plain text
9376 #: build/C/man2/quotactl.2:37
9377 #, no-wrap
9378 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9379 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9380
9381 #. type: Plain text
9382 #: build/C/man2/quotactl.2:49
9383 #, fuzzy
9384 #| msgid ""
9385 #| "The quota system defines for each user and/or group a soft limit and a "
9386 #| "hard limit bounding the amount of disk space that can be used on a given "
9387 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9388 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9389 #| "soft limit for more than one week (by default)  at a time: after this "
9390 #| "week the soft limit counts as hard limit."
9391 msgid ""
9392 "The quota system can be used to set per-user and per-group limits on the "
9393 "amount of disk space used on a file system.  For each user and/or group, a "
9394 "soft limit and a hard limit can be set for each file system.  The hard limit "
9395 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9396 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9397 "week (by default) at a time; after this time, the soft limit counts as a "
9398 "hard limit."
9399 msgstr ""
9400 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9401 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9402 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9403 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9404 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9405 "過した後はハード・リミットを超過したと みなされる。"
9406
9407 #. type: Plain text
9408 #: build/C/man2/quotactl.2:74
9409 #, fuzzy
9410 #| msgid ""
9411 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9412 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9413 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9414 #| "respectively), and I<subcmd> is described below."
9415 msgid ""
9416 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9417 "indicates a command to be applied to the user or group ID specified in "
9418 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9419 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9420 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9421 msgstr ""
9422 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9423 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9424 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9425 "を指定する。 I<subcmd> は以下で説明する。"
9426
9427 #. type: Plain text
9428 #: build/C/man2/quotactl.2:79
9429 msgid ""
9430 "The I<special> argument is a pointer to a null-terminated string containing "
9431 "the pathname of the (mounted) block special device for the file system being "
9432 "manipulated."
9433 msgstr ""
9434
9435 #. type: Plain text
9436 #: build/C/man2/quotactl.2:87
9437 msgid ""
9438 "The I<addr> argument is the address of an optional, command-specific, data "
9439 "structure that is copied in or out of the system.  The interpretation of "
9440 "I<addr> is given with each command below."
9441 msgstr ""
9442
9443 #. type: Plain text
9444 #: build/C/man2/quotactl.2:91
9445 msgid "The I<subcmd> value is one of the following:"
9446 msgstr "I<subcmd> の値は以下のいずれかである"
9447
9448 #. type: TP
9449 #: build/C/man2/quotactl.2:91
9450 #, no-wrap
9451 msgid "B<Q_QUOTAON>"
9452 msgstr "B<Q_QUOTAON>"
9453
9454 #. type: Plain text
9455 #: build/C/man2/quotactl.2:98
9456 msgid ""
9457 "Turn on quotas for a file system.  The I<id> argument is the identification "
9458 "number of the quota format to be used.  Currently, there are three supported "
9459 "quota formats:"
9460 msgstr ""
9461
9462 #. type: TP
9463 #: build/C/man2/quotactl.2:99
9464 #, no-wrap
9465 msgid "B<QFMT_VFS_OLD>"
9466 msgstr ""
9467
9468 #. type: Plain text
9469 #: build/C/man2/quotactl.2:102
9470 msgid "The original quota format."
9471 msgstr ""
9472
9473 #. type: TP
9474 #: build/C/man2/quotactl.2:102
9475 #, no-wrap
9476 msgid "B<QFMT_VFS_V0>"
9477 msgstr ""
9478
9479 #. type: Plain text
9480 #: build/C/man2/quotactl.2:106
9481 msgid ""
9482 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9483 "quota limits up to 2^42 bytes and 2^32 inodes."
9484 msgstr ""
9485
9486 #. type: TP
9487 #: build/C/man2/quotactl.2:106
9488 #, no-wrap
9489 msgid "B<QFMT_VFS_V1>"
9490 msgstr ""
9491
9492 #. type: Plain text
9493 #: build/C/man2/quotactl.2:110
9494 msgid ""
9495 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9496 "bytes and 2^64 inodes."
9497 msgstr ""
9498
9499 #. type: Plain text
9500 #: build/C/man2/quotactl.2:121
9501 msgid ""
9502 "The I<addr> argument points to the pathname of a file containing the quotas "
9503 "for the file system.  The quota file must exist; it is normally created with "
9504 "the B<quotacheck>(8)  program.  This operation requires privilege "
9505 "(B<CAP_SYS_ADMIN>)."
9506 msgstr ""
9507
9508 #. type: TP
9509 #: build/C/man2/quotactl.2:121
9510 #, no-wrap
9511 msgid "B<Q_QUOTAOFF>"
9512 msgstr "B<Q_QUOTAOFF>"
9513
9514 #. type: Plain text
9515 #: build/C/man2/quotactl.2:131
9516 msgid ""
9517 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9518 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9519 msgstr ""
9520
9521 #. type: TP
9522 #: build/C/man2/quotactl.2:131
9523 #, no-wrap
9524 msgid "B<Q_GETQUOTA>"
9525 msgstr "B<Q_GETQUOTA>"
9526
9527 #. type: Plain text
9528 #: build/C/man2/quotactl.2:142
9529 #, fuzzy
9530 #| msgid ""
9531 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9532 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9533 msgid ""
9534 "Get disk quota limits and current usage for user or group I<id>.  The "
9535 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9536 "quota.hE<gt>> as follows:"
9537 msgstr ""
9538 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9539 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9540
9541 #. type: Plain text
9542 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9543 #, no-wrap
9544 msgid ""
9545 "/* uint64_t is an unsigned 64-bit integer;\n"
9546 "   uint32_t is an unsigned 32-bit integer */\n"
9547 msgstr ""
9548
9549 #. type: Plain text
9550 #: build/C/man2/quotactl.2:167
9551 #, no-wrap
9552 msgid ""
9553 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9554 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9555 "                                  quota blocks alloc */\n"
9556 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9557 "                                  disk quota blocks */\n"
9558 "    uint64_t dqb_curspace;     /* current quota block\n"
9559 "                                  count */\n"
9560 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9561 "                                  allocated inodes */\n"
9562 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9563 "    uint64_t dqb_curinodes;    /* current number of\n"
9564 "                                  allocated inodes */\n"
9565 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9566 "                                  disk use */\n"
9567 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9568 "                                  files */\n"
9569 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9570 "                                  constants */\n"
9571 "};\n"
9572 msgstr ""
9573
9574 #. type: Plain text
9575 #: build/C/man2/quotactl.2:170
9576 #, no-wrap
9577 msgid ""
9578 "/* Flags in dqb_valid that indicate which fields in\n"
9579 "   dqblk structure are valid. */\n"
9580 msgstr ""
9581
9582 #. type: Plain text
9583 #: build/C/man2/quotactl.2:181
9584 #, no-wrap
9585 msgid ""
9586 "#define QIF_BLIMITS   1\n"
9587 "#define QIF_SPACE     2\n"
9588 "#define QIF_ILIMITS   4\n"
9589 "#define QIF_INODES    8\n"
9590 "#define QIF_BTIME     16\n"
9591 "#define QIF_ITIME     32\n"
9592 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9593 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9594 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9595 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9596 msgstr ""
9597
9598 #. type: Plain text
9599 #: build/C/man2/quotactl.2:198
9600 msgid ""
9601 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9602 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9603 "entries of the I<dqblk> structure and marks them as valid in the "
9604 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9605 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9606 msgstr ""
9607
9608 #. type: TP
9609 #: build/C/man2/quotactl.2:198
9610 #, no-wrap
9611 msgid "B<Q_SETQUOTA>"
9612 msgstr "B<Q_SETQUOTA>"
9613
9614 #. type: Plain text
9615 #: build/C/man2/quotactl.2:218
9616 msgid ""
9617 "Set quota information for user or group I<id>, using the information "
9618 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9619 "field of the I<dqblk> structure indicates which entries in the structure "
9620 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9621 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9622 "requires privilege (B<CAP_SYS_ADMIN>)."
9623 msgstr ""
9624
9625 #. type: TP
9626 #: build/C/man2/quotactl.2:218
9627 #, no-wrap
9628 msgid "B<Q_GETINFO>"
9629 msgstr "B<Q_GETINFO>"
9630
9631 #. type: Plain text
9632 #: build/C/man2/quotactl.2:229
9633 #, fuzzy
9634 #| msgid ""
9635 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9636 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9637 msgid ""
9638 "Get information (like grace times) about quotafile.  The I<addr> argument "
9639 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9640 "I<E<lt>sys/quota.hE<gt>> as follows:"
9641 msgstr ""
9642 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9643 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9644
9645 #. type: Plain text
9646 #: build/C/man2/quotactl.2:238
9647 #, no-wrap
9648 msgid ""
9649 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9650 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9651 "                               becomes hard limit */\n"
9652 msgstr ""
9653
9654 #. type: Plain text
9655 #: build/C/man2/quotactl.2:245
9656 #, no-wrap
9657 msgid ""
9658 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9659 "                               becomes hard limit */\n"
9660 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9661 "                               (DQF_*) */\n"
9662 "    uint32_t dqi_valid;\n"
9663 "};\n"
9664 msgstr ""
9665
9666 #. type: Plain text
9667 #: build/C/man2/quotactl.2:247
9668 #, no-wrap
9669 msgid "/* Bits for dqi_flags */\n"
9670 msgstr ""
9671
9672 #. type: Plain text
9673 #: build/C/man2/quotactl.2:249
9674 #, no-wrap
9675 msgid "/* Quota format QFMT_VFS_OLD */\n"
9676 msgstr ""
9677
9678 #. type: Plain text
9679 #: build/C/man2/quotactl.2:251
9680 #, no-wrap
9681 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9682 msgstr ""
9683
9684 #. type: Plain text
9685 #: build/C/man2/quotactl.2:253
9686 #, no-wrap
9687 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9688 msgstr ""
9689
9690 #. type: Plain text
9691 #: build/C/man2/quotactl.2:256
9692 #, no-wrap
9693 msgid ""
9694 "/* Flags in dqi_valid that indicate which fields in\n"
9695 "   dqinfo structure are valid. */\n"
9696 msgstr ""
9697
9698 #. type: Plain text
9699 #: build/C/man2/quotactl.2:261
9700 #, no-wrap
9701 msgid ""
9702 "# define IIF_BGRACE\t1\n"
9703 "# define IIF_IGRACE\t2\n"
9704 "# define IIF_FLAGS\t4\n"
9705 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9706 msgstr ""
9707
9708 #. type: Plain text
9709 #: build/C/man2/quotactl.2:277
9710 msgid ""
9711 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9712 "the structure that are valid.  Currently, the kernel fills in all entries of "
9713 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9714 "field.  The I<id> argument is ignored."
9715 msgstr ""
9716
9717 #. type: TP
9718 #: build/C/man2/quotactl.2:277
9719 #, no-wrap
9720 msgid "B<Q_SETINFO>"
9721 msgstr "B<Q_SETINFO>"
9722
9723 #. type: Plain text
9724 #: build/C/man2/quotactl.2:301
9725 msgid ""
9726 "Set information about quotafile.  The I<addr> argument should be a pointer "
9727 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9728 "indicates the entries in the structure that have been set by the caller.  "
9729 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9730 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9731 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9732 msgstr ""
9733
9734 #. type: TP
9735 #: build/C/man2/quotactl.2:301
9736 #, no-wrap
9737 msgid "B<Q_GETFMT>"
9738 msgstr "B<Q_GETFMT>"
9739
9740 #. type: Plain text
9741 #: build/C/man2/quotactl.2:308
9742 msgid ""
9743 "Get quota format used on the specified file system.  The I<addr> argument "
9744 "should be a pointer to a 4-byte buffer where the format number will be "
9745 "stored."
9746 msgstr ""
9747
9748 #. type: TP
9749 #: build/C/man2/quotactl.2:308
9750 #, no-wrap
9751 msgid "B<Q_SYNC>"
9752 msgstr "B<Q_SYNC>"
9753
9754 #. type: Plain text
9755 #: build/C/man2/quotactl.2:319
9756 msgid ""
9757 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9758 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9759 "I<id> arguments are ignored."
9760 msgstr ""
9761
9762 #. type: TP
9763 #: build/C/man2/quotactl.2:319
9764 #, no-wrap
9765 msgid "B<Q_GETSTATS>"
9766 msgstr "B<Q_GETSTATS>"
9767
9768 #.  Q_GETSTATS was removed in kernel 2.4.22.
9769 #. type: Plain text
9770 #: build/C/man2/quotactl.2:339
9771 msgid ""
9772 "Get statistics and other generic information about the quota subsystem.  The "
9773 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9774 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9775 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9776 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9777 "the information instead."
9778 msgstr ""
9779
9780 #. type: Plain text
9781 #: build/C/man2/quotactl.2:342
9782 msgid ""
9783 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9784 "commands are bypassed and the following commands are used:"
9785 msgstr ""
9786
9787 #. type: TP
9788 #: build/C/man2/quotactl.2:342
9789 #, no-wrap
9790 msgid "B<Q_XQUOTAON>"
9791 msgstr "B<Q_XQUOTAON>"
9792
9793 #. type: Plain text
9794 #: build/C/man2/quotactl.2:363
9795 msgid ""
9796 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9797 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9798 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9799 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9800 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9801 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9802 "(B<CAP_SYS_ADMIN>)."
9803 msgstr ""
9804
9805 #. type: TP
9806 #: build/C/man2/quotactl.2:363
9807 #, no-wrap
9808 msgid "B<Q_XQUOTAOFF>"
9809 msgstr "B<Q_XQUOTAOFF>"
9810
9811 #. type: Plain text
9812 #: build/C/man2/quotactl.2:374
9813 msgid ""
9814 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9815 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9816 "accounting and/or limit enforcement need to be turned off.  This operation "
9817 "requires privilege (B<CAP_SYS_ADMIN>)."
9818 msgstr ""
9819
9820 #. type: TP
9821 #: build/C/man2/quotactl.2:374
9822 #, no-wrap
9823 msgid "B<Q_XGETQUOTA>"
9824 msgstr "B<Q_XGETQUOTA>"
9825
9826 #. type: Plain text
9827 #: build/C/man2/quotactl.2:388
9828 msgid ""
9829 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9830 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9831 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9832 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9833 "user."
9834 msgstr ""
9835
9836 #. type: TP
9837 #: build/C/man2/quotactl.2:388
9838 #, no-wrap
9839 msgid "B<Q_XSETQLIM>"
9840 msgstr "B<Q_XSETQLIM>"
9841
9842 #. type: Plain text
9843 #: build/C/man2/quotactl.2:400
9844 msgid ""
9845 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9846 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9847 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9848 msgstr ""
9849
9850 #. type: TP
9851 #: build/C/man2/quotactl.2:400
9852 #, no-wrap
9853 msgid "B<Q_XGETQSTAT>"
9854 msgstr "B<Q_XGETQSTAT>"
9855
9856 #. type: Plain text
9857 #: build/C/man2/quotactl.2:408
9858 msgid ""
9859 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9860 "quota information.  This is useful for finding out how much space is used to "
9861 "store quota information, and also to get quotaon/off status of a given local "
9862 "XFS file system."
9863 msgstr ""
9864
9865 #. type: TP
9866 #: build/C/man2/quotactl.2:408
9867 #, no-wrap
9868 msgid "B<Q_XQUOTARM>"
9869 msgstr "B<Q_XQUOTARM>"
9870
9871 #. type: Plain text
9872 #: build/C/man2/quotactl.2:412
9873 msgid ""
9874 "Free the disk space taken by disk quotas.  Quotas must have already been "
9875 "turned off."
9876 msgstr ""
9877
9878 #. type: Plain text
9879 #: build/C/man2/quotactl.2:419
9880 msgid ""
9881 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9882 "quota information to disk (in addition to the other file system metadata "
9883 "that it writes out)."
9884 msgstr ""
9885
9886 #. type: SH
9887 #: build/C/man2/quotactl.2:419
9888 #, no-wrap
9889 msgid "RETURN VALUES"
9890 msgstr "返り値"
9891
9892 #. type: Plain text
9893 #: build/C/man2/quotactl.2:427
9894 msgid ""
9895 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9896 "is set to indicate the error."
9897 msgstr ""
9898 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9899 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9900
9901 #. type: Plain text
9902 #: build/C/man2/quotactl.2:434
9903 msgid "I<addr> or I<special> is invalid."
9904 msgstr ""
9905
9906 #. type: Plain text
9907 #: build/C/man2/quotactl.2:440
9908 msgid "I<cmd> or I<type> is invalid."
9909 msgstr ""
9910
9911 #. type: TP
9912 #: build/C/man2/quotactl.2:440
9913 #, no-wrap
9914 msgid "B<ENOENT>"
9915 msgstr "B<ENOENT>"
9916
9917 #. type: Plain text
9918 #: build/C/man2/quotactl.2:447
9919 msgid "The file specified by I<special> or I<addr> does not exist."
9920 msgstr ""
9921
9922 #. type: Plain text
9923 #: build/C/man2/quotactl.2:452
9924 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9925 msgstr ""
9926
9927 #. type: TP
9928 #: build/C/man2/quotactl.2:452
9929 #, no-wrap
9930 msgid "B<ENOTBLK>"
9931 msgstr "B<ENOTBLK>"
9932
9933 #. type: Plain text
9934 #: build/C/man2/quotactl.2:456
9935 msgid "I<special> is not a block device."
9936 msgstr "I<special> がブロックデバイスではない。"
9937
9938 #. type: Plain text
9939 #: build/C/man2/quotactl.2:461
9940 msgid ""
9941 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9942 "specified operation."
9943 msgstr ""
9944
9945 #. type: Plain text
9946 #: build/C/man2/quotactl.2:465
9947 msgid ""
9948 "No disk quota is found for the indicated user.  Quotas have not been turned "
9949 "on for this file system."
9950 msgstr ""
9951
9952 #. type: Plain text
9953 #: build/C/man2/quotactl.2:474
9954 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9955 msgstr ""
9956
9957 #. type: Plain text
9958 #: build/C/man2/quotactl.2:477
9959 msgid "Specified limits are out of range allowed by quota format."
9960 msgstr ""
9961
9962 #. type: Plain text
9963 #: build/C/man2/quotactl.2:486
9964 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9965 msgstr ""
9966
9967 #. type: Plain text
9968 #: build/C/man2/quotactl.2:495
9969 msgid ""
9970 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9971 "the quota file pointed to by I<addr> exists, but is not on the file system "
9972 "pointed to by I<special>."
9973 msgstr ""
9974
9975 #. type: Plain text
9976 #: build/C/man2/quotactl.2:501
9977 msgid ""
9978 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9979 msgstr ""
9980
9981 #. type: Plain text
9982 #: build/C/man2/quotactl.2:504
9983 msgid "The quota file is corrupted."
9984 msgstr "quota ファイルが壊れている。"
9985
9986 #. type: Plain text
9987 #: build/C/man2/quotactl.2:507
9988 msgid "Specified quota format was not found."
9989 msgstr ""
9990
9991 #. type: Plain text
9992 #: build/C/man2/quotactl.2:512
9993 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9994 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9995
9996 #. type: TH
9997 #: build/C/man2/sendfile.2:19
9998 #, no-wrap
9999 msgid "SENDFILE"
10000 msgstr "SENDFILE"
10001
10002 #. type: TH
10003 #: build/C/man2/sendfile.2:19
10004 #, no-wrap
10005 msgid "2011-09-14"
10006 msgstr "2011-09-14"
10007
10008 #. type: Plain text
10009 #: build/C/man2/sendfile.2:22
10010 msgid "sendfile - transfer data between file descriptors"
10011 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10012
10013 #. type: Plain text
10014 #: build/C/man2/sendfile.2:24
10015 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10016 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10017
10018 #.  The below is too ugly. Comments about glibc versions belong
10019 #.  in the notes, not in the header.
10020 #.  .B #include <features.h>
10021 #.  .br
10022 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10023 #.  .br
10024 #.  .B #include <sys/sendfile.h>
10025 #.  .br
10026 #.  #else
10027 #.  .br
10028 #.  .B #include <sys/types.h>
10029 #.  .br
10030 #.  .B /* No system prototype before glibc 2.1. */
10031 #.  .br
10032 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10033 #.  .br
10034 #.  .B #endif
10035 #. type: Plain text
10036 #: build/C/man2/sendfile.2:47
10037 msgid ""
10038 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10039 "size_t>I< count>B<);>"
10040 msgstr ""
10041 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10042 "size_t>I< count>B<);>"
10043
10044 #. type: Plain text
10045 #: build/C/man2/sendfile.2:57
10046 msgid ""
10047 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10048 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10049 "than the combination of B<read>(2)  and B<write>(2), which would require "
10050 "transferring data to and from user space."
10051 msgstr ""
10052 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10053 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10054 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10055 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10056 "るからである。"
10057
10058 #. type: Plain text
10059 #: build/C/man2/sendfile.2:62
10060 msgid ""
10061 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10062 "be a descriptor opened for writing."
10063 msgstr ""
10064 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10065 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10066
10067 #. type: Plain text
10068 #: build/C/man2/sendfile.2:83
10069 msgid ""
10070 "If I<offset> is not NULL, then it points to a variable holding the file "
10071 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10072 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10073 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10074 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10075 "otherwise the current file offset is adjusted to reflect the number of bytes "
10076 "read from I<in_fd>."
10077 msgstr ""
10078 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10079 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10080 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10081 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10082 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10083 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10084 "整する。"
10085
10086 #. type: Plain text
10087 #: build/C/man2/sendfile.2:90
10088 msgid ""
10089 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10090 "current file offset, and the file offset will be updated by the call."
10091 msgstr ""
10092 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10093 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10094
10095 #. type: Plain text
10096 #: build/C/man2/sendfile.2:93
10097 msgid "I<count> is the number of bytes to copy between the file descriptors."
10098 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10099
10100 #. type: Plain text
10101 #: build/C/man2/sendfile.2:100
10102 msgid ""
10103 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10104 "like operations (i.e., it cannot be a socket)."
10105 msgstr ""
10106 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10107 "な\n"
10108 "い (ソケットを指定することはできない)。"
10109
10110 #. type: Plain text
10111 #: build/C/man2/sendfile.2:108
10112 msgid ""
10113 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10114 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10115 "()  changes the file offset appropriately."
10116 msgstr ""
10117 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10118 "な\n"
10119 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10120 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10121
10122 #. type: Plain text
10123 #: build/C/man2/sendfile.2:115
10124 msgid ""
10125 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10126 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10127 msgstr ""
10128 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10129 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10130
10131 #. type: Plain text
10132 #: build/C/man2/sendfile.2:121
10133 msgid ""
10134 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10135 "block."
10136 msgstr ""
10137 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10138 "た。"
10139
10140 #. type: TP
10141 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10142 #: build/C/man2/vmsplice.2:123
10143 #, no-wrap
10144 msgid "B<EBADF>"
10145 msgstr "B<EBADF>"
10146
10147 #. type: Plain text
10148 #: build/C/man2/sendfile.2:125
10149 msgid ""
10150 "The input file was not opened for reading or the output file was not opened "
10151 "for writing."
10152 msgstr ""
10153 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10154 "のためにオープンされていない。"
10155
10156 #. type: Plain text
10157 #: build/C/man2/sendfile.2:128
10158 msgid "Bad address."
10159 msgstr "アドレスがおかしい。"
10160
10161 #. type: Plain text
10162 #: build/C/man2/sendfile.2:134
10163 msgid ""
10164 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10165 "available for I<in_fd>."
10166 msgstr ""
10167 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10168 "が I<in_fd> では利用できない。"
10169
10170 #. type: Plain text
10171 #: build/C/man2/sendfile.2:138
10172 msgid "Unspecified error while reading from I<in_fd>."
10173 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10174
10175 #. type: Plain text
10176 #: build/C/man2/sendfile.2:142
10177 msgid "Insufficient memory to read from I<in_fd>."
10178 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10179
10180 #. type: Plain text
10181 #: build/C/man2/sendfile.2:148
10182 msgid ""
10183 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10184 "sendfile.hE<gt>> is present since glibc 2.1."
10185 msgstr ""
10186 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10187 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10188
10189 #. type: Plain text
10190 #: build/C/man2/sendfile.2:150
10191 msgid "Not specified in POSIX.1-2001, or other standards."
10192 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10193
10194 #. type: Plain text
10195 #: build/C/man2/sendfile.2:155
10196 msgid ""
10197 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10198 "prototypes.  It should not be used in portable programs."
10199 msgstr ""
10200 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10201 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10202
10203 #. type: Plain text
10204 #: build/C/man2/sendfile.2:165
10205 msgid ""
10206 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10207 "need to send some header data in front of the file contents, you will find "
10208 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10209 "minimize the number of packets and to tune performance."
10210 msgstr ""
10211 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10212 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10213 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10214 "いいだろう。"
10215
10216 #. type: Plain text
10217 #: build/C/man2/sendfile.2:171
10218 msgid ""
10219 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10220 "B<sendfile>()  changed the current offset of that file."
10221 msgstr ""
10222 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10223 "き、\n"
10224 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10225
10226 #. type: Plain text
10227 #: build/C/man2/sendfile.2:183
10228 msgid ""
10229 "The original Linux B<sendfile>()  system call was not designed to handle "
10230 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10231 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10232 "function transparently deals with the kernel differences."
10233 msgstr ""
10234 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10235 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10236 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10237 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10238
10239 #. type: Plain text
10240 #: build/C/man2/sendfile.2:192
10241 msgid ""
10242 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10243 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10244 msgstr ""
10245 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10246 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10247
10248 #. type: Plain text
10249 #: build/C/man2/sendfile.2:197
10250 msgid ""
10251 "The Linux-specific B<splice>(2)  call supports transferring data between "
10252 "arbitrary files (e.g., a pair of sockets)."
10253 msgstr ""
10254 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10255 "ソケット同士) でのデータ転送をサポートしている。"
10256
10257 #. type: Plain text
10258 #: build/C/man2/sendfile.2:202
10259 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10260 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10261
10262 #. type: TH
10263 #: build/C/man2/set_tid_address.2:25
10264 #, no-wrap
10265 msgid "SET_TID_ADDRESS"
10266 msgstr "SET_TID_ADDRESS"
10267
10268 #. type: TH
10269 #: build/C/man2/set_tid_address.2:25
10270 #, fuzzy, no-wrap
10271 #| msgid "2012-05-03"
10272 msgid "2012-07-19"
10273 msgstr "2012-05-03"
10274
10275 #. type: Plain text
10276 #: build/C/man2/set_tid_address.2:28
10277 msgid "set_tid_address - set pointer to thread ID"
10278 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10279
10280 #. type: Plain text
10281 #: build/C/man2/set_tid_address.2:31
10282 #, no-wrap
10283 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10284 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10285
10286 #. type: Plain text
10287 #: build/C/man2/set_tid_address.2:33
10288 #, no-wrap
10289 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10290 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10291
10292 #. type: Plain text
10293 #: build/C/man2/set_tid_address.2:40
10294 #, fuzzy
10295 #| msgid ""
10296 #| "The kernel keeps for each process two values called I<set_child_tid> and "
10297 #| "I<clear_child_tid> that are NULL by default."
10298 msgid ""
10299 "For each process, the kernel maintains two attributes (addresses) called "
10300 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10301 "value NULL by default."
10302 msgstr ""
10303 "カーネルは各プロセスについて I<set_child_tid> と I<clear_child_tid> という 2 "
10304 "つの値を保持する。 これらはデフォルトでは NULL である。"
10305
10306 #. type: TP
10307 #: build/C/man2/set_tid_address.2:40
10308 #, fuzzy, no-wrap
10309 #| msgid "set_child_tid"
10310 msgid "I<set_child_tid>"
10311 msgstr "set_child_tid"
10312
10313 #. type: Plain text
10314 #: build/C/man2/set_tid_address.2:51
10315 #, fuzzy
10316 #| msgid ""
10317 #| "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10318 #| "flag, I<set_child_tid> is set to I<child_tidptr>, the fifth argument of "
10319 #| "that system call."
10320 msgid ""
10321 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10322 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10323 "that system call."
10324 msgstr ""
10325 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10326 "れた場合、 I<set_child_tid> は I<child_tidptr> に設定される。 これは B<clone>"
10327 "(2)  のシステムコールの 5 番目の引き数である。"
10328
10329 #. type: Plain text
10330 #: build/C/man2/set_tid_address.2:56
10331 msgid ""
10332 "When I<set_child_tid> is set, the very first thing the new process does is "
10333 "writing its PID at this address."
10334 msgstr ""
10335 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10336 "のアドレスに自身の PID を書き込むことである。"
10337
10338 #. type: TP
10339 #: build/C/man2/set_tid_address.2:56
10340 #, fuzzy, no-wrap
10341 #| msgid "clear_child_tid"
10342 msgid "I<clear_child_tid>"
10343 msgstr "clear_child_tid"
10344
10345 #. type: Plain text
10346 #: build/C/man2/set_tid_address.2:67
10347 #, fuzzy
10348 #| msgid ""
10349 #| "If a process is started using B<clone>(2)  with the "
10350 #| "B<CLONE_CHILD_CLEARTID> flag, I<clear_child_tid> is set to "
10351 #| "I<child_tidptr>, the fifth argument of that system call."
10352 msgid ""
10353 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10354 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10355 "of that system call."
10356 msgstr ""
10357 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2)  によって開始"
10358 "された場合、 I<clear_child_tid> は I<child_tidptr> に設定される。 これは "
10359 "B<clone>(2)  のシステムコールの 5 番目の引き数である。"
10360
10361 #. type: Plain text
10362 #: build/C/man2/set_tid_address.2:74
10363 msgid ""
10364 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10365 "the calling process to I<tidptr>."
10366 msgstr ""
10367 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10368 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10369
10370 #. type: Plain text
10371 #: build/C/man2/set_tid_address.2:82
10372 #, fuzzy
10373 #| msgid ""
10374 #| "When I<clear_child_tid> is set, and the process exits, and the process "
10375 #| "was sharing memory with other processes or threads, then 0 is written at "
10376 #| "this address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> "
10377 #| "call is done.  (That is, wake a single process waiting on this futex.)  "
10378 #| "Errors are ignored."
10379 msgid ""
10380 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10381 "process is sharing memory with other processes or threads, then 0 is written "
10382 "at the address specified in I<clear_child_tid> and the kernel performs the "
10383 "following operation:"
10384 msgstr ""
10385 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
10386 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
10387 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
10388 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
10389 "(wake))。 エラーは無視される。"
10390
10391 #. type: Plain text
10392 #: build/C/man2/set_tid_address.2:84
10393 #, no-wrap
10394 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10395 msgstr ""
10396
10397 #. type: Plain text
10398 #: build/C/man2/set_tid_address.2:88
10399 msgid ""
10400 "The effect of this operation is to wake a single process that is performing "
10401 "a futex wait on the memory location.  Errors from the futex wake operation "
10402 "are ignored."
10403 msgstr ""
10404
10405 #. type: Plain text
10406 #: build/C/man2/set_tid_address.2:91
10407 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10408 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10409
10410 #. type: Plain text
10411 #: build/C/man2/set_tid_address.2:94
10412 msgid "B<set_tid_address>()  always succeeds."
10413 msgstr "B<set_tid_address>()  は常に成功する。"
10414
10415 #. type: Plain text
10416 #: build/C/man2/set_tid_address.2:97
10417 msgid ""
10418 "This call is present since Linux 2.5.48.  Details as given here are valid "
10419 "since Linux 2.5.49."
10420 msgstr ""
10421 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10422 "2.5.49 以降で有効である。"
10423
10424 #. type: Plain text
10425 #: build/C/man2/set_tid_address.2:102
10426 msgid "B<clone>(2), B<futex>(2)"
10427 msgstr "B<clone>(2), B<futex>(2)"
10428
10429 #. type: TH
10430 #: build/C/man2/splice.2:26
10431 #, no-wrap
10432 msgid "SPLICE"
10433 msgstr "SPLICE"
10434
10435 #. type: TH
10436 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10437 #, no-wrap
10438 msgid "2012-05-04"
10439 msgstr "2012-05-04"
10440
10441 #. type: Plain text
10442 #: build/C/man2/splice.2:29
10443 msgid "splice - splice data to/from a pipe"
10444 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10445
10446 #. type: Plain text
10447 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10448 #, no-wrap
10449 msgid ""
10450 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10451 "B<#include E<lt>fcntl.hE<gt>>\n"
10452 msgstr ""
10453 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10454 "B<#include E<lt>fcntl.hE<gt>>\n"
10455
10456 #.  Return type was long before glibc 2.7
10457 #. type: Plain text
10458 #: build/C/man2/splice.2:38
10459 #, no-wrap
10460 msgid ""
10461 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10462 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10463 msgstr ""
10464 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10465 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10466
10467 #. type: Plain text
10468 #: build/C/man2/splice.2:50
10469 msgid ""
10470 "B<splice>()  moves data between two file descriptors without copying between "
10471 "kernel address space and user address space.  It transfers up to I<len> "
10472 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10473 "I<fd_out>, where one of the descriptors must refer to a pipe."
10474 msgstr ""
10475 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10476 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10477 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10478 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10479 "ならない。"
10480
10481 #. type: Plain text
10482 #: build/C/man2/splice.2:80
10483 msgid ""
10484 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10485 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10486 "starting from the current file offset, and the current file offset is "
10487 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10488 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10489 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10490 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10491 "apply for I<fd_out> and I<off_out>."
10492 msgstr ""
10493 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10494 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10495 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10496 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10497 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10498 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10499 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10500 "る。"
10501
10502 #. type: Plain text
10503 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10504 msgid ""
10505 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10506 "or more of the following values:"
10507 msgstr ""
10508 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10509
10510 #. type: TP
10511 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10512 #, no-wrap
10513 msgid "B<SPLICE_F_MOVE>"
10514 msgstr "B<SPLICE_F_MOVE>"
10515
10516 #. type: Plain text
10517 #: build/C/man2/splice.2:98
10518 msgid ""
10519 "Attempt to move pages instead of copying.  This is only a hint to the "
10520 "kernel: pages may still be copied if the kernel cannot move the pages from "
10521 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10522 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10523 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10524 "correct implementation may be restored."
10525 msgstr ""
10526 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10527 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10528 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10529 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10530 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10531 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10532
10533 #. type: TP
10534 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10535 #, no-wrap
10536 msgid "B<SPLICE_F_NONBLOCK>"
10537 msgstr "B<SPLICE_F_NONBLOCK>"
10538
10539 #. type: Plain text
10540 #: build/C/man2/splice.2:107
10541 msgid ""
10542 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10543 "B<splice>()  may nevertheless block because the file descriptors that are "
10544 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10545 msgstr ""
10546 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10547 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10548 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10549 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10550 "らである。"
10551
10552 #. type: TP
10553 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10554 #, no-wrap
10555 msgid "B<SPLICE_F_MORE>"
10556 msgstr "B<SPLICE_F_MORE>"
10557
10558 #. type: Plain text
10559 #: build/C/man2/splice.2:121
10560 msgid ""
10561 "More data will be coming in a subsequent splice.  This is a helpful hint "
10562 "when the I<fd_out> refers to a socket (see also the description of "
10563 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10564 msgstr ""
10565 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10566 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10567 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10568
10569 #. type: TP
10570 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10571 #, no-wrap
10572 msgid "B<SPLICE_F_GIFT>"
10573 msgstr "B<SPLICE_F_GIFT>"
10574
10575 #. type: Plain text
10576 #: build/C/man2/splice.2:127
10577 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10578 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10579
10580 #. type: Plain text
10581 #: build/C/man2/splice.2:136
10582 msgid ""
10583 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10584 "to or from the pipe.  A return value of 0 means that there was no data to "
10585 "transfer, and it would not make sense to block, because there are no writers "
10586 "connected to the write end of the pipe referred to by I<fd_in>."
10587 msgstr ""
10588 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10589 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10590 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10591 "れている者がいないからである。"
10592
10593 #. type: Plain text
10594 #: build/C/man2/splice.2:142
10595 msgid ""
10596 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10597 msgstr ""
10598 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10599 "る。"
10600
10601 #. type: Plain text
10602 #: build/C/man2/splice.2:147
10603 msgid ""
10604 "One or both file descriptors are not valid, or do not have proper read-write "
10605 "mode."
10606 msgstr ""
10607 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10608 "write モードではない。"
10609
10610 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10611 #.  splice() in append mode was broken
10612 #. type: Plain text
10613 #: build/C/man2/splice.2:155
10614 msgid ""
10615 "Target file system doesn't support splicing; target file is opened in append "
10616 "mode; neither of the descriptors refers to a pipe; or offset given for "
10617 "nonseekable device."
10618 msgstr ""
10619 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10620 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10621 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10622
10623 #. type: Plain text
10624 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10625 #: build/C/man2/vmsplice.2:138
10626 msgid "Out of memory."
10627 msgstr "メモリ不足。"
10628
10629 #. type: TP
10630 #: build/C/man2/splice.2:158
10631 #, no-wrap
10632 msgid "B<ESPIPE>"
10633 msgstr "B<ESPIPE>"
10634
10635 #. type: Plain text
10636 #: build/C/man2/splice.2:165
10637 msgid ""
10638 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10639 "descriptor refers to a pipe."
10640 msgstr ""
10641 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10642 "クリプタが パイプを参照している。"
10643
10644 #. type: Plain text
10645 #: build/C/man2/splice.2:170
10646 msgid ""
10647 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10648 "was added to glibc in version 2.5."
10649 msgstr ""
10650 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10651 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10652
10653 #. type: Plain text
10654 #: build/C/man2/splice.2:182
10655 #, fuzzy
10656 #| msgid ""
10657 #| "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), "
10658 #| "provide userspace programs with full control over an arbitrary kernel "
10659 #| "buffer, implemented within the kernel using the same type of buffer that "
10660 #| "is used for a pipe.  In overview, these system calls perform the "
10661 #| "following tasks:"
10662 msgid ""
10663 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10664 "user-space programs with full control over an arbitrary kernel buffer, "
10665 "implemented within the kernel using the same type of buffer that is used for "
10666 "a pipe.  In overview, these system calls perform the following tasks:"
10667 msgstr ""
10668 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10669 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10670 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10671 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10672
10673 #. type: TP
10674 #: build/C/man2/splice.2:182
10675 #, no-wrap
10676 msgid "B<splice>()"
10677 msgstr "B<splice>()"
10678
10679 #. type: Plain text
10680 #: build/C/man2/splice.2:186
10681 msgid ""
10682 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10683 "or from one buffer to another."
10684 msgstr ""
10685 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10686 "から別のバッファへの、データ移動を行う。"
10687
10688 #. type: TP
10689 #: build/C/man2/splice.2:186
10690 #, no-wrap
10691 msgid "B<tee>(2)"
10692 msgstr "B<tee>(2)"
10693
10694 #. type: Plain text
10695 #: build/C/man2/splice.2:189
10696 msgid "\"copies\" the data from one buffer to another."
10697 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10698
10699 #. type: TP
10700 #: build/C/man2/splice.2:189
10701 #, no-wrap
10702 msgid "B<vmsplice>(2)"
10703 msgstr "B<vmsplice>(2)"
10704
10705 #. type: Plain text
10706 #: build/C/man2/splice.2:192
10707 msgid "\"copies\" data from user space into the buffer."
10708 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10709
10710 #.  Linus: Now, imagine using the above in a media server, for example.
10711 #.  Let's say that a year or two has passed, so that the video drivers
10712 #.  have been updated to be able to do the splice thing, and what can
10713 #.  you do? You can:
10714 #.  - splice from the (mpeg or whatever - let's just assume that the video
10715 #.    input is either digital or does the encoding on its own - like they
10716 #.    pretty much all do) video input into a pipe (remember: no copies - the
10717 #.    video input will just DMA directly into memory, and splice will just
10718 #.    set up the pages in the pipe buffer)
10719 #.  - tee that pipe to split it up
10720 #.  - splice one end to a file (ie "save the compressed stream to disk")
10721 #.  - splice the other end to a real-time video decoder window for your
10722 #.    real-time viewing pleasure.
10723 #.  Linus: Now, the advantage of splice()/tee() is that you can
10724 #.  do zero-copy movement of data, and unlike sendfile() you can
10725 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10726 #.  than just sending the data to somebody else: you can duplicate
10727 #.  the data and choose to forward it to two or more different
10728 #.  users - for things like logging etc.).
10729 #. type: Plain text
10730 #: build/C/man2/splice.2:223
10731 msgid ""
10732 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10733 "does this by implementing a pipe buffer as a set of reference-counted "
10734 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10735 "in a buffer by creating new pointers (for the output buffer) referring to "
10736 "the pages, and increasing the reference counts for the pages: only pointers "
10737 "are copied, not the pages of the buffer."
10738 msgstr ""
10739 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10740 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10741 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10742 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10743 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10744 "タだけがコピーされ、 バッファのページはコピーされない。"
10745
10746 #. type: Plain text
10747 #: build/C/man2/splice.2:226
10748 msgid "See B<tee>(2)."
10749 msgstr "B<tee>(2)  参照。"
10750
10751 #. type: Plain text
10752 #: build/C/man2/splice.2:230
10753 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10754 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10755
10756 #. type: TH
10757 #: build/C/man2/tee.2:26
10758 #, no-wrap
10759 msgid "TEE"
10760 msgstr "TEE"
10761
10762 #. type: Plain text
10763 #: build/C/man2/tee.2:29
10764 msgid "tee - duplicating pipe content"
10765 msgstr "tee - パイプの中身を複製する"
10766
10767 #. type: Plain text
10768 #: build/C/man2/tee.2:36
10769 #, no-wrap
10770 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"
10771 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"
10772
10773 #.  Example programs http://brick.kernel.dk/snaps
10774 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10775 #.  (again, incrementing their reference count, not copying the data) from
10776 #.  one pipe to two other pipes.
10777 #. type: Plain text
10778 #: build/C/man2/tee.2:56
10779 msgid ""
10780 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10781 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10782 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10783 "therefore, that data can be copied by a subsequent B<splice>(2)."
10784 msgstr ""
10785 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10786 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10787 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10788 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10789
10790 #. type: Plain text
10791 #: build/C/man2/tee.2:62
10792 msgid ""
10793 "I<flags> is a series of modifier flags, which share the name space with "
10794 "B<splice>(2)  and B<vmsplice>(2):"
10795 msgstr ""
10796 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10797 "名前である。"
10798
10799 #. type: Plain text
10800 #: build/C/man2/tee.2:68
10801 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10802 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10803
10804 #.  Not used for vmsplice
10805 #.  May be in the future -- therefore EAGAIN
10806 #. type: Plain text
10807 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10808 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10809 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10810
10811 #. type: Plain text
10812 #: build/C/man2/tee.2:79
10813 msgid ""
10814 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10815 "see B<splice>(2)."
10816 msgstr ""
10817 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10818 "る。 B<splice>(2)  参照。"
10819
10820 #. type: Plain text
10821 #: build/C/man2/tee.2:85
10822 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10823 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10824
10825 #. type: Plain text
10826 #: build/C/man2/tee.2:94
10827 msgid ""
10828 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10829 "duplicated between the input and output.  A return value of 0 means that "
10830 "there was no data to transfer, and it would not make sense to block, because "
10831 "there are no writers connected to the write end of the pipe referred to by "
10832 "I<fd_in>."
10833 msgstr ""
10834 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10835 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10836 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10837 "ている者がいないからである。"
10838
10839 #. type: Plain text
10840 #: build/C/man2/tee.2:100
10841 msgid ""
10842 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10843 msgstr ""
10844 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10845
10846 #. type: Plain text
10847 #: build/C/man2/tee.2:111
10848 msgid ""
10849 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10850 "refer to the same pipe."
10851 msgstr ""
10852 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10853 "と I<fd_out> が同じパイプを参照している。"
10854
10855 #. type: Plain text
10856 #: build/C/man2/tee.2:119
10857 msgid ""
10858 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10859 "was added to glibc in version 2.5."
10860 msgstr ""
10861 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10862 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10863
10864 #. type: Plain text
10865 #: build/C/man2/tee.2:130
10866 msgid ""
10867 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10868 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10869 "data in the output by merely grabbing a reference to the input."
10870 msgstr ""
10871 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10872 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10873 "照だけを作成することで出力側にデータを 追加する。"
10874
10875 #. type: Plain text
10876 #: build/C/man2/tee.2:136
10877 msgid ""
10878 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10879 "()  system call."
10880 msgstr ""
10881 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10882 "ムを実装したものである。"
10883
10884 #. type: Plain text
10885 #: build/C/man2/tee.2:145
10886 #, no-wrap
10887 msgid ""
10888 "#define _GNU_SOURCE\n"
10889 "#include E<lt>fcntl.hE<gt>\n"
10890 "#include E<lt>stdio.hE<gt>\n"
10891 "#include E<lt>stdlib.hE<gt>\n"
10892 "#include E<lt>unistd.hE<gt>\n"
10893 "#include E<lt>errno.hE<gt>\n"
10894 "#include E<lt>limits.hE<gt>\n"
10895 msgstr ""
10896 "#define _GNU_SOURCE\n"
10897 "#include E<lt>fcntl.hE<gt>\n"
10898 "#include E<lt>stdio.hE<gt>\n"
10899 "#include E<lt>stdlib.hE<gt>\n"
10900 "#include E<lt>unistd.hE<gt>\n"
10901 "#include E<lt>errno.hE<gt>\n"
10902 "#include E<lt>limits.hE<gt>\n"
10903
10904 #. type: Plain text
10905 #: build/C/man2/tee.2:151
10906 #, no-wrap
10907 msgid ""
10908 "int\n"
10909 "main(int argc, char *argv[])\n"
10910 "{\n"
10911 "    int fd;\n"
10912 "    int len, slen;\n"
10913 msgstr ""
10914 "int\n"
10915 "main(int argc, char *argv[])\n"
10916 "{\n"
10917 "    int fd;\n"
10918 "    int len, slen;\n"
10919
10920 #. type: Plain text
10921 #: build/C/man2/tee.2:156
10922 #, no-wrap
10923 msgid ""
10924 "    if (argc != 2) {\n"
10925 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10926 "        exit(EXIT_FAILURE);\n"
10927 "    }\n"
10928 msgstr ""
10929 "    if (argc != 2) {\n"
10930 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10931 "        exit(EXIT_FAILURE);\n"
10932 "    }\n"
10933
10934 #. type: Plain text
10935 #: build/C/man2/tee.2:162
10936 #, no-wrap
10937 msgid ""
10938 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10939 "    if (fd == -1) {\n"
10940 "        perror(\"open\");\n"
10941 "        exit(EXIT_FAILURE);\n"
10942 "    }\n"
10943 msgstr ""
10944 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10945 "    if (fd == -1) {\n"
10946 "        perror(\"open\");\n"
10947 "        exit(EXIT_FAILURE);\n"
10948 "    }\n"
10949
10950 #. type: Plain text
10951 #: build/C/man2/tee.2:169
10952 #, no-wrap
10953 msgid ""
10954 "    do {\n"
10955 "        /*\n"
10956 "         * tee stdin to stdout.\n"
10957 "         */\n"
10958 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10959 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10960 msgstr ""
10961 "    do {\n"
10962 "        /*\n"
10963 "         * tee stdin to stdout.\n"
10964 "         */\n"
10965 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10966 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10967
10968 #. type: Plain text
10969 #: build/C/man2/tee.2:178
10970 #, no-wrap
10971 msgid ""
10972 "        if (len E<lt> 0) {\n"
10973 "            if (errno == EAGAIN)\n"
10974 "                continue;\n"
10975 "            perror(\"tee\");\n"
10976 "            exit(EXIT_FAILURE);\n"
10977 "        } else\n"
10978 "            if (len == 0)\n"
10979 "                break;\n"
10980 msgstr ""
10981 "        if (len E<lt> 0) {\n"
10982 "            if (errno == EAGAIN)\n"
10983 "                continue;\n"
10984 "            perror(\"tee\");\n"
10985 "            exit(EXIT_FAILURE);\n"
10986 "        } else\n"
10987 "            if (len == 0)\n"
10988 "                break;\n"
10989
10990 #. type: Plain text
10991 #: build/C/man2/tee.2:192
10992 #, no-wrap
10993 msgid ""
10994 "        /*\n"
10995 "         * Consume stdin by splicing it to a file.\n"
10996 "         */\n"
10997 "        while (len E<gt> 0) {\n"
10998 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10999 "                          len, SPLICE_F_MOVE);\n"
11000 "            if (slen E<lt> 0) {\n"
11001 "                perror(\"splice\");\n"
11002 "                break;\n"
11003 "            }\n"
11004 "            len -= slen;\n"
11005 "        }\n"
11006 "    } while (1);\n"
11007 msgstr ""
11008 "        /*\n"
11009 "         * Consume stdin by splicing it to a file.\n"
11010 "         */\n"
11011 "        while (len E<gt> 0) {\n"
11012 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11013 "                          len, SPLICE_F_MOVE);\n"
11014 "            if (slen E<lt> 0) {\n"
11015 "                perror(\"splice\");\n"
11016 "                break;\n"
11017 "            }\n"
11018 "            len -= slen;\n"
11019 "        }\n"
11020 "    } while (1);\n"
11021
11022 #. type: Plain text
11023 #: build/C/man2/tee.2:196
11024 #, no-wrap
11025 msgid ""
11026 "    close(fd);\n"
11027 "    exit(EXIT_SUCCESS);\n"
11028 "}\n"
11029 msgstr ""
11030 "    close(fd);\n"
11031 "    exit(EXIT_SUCCESS);\n"
11032 "}\n"
11033
11034 #. type: Plain text
11035 #: build/C/man2/tee.2:200
11036 msgid "B<splice>(2), B<vmsplice>(2)"
11037 msgstr "B<splice>(2), B<vmsplice>(2)"
11038
11039 #. type: TH
11040 #: build/C/man2/vm86.2:26
11041 #, no-wrap
11042 msgid "VM86"
11043 msgstr "VM86"
11044
11045 #. type: TH
11046 #: build/C/man2/vm86.2:26
11047 #, no-wrap
11048 msgid "2009-02-20"
11049 msgstr "2009-02-20"
11050
11051 #. type: Plain text
11052 #: build/C/man2/vm86.2:29
11053 msgid "vm86old, vm86 - enter virtual 8086 mode"
11054 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11055
11056 #. type: Plain text
11057 #: build/C/man2/vm86.2:31
11058 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11059 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11060
11061 #. type: Plain text
11062 #: build/C/man2/vm86.2:33
11063 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11064 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11065
11066 #. type: Plain text
11067 #: build/C/man2/vm86.2:35
11068 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11069 msgstr ""
11070 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11071
11072 #. type: Plain text
11073 #: build/C/man2/vm86.2:46
11074 msgid ""
11075 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11076 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11077 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11078 "and 1.1.9."
11079 msgstr ""
11080 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11081 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11082 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11083
11084 #. type: Plain text
11085 #: build/C/man2/vm86.2:50
11086 msgid ""
11087 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11088 "literature), and are used by B<dosemu>."
11089 msgstr ""
11090 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11091 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11092
11093 #. type: Plain text
11094 #: build/C/man2/vm86.2:52
11095 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11096 msgstr ""
11097 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11098 "ある。"
11099
11100 #. type: Plain text
11101 #: build/C/man2/vm86.2:62
11102 #, fuzzy
11103 #| msgid ""
11104 #| "This return value is specific to i386 and indicates a problem with "
11105 #| "getting userspace data."
11106 msgid ""
11107 "This return value is specific to i386 and indicates a problem with getting "
11108 "user-space data."
11109 msgstr ""
11110 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11111 "あったことを示す。"
11112
11113 #. type: Plain text
11114 #: build/C/man2/vm86.2:66
11115 msgid ""
11116 "This return value indicates the call is not implemented on the present "
11117 "architecture."
11118 msgstr ""
11119 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11120
11121 #. type: Plain text
11122 #: build/C/man2/vm86.2:71
11123 msgid ""
11124 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11125 "should only exist within vm86 mode itself.)"
11126 msgstr ""
11127 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11128 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11129 "い。)"
11130
11131 #. type: Plain text
11132 #: build/C/man2/vm86.2:74
11133 msgid ""
11134 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11135 "used in programs intended to be portable."
11136 msgstr ""
11137 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11138 "したプログラムでは使用すべきでない。"
11139
11140 #. type: TH
11141 #: build/C/man2/vmsplice.2:26
11142 #, no-wrap
11143 msgid "VMSPLICE"
11144 msgstr "VMSPLICE"
11145
11146 #. type: Plain text
11147 #: build/C/man2/vmsplice.2:29
11148 msgid "vmsplice - splice user pages into a pipe"
11149 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11150
11151 #. type: Plain text
11152 #: build/C/man2/vmsplice.2:34
11153 #, no-wrap
11154 msgid ""
11155 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11156 "B<#include E<lt>fcntl.hE<gt>>\n"
11157 "B<#include E<lt>sys/uio.hE<gt>>\n"
11158 msgstr ""
11159 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11160 "B<#include E<lt>fcntl.hE<gt>>\n"
11161 "B<#include E<lt>sys/uio.hE<gt>>\n"
11162
11163 #. type: Plain text
11164 #: build/C/man2/vmsplice.2:37
11165 #, no-wrap
11166 msgid ""
11167 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11168 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11169 msgstr ""
11170 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11171 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11172
11173 #.  Linus: vmsplice() system call to basically do a "write to
11174 #.  the buffer", but using the reference counting and VM traversal
11175 #.  to actually fill the buffer. This means that the user needs to
11176 #.  be careful not to reuse the user-space buffer it spliced into
11177 #.  the kernel-space one (contrast this to "write()", which copies
11178 #.  the actual data, and you can thus reuse the buffer immediately
11179 #.  after a successful write), but that is often easy to do.
11180 #. type: Plain text
11181 #: build/C/man2/vmsplice.2:57
11182 msgid ""
11183 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11184 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11185 "pipe."
11186 msgstr ""
11187 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11188 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11189 "ばならない。"
11190
11191 #. type: Plain text
11192 #: build/C/man2/vmsplice.2:64
11193 msgid ""
11194 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11195 "I<E<lt>sys/uio.hE<gt>>:"
11196 msgstr ""
11197 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11198 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11199
11200 #. type: Plain text
11201 #: build/C/man2/vmsplice.2:71
11202 #, no-wrap
11203 msgid ""
11204 "struct iovec {\n"
11205 "    void  *iov_base;            /* Starting address */\n"
11206 "    size_t iov_len;             /* Number of bytes */\n"
11207 "};\n"
11208 msgstr ""
11209 "struct iovec {\n"
11210 "    void  *iov_base;            /* 開始アドレス */\n"
11211 "    size_t iov_len;             /* バイト数 */\n"
11212 "};\n"
11213
11214 #. type: Plain text
11215 #: build/C/man2/vmsplice.2:84
11216 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11217 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11218
11219 #. type: Plain text
11220 #: build/C/man2/vmsplice.2:97
11221 msgid ""
11222 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11223 "future; see B<splice>(2)."
11224 msgstr ""
11225 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11226 "がある。 B<splice>(2)  参照。"
11227
11228 #.  FIXME Explain the following line in a little more detail:
11229 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11230 #. type: Plain text
11231 #: build/C/man2/vmsplice.2:113
11232 msgid ""
11233 "The user pages are a gift to the kernel.  The application may not modify "
11234 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11235 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11236 "successfully move the pages; if this flag is not specified, then a "
11237 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11238 "also be properly page aligned, both in memory and length."
11239 msgstr ""
11240 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11241 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11242 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11243 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11244 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11245 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11246 "なければならず、 長さもページ境界の倍数でなければならない。"
11247
11248 #. type: Plain text
11249 #: build/C/man2/vmsplice.2:122
11250 msgid ""
11251 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11252 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11253 "is set to indicate the error."
11254 msgstr ""
11255 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11256 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11257
11258 #. type: Plain text
11259 #: build/C/man2/vmsplice.2:127
11260 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11261 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11262
11263 #. type: Plain text
11264 #: build/C/man2/vmsplice.2:135
11265 msgid ""
11266 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11267 "B<SPLICE_F_GIFT> set."
11268 msgstr ""
11269 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11270 "設定されたがメモリがページ境界にあっていない。"
11271
11272 #. type: Plain text
11273 #: build/C/man2/vmsplice.2:143
11274 msgid ""
11275 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11276 "support was added to glibc in version 2.5."
11277 msgstr ""
11278 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11279 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11280
11281 #. type: Plain text
11282 #: build/C/man2/vmsplice.2:154
11283 msgid ""
11284 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11285 "it comes to limitations on number of segments being passed in.  This limit "
11286 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11287 "writing, that limit is 1024."
11288 msgstr ""
11289 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11290 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11291 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11292 "は 1024 である。"
11293
11294 #. type: Plain text
11295 #: build/C/man2/vmsplice.2:157
11296 msgid "B<splice>(2), B<tee>(2)"
11297 msgstr "B<splice>(2), B<tee>(2)"
11298
11299 #~ msgid "2010-08-29"
11300 #~ msgstr "2010-08-29"
11301
11302 #~ msgid ""
11303 #~ "Depending on which operation was executed, the returned value for a "
11304 #~ "successful call can have differing meanings."
11305 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11306
11307 #~ msgid ""
11308 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11309 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11310 #~ "was not equal to the expected value, the operation fails with the error "
11311 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11312 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11313 #~ msgstr ""
11314 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11315 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11316 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11317 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11318 #~ "敗する。"
11319
11320 #~ msgid "An operation was not defined or error in page alignment."
11321 #~ msgstr ""
11322 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11323
11324 #~ msgid "2010-11-04"
11325 #~ msgstr "2010-11-04"
11326
11327 #~ msgid "2007-06-01"
11328 #~ msgstr "2007-06-01"
11329
11330 #~ msgid "1995-11-29"
11331 #~ msgstr "1995-11-29"
11332
11333 #~ msgid "2012-04-26"
11334 #~ msgstr "2012-04-26"
11335
11336 #~ msgid "2004-09-10"
11337 #~ msgstr "2004-09-10"
11338
11339 #~ msgid "2009-09-15"
11340 #~ msgstr "2009-09-15"
11341
11342 #~ msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
11343 #~ msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
11344
11345 #~ msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
11346 #~ msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
11347
11348 #, fuzzy
11349 #~| msgid ""
11350 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11351 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11352 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11353 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11354 #~| "giving the parent a chance to gain control before the new program begins "
11355 #~| "execution.  A process probably shouldn't make this request if its parent "
11356 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11357 #~ msgid ""
11358 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11359 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11360 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11361 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11362 #~ "be sent to it, giving the parent a chance to gain control before the new "
11363 #~ "program begins execution.  A process probably shouldn't make this request "
11364 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11365 #~ "are ignored.)"
11366 #~ msgstr ""
11367 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11368 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11369 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11370 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11371 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11372 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11373 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11374 #~ "は無視される。)"
11375
11376 #~ msgid ""
11377 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11378 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11379 #~ msgstr ""
11380 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11381 #~ "\\ 8> で子プロセスの動作を停止させる。"
11382
11383 #~ msgid ""
11384 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11385 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11386 #~ msgstr ""
11387 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11388 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11389
11390 #~ msgid ""
11391 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11392 #~ "of the calling process; the behavior of the child is as if it had done a "
11393 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11394 #~ "the child process for most purposes (e.g., it will receive notification "
11395 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11396 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11397 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11398 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11399 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11400 #~ msgstr ""
11401 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11402 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11403 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11404 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11405 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11406 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11407 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11408 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11409 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11410
11411 #~ msgid ""
11412 #~ "Tracing causes a few subtle differences in the semantics of traced "
11413 #~ "processes.  For example, if a process is attached to with "
11414 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11415 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11416 #~ "effectively simulate this notification."
11417 #~ msgstr ""
11418 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11419 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11420 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11421 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11422
11423 #~ msgid ""
11424 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11425 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11426 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11427 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11428 #~ "child process after receiving one of these messages."
11429 #~ msgstr ""
11430 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11431 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11432 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11433 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11434 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11435 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11436
11437 #~ msgid ""
11438 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11439 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11440 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11441 #~ "and uniform way."
11442 #~ msgstr ""
11443 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11444 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11445 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11446 #~ "るものとなっている。"
11447
11448 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
11449 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
11450
11451 #~ msgid ""
11452 #~ "The second argument I<special> is the block special device these quota "
11453 #~ "apply to.  It must be mounted."
11454 #~ msgstr ""
11455 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11456 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11457
11458 #~ msgid ""
11459 #~ "The third argument I<id> is the user or group ID these quota apply to "
11460 #~ "(when relevant)."
11461 #~ msgstr ""
11462 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11463 #~ "グループの ID を指定する。"
11464
11465 #~ msgid ""
11466 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11467 #~ "on the command."
11468 #~ msgstr ""
11469 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11470 #~ "指定する。"
11471
11472 #~ msgid ""
11473 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11474 #~ "containing the quota for the file system."
11475 #~ msgstr ""
11476 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11477 #~ "記録されているファイルの パス名を指定する。"
11478
11479 #~ msgid "Disable quota."
11480 #~ msgstr "quota を無効にする。"
11481
11482 #~ msgid "Set limits and current usage; I<addr> is as before."
11483 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11484
11485 #~ msgid "Set limits; I<addr> is as before."
11486 #~ msgstr "制限値を設定する; I<addr> は同上。"
11487
11488 #~ msgid "B<Q_SETUSE>"
11489 #~ msgstr "B<Q_SETUSE>"
11490
11491 #~ msgid "Set usage."
11492 #~ msgstr "使用量を設定する。"
11493
11494 #~ msgid "Sync disk copy of a file system's quota."
11495 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11496
11497 #~ msgid "Get collected stats."
11498 #~ msgstr "収集された統計を取得する。"
11499
11500 #~ msgid ""
11501 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11502 #~ "I<errno> is set appropriately."
11503 #~ msgstr ""
11504 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11505 #~ "I<errno> が適切な値に設定される。"
11506
11507 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11508 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11509
11510 #~ msgid "Bad I<addr> value."
11511 #~ msgstr "I<addr> の値に誤りがある。"
11512
11513 #~ msgid ""
11514 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11515 #~ msgstr ""
11516 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11517 #~ "付からなかった。"
11518
11519 #~ msgid "Cannot read or write the quota file."
11520 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11521
11522 #~ msgid "B<EMFILE>"
11523 #~ msgstr "B<EMFILE>"
11524
11525 #~ msgid "Too many open files: cannot open quota file."
11526 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11527
11528 #~ msgid "I<special> cannot be found in the mount table."
11529 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11530
11531 #~ msgid "B<ENOPKG>"
11532 #~ msgstr "B<ENOPKG>"
11533
11534 #~ msgid "The kernel was compiled without quota support."
11535 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11536
11537 #~ msgid ""
11538 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11539 #~ "asked for another I<id> than that of the process itself, or anything "
11540 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11541 #~ msgstr ""
11542 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11543 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11544 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11545
11546 #~ msgid ""
11547 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11548 #~ "for a file system that didn't have quota enabled."
11549 #~ msgstr ""
11550 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11551 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
11552
11553 #~ msgid "BSD."
11554 #~ msgstr "BSD."