OSDN Git Service

(split) iptables: Update original to 1.4.18
[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-04-02 17:27+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 msgid "Sub functions for x86-64 are:"
152 msgstr "x86-64 の副機能は以下の通り:"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:54
156 #, no-wrap
157 msgid "B<ARCH_SET_FS>"
158 msgstr "B<ARCH_SET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:60
162 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
163 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
164
165 #. type: TP
166 #: build/C/man2/arch_prctl.2:60
167 #, no-wrap
168 msgid "B<ARCH_GET_FS>"
169 msgstr "B<ARCH_GET_FS>"
170
171 #. type: Plain text
172 #: build/C/man2/arch_prctl.2:68
173 msgid ""
174 "Return the 64-bit base value for the I<FS> register of the current thread in "
175 "the I<unsigned long> pointed to by I<addr>."
176 msgstr ""
177 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
178 "I<unsigned long> の領域に格納する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:68
182 #, no-wrap
183 msgid "B<ARCH_SET_GS>"
184 msgstr "B<ARCH_SET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:74
188 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
189 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
190
191 #. type: TP
192 #: build/C/man2/arch_prctl.2:74
193 #, no-wrap
194 msgid "B<ARCH_GET_GS>"
195 msgstr "B<ARCH_GET_GS>"
196
197 #. type: Plain text
198 #: build/C/man2/arch_prctl.2:82
199 msgid ""
200 "Return the 64-bit base value for the I<GS> register of the current thread in "
201 "the I<unsigned long> pointed to by I<addr>."
202 msgstr ""
203 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
204 "I<unsigned long> の領域に格納する。"
205
206 #. type: SH
207 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209
208 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:1804
212 #: build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57
213 #: build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209
214 #: build/C/man2/ptrace.2:1713 build/C/man2/sendfile.2:108
215 #: build/C/man2/set_tid_address.2:88 build/C/man2/splice.2:127
216 #: build/C/man2/tee.2:85 build/C/man2/vm86.2:52 build/C/man2/vmsplice.2:113
217 #, no-wrap
218 msgid "RETURN VALUE"
219 msgstr "返り値"
220
221 #. type: Plain text
222 #: build/C/man2/arch_prctl.2:88
223 msgid ""
224 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
225 "I<errno> is set to indicate the error."
226 msgstr ""
227 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
228 "I<errno> をエラーを示す値に設定する。"
229
230 #. type: SH
231 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
232 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
233 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
234 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
235 #: build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64
236 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
237 #: build/C/man2/ptrace.2:1727 build/C/man2/quotactl.2:427
238 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
239 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57
240 #: build/C/man2/vmsplice.2:122
241 #, no-wrap
242 msgid "ERRORS"
243 msgstr "エラー"
244
245 #. type: TP
246 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
247 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
248 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
249 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1731
250 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
251 #: build/C/man2/vm86.2:58
252 #, no-wrap
253 msgid "B<EFAULT>"
254 msgstr "B<EFAULT>"
255
256 #. type: Plain text
257 #: build/C/man2/arch_prctl.2:93
258 msgid ""
259 "I<addr> points to an unmapped address or is outside the process address "
260 "space."
261 msgstr ""
262 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
263 "にある。"
264
265 #. type: TP
266 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
267 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
268 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
269 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811
270 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
271 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
272 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1742
273 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
274 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
275 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
276 #, no-wrap
277 msgid "B<EINVAL>"
278 msgstr "B<EINVAL>"
279
280 #. type: Plain text
281 #: build/C/man2/arch_prctl.2:97
282 msgid "I<code> is not a valid subcommand."
283 msgstr "I<code> が有効なサブコマンドでない。"
284
285 #. type: TP
286 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
287 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
288 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
289 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1752
290 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
291 #, no-wrap
292 msgid "B<EPERM>"
293 msgstr "B<EPERM>"
294
295 #.  .SH AUTHOR
296 #.  Man page written by Andi Kleen.
297 #. type: Plain text
298 #: build/C/man2/arch_prctl.2:103
299 msgid "I<addr> is outside the process address space."
300 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
301
302 #. type: SH
303 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
304 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
305 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
306 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
307 #: build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829
308 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
309 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
310 #: build/C/man2/ptrace.2:1770 build/C/man2/sendfile.2:148
311 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
312 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
313 #, no-wrap
314 msgid "CONFORMING TO"
315 msgstr "準拠"
316
317 #. type: Plain text
318 #: build/C/man2/arch_prctl.2:107
319 msgid ""
320 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
321 "programs intended to be portable."
322 msgstr ""
323 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
324 "うべきでない。"
325
326 #. type: SH
327 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
328 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
329 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
330 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834
331 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
332 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1772
333 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
334 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
335 #, no-wrap
336 msgid "NOTES"
337 msgstr "注意"
338
339 #. type: Plain text
340 #: build/C/man2/arch_prctl.2:110
341 msgid ""
342 "B<arch_prctl>()  is only supported on Linux/x86-64 for 64-bit programs "
343 "currently."
344 msgstr ""
345 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
346 "ポートされている。"
347
348 #. type: Plain text
349 #: build/C/man2/arch_prctl.2:112
350 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
351 msgstr ""
352 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
353 "される。"
354
355 #. type: Plain text
356 #: build/C/man2/arch_prctl.2:115
357 msgid "B<ARCH_SET_GS> is disabled in some kernels."
358 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
359
360 #. type: Plain text
361 #: build/C/man2/arch_prctl.2:130
362 msgid ""
363 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
364 "faster alternative to set a 32-bit base using a segment selector by setting "
365 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
366 "call in kernel 2.5 or later.  B<arch_prctl>()  is only needed when you want "
367 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
368 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
369 msgstr ""
370 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
371 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
372 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
373 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
374 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
375 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
376
377 #. type: Plain text
378 #: build/C/man2/arch_prctl.2:135
379 msgid ""
380 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
381 "have to declare it yourself for now.  This may be fixed in future glibc "
382 "versions."
383 msgstr ""
384 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
385 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
386 "ジョンで修正されるかもしれない。"
387
388 #. type: Plain text
389 #: build/C/man2/arch_prctl.2:138
390 msgid "I<FS> may be already used by the threading library."
391 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
392
393 #. type: SH
394 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
395 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
396 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
397 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112
398 #: build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205
399 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
400 #: build/C/man2/ptrace.2:1926 build/C/man2/quotactl.2:507
401 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
402 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
403 #: build/C/man2/vmsplice.2:154
404 #, no-wrap
405 msgid "SEE ALSO"
406 msgstr "関連項目"
407
408 #. type: Plain text
409 #: build/C/man2/arch_prctl.2:143
410 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
411 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412
413 #. type: Plain text
414 #: build/C/man2/arch_prctl.2:145
415 msgid "AMD X86-64 Programmer's manual"
416 msgstr "AMD X86-64 Programmer's manual"
417
418 #. type: SH
419 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325
420 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
421 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
422 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
423 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114
424 #: build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209
425 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
426 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1940
427 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
428 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
429 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
430 #, no-wrap
431 msgid "COLOPHON"
432 msgstr "この文書について"
433
434 #. type: Plain text
435 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332
436 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
437 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
438 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
439 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121
440 #: build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216
441 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
442 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1947
443 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
444 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
445 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
446 msgid ""
447 "This page is part of release 3.50 of the Linux I<man-pages> project.  A "
448 "description of the project, and information about reporting bugs, can be "
449 "found at http://www.kernel.org/doc/man-pages/."
450 msgstr ""
451 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.50 の一部\n"
452 "である。プロジェクトの説明とバグ報告に関する情報は\n"
453 "http://www.kernel.org/doc/man-pages/ に書かれている。"
454
455 #. type: TH
456 #: build/C/man2/futex.2:53
457 #, no-wrap
458 msgid "FUTEX"
459 msgstr "FUTEX"
460
461 #. type: TH
462 #: build/C/man2/futex.2:53
463 #, no-wrap
464 msgid "2013-03-15"
465 msgstr "2013-03-15"
466
467 #. type: Plain text
468 #: build/C/man2/futex.2:56
469 msgid "futex - fast user-space locking"
470 msgstr "futex - 高速ユーザ空間ロック"
471
472 #. type: Plain text
473 #: build/C/man2/futex.2:61
474 #, no-wrap
475 msgid ""
476 "B<#include E<lt>linux/futex.hE<gt>>\n"
477 "B<#include E<lt>sys/time.hE<gt>>\n"
478 msgstr ""
479 "B<#include E<lt>linux/futex.hE<gt>>\n"
480 "B<#include E<lt>sys/time.hE<gt>>\n"
481
482 #. type: Plain text
483 #: build/C/man2/futex.2:64
484 #, no-wrap
485 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
486 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
487
488 #.  int *? void *? u32 *?
489 #. type: Plain text
490 #: build/C/man2/futex.2:67
491 #, no-wrap
492 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
493 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
494
495 #. type: Plain text
496 #: build/C/man2/futex.2:84
497 msgid ""
498 "The B<futex>()  system call provides a method for a program to wait for a "
499 "value at a given address to change, and a method to wake up anyone waiting "
500 "on a particular address (while the addresses for the same memory in separate "
501 "processes may not be equal, the kernel maps them internally so the same "
502 "memory mapped in different locations will correspond for B<futex>()  "
503 "calls).  This system call is typically used to implement the contended case "
504 "of a lock in shared memory, as described in B<futex>(7)."
505 msgstr ""
506 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
507 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
508 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
509 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
510 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
511 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
512 "る。"
513
514 #. type: Plain text
515 #: build/C/man2/futex.2:91
516 msgid ""
517 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
518 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
519 "mean putting the calling process to sleep or, conversely, waking a waiting "
520 "process."
521 msgstr ""
522 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
523 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
524 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
525 "味する。"
526
527 #. type: Plain text
528 #: build/C/man2/futex.2:98
529 msgid ""
530 "Callers of this function are expected to adhere to the semantics as set out "
531 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
532 "instructions, this in turn probably means that most users will in fact be "
533 "library authors and not general application developers."
534 msgstr ""
535 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
536 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
537 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
538 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
539 "る。"
540
541 #. type: Plain text
542 #: build/C/man2/futex.2:106
543 msgid ""
544 "The I<uaddr> argument needs to point to an aligned integer which stores the "
545 "counter.  The operation to execute is passed via the I<op> argument, along "
546 "with a value I<val>."
547 msgstr ""
548 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
549 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
550 "渡される。"
551
552 #. type: Plain text
553 #: build/C/man2/futex.2:108
554 msgid "Five operations are currently defined:"
555 msgstr "現在のところ 5 つの操作が定義されている:"
556
557 #. type: TP
558 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
559 #, no-wrap
560 msgid "B<FUTEX_WAIT>"
561 msgstr "B<FUTEX_WAIT>"
562
563 #. type: Plain text
564 #: build/C/man2/futex.2:126
565 msgid ""
566 "This operation atomically verifies that the futex address I<uaddr> still "
567 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
568 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
569 "minimum duration of the wait, which is infinite otherwise.  The arguments "
570 "I<uaddr2> and I<val3> are ignored."
571 msgstr ""
572 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
573 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
574 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
575 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
576 "I<uaddr2> と I<val3> は無視される。"
577
578 #. type: Plain text
579 #: build/C/man2/futex.2:134
580 msgid ""
581 "For B<futex>(7), this call is executed if decrementing the count gave a "
582 "negative value (indicating contention), and will sleep until another process "
583 "releases the futex and executes the B<FUTEX_WAKE> operation."
584 msgstr ""
585 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
586 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
587 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
588
589 #. type: TP
590 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
591 #, no-wrap
592 msgid "B<FUTEX_WAKE>"
593 msgstr "B<FUTEX_WAKE>"
594
595 #. type: Plain text
596 #: build/C/man2/futex.2:145
597 msgid ""
598 "This operation wakes at most I<val> processes waiting on this futex address "
599 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
600 "I<val3> are ignored."
601 msgstr ""
602 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
603 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
604 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
605
606 #. type: Plain text
607 #: build/C/man2/futex.2:151
608 msgid ""
609 "For B<futex>(7), this is executed if incrementing the count showed that "
610 "there were waiters, once the futex value has been set to 1 (indicating that "
611 "it is available)."
612 msgstr ""
613 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
614 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
615 "場合に実行される。"
616
617 #. type: TP
618 #: build/C/man2/futex.2:151
619 #, no-wrap
620 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
621 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
622
623 #.  , suitable for .BR poll (2).
624 #. type: Plain text
625 #: build/C/man2/futex.2:167
626 msgid ""
627 "To support asynchronous wakeups, this operation associates a file descriptor "
628 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
629 "receive the signal number that was passed in I<val>.  The calling process "
630 "must close the returned file descriptor after use.  The arguments "
631 "I<timeout>, I<uaddr2> and I<val3> are ignored."
632 msgstr ""
633 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
634 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
635 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
636 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
637 "I<uaddr2>, I<val3> は無視される。"
638
639 #. type: Plain text
640 #: build/C/man2/futex.2:172
641 msgid ""
642 "To prevent race conditions, the caller should test if the futex has been "
643 "upped after B<FUTEX_FD> returns."
644 msgstr ""
645 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
646 "up されたかどうかを確認しなければならない。"
647
648 #. type: Plain text
649 #: build/C/man2/futex.2:176
650 msgid ""
651 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
652 "2.6.26 onward."
653 msgstr ""
654 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
655 "ている。"
656
657 #. type: TP
658 #: build/C/man2/futex.2:176
659 #, no-wrap
660 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
661 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
662
663 #. type: Plain text
664 #: build/C/man2/futex.2:191
665 msgid ""
666 "This operation was introduced in order to avoid a \"thundering herd\" effect "
667 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
668 "another futex.  This call wakes up I<val> processes, and requeues all other "
669 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
670 "I<val3> are ignored."
671 msgstr ""
672 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
673 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
674 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
675 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
676 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
677
678 #. type: TP
679 #: build/C/man2/futex.2:191
680 #, no-wrap
681 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
682 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
683
684 #. type: Plain text
685 #: build/C/man2/futex.2:209
686 msgid ""
687 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
688 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
689 "but first checks whether the location I<uaddr> still contains the value "
690 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
691 "argument I<timeout> is ignored."
692 msgstr ""
693 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
694 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
695 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
696 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
697
698 #. type: Plain text
699 #: build/C/man2/futex.2:216
700 #, fuzzy
701 #| msgid ""
702 #| "In the event of an error, all operations return -1, and set I<errno> to "
703 #| "indicate the error."
704 msgid ""
705 "In the event of an error, all operations return -1, and set I<errno> to "
706 "indicate the error.  The return value on success depends on the operation, "
707 "as described in the following list:"
708 msgstr ""
709 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
710 "される。"
711
712 #. type: Plain text
713 #: build/C/man2/futex.2:222
714 msgid ""
715 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
716 "the various possible error returns."
717 msgstr ""
718
719 #. type: Plain text
720 #: build/C/man2/futex.2:225 build/C/man2/futex.2:231 build/C/man2/futex.2:234
721 msgid "Returns the number of processes woken up."
722 msgstr "wake したプロセスの数を返す。"
723
724 #. type: TP
725 #: build/C/man2/futex.2:225
726 #, no-wrap
727 msgid "B<FUTEX_FD>"
728 msgstr "B<FUTEX_FD>"
729
730 #. type: Plain text
731 #: build/C/man2/futex.2:228
732 msgid "Returns the new file descriptor associated with the futex."
733 msgstr "futex に関連づけられた新たなファイルディスクリプタを返す。"
734
735 #. type: TP
736 #: build/C/man2/futex.2:228
737 #, no-wrap
738 msgid "B<FUTEX_REQUEUE>"
739 msgstr "B<FUTEX_REQUEUE>"
740
741 #. type: TP
742 #: build/C/man2/futex.2:231
743 #, no-wrap
744 msgid "B<FUTEX_CMP_REQUEUE>"
745 msgstr "B<FUTEX_CMP_REQUEUE>"
746
747 #. type: TP
748 #: build/C/man2/futex.2:235 build/C/man2/quotactl.2:486
749 #, no-wrap
750 msgid "B<EACCES>"
751 msgstr "B<EACCES>"
752
753 #. type: Plain text
754 #: build/C/man2/futex.2:238
755 msgid "No read access to futex memory."
756 msgstr "futex メモリに読み込みアクセス権がなかった。"
757
758 #. type: TP
759 #: build/C/man2/futex.2:238 build/C/man2/sendfile.2:116
760 #, no-wrap
761 msgid "B<EAGAIN>"
762 msgstr "B<EAGAIN>"
763
764 #. type: Plain text
765 #: build/C/man2/futex.2:249
766 #, fuzzy
767 #| msgid ""
768 #| "B<FUTEX_CMP_REQUEUE> found an unexpected futex value.  (This probably "
769 #| "indicates a race; use the safe B<FUTEX_WAKE> now.)"
770 msgid ""
771 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
772 "equal to the expected value I<val3>.  (This probably indicates a race; use "
773 "the safe B<FUTEX_WAKE> now.)"
774 msgstr ""
775 "B<FUTEX_CMP_REQUEUE> で予期しない futex 値が見つかった (これは競合を示してい"
776 "るかもしれない。 この場合は安全な B<FUTEX_WAKE> を使うこと)。"
777
778 #. type: Plain text
779 #: build/C/man2/futex.2:254
780 msgid "Error retrieving I<timeout> information from user space."
781 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
782
783 #. type: TP
784 #: build/C/man2/futex.2:254
785 #, no-wrap
786 msgid "B<EINTR>"
787 msgstr "B<EINTR>"
788
789 #. type: Plain text
790 #: build/C/man2/futex.2:261
791 msgid ""
792 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
793 "a spurious wakeup."
794 msgstr ""
795
796 #. type: Plain text
797 #: build/C/man2/futex.2:264
798 msgid "Invalid argument."
799 msgstr ""
800
801 #. type: TP
802 #: build/C/man2/futex.2:264
803 #, no-wrap
804 msgid "B<ENFILE>"
805 msgstr "B<ENFILE>"
806
807 #. type: Plain text
808 #: build/C/man2/futex.2:267
809 msgid "The system limit on the total number of open files has been reached."
810 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
811
812 #. type: TP
813 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
814 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
815 #: build/C/man2/vm86.2:62
816 #, no-wrap
817 msgid "B<ENOSYS>"
818 msgstr "B<ENOSYS>"
819
820 #. type: Plain text
821 #: build/C/man2/futex.2:271
822 msgid "Invalid operation specified in I<op>."
823 msgstr "I<op> に無効な操作が指定された。"
824
825 #. type: TP
826 #: build/C/man2/futex.2:271
827 #, no-wrap
828 msgid "B<ETIMEDOUT>"
829 msgstr "B<ETIMEDOUT>"
830
831 #. type: Plain text
832 #: build/C/man2/futex.2:276
833 msgid "Timeout during the B<FUTEX_WAIT> operation."
834 msgstr ""
835
836 #. type: TP
837 #: build/C/man2/futex.2:276
838 #, no-wrap
839 msgid "B<EWOULDBLOCK>"
840 msgstr "B<EWOULDBLOCK>"
841
842 #. type: Plain text
843 #: build/C/man2/futex.2:286
844 msgid ""
845 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
846 "to the expected value I<val> at the time of the call."
847 msgstr ""
848
849 #. type: SH
850 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
851 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
852 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
853 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
854 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
855 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
856 #: build/C/man2/vmsplice.2:138
857 #, no-wrap
858 msgid "VERSIONS"
859 msgstr "バージョン"
860
861 #. type: Plain text
862 #: build/C/man2/futex.2:296
863 msgid ""
864 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
865 "from what was described above.  A 4-argument system call with the semantics "
866 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
867 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
868 "especially on the s390 architecture."
869 msgstr ""
870 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
871 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
872 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
873 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
874 "上の特別のものである。"
875
876 #. type: Plain text
877 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
878 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
879 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
880 msgid "This system call is Linux-specific."
881 msgstr "このシステムコールは Linux 固有である。"
882
883 #.  .SH "AUTHORS"
884 #.  .PP
885 #.  Futexes were designed and worked on by
886 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
887 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
888 #.  and Rusty Russell (IBM Linux Technology Center).
889 #.  This page written by bert hubert.
890 #. type: Plain text
891 #: build/C/man2/futex.2:312
892 msgid ""
893 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
894 "for end-users.  (There is no wrapper function for this system call in "
895 "glibc.)  Implementors are expected to be assembly literate and to have read "
896 "the sources of the futex user-space library referenced below."
897 msgstr ""
898 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
899 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
900 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
901 "ブラリの ソースを読み終えていることが要求される。"
902
903 #. type: Plain text
904 #: build/C/man2/futex.2:314
905 msgid "B<futex>(7)"
906 msgstr "B<futex>(7)"
907
908 #. type: Plain text
909 #: build/C/man2/futex.2:317
910 msgid ""
911 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
912 "of the Ottawa Linux Symposium 2002), online at"
913 msgstr ""
914 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
915 "of the Ottawa Linux Symposium 2002), online at"
916
917 #. type: Plain text
918 #: build/C/man2/futex.2:320
919 msgid ""
920 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
921 "E<.UE>"
922 msgstr "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> E<.UE>"
923
924 #. type: Plain text
925 #: build/C/man2/futex.2:322
926 msgid "Futex example library, futex-*.tar.bz2 at"
927 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
928
929 #. type: Plain text
930 #: build/C/man2/futex.2:325
931 msgid ""
932 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
933 "E<.UE>"
934 msgstr "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> E<.UE>"
935
936 #. type: TH
937 #: build/C/man2/get_robust_list.2:29
938 #, no-wrap
939 msgid "GET_ROBUST_LIST"
940 msgstr "GET_ROBUST_LIST"
941
942 #. type: TH
943 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
944 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
945 #, no-wrap
946 msgid "2012-07-13"
947 msgstr "2012-07-13"
948
949 #. type: TH
950 #: build/C/man2/get_robust_list.2:29
951 #, no-wrap
952 msgid "Linux System Calls"
953 msgstr ""
954
955 #. type: Plain text
956 #: build/C/man2/get_robust_list.2:32
957 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
958 msgstr ""
959
960 #. type: Plain text
961 #: build/C/man2/get_robust_list.2:36
962 #, no-wrap
963 msgid ""
964 "B<#include E<lt>linux/futex.hE<gt>>\n"
965 "B<#include E<lt>syscall.hE<gt>>\n"
966 msgstr ""
967 "B<#include E<lt>linux/futex.hE<gt>>\n"
968 "B<#include E<lt>syscall.hE<gt>>\n"
969
970 #. type: Plain text
971 #: build/C/man2/get_robust_list.2:40
972 #, no-wrap
973 msgid ""
974 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
975 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
976 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
977 msgstr ""
978
979 #. type: Plain text
980 #: build/C/man2/get_robust_list.2:44
981 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
982 msgstr ""
983
984 #. type: Plain text
985 #: build/C/man2/get_robust_list.2:49
986 msgid ""
987 "The robust futex implementation needs to maintain per-thread lists of robust "
988 "futexes which are unlocked when the thread exits.  These lists are managed "
989 "in user space; the kernel is only notified about the location of the head of "
990 "the list."
991 msgstr ""
992
993 #. type: Plain text
994 #: build/C/man2/get_robust_list.2:65
995 msgid ""
996 "The B<get_robust_list>()  system call returns the head of the robust futex "
997 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
998 "the head of the list for the calling thread is returned.  The list head is "
999 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1000 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1001 msgstr ""
1002
1003 #. type: Plain text
1004 #: build/C/man2/get_robust_list.2:77
1005 msgid ""
1006 "The B<set_robust_list>()  system call requests the kernel to record the head "
1007 "of the list of robust futexes owned by the calling thread.  The I<head> "
1008 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1009 "(*head)>."
1010 msgstr ""
1011
1012 #. type: Plain text
1013 #: build/C/man2/get_robust_list.2:84
1014 msgid ""
1015 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1016 "when the operation is successful, an error code otherwise."
1017 msgstr ""
1018
1019 #. type: Plain text
1020 #: build/C/man2/get_robust_list.2:88
1021 msgid ""
1022 "The B<set_robust_list>()  system call can fail with the following error:"
1023 msgstr ""
1024
1025 #. type: Plain text
1026 #: build/C/man2/get_robust_list.2:94
1027 msgid ""
1028 "I<len> does not match the size of structure B<struct robust_list_head> "
1029 "expected by kernel."
1030 msgstr ""
1031
1032 #. type: Plain text
1033 #: build/C/man2/get_robust_list.2:98
1034 msgid ""
1035 "The B<get_robust_list>()  system call can fail with the following errors:"
1036 msgstr ""
1037
1038 #. type: Plain text
1039 #: build/C/man2/get_robust_list.2:106
1040 msgid ""
1041 "The calling process does not have permission to see the robust futex list of "
1042 "the thread with the thread ID I<pid>, and does not have the "
1043 "B<CAP_SYS_PTRACE> capability."
1044 msgstr ""
1045
1046 #. type: TP
1047 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1048 #: build/C/man2/ptrace.2:1765 build/C/man2/quotactl.2:461
1049 #: build/C/man2/quotactl.2:504
1050 #, no-wrap
1051 msgid "B<ESRCH>"
1052 msgstr "B<ESRCH>"
1053
1054 #. type: Plain text
1055 #: build/C/man2/get_robust_list.2:111
1056 msgid "No thread with the thread ID I<pid> could be found."
1057 msgstr ""
1058
1059 #. type: Plain text
1060 #: build/C/man2/get_robust_list.2:115
1061 msgid ""
1062 "The head of the robust futex list can't be stored at the location I<head>."
1063 msgstr ""
1064
1065 #. type: Plain text
1066 #: build/C/man2/get_robust_list.2:119
1067 msgid ""
1068 "These system calls were added in Linux 2.6.17.  No library support is "
1069 "provided; use B<syscall>(2)."
1070 msgstr ""
1071 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1072 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1073
1074 #. type: Plain text
1075 #: build/C/man2/get_robust_list.2:124
1076 msgid ""
1077 "These system calls are not needed by normal applications.  No support for "
1078 "them is provided in glibc.  In the unlikely event that you want to call them "
1079 "directly, use B<syscall>(2)."
1080 msgstr "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によるサポートは提供されていない。おそらくないと思うが、このシステムコールを直接呼び出したい場合は B<syscall>(2) を使うこと。"
1081
1082 #. type: Plain text
1083 #: build/C/man2/get_robust_list.2:128
1084 msgid ""
1085 "A thread can have only one robust futex list; therefore applications that "
1086 "wish to use this functionality should use the robust mutexes provided by "
1087 "glibc."
1088 msgstr ""
1089
1090 #.  .BR pthread_mutexattr_setrobust_np (3)
1091 #. type: Plain text
1092 #: build/C/man2/get_robust_list.2:131
1093 msgid "B<futex>(2)"
1094 msgstr "B<futex>(2)"
1095
1096 #.  http://lwn.net/Articles/172149/
1097 #. type: Plain text
1098 #: build/C/man2/get_robust_list.2:137
1099 msgid ""
1100 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1101 "txt> in the Linux kernel source tree"
1102 msgstr ""
1103
1104 #. type: TH
1105 #: build/C/man2/getunwind.2:27
1106 #, no-wrap
1107 msgid "GETUNWIND"
1108 msgstr ""
1109
1110 #. type: TH
1111 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1112 #, fuzzy, no-wrap
1113 #| msgid "2009-02-20"
1114 msgid "2013-02-13"
1115 msgstr "2009-02-20"
1116
1117 #. type: Plain text
1118 #: build/C/man2/getunwind.2:30
1119 msgid "getunwind - copy the unwind data to caller's buffer"
1120 msgstr ""
1121
1122 #. type: Plain text
1123 #: build/C/man2/getunwind.2:34
1124 #, fuzzy, no-wrap
1125 #| msgid ""
1126 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
1127 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1128 msgid ""
1129 "B<#include E<lt>syscall.hE<gt>>\n"
1130 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1131 msgstr ""
1132 "B<#include E<lt>sys/quota.hE<gt>>\n"
1133 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
1134
1135 #. type: Plain text
1136 #: build/C/man2/getunwind.2:36
1137 #, no-wrap
1138 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1139 msgstr ""
1140
1141 #. type: Plain text
1142 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1143 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1144 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1145 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1146 msgstr "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。"
1147
1148 #. type: Plain text
1149 #: build/C/man2/getunwind.2:42
1150 msgid "I<Note: this function is obsolete.>"
1151 msgstr ""
1152
1153 #. type: Plain text
1154 #: build/C/man2/getunwind.2:52
1155 msgid ""
1156 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1157 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1158 "of the unwind data; this data describes the gate page (kernel code that is "
1159 "mapped into user space)."
1160 msgstr ""
1161
1162 #. type: Plain text
1163 #: build/C/man2/getunwind.2:64
1164 msgid ""
1165 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1166 "copied only if I<buf_size> is greater than or equal to the size of the "
1167 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1168 "call succeeds, returning the size that would be needed to store the unwind "
1169 "data."
1170 msgstr ""
1171
1172 #. type: Plain text
1173 #: build/C/man2/getunwind.2:68
1174 msgid ""
1175 "The first part of the unwind data contains an unwind table.  The rest "
1176 "contains the associated unwind information, in no particular order.  The "
1177 "unwind table contains entries of the following form:"
1178 msgstr ""
1179
1180 #. type: Plain text
1181 #: build/C/man2/getunwind.2:73
1182 #, no-wrap
1183 msgid ""
1184 "\tu64 start;      (64-bit address of start of function)\n"
1185 "\tu64 end;        (64-bit address of end of function)\n"
1186 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1187 msgstr ""
1188
1189 #. type: Plain text
1190 #: build/C/man2/getunwind.2:81
1191 msgid ""
1192 "An entry whose I<start> value is zero indicates the end of the table.  For "
1193 "more information about the format, see the I<IA-64 Software Conventions and "
1194 "Runtime Architecture> manual."
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man2/getunwind.2:88
1199 #, fuzzy
1200 #| msgid ""
1201 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1202 #| "I<errno> is set to indicate the error."
1203 msgid ""
1204 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1205 "is returned and I<errno> is set to indicate the error."
1206 msgstr ""
1207 "成功すると、 B<kexec_load> は 0 を返す。\n"
1208 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1209
1210 #. type: Plain text
1211 #: build/C/man2/getunwind.2:94
1212 msgid ""
1213 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1214 "stored in the space specified by I<buf>."
1215 msgstr ""
1216
1217 #. type: Plain text
1218 #: build/C/man2/getunwind.2:96
1219 #, fuzzy
1220 #| msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
1221 msgid "This system call is available since Linux 2.4."
1222 msgstr ""
1223 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
1224 "である。"
1225
1226 #. type: Plain text
1227 #: build/C/man2/getunwind.2:99
1228 msgid ""
1229 "This system call is Linux specific, and is available only on the IA-64 "
1230 "architecture."
1231 msgstr ""
1232
1233 #. type: Plain text
1234 #: build/C/man2/getunwind.2:107
1235 msgid ""
1236 "This system call has been deprecated.  The modern way to obtain the kernel's "
1237 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1238 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1239 msgstr ""
1240
1241 #. type: Plain text
1242 #: build/C/man2/getunwind.2:111
1243 #, fuzzy
1244 msgid ""
1245 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1246 "that you want to call it, use B<syscall>(2)."
1247 msgstr "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくないと思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1248
1249 #. type: Plain text
1250 #: build/C/man2/getunwind.2:113
1251 msgid "B<getauxval>(3)"
1252 msgstr "B<getauxval>(3)"
1253
1254 #. type: TH
1255 #: build/C/man2/kexec_load.2:26
1256 #, no-wrap
1257 msgid "KEXEC_LOAD"
1258 msgstr "KEXEC_LOAD"
1259
1260 #. type: Plain text
1261 #: build/C/man2/kexec_load.2:29
1262 msgid "kexec_load - load a new kernel for later execution"
1263 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1264
1265 #. type: Plain text
1266 #: build/C/man2/kexec_load.2:31
1267 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1268 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1269
1270 #. type: Plain text
1271 #: build/C/man2/kexec_load.2:33
1272 msgid ""
1273 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1274 ">"
1275 msgstr ""
1276 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1277 ">"
1278
1279 #. type: Plain text
1280 #: build/C/man2/kexec_load.2:36
1281 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1282 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1283
1284 #. type: Plain text
1285 #: build/C/man2/kexec_load.2:44
1286 msgid ""
1287 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1288 "later by B<reboot>(2)."
1289 msgstr ""
1290 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1291 "その後の B<reboot>(2) で実行できるようにする。"
1292
1293 #. type: Plain text
1294 #: build/C/man2/kexec_load.2:50
1295 msgid ""
1296 "The I<flags> argument is a mask whose high-order bits control the operation "
1297 "of the call.  The following values can be specified in I<flags>:"
1298 msgstr ""
1299 "I<flags> 引き数はマスクビットで、\n"
1300 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1301 "I<flags> には以下の値を指定できる。"
1302
1303 #. type: TP
1304 #: build/C/man2/kexec_load.2:50
1305 #, no-wrap
1306 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1307 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1308
1309 #.  FIXME figure out how this is really used
1310 #. type: Plain text
1311 #: build/C/man2/kexec_load.2:54
1312 msgid "Execute the new kernel automatically on a system crash."
1313 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1314
1315 #. type: TP
1316 #: build/C/man2/kexec_load.2:54
1317 #, fuzzy, no-wrap
1318 #| msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.7.27)"
1319 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1320 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.7.27 以降)"
1321
1322 #. type: Plain text
1323 #: build/C/man2/kexec_load.2:64
1324 msgid ""
1325 "Preserve the system hardware and software states before executing the new "
1326 "kernel.  This could be used for system suspend.  This flag is only available "
1327 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is only "
1328 "effective if I<nr_segments> is greater than 0."
1329 msgstr ""
1330 "新しいカーネルを実行する前に、\n"
1331 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1332 "システムの中断時 (suspend) などで使用できる。\n"
1333 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1334 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1335
1336 #. type: Plain text
1337 #: build/C/man2/kexec_load.2:84
1338 msgid ""
1339 "The low-order bits of I<flags> contain the architecture of the to-be-"
1340 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1341 "current architecture, or one of the following architecture constants "
1342 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1343 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1344 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1345 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1346 "the system."
1347 msgstr ""
1348 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1349 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1350 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1351 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1352 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1353 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1354 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1355 "システムの CPU で実行可能なものでなければならない。"
1356
1357 #. type: Plain text
1358 #: build/C/man2/kexec_load.2:98
1359 msgid ""
1360 "The I<entry> argument is the physical entry address in the kernel image.  "
1361 "The I<nr_segments> argument is the number of segments pointed to by the "
1362 "I<segments> pointer.  The I<segments> argument is an array of "
1363 "I<kexec_segment> structures which define the kernel layout:"
1364 msgstr ""
1365 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1366 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1367 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1368 "この構造体によりカーネルの配置が定義される。"
1369
1370 #. type: Plain text
1371 #: build/C/man2/kexec_load.2:107
1372 #, no-wrap
1373 msgid ""
1374 "struct kexec_segment {\n"
1375 "    void   *buf;        /* Buffer in user space */\n"
1376 "    size_t  bufsz;      /* Buffer length in user space */\n"
1377 "    void   *mem;        /* Physical address of kernel */\n"
1378 "    size_t  memsz;      /* Physical address length */\n"
1379 "};\n"
1380 msgstr ""
1381 "struct kexec_segment {\n"
1382 "    void   *buf;        /* Buffer in user space */\n"
1383 "    size_t  bufsz;      /* Buffer length in user space */\n"
1384 "    void   *mem;        /* Physical address of kernel */\n"
1385 "    size_t  memsz;      /* Physical address length */\n"
1386 "};\n"
1387
1388 #.  FIXME elaborate on the following:
1389 #. type: Plain text
1390 #: build/C/man2/kexec_load.2:114
1391 msgid ""
1392 "The kernel image defined by I<segments> is copied from the calling process "
1393 "into previously reserved memory."
1394 msgstr ""
1395 "I<segments> で定義されたカーネルイメージは、\n"
1396 "呼び出したプロセスから予約済みメモリにコピーされる。"
1397
1398 #. type: Plain text
1399 #: build/C/man2/kexec_load.2:121
1400 msgid ""
1401 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1402 "I<errno> is set to indicate the error."
1403 msgstr ""
1404 "成功すると、 B<kexec_load> は 0 を返す。\n"
1405 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1406
1407 #. type: TP
1408 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1409 #: build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:495
1410 #, no-wrap
1411 msgid "B<EBUSY>"
1412 msgstr "B<EBUSY>"
1413
1414 #. type: Plain text
1415 #: build/C/man2/kexec_load.2:126
1416 msgid ""
1417 "Another crash kernel is already being loaded or a crash kernel is already in "
1418 "use."
1419 msgstr ""
1420 "別のクラッシュカーネルがすでにロードされているか、\n"
1421 "クラッシュカーネルがすでに使用されている。"
1422
1423 #.  KEXEC_SEGMENT_MAX == 16
1424 #. type: Plain text
1425 #: build/C/man2/kexec_load.2:133
1426 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1427 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1428
1429 #. type: Plain text
1430 #: build/C/man2/kexec_load.2:138
1431 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1432 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1433
1434 #. type: Plain text
1435 #: build/C/man2/kexec_load.2:142
1436 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1437 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1438
1439 #. type: Plain text
1440 #: build/C/man2/kexec_load.2:149
1441 msgid ""
1442 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1443 "B<syscall>(2)."
1444 msgstr ""
1445 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1446 "B<syscall>(2) を使って呼び出すこと。"
1447
1448 #.  FIXME Andi submitted a patch for this.
1449 #.  Check if it got accepted later.
1450 #. type: Plain text
1451 #: build/C/man2/kexec_load.2:156
1452 #, fuzzy
1453 #| msgid ""
1454 #| "The required constants are in the kernel source file I<linux/kexec.h>, "
1455 #| "which is not currently exported to glibc.  Therefore, these constants "
1456 #| "must be defined manually."
1457 msgid ""
1458 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1459 "which is not currently exported to glibc.  Therefore, these constants must "
1460 "be defined manually."
1461 msgstr ""
1462 "必要な定数はカーネルのソースファイル I<linux/kexec.h> で定義されている\n"
1463 "が、現在のところ glibc には公開されていない。\n"
1464 "そのため、これらの定数は手動で定義しなければならない。"
1465
1466 #. type: Plain text
1467 #: build/C/man2/kexec_load.2:159
1468 msgid ""
1469 "This system call is only available if the kernel was configured with "
1470 "B<CONFIG_KEXEC>."
1471 msgstr ""
1472 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1473 "いる場合にのみ利用できる。"
1474
1475 #. type: Plain text
1476 #: build/C/man2/kexec_load.2:162
1477 msgid "B<reboot>(2), B<syscall>(2)"
1478 msgstr "B<reboot>(2), B<syscall>(2)"
1479
1480 #. type: TH
1481 #: build/C/man2/lookup_dcookie.2:27
1482 #, no-wrap
1483 msgid "LOOKUP_DCOOKIE"
1484 msgstr "LOOKUP_DCOOKIE"
1485
1486 #. type: TH
1487 #: build/C/man2/lookup_dcookie.2:27
1488 #, no-wrap
1489 msgid "2004-06-17"
1490 msgstr "2004-06-17"
1491
1492 #. type: Plain text
1493 #: build/C/man2/lookup_dcookie.2:30
1494 msgid "lookup_dcookie - return a directory entry's path"
1495 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1496
1497 #. type: Plain text
1498 #: build/C/man2/lookup_dcookie.2:32
1499 msgid ""
1500 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1501 ">"
1502 msgstr ""
1503 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1504 ">"
1505
1506 #. type: Plain text
1507 #: build/C/man2/lookup_dcookie.2:38
1508 msgid ""
1509 "Look up the full path of the directory entry specified by the value "
1510 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1511 "particular directory entry.  The buffer given is filled in with the full "
1512 "path of the directory entry."
1513 msgstr ""
1514 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1515 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1516 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1517 "ルパス名が格納される。"
1518
1519 #. type: Plain text
1520 #: build/C/man2/lookup_dcookie.2:43
1521 msgid ""
1522 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1523 "a cookie reference to the directory entry."
1524 msgstr ""
1525 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1526 "リへの cookie 参照を 保持していなければならない。"
1527
1528 #. type: Plain text
1529 #: build/C/man2/lookup_dcookie.2:50
1530 msgid ""
1531 "On success, B<lookup_dcookie>()  returns the length of the path string "
1532 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1533 "appropriately."
1534 msgstr ""
1535 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1536 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1537
1538 #. type: Plain text
1539 #: build/C/man2/lookup_dcookie.2:54
1540 msgid "The buffer was not valid."
1541 msgstr "バッファが有効でなかった。"
1542
1543 #. type: Plain text
1544 #: build/C/man2/lookup_dcookie.2:58
1545 msgid ""
1546 "The kernel has no registered cookie/directory entry mappings at the time of "
1547 "lookup, or the cookie does not refer to a valid directory entry."
1548 msgstr ""
1549 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1550 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1551 "いない。"
1552
1553 #. type: TP
1554 #: build/C/man2/lookup_dcookie.2:58
1555 #, no-wrap
1556 msgid "B<ENAMETOOLONG>"
1557 msgstr "B<ENAMETOOLONG>"
1558
1559 #. type: Plain text
1560 #: build/C/man2/lookup_dcookie.2:61
1561 msgid "The name could not fit in the buffer."
1562 msgstr "名前がバッファに入り切らなかった。"
1563
1564 #. type: TP
1565 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1566 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1567 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1568 #, no-wrap
1569 msgid "B<ENOMEM>"
1570 msgstr "B<ENOMEM>"
1571
1572 #. type: Plain text
1573 #: build/C/man2/lookup_dcookie.2:65
1574 msgid ""
1575 "The kernel could not allocate memory for the temporary buffer holding the "
1576 "path."
1577 msgstr ""
1578 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1579 "かった。"
1580
1581 #. type: Plain text
1582 #: build/C/man2/lookup_dcookie.2:70
1583 msgid ""
1584 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1585 "up cookie values."
1586 msgstr ""
1587 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1588 "持っていない。"
1589
1590 #. type: TP
1591 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1592 #, no-wrap
1593 msgid "B<ERANGE>"
1594 msgstr "B<ERANGE>"
1595
1596 #. type: Plain text
1597 #: build/C/man2/lookup_dcookie.2:73
1598 msgid ""
1599 "The buffer was not large enough to hold the path of the directory entry."
1600 msgstr ""
1601 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1602 "かった。"
1603
1604 #. type: Plain text
1605 #: build/C/man2/lookup_dcookie.2:78
1606 msgid ""
1607 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1608 "2.5.70."
1609 msgstr ""
1610 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1611 "追加された。"
1612
1613 #. type: Plain text
1614 #: build/C/man2/lookup_dcookie.2:81
1615 msgid "B<lookup_dcookie>()  is Linux-specific."
1616 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1617
1618 #. type: Plain text
1619 #: build/C/man2/lookup_dcookie.2:85
1620 msgid ""
1621 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1622 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1623 "for directory entries."
1624 msgstr ""
1625 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1626 "oprofile profiler で 使われているだけである。"
1627
1628 #. type: Plain text
1629 #: build/C/man2/lookup_dcookie.2:88
1630 msgid ""
1631 "The path returned may be suffixed by the string \" (deleted)\" if the "
1632 "directory entry has been removed."
1633 msgstr ""
1634 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1635 "\" (deleted)\" という文字列が付加されることがある。"
1636
1637 #. type: TH
1638 #: build/C/man2/modify_ldt.2:24
1639 #, no-wrap
1640 msgid "MODIFY_LDT"
1641 msgstr "MODIFY_LDT"
1642
1643 #. type: Plain text
1644 #: build/C/man2/modify_ldt.2:27
1645 msgid "modify_ldt - get or set ldt"
1646 msgstr "modify_ldt - ldt を設定または取得する"
1647
1648 #. type: Plain text
1649 #: build/C/man2/modify_ldt.2:30
1650 #, no-wrap
1651 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1652 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1653
1654 #. type: Plain text
1655 #: build/C/man2/modify_ldt.2:32
1656 #, no-wrap
1657 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1658 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1659
1660 #. type: Plain text
1661 #: build/C/man2/modify_ldt.2:41
1662 msgid ""
1663 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1664 "process.  The ldt is a per-process memory management table used by the i386 "
1665 "processor.  For more information on this table, see an Intel 386 processor "
1666 "handbook."
1667 msgstr ""
1668 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1669 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1670 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1671 "は Intel 386 processor handbook を 参照すること。"
1672
1673 #. type: Plain text
1674 #: build/C/man2/modify_ldt.2:51
1675 msgid ""
1676 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1677 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1678 "actual size of the ldt."
1679 msgstr ""
1680 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1681 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1682 "である。"
1683
1684 #.  FIXME ? say something about func == 2 and func == 0x11?
1685 #.  In Linux 2.4, func == 2 returned "the default ldt"
1686 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1687 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1688 #. type: Plain text
1689 #: build/C/man2/modify_ldt.2:69
1690 msgid ""
1691 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1692 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1693 "structure."
1694 msgstr ""
1695 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1696 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1697 "くなければならない。"
1698
1699 #. type: Plain text
1700 #: build/C/man2/modify_ldt.2:73
1701 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1702 msgstr ""
1703 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1704
1705 #. type: Plain text
1706 #: build/C/man2/modify_ldt.2:87
1707 #, no-wrap
1708 msgid ""
1709 "struct user_desc {\n"
1710 "    unsigned int  entry_number;\n"
1711 "    unsigned long base_addr;\n"
1712 "    unsigned int  limit;\n"
1713 "    unsigned int  seg_32bit:1;\n"
1714 "    unsigned int  contents:2;\n"
1715 "    unsigned int  read_exec_only:1;\n"
1716 "    unsigned int  limit_in_pages:1;\n"
1717 "    unsigned int  seg_not_present:1;\n"
1718 "    unsigned int  useable:1;\n"
1719 "};\n"
1720 msgstr ""
1721 "struct user_desc {\n"
1722 "    unsigned int  entry_number;\n"
1723 "    unsigned long base_addr;\n"
1724 "    unsigned int  limit;\n"
1725 "    unsigned int  seg_32bit:1;\n"
1726 "    unsigned int  contents:2;\n"
1727 "    unsigned int  read_exec_only:1;\n"
1728 "    unsigned int  limit_in_pages:1;\n"
1729 "    unsigned int  seg_not_present:1;\n"
1730 "    unsigned int  useable:1;\n"
1731 "};\n"
1732
1733 #.  .PP
1734 #.  The ldt is specific for the calling process. Any attempts to change
1735 #.  the ldt to include the address space of another process or the kernel
1736 #.  will result in a segmentation violation when trying to access the memory
1737 #.  outside of the process address space. The memory protection is enforced
1738 #.  at the paging layer.
1739 #. type: Plain text
1740 #: build/C/man2/modify_ldt.2:98
1741 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1742 msgstr ""
1743 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1744
1745 #. type: Plain text
1746 #: build/C/man2/modify_ldt.2:108
1747 msgid ""
1748 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1749 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1750 "and sets I<errno> to indicate the error."
1751 msgstr ""
1752 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1753 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1754 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1755
1756 #. type: Plain text
1757 #: build/C/man2/modify_ldt.2:113
1758 msgid "I<ptr> points outside the address space."
1759 msgstr "I<ptr> がアドレス空間の外を指している。"
1760
1761 #. type: Plain text
1762 #: build/C/man2/modify_ldt.2:126
1763 msgid ""
1764 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1765 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1766 "invalid values."
1767 msgstr ""
1768 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1769 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1770 "エントリが無効な値である。"
1771
1772 #. type: Plain text
1773 #: build/C/man2/modify_ldt.2:130
1774 msgid "I<func> is neither 0 nor 1."
1775 msgstr "I<func> が 0 でも 1 でもない。"
1776
1777 #. type: Plain text
1778 #: build/C/man2/modify_ldt.2:133
1779 msgid ""
1780 "This call is Linux-specific and should not be used in programs intended to "
1781 "be portable."
1782 msgstr ""
1783 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1784 "い。"
1785
1786 #. type: Plain text
1787 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1788 #: build/C/man2/pivot_root.2:134
1789 msgid ""
1790 "Glibc does not provide a wrapper for this system call; call it using "
1791 "B<syscall>(2)."
1792 msgstr ""
1793 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1794 "(2)  を使って呼び出すこと。"
1795
1796 #. type: Plain text
1797 #: build/C/man2/modify_ldt.2:138
1798 msgid "B<vm86>(2)"
1799 msgstr "B<vm86>(2)"
1800
1801 #. type: TH
1802 #: build/C/man2/nfsservctl.2:8
1803 #, no-wrap
1804 msgid "NFSSERVCTL"
1805 msgstr "NFSSERVCTL"
1806
1807 #. type: TH
1808 #: build/C/man2/nfsservctl.2:8
1809 #, no-wrap
1810 msgid "2012-03-05"
1811 msgstr "2012-03-05"
1812
1813 #. type: Plain text
1814 #: build/C/man2/nfsservctl.2:11
1815 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1816 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1817
1818 #. type: Plain text
1819 #: build/C/man2/nfsservctl.2:14
1820 #, no-wrap
1821 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1822 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1823
1824 #. type: Plain text
1825 #: build/C/man2/nfsservctl.2:17
1826 #, no-wrap
1827 msgid ""
1828 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1829 "B<                union nfsctl_res *>I<resp>B<);>\n"
1830 msgstr ""
1831 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1832 "B<                union nfsctl_res *>I<resp>B<);>\n"
1833
1834 #. type: Plain text
1835 #: build/C/man2/nfsservctl.2:21
1836 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1837 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1838
1839 #. type: Plain text
1840 #: build/C/man2/nfsservctl.2:33
1841 #, no-wrap
1842 msgid ""
1843 "/*\n"
1844 " * These are the commands understood by nfsctl().\n"
1845 " */\n"
1846 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1847 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1848 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1849 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1850 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1851 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1852 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1853 msgstr ""
1854 "/*\n"
1855 " * nfsctl() によって理解されるコマンド\n"
1856 " */\n"
1857 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1858 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1859 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1860 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1861 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1862 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1863 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1864
1865 #. type: Plain text
1866 #: build/C/man2/nfsservctl.2:45
1867 #, no-wrap
1868 msgid ""
1869 "struct nfsctl_arg {\n"
1870 "    int                       ca_version;     /* safeguard */\n"
1871 "    union {\n"
1872 "        struct nfsctl_svc     u_svc;\n"
1873 "        struct nfsctl_client  u_client;\n"
1874 "        struct nfsctl_export  u_export;\n"
1875 "        struct nfsctl_uidmap  u_umap;\n"
1876 "        struct nfsctl_fhparm  u_getfh;\n"
1877 "        unsigned int          u_debug;\n"
1878 "    } u;\n"
1879 "}\n"
1880 msgstr ""
1881 "struct nfsctl_arg {\n"
1882 "    int                       ca_version;     /* safeguard */\n"
1883 "    union {\n"
1884 "        struct nfsctl_svc     u_svc;\n"
1885 "        struct nfsctl_client  u_client;\n"
1886 "        struct nfsctl_export  u_export;\n"
1887 "        struct nfsctl_uidmap  u_umap;\n"
1888 "        struct nfsctl_fhparm  u_getfh;\n"
1889 "        unsigned int          u_debug;\n"
1890 "    } u;\n"
1891 "}\n"
1892
1893 #. type: Plain text
1894 #: build/C/man2/nfsservctl.2:50
1895 #, no-wrap
1896 msgid ""
1897 "union nfsctl_res {\n"
1898 "        struct knfs_fh          cr_getfh;\n"
1899 "        unsigned int            cr_debug;\n"
1900 "};\n"
1901 msgstr ""
1902 "union nfsctl_res {\n"
1903 "        struct knfs_fh          cr_getfh;\n"
1904 "        unsigned int            cr_debug;\n"
1905 "};\n"
1906
1907 #. type: Plain text
1908 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1909 #: build/C/man2/vm86.2:57
1910 msgid ""
1911 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1912 "appropriately."
1913 msgstr ""
1914 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1915 "定される。"
1916
1917 #. type: Plain text
1918 #: build/C/man2/nfsservctl.2:58
1919 msgid "This call is Linux-specific."
1920 msgstr "このコールは Linux 特有である。"
1921
1922 #. type: TH
1923 #: build/C/man2/outb.2:26
1924 #, no-wrap
1925 msgid "OUTB"
1926 msgstr "OUTB"
1927
1928 #. type: TH
1929 #: build/C/man2/outb.2:26
1930 #, no-wrap
1931 msgid "2012-12-31"
1932 msgstr "2012-12-31"
1933
1934 #. type: Plain text
1935 #: build/C/man2/outb.2:31
1936 msgid ""
1937 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1938 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1939 msgstr ""
1940 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1941 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1942
1943 #. type: Plain text
1944 #: build/C/man2/outb.2:34
1945 #, no-wrap
1946 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1947 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1948
1949 #. type: Plain text
1950 #: build/C/man2/outb.2:41
1951 #, no-wrap
1952 msgid ""
1953 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1954 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1955 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1956 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1957 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1958 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1959 msgstr ""
1960 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1961 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1962 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1963 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1964 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1965 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1966
1967 #. type: Plain text
1968 #: build/C/man2/outb.2:48
1969 #, no-wrap
1970 msgid ""
1971 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1972 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1973 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1974 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1975 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1976 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1977 msgstr ""
1978 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1979 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1980 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1981 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1982 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1983 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1984
1985 #. type: Plain text
1986 #: build/C/man2/outb.2:61
1987 #, no-wrap
1988 msgid ""
1989 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1990 "B<           unsigned long int >I<count>B<);>\n"
1991 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1992 "B<           unsigned long int >I<count>B<);>\n"
1993 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1994 "B<           unsigned long int >I<count>B<);>\n"
1995 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1996 "B<           unsigned long int >I<count>B<);>\n"
1997 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1998 "B<           unsigned long int >I<count>B<);>\n"
1999 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2000 "B<           unsigned long int >I<count>B<);>\n"
2001 msgstr ""
2002 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2003 "B<           unsigned long int >I<count>B<);>\n"
2004 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2005 "B<           unsigned long int >I<count>B<);>\n"
2006 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2007 "B<           unsigned long int >I<count>B<);>\n"
2008 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2009 "B<           unsigned long int >I<count>B<);>\n"
2010 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2011 "B<           unsigned long int >I<count>B<);>\n"
2012 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2013 "B<           unsigned long int >I<count>B<);>\n"
2014
2015 #. type: Plain text
2016 #: build/C/man2/outb.2:67
2017 msgid ""
2018 "This family of functions is used to do low-level port input and output.  The "
2019 "out* functions do port output, the in* functions do port input; the b-suffix "
2020 "functions are byte-width and the w-suffix functions word-width; the _p-"
2021 "suffix functions pause until the I/O completes."
2022 msgstr ""
2023 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2024 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2025 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2026 "待つ。"
2027
2028 #.  , given the following information
2029 #.  in addition to that given in
2030 #.  .BR outb (9).
2031 #. type: Plain text
2032 #: build/C/man2/outb.2:73
2033 msgid ""
2034 "They are primarily designed for internal kernel use, but can be used from "
2035 "user space."
2036 msgstr ""
2037 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2038 "ザー空間からでも使用できる。"
2039
2040 #. type: Plain text
2041 #: build/C/man2/outb.2:78
2042 #, fuzzy
2043 msgid ""
2044 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2045 "as inline macros, and will not be substituted in without optimization "
2046 "enabled, causing unresolved references at link time."
2047 msgstr "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はインライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2048
2049 #. type: Plain text
2050 #: build/C/man2/outb.2:87
2051 msgid ""
2052 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2053 "allow the user space application to access the I/O ports in question.  "
2054 "Failure to do this will cause the application to receive a segmentation "
2055 "fault."
2056 msgstr ""
2057 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2058 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2059 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2060 "になる。"
2061
2062 #. type: Plain text
2063 #: build/C/man2/outb.2:96
2064 msgid ""
2065 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2066 "passed first and the I<port> argument is passed second, which is the "
2067 "opposite order from most DOS implementations."
2068 msgstr ""
2069 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2070 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2071 "である。"
2072
2073 #. type: Plain text
2074 #: build/C/man2/outb.2:99
2075 msgid "B<ioperm>(2), B<iopl>(2)"
2076 msgstr "B<ioperm>(2), B<iopl>(2)"
2077
2078 #. type: TH
2079 #: build/C/man2/pciconfig_read.2:8
2080 #, no-wrap
2081 msgid "PCICONFIG_READ"
2082 msgstr "PCICONFIG_READ"
2083
2084 #. type: TH
2085 #: build/C/man2/pciconfig_read.2:8
2086 #, no-wrap
2087 msgid "2003-07-14"
2088 msgstr "2003-07-14"
2089
2090 #. type: Plain text
2091 #: build/C/man2/pciconfig_read.2:11
2092 msgid ""
2093 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2094 "handling"
2095 msgstr ""
2096 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2097
2098 #. type: Plain text
2099 #: build/C/man2/pciconfig_read.2:14
2100 #, no-wrap
2101 msgid "B<#include E<lt>pci.hE<gt>>\n"
2102 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2103
2104 #. type: Plain text
2105 #: build/C/man2/pciconfig_read.2:21
2106 #, no-wrap
2107 msgid ""
2108 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2109 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2110 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2111 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2112 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2113 "B<          unsigned long >I<devfn>B<);>\n"
2114 msgstr ""
2115 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2116 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2117 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2118 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2119 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2120 "B<          unsigned long >I<devfn>B<);>\n"
2121
2122 #. type: Plain text
2123 #: build/C/man2/pciconfig_read.2:27
2124 #, fuzzy
2125 #| msgid ""
2126 #| "Most of the interaction with PCI devices is already handled by the kernel "
2127 #| "PCI layer, and thus these calls should not normally need to be accessed "
2128 #| "from userspace."
2129 msgid ""
2130 "Most of the interaction with PCI devices is already handled by the kernel "
2131 "PCI layer, and thus these calls should not normally need to be accessed from "
2132 "user space."
2133 msgstr ""
2134 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2135 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2136
2137 #. type: TP
2138 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2139 #, no-wrap
2140 msgid "B<pciconfig_read>()"
2141 msgstr "B<pciconfig_read>()"
2142
2143 #. type: Plain text
2144 #: build/C/man2/pciconfig_read.2:36
2145 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2146 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2147
2148 #. type: TP
2149 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2150 #, no-wrap
2151 msgid "B<pciconfig_write>()"
2152 msgstr "B<pciconfig_write>()"
2153
2154 #. type: Plain text
2155 #: build/C/man2/pciconfig_read.2:45
2156 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2157 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2158
2159 #. type: TP
2160 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2161 #, no-wrap
2162 msgid "B<pciconfig_iobase>()"
2163 msgstr "B<pciconfig_iobase>()"
2164
2165 #. type: Plain text
2166 #: build/C/man2/pciconfig_read.2:50
2167 msgid ""
2168 "You pass it a bus/devfn pair and get a physical address for either the "
2169 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2170 "PIO cycles, or the ISA holes if any."
2171 msgstr ""
2172 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2173 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2174 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2175
2176 #. type: Plain text
2177 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2178 msgid ""
2179 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2180 "appropriately."
2181 msgstr ""
2182 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2183 "定される。"
2184
2185 #. type: Plain text
2186 #: build/C/man2/pciconfig_read.2:77
2187 msgid ""
2188 "Returns information on locations of various I/O regions in physical memory "
2189 "according to the I<which> value.  Values for I<which> are: "
2190 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2191 "B<IOBASE_ISA_MEM>."
2192 msgstr ""
2193 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2194 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2195 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2196
2197 #. type: Plain text
2198 #: build/C/man2/pciconfig_read.2:84
2199 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2200 msgstr ""
2201 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2202 "い。"
2203
2204 #. type: TP
2205 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1745
2206 #: build/C/man2/sendfile.2:134
2207 #, no-wrap
2208 msgid "B<EIO>"
2209 msgstr "B<EIO>"
2210
2211 #. type: Plain text
2212 #: build/C/man2/pciconfig_read.2:87
2213 msgid "I/O error."
2214 msgstr "I/O エラー。"
2215
2216 #. type: TP
2217 #: build/C/man2/pciconfig_read.2:87
2218 #, no-wrap
2219 msgid "B<ENODEV>"
2220 msgstr "B<ENODEV>"
2221
2222 #. type: Plain text
2223 #: build/C/man2/pciconfig_read.2:93
2224 msgid ""
2225 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2226 "could not find a slot."
2227 msgstr ""
2228 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2229 "出しの場合、スロット (slot) が見つからない。"
2230
2231 #. type: Plain text
2232 #: build/C/man2/pciconfig_read.2:98
2233 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2234 msgstr ""
2235 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2236 "いない)。"
2237
2238 #. type: TP
2239 #: build/C/man2/pciconfig_read.2:98
2240 #, no-wrap
2241 msgid "B<EOPNOTSUPP>"
2242 msgstr "B<EOPNOTSUPP>"
2243
2244 #. type: Plain text
2245 #: build/C/man2/pciconfig_read.2:105
2246 msgid ""
2247 "This return value is only valid for B<pciconfig_iobase>().  It is returned "
2248 "if the value for I<which> is invalid."
2249 msgstr ""
2250 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2251 "の値が無効であるときに返される。"
2252
2253 #. type: Plain text
2254 #: build/C/man2/pciconfig_read.2:110
2255 msgid ""
2256 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2257 "B<pciconfig_iobase>()."
2258 msgstr ""
2259 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2260 "B<pciconfig_iobase>()  には適用されない。"
2261
2262 #. type: Plain text
2263 #: build/C/man2/pciconfig_read.2:112
2264 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2265 msgstr ""
2266 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2267 "である。"
2268
2269 #. type: Plain text
2270 #: build/C/man2/pciconfig_read.2:114
2271 msgid "B<capabilities>(7)"
2272 msgstr "B<capabilities>(7)"
2273
2274 #. type: TH
2275 #: build/C/man2/perf_event_open.2:27
2276 #, fuzzy, no-wrap
2277 #| msgid "B<PTRACE_EVENT_CLONE>"
2278 msgid "PERF_EVENT_OPEN"
2279 msgstr "B<PTRACE_EVENT_CLONE>"
2280
2281 #. type: TH
2282 #: build/C/man2/perf_event_open.2:27
2283 #, fuzzy, no-wrap
2284 #| msgid "2012-04-25"
2285 msgid "2013-02-04"
2286 msgstr "2012-04-25"
2287
2288 #. type: Plain text
2289 #: build/C/man2/perf_event_open.2:30
2290 msgid "perf_event_open - set up performance monitoring"
2291 msgstr ""
2292
2293 #. type: Plain text
2294 #: build/C/man2/perf_event_open.2:34
2295 #, no-wrap
2296 msgid ""
2297 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2298 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2299 msgstr ""
2300 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2301 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2302
2303 #. type: Plain text
2304 #: build/C/man2/perf_event_open.2:38
2305 #, no-wrap
2306 msgid ""
2307 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2308 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2309 "B<                    unsigned long >I<flags>B<);>\n"
2310 msgstr ""
2311 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2312 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2313 "B<                    unsigned long >I<flags>B<);>\n"
2314
2315 #. type: Plain text
2316 #: build/C/man2/perf_event_open.2:47
2317 msgid ""
2318 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2319 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2320 "B<fcntl>(2), etc.)."
2321 msgstr ""
2322
2323 #. type: Plain text
2324 #: build/C/man2/perf_event_open.2:55
2325 msgid ""
2326 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2327 "measuring performance information.  Each file descriptor corresponds to one "
2328 "event that is measured; these can be grouped together to measure multiple "
2329 "events simultaneously."
2330 msgstr ""
2331
2332 #. type: Plain text
2333 #: build/C/man2/perf_event_open.2:62
2334 msgid ""
2335 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2336 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2337 "overflows but does continue to exist and maintain its count value."
2338 msgstr ""
2339
2340 #. type: Plain text
2341 #: build/C/man2/perf_event_open.2:76
2342 msgid ""
2343 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2344 "one that is used for counting the aggregate number of events that occur.  In "
2345 "general, counting event results are gathered with a B<read>(2)  call.  A "
2346 "I<sampling> event periodically writes measurements to a buffer that can then "
2347 "be accessed via B<mmap>(2)B<.>"
2348 msgstr ""
2349
2350 #. type: SS
2351 #: build/C/man2/perf_event_open.2:76
2352 #, no-wrap
2353 msgid "Arguments"
2354 msgstr ""
2355
2356 #. type: Plain text
2357 #: build/C/man2/perf_event_open.2:90
2358 msgid ""
2359 "The argument I<pid> allows events to be attached to processes in various "
2360 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2361 "is greater than 0, the process indicated by I<pid> is measured, and if "
2362 "I<pid> is -1, all processes are counted."
2363 msgstr ""
2364
2365 #. type: Plain text
2366 #: build/C/man2/perf_event_open.2:101
2367 msgid ""
2368 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2369 "is greater than or equal to 0, measurements are restricted to the specified "
2370 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2371 msgstr ""
2372
2373 #. type: Plain text
2374 #: build/C/man2/perf_event_open.2:107
2375 msgid ""
2376 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2377 msgstr ""
2378
2379 #. type: Plain text
2380 #: build/C/man2/perf_event_open.2:115
2381 msgid ""
2382 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2383 "that process to whatever CPU the process gets scheduled to.  Per-process "
2384 "events can be created by any user."
2385 msgstr ""
2386
2387 #. type: Plain text
2388 #: build/C/man2/perf_event_open.2:126
2389 msgid ""
2390 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2391 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2392 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2393 msgstr ""
2394
2395 #. type: Plain text
2396 #: build/C/man2/perf_event_open.2:148
2397 msgid ""
2398 "The I<group_fd> argument allows event groups to be created.  An event group "
2399 "has one event which is the group leader.  The leader is created first, with "
2400 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2401 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2402 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2403 "and is considered to be a group with only 1 member.)  An event group is "
2404 "scheduled onto the CPU as a unit: it will only be put onto the CPU if all of "
2405 "the events in the group can be put onto the CPU.  This means that the values "
2406 "of the member events can be meaningfully compared, added, divided (to get "
2407 "ratios), etc., with each other, since they have counted events for the same "
2408 "set of executed instructions."
2409 msgstr ""
2410
2411 #. type: Plain text
2412 #: build/C/man2/perf_event_open.2:152
2413 #, fuzzy
2414 #| msgid "The I<subcmd> value is one of the following:"
2415 msgid "The I<flags> argument takes one of the following values:"
2416 msgstr "I<subcmd> の値は以下のいずれかである"
2417
2418 #. type: TP
2419 #: build/C/man2/perf_event_open.2:152
2420 #, no-wrap
2421 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2422 msgstr ""
2423
2424 #.  FIXME The following sentence is unclear
2425 #.  FIXME So, why is it useful?
2426 #. type: Plain text
2427 #: build/C/man2/perf_event_open.2:159
2428 msgid ""
2429 "This flag allows creating an event as part of an event group but having no "
2430 "group leader.  It is unclear why this is useful."
2431 msgstr ""
2432
2433 #. type: TP
2434 #: build/C/man2/perf_event_open.2:159
2435 #, no-wrap
2436 msgid "B<PERF_FLAG_FD_OUTPUT>"
2437 msgstr ""
2438
2439 #. type: Plain text
2440 #: build/C/man2/perf_event_open.2:162
2441 msgid "This flag re-routes the output from an event to the group leader."
2442 msgstr ""
2443
2444 #. type: TP
2445 #: build/C/man2/perf_event_open.2:162
2446 #, fuzzy, no-wrap
2447 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2448 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2449 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2450
2451 #. type: Plain text
2452 #: build/C/man2/perf_event_open.2:185
2453 msgid ""
2454 "This flag activates per-container system-wide monitoring.  A container is an "
2455 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2456 "memory, etc...).  In this mode, the event is measured only if the thread "
2457 "running on the monitored CPU belongs to the designated container (cgroup).  "
2458 "The cgroup is identified by passing a file descriptor opened on its "
2459 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2460 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2461 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2462 "the I<pid> parameter.  cgroup monitoring is only available for system-wide "
2463 "events and may therefore require extra permissions."
2464 msgstr ""
2465
2466 #. type: Plain text
2467 #: build/C/man2/perf_event_open.2:190
2468 msgid ""
2469 "The I<perf_event_attr> structure provides detailed configuration information "
2470 "for the event being created."
2471 msgstr ""
2472
2473 #. type: Plain text
2474 #: build/C/man2/perf_event_open.2:197
2475 #, no-wrap
2476 msgid ""
2477 "struct perf_event_attr {\n"
2478 "    __u32     type;         /* Type of event */\n"
2479 "    __u32     size;         /* Size of attribute structure */\n"
2480 "    __u64     config;       /* Type-specific configuration */\n"
2481 msgstr ""
2482
2483 #. type: Plain text
2484 #: build/C/man2/perf_event_open.2:202
2485 #, no-wrap
2486 msgid ""
2487 "    union {\n"
2488 "        __u64 sample_period;    /* Period of sampling */\n"
2489 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2490 "    };\n"
2491 msgstr ""
2492
2493 #. type: Plain text
2494 #: build/C/man2/perf_event_open.2:205
2495 #, no-wrap
2496 msgid ""
2497 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2498 "    __u64     read_format;  /* Specifies values returned in read */\n"
2499 msgstr ""
2500
2501 #. type: Plain text
2502 #: build/C/man2/perf_event_open.2:231
2503 #, no-wrap
2504 msgid ""
2505 "    __u64     disabled       : 1,   /* off by default */\n"
2506 "              inherit        : 1,   /* children inherit it */\n"
2507 "              pinned         : 1,   /* must always be on PMU */\n"
2508 "              exclusive      : 1,   /* only group on PMU */\n"
2509 "              exclude_user   : 1,   /* don't count user */\n"
2510 "              exclude_kernel : 1,   /* don't count kernel */\n"
2511 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2512 "              exclude_idle   : 1,   /* don't count when idle */\n"
2513 "              mmap           : 1,   /* include mmap data */\n"
2514 "              comm           : 1,   /* include comm data */\n"
2515 "              freq           : 1,   /* use freq, not period */\n"
2516 "              inherit_stat   : 1,   /* per task counts */\n"
2517 "              enable_on_exec : 1,   /* next exec enables */\n"
2518 "              task           : 1,   /* trace fork/exit */\n"
2519 "              watermark      : 1,   /* wakeup_watermark */\n"
2520 "              precise_ip     : 2,   /* skid constraint */\n"
2521 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2522 "              sample_id_all  : 1,   /* sample_type all events */\n"
2523 "              exclude_host   : 1,   /* don't count in host */\n"
2524 "              exclude_guest  : 1,   /* don't count in guest */\n"
2525 "              exclude_callchain_kernel : 1,\n"
2526 "                                    /* exclude kernel callchains */\n"
2527 "              exclude_callchain_user   : 1,\n"
2528 "\t                            /* exclude user callchains */\n"
2529 "              __reserved_1   : 41;\n"
2530 msgstr ""
2531
2532 #. type: Plain text
2533 #: build/C/man2/perf_event_open.2:236
2534 #, no-wrap
2535 msgid ""
2536 "    union {\n"
2537 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2538 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2539 "    };\n"
2540 msgstr ""
2541
2542 #. type: Plain text
2543 #: build/C/man2/perf_event_open.2:238
2544 #, no-wrap
2545 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2546 msgstr ""
2547
2548 #. type: Plain text
2549 #: build/C/man2/perf_event_open.2:243
2550 #, no-wrap
2551 msgid ""
2552 "    union {\n"
2553 "        __u64 bp_addr;          /* breakpoint address */\n"
2554 "        __u64 config1;          /* extension of config */\n"
2555 "    };\n"
2556 msgstr ""
2557
2558 #. type: Plain text
2559 #: build/C/man2/perf_event_open.2:253
2560 #, no-wrap
2561 msgid ""
2562 "    union {\n"
2563 "        __u64 bp_len;           /* breakpoint length */\n"
2564 "        __u64 config2;          /* extension of config1 */\n"
2565 "    };\n"
2566 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2567 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2568 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2569 "                                   samples */\n"
2570 "    __u32   __reserved_2;       /* Align to u64 */\n"
2571 msgstr ""
2572
2573 #. type: Plain text
2574 #: build/C/man2/perf_event_open.2:255
2575 #, no-wrap
2576 msgid "};\n"
2577 msgstr ""
2578
2579 #. type: Plain text
2580 #: build/C/man2/perf_event_open.2:261
2581 msgid ""
2582 "The fields of the I<perf_event_attr> structure are described in more detail "
2583 "below:"
2584 msgstr ""
2585
2586 #. type: TP
2587 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
2588 #, no-wrap
2589 msgid "I<type>"
2590 msgstr ""
2591
2592 #. type: Plain text
2593 #: build/C/man2/perf_event_open.2:265
2594 msgid ""
2595 "This field specifies the overall event type.  It has one of the following "
2596 "values:"
2597 msgstr ""
2598
2599 #. type: TP
2600 #: build/C/man2/perf_event_open.2:266
2601 #, no-wrap
2602 msgid "B<PERF_TYPE_HARDWARE>"
2603 msgstr ""
2604
2605 #. type: Plain text
2606 #: build/C/man2/perf_event_open.2:273
2607 msgid ""
2608 "This indicates one of the \"generalized\" hardware events provided by the "
2609 "kernel.  See the I<config> field definition for more details."
2610 msgstr ""
2611
2612 #. type: TP
2613 #: build/C/man2/perf_event_open.2:273
2614 #, no-wrap
2615 msgid "B<PERF_TYPE_SOFTWARE>"
2616 msgstr ""
2617
2618 #. type: Plain text
2619 #: build/C/man2/perf_event_open.2:277
2620 msgid ""
2621 "This indicates one of the software-defined events provided by the kernel "
2622 "(even if no hardware support is available)."
2623 msgstr ""
2624
2625 #. type: TP
2626 #: build/C/man2/perf_event_open.2:277
2627 #, fuzzy, no-wrap
2628 #| msgid "B<PTRACE_CONT>"
2629 msgid "B<PERF_TYPE_TRACEPOINT>"
2630 msgstr "B<PTRACE_CONT>"
2631
2632 #. type: Plain text
2633 #: build/C/man2/perf_event_open.2:281
2634 msgid ""
2635 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2636 msgstr ""
2637
2638 #. type: TP
2639 #: build/C/man2/perf_event_open.2:281
2640 #, no-wrap
2641 msgid "B<PERF_TYPE_HW_CACHE>"
2642 msgstr ""
2643
2644 #. type: Plain text
2645 #: build/C/man2/perf_event_open.2:287
2646 msgid ""
2647 "This indicates a hardware cache event.  This has a special encoding, "
2648 "described in the I<config> field definition."
2649 msgstr ""
2650
2651 #. type: TP
2652 #: build/C/man2/perf_event_open.2:287
2653 #, no-wrap
2654 msgid "B<PERF_TYPE_RAW>"
2655 msgstr ""
2656
2657 #. type: Plain text
2658 #: build/C/man2/perf_event_open.2:291
2659 msgid ""
2660 "This indicates a \"raw\" implementation-specific event in the I<config> "
2661 "field."
2662 msgstr ""
2663
2664 #. type: TP
2665 #: build/C/man2/perf_event_open.2:291
2666 #, fuzzy, no-wrap
2667 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2668 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2669 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2670
2671 #. type: Plain text
2672 #: build/C/man2/perf_event_open.2:296
2673 msgid ""
2674 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2675 "can be read/write accesses to an address as well as execution of an "
2676 "instruction address."
2677 msgstr ""
2678
2679 #. type: TP
2680 #: build/C/man2/perf_event_open.2:296
2681 #, no-wrap
2682 msgid "dynamic PMU"
2683 msgstr ""
2684
2685 #. type: Plain text
2686 #: build/C/man2/perf_event_open.2:315
2687 msgid ""
2688 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2689 "enable this, a value exported by the kernel can be used in the I<type> field "
2690 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2691 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2692 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2693 "content is an integer that can be used in the I<type> field.  For instance, "
2694 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2695 "CPU PMU, which is usually 4."
2696 msgstr ""
2697
2698 #. type: TP
2699 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
2700 #, no-wrap
2701 msgid "I<size>"
2702 msgstr ""
2703
2704 #. type: Plain text
2705 #: build/C/man2/perf_event_open.2:325
2706 msgid ""
2707 "The size of the I<perf_event_attr> structure for forward/backward "
2708 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2709 "the kernel to see the struct size at the time of compilation."
2710 msgstr ""
2711
2712 #. type: Plain text
2713 #: build/C/man2/perf_event_open.2:340
2714 msgid ""
2715 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2716 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2717 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2718 "corresponding to the addition of branch sampling in Linux 3.4.  "
2719 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2720 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2721 msgstr ""
2722
2723 #. type: TP
2724 #: build/C/man2/perf_event_open.2:340
2725 #, no-wrap
2726 msgid "I<config>"
2727 msgstr ""
2728
2729 #. type: Plain text
2730 #: build/C/man2/perf_event_open.2:351
2731 msgid ""
2732 "This specifies which event you want, in conjunction with the I<type> field.  "
2733 "The I<config1> and I<config2> fields are also taken into account in cases "
2734 "where 64 bits is not enough to fully specify the event.  The encoding of "
2735 "these fields are event dependent."
2736 msgstr ""
2737
2738 #. type: Plain text
2739 #: build/C/man2/perf_event_open.2:357
2740 msgid ""
2741 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2742 "counter configuration data; if the most significant bit is unset, the next 7 "
2743 "bits are an event type and the rest of the bits are the event identifier."
2744 msgstr ""
2745
2746 #. type: Plain text
2747 #: build/C/man2/perf_event_open.2:368
2748 msgid ""
2749 "There are various ways to set the I<config> field that are dependent on the "
2750 "value of the previously described I<type> field.  What follows are various "
2751 "possible settings for I<config> separated out by I<type>."
2752 msgstr ""
2753
2754 #. type: Plain text
2755 #: build/C/man2/perf_event_open.2:378
2756 msgid ""
2757 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2758 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2759 "I<config> to one of the following:"
2760 msgstr ""
2761
2762 #. type: TP
2763 #: build/C/man2/perf_event_open.2:379
2764 #, no-wrap
2765 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2766 msgstr ""
2767
2768 #. type: Plain text
2769 #: build/C/man2/perf_event_open.2:383
2770 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2771 msgstr ""
2772
2773 #. type: TP
2774 #: build/C/man2/perf_event_open.2:383
2775 #, no-wrap
2776 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2777 msgstr ""
2778
2779 #. type: Plain text
2780 #: build/C/man2/perf_event_open.2:388
2781 msgid ""
2782 "Retired instructions.  Be careful, these can be affected by various issues, "
2783 "most notably hardware interrupt counts"
2784 msgstr ""
2785
2786 #. type: TP
2787 #: build/C/man2/perf_event_open.2:388
2788 #, no-wrap
2789 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2790 msgstr ""
2791
2792 #. type: Plain text
2793 #: build/C/man2/perf_event_open.2:395
2794 msgid ""
2795 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2796 "may vary depending on your CPU.  This may include prefetches and coherency "
2797 "messages; again this depends on the design of your CPU."
2798 msgstr ""
2799
2800 #. type: TP
2801 #: build/C/man2/perf_event_open.2:395
2802 #, no-wrap
2803 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2804 msgstr ""
2805
2806 #. type: Plain text
2807 #: build/C/man2/perf_event_open.2:402
2808 msgid ""
2809 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2810 "intended to be used in conjunction with the "
2811 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2812 msgstr ""
2813
2814 #. type: TP
2815 #: build/C/man2/perf_event_open.2:402
2816 #, no-wrap
2817 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2818 msgstr ""
2819
2820 #. type: Plain text
2821 #: build/C/man2/perf_event_open.2:407
2822 msgid ""
2823 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2824 "event on AMD processors."
2825 msgstr ""
2826
2827 #. type: TP
2828 #: build/C/man2/perf_event_open.2:407
2829 #, no-wrap
2830 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2831 msgstr ""
2832
2833 #. type: Plain text
2834 #: build/C/man2/perf_event_open.2:410
2835 msgid "Mispredicted branch instructions."
2836 msgstr ""
2837
2838 #. type: TP
2839 #: build/C/man2/perf_event_open.2:410
2840 #, no-wrap
2841 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2842 msgstr ""
2843
2844 #. type: Plain text
2845 #: build/C/man2/perf_event_open.2:413
2846 msgid "Bus cycles, which can be different from total cycles."
2847 msgstr ""
2848
2849 #. type: TP
2850 #: build/C/man2/perf_event_open.2:413
2851 #, fuzzy, no-wrap
2852 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
2853 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2854 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
2855
2856 #. type: Plain text
2857 #: build/C/man2/perf_event_open.2:416
2858 msgid "Stalled cycles during issue."
2859 msgstr ""
2860
2861 #. type: TP
2862 #: build/C/man2/perf_event_open.2:416
2863 #, no-wrap
2864 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2865 msgstr ""
2866
2867 #. type: Plain text
2868 #: build/C/man2/perf_event_open.2:419
2869 msgid "Stalled cycles during retirement."
2870 msgstr ""
2871
2872 #. type: TP
2873 #: build/C/man2/perf_event_open.2:419
2874 #, fuzzy, no-wrap
2875 #| msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
2876 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2877 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
2878
2879 #. type: Plain text
2880 #: build/C/man2/perf_event_open.2:422
2881 msgid "Total cycles; not affected by CPU frequency scaling."
2882 msgstr ""
2883
2884 #. type: Plain text
2885 #: build/C/man2/perf_event_open.2:432
2886 msgid ""
2887 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2888 "provided by the kernel.  Set I<config> to one of the following:"
2889 msgstr ""
2890
2891 #. type: TP
2892 #: build/C/man2/perf_event_open.2:433
2893 #, no-wrap
2894 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2895 msgstr ""
2896
2897 #. type: Plain text
2898 #: build/C/man2/perf_event_open.2:436
2899 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2900 msgstr ""
2901
2902 #. type: TP
2903 #: build/C/man2/perf_event_open.2:436
2904 #, no-wrap
2905 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2906 msgstr ""
2907
2908 #. type: Plain text
2909 #: build/C/man2/perf_event_open.2:439
2910 msgid "This reports a clock count specific to the task that is running."
2911 msgstr ""
2912
2913 #. type: TP
2914 #: build/C/man2/perf_event_open.2:439
2915 #, no-wrap
2916 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2917 msgstr ""
2918
2919 #. type: Plain text
2920 #: build/C/man2/perf_event_open.2:442
2921 msgid "This reports the number of page faults."
2922 msgstr ""
2923
2924 #. type: TP
2925 #: build/C/man2/perf_event_open.2:442
2926 #, no-wrap
2927 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2928 msgstr ""
2929
2930 #. type: Plain text
2931 #: build/C/man2/perf_event_open.2:447
2932 msgid ""
2933 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2934 "as user-space events, after that they are reported as happening in the "
2935 "kernel."
2936 msgstr ""
2937
2938 #. type: TP
2939 #: build/C/man2/perf_event_open.2:447
2940 #, no-wrap
2941 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2942 msgstr ""
2943
2944 #. type: Plain text
2945 #: build/C/man2/perf_event_open.2:451
2946 msgid "This reports the number of times the process has migrated to a new CPU."
2947 msgstr ""
2948
2949 #. type: TP
2950 #: build/C/man2/perf_event_open.2:451
2951 #, no-wrap
2952 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2953 msgstr ""
2954
2955 #. type: Plain text
2956 #: build/C/man2/perf_event_open.2:455
2957 msgid ""
2958 "This counts the number of minor page faults.  These did not require disk I/O "
2959 "to handle."
2960 msgstr ""
2961
2962 #. type: TP
2963 #: build/C/man2/perf_event_open.2:455
2964 #, no-wrap
2965 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2966 msgstr ""
2967
2968 #. type: Plain text
2969 #: build/C/man2/perf_event_open.2:459
2970 msgid ""
2971 "This counts the number of major page faults.  These required disk I/O to "
2972 "handle."
2973 msgstr ""
2974
2975 #. type: TP
2976 #: build/C/man2/perf_event_open.2:459
2977 #, fuzzy, no-wrap
2978 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2979 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2980 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2981
2982 #. type: Plain text
2983 #: build/C/man2/perf_event_open.2:465
2984 msgid ""
2985 "This counts the number of alignment faults.  These happen when unaligned "
2986 "memory accesses happen; the kernel can handle these but it reduces "
2987 "performance.  This only happens on some architectures (never on x86)."
2988 msgstr ""
2989
2990 #. type: TP
2991 #: build/C/man2/perf_event_open.2:465
2992 #, fuzzy, no-wrap
2993 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2994 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
2995 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2996
2997 #. type: Plain text
2998 #: build/C/man2/perf_event_open.2:471
2999 msgid ""
3000 "This counts the number of emulation faults.  The kernel sometimes traps on "
3001 "unimplemented instructions and emulates them for user space.  This can "
3002 "negatively impact performance."
3003 msgstr ""
3004
3005 #. type: Plain text
3006 #: build/C/man2/perf_event_open.2:484
3007 msgid ""
3008 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
3009 "tracepoints.  The value to use in I<config> can be obtained from under "
3010 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
3011 msgstr ""
3012
3013 #. type: Plain text
3014 #: build/C/man2/perf_event_open.2:495
3015 msgid ""
3016 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3017 "cache event.  To calculate the appropriate I<config> value use the following "
3018 "equation:"
3019 msgstr ""
3020
3021 #. type: Plain text
3022 #: build/C/man2/perf_event_open.2:500
3023 #, no-wrap
3024 msgid ""
3025 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3026 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3027 msgstr ""
3028
3029 #. type: Plain text
3030 #: build/C/man2/perf_event_open.2:505
3031 msgid "where I<perf_hw_cache_id> is one of:"
3032 msgstr ""
3033
3034 #. type: TP
3035 #: build/C/man2/perf_event_open.2:506
3036 #, no-wrap
3037 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3038 msgstr ""
3039
3040 #. type: Plain text
3041 #: build/C/man2/perf_event_open.2:509
3042 msgid "for measuring Level 1 Data Cache"
3043 msgstr ""
3044
3045 #. type: TP
3046 #: build/C/man2/perf_event_open.2:509
3047 #, no-wrap
3048 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3049 msgstr ""
3050
3051 #. type: Plain text
3052 #: build/C/man2/perf_event_open.2:512
3053 msgid "for measuring Level 1 Instruction Cache"
3054 msgstr ""
3055
3056 #. type: TP
3057 #: build/C/man2/perf_event_open.2:512
3058 #, no-wrap
3059 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3060 msgstr ""
3061
3062 #. type: Plain text
3063 #: build/C/man2/perf_event_open.2:515
3064 msgid "for measuring Last-Level Cache"
3065 msgstr ""
3066
3067 #. type: TP
3068 #: build/C/man2/perf_event_open.2:515
3069 #, no-wrap
3070 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3071 msgstr ""
3072
3073 #. type: Plain text
3074 #: build/C/man2/perf_event_open.2:518
3075 msgid "for measuring the Data TLB"
3076 msgstr ""
3077
3078 #. type: TP
3079 #: build/C/man2/perf_event_open.2:518
3080 #, no-wrap
3081 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3082 msgstr ""
3083
3084 #. type: Plain text
3085 #: build/C/man2/perf_event_open.2:521
3086 msgid "for measuring the Instruction TLB"
3087 msgstr ""
3088
3089 #. type: TP
3090 #: build/C/man2/perf_event_open.2:521
3091 #, no-wrap
3092 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3093 msgstr ""
3094
3095 #. type: Plain text
3096 #: build/C/man2/perf_event_open.2:524
3097 msgid "for measuring the branch prediction unit"
3098 msgstr ""
3099
3100 #. type: TP
3101 #: build/C/man2/perf_event_open.2:524
3102 #, fuzzy, no-wrap
3103 #| msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
3104 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3105 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
3106
3107 #. type: Plain text
3108 #: build/C/man2/perf_event_open.2:527
3109 msgid "for measuring local memory accesses"
3110 msgstr ""
3111
3112 #. type: Plain text
3113 #: build/C/man2/perf_event_open.2:532
3114 msgid "and I<perf_hw_cache_op_id> is one of"
3115 msgstr ""
3116
3117 #. type: TP
3118 #: build/C/man2/perf_event_open.2:533
3119 #, no-wrap
3120 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3121 msgstr ""
3122
3123 #. type: Plain text
3124 #: build/C/man2/perf_event_open.2:536
3125 msgid "for read accesses"
3126 msgstr ""
3127
3128 #. type: TP
3129 #: build/C/man2/perf_event_open.2:536
3130 #, no-wrap
3131 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3132 msgstr ""
3133
3134 #. type: Plain text
3135 #: build/C/man2/perf_event_open.2:539
3136 msgid "for write accesses"
3137 msgstr ""
3138
3139 #. type: TP
3140 #: build/C/man2/perf_event_open.2:539
3141 #, no-wrap
3142 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3143 msgstr ""
3144
3145 #. type: Plain text
3146 #: build/C/man2/perf_event_open.2:542
3147 msgid "for prefetch accesses"
3148 msgstr ""
3149
3150 #. type: Plain text
3151 #: build/C/man2/perf_event_open.2:547
3152 msgid "and I<perf_hw_cache_op_result_id> is one of"
3153 msgstr ""
3154
3155 #. type: TP
3156 #: build/C/man2/perf_event_open.2:548
3157 #, no-wrap
3158 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3159 msgstr ""
3160
3161 #. type: Plain text
3162 #: build/C/man2/perf_event_open.2:551
3163 msgid "to measure accesses"
3164 msgstr ""
3165
3166 #. type: TP
3167 #: build/C/man2/perf_event_open.2:551
3168 #, no-wrap
3169 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man2/perf_event_open.2:554
3174 msgid "to measure misses"
3175 msgstr ""
3176
3177 #. type: Plain text
3178 #: build/C/man2/perf_event_open.2:572
3179 msgid ""
3180 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3181 "needed.  Most CPUs support events that are not covered by the \"generalized"
3182 "\" events.  These are implementation defined; see your CPU manual (for "
3183 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3184 "Developer Guide).  The libpfm4 library can be used to translate from the "
3185 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3186 "expects in this field."
3187 msgstr ""
3188
3189 #. type: Plain text
3190 #: build/C/man2/perf_event_open.2:581
3191 msgid ""
3192 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3193 "Its parameters are set in other places."
3194 msgstr ""
3195
3196 #. type: TP
3197 #: build/C/man2/perf_event_open.2:582
3198 #, no-wrap
3199 msgid "I<sample_period>, I<sample_freq>"
3200 msgstr ""
3201
3202 #. type: Plain text
3203 #: build/C/man2/perf_event_open.2:594
3204 msgid ""
3205 "A \"sampling\" counter is one that generates an interrupt every N events, "
3206 "where N is given by I<sample_period>.  A sampling counter has "
3207 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3208 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3209 "is recorded on each interrupt."
3210 msgstr ""
3211
3212 #. type: Plain text
3213 #: build/C/man2/perf_event_open.2:604
3214 msgid ""
3215 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3216 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3217 "period to try and achieve the desired rate.  The rate of adjustment is a "
3218 "timer tick."
3219 msgstr ""
3220
3221 #. type: TP
3222 #: build/C/man2/perf_event_open.2:604
3223 #, no-wrap
3224 msgid "I<sample_type>"
3225 msgstr ""
3226
3227 #. type: Plain text
3228 #: build/C/man2/perf_event_open.2:616
3229 msgid ""
3230 "The various bits in this field specify which values to include in the "
3231 "sample.  They will be recorded in a ring-buffer, which is available to user "
3232 "space using B<mmap>(2).  The order in which the values are saved in the "
3233 "sample are documented in the MMAP Layout subsection below; it is not the "
3234 "I<enum perf_event_sample_format> order."
3235 msgstr ""
3236
3237 #. type: TP
3238 #: build/C/man2/perf_event_open.2:617
3239 #, no-wrap
3240 msgid "B<PERF_SAMPLE_IP>"
3241 msgstr ""
3242
3243 #. type: Plain text
3244 #: build/C/man2/perf_event_open.2:620
3245 msgid "Records instruction pointer."
3246 msgstr ""
3247
3248 #. type: TP
3249 #: build/C/man2/perf_event_open.2:620
3250 #, no-wrap
3251 msgid "B<PERF_SAMPLE_TID>"
3252 msgstr ""
3253
3254 #. type: Plain text
3255 #: build/C/man2/perf_event_open.2:623
3256 msgid "Records the process and thread IDs."
3257 msgstr ""
3258
3259 #. type: TP
3260 #: build/C/man2/perf_event_open.2:623
3261 #, no-wrap
3262 msgid "B<PERF_SAMPLE_TIME>"
3263 msgstr ""
3264
3265 #. type: Plain text
3266 #: build/C/man2/perf_event_open.2:626
3267 msgid "Records a timestamp."
3268 msgstr ""
3269
3270 #. type: TP
3271 #: build/C/man2/perf_event_open.2:626
3272 #, no-wrap
3273 msgid "B<PERF_SAMPLE_ADDR>"
3274 msgstr ""
3275
3276 #. type: Plain text
3277 #: build/C/man2/perf_event_open.2:629
3278 msgid "Records an address, if applicable."
3279 msgstr ""
3280
3281 #. type: TP
3282 #: build/C/man2/perf_event_open.2:629
3283 #, no-wrap
3284 msgid "B<PERF_SAMPLE_READ>"
3285 msgstr ""
3286
3287 #. type: Plain text
3288 #: build/C/man2/perf_event_open.2:632
3289 msgid ""
3290 "Record counter values for all events in a group, not just the group leader."
3291 msgstr ""
3292
3293 #. type: TP
3294 #: build/C/man2/perf_event_open.2:632
3295 #, no-wrap
3296 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3297 msgstr ""
3298
3299 #. type: Plain text
3300 #: build/C/man2/perf_event_open.2:635
3301 msgid "Records the callchain (stack backtrace)."
3302 msgstr ""
3303
3304 #. type: TP
3305 #: build/C/man2/perf_event_open.2:635
3306 #, no-wrap
3307 msgid "B<PERF_SAMPLE_ID>"
3308 msgstr ""
3309
3310 #. type: Plain text
3311 #: build/C/man2/perf_event_open.2:638
3312 msgid "Records a unique ID for the opened event's group leader."
3313 msgstr ""
3314
3315 #. type: TP
3316 #: build/C/man2/perf_event_open.2:638
3317 #, no-wrap
3318 msgid "B<PERF_SAMPLE_CPU>"
3319 msgstr ""
3320
3321 #. type: Plain text
3322 #: build/C/man2/perf_event_open.2:641
3323 msgid "Records CPU number."
3324 msgstr ""
3325
3326 #. type: TP
3327 #: build/C/man2/perf_event_open.2:641
3328 #, no-wrap
3329 msgid "B<PERF_SAMPLE_PERIOD>"
3330 msgstr ""
3331
3332 #. type: Plain text
3333 #: build/C/man2/perf_event_open.2:644
3334 msgid "Records the current sampling period."
3335 msgstr ""
3336
3337 #. type: TP
3338 #: build/C/man2/perf_event_open.2:644
3339 #, no-wrap
3340 msgid "B<PERF_SAMPLE_STREAM_ID>"
3341 msgstr ""
3342
3343 #. type: Plain text
3344 #: build/C/man2/perf_event_open.2:651
3345 msgid ""
3346 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3347 "actual ID is returned, not the group leader.  This ID is the same as the one "
3348 "returned by PERF_FORMAT_ID."
3349 msgstr ""
3350
3351 #. type: TP
3352 #: build/C/man2/perf_event_open.2:651
3353 #, no-wrap
3354 msgid "B<PERF_SAMPLE_RAW>"
3355 msgstr ""
3356
3357 #. type: Plain text
3358 #: build/C/man2/perf_event_open.2:655
3359 msgid ""
3360 "Records additional data, if applicable.  Usually returned by tracepoint "
3361 "events."
3362 msgstr ""
3363
3364 #. type: TP
3365 #: build/C/man2/perf_event_open.2:655
3366 #, fuzzy, no-wrap
3367 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3368 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3369 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3370
3371 #. type: Plain text
3372 #: build/C/man2/perf_event_open.2:659
3373 msgid "Records the branch stack.  See branch_sample_type."
3374 msgstr ""
3375
3376 #. type: TP
3377 #: build/C/man2/perf_event_open.2:659
3378 #, fuzzy, no-wrap
3379 #| msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
3380 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3381 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
3382
3383 #. type: Plain text
3384 #: build/C/man2/perf_event_open.2:662
3385 msgid "Records the current register state."
3386 msgstr ""
3387
3388 #. type: TP
3389 #: build/C/man2/perf_event_open.2:662
3390 #, fuzzy, no-wrap
3391 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
3392 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3393 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
3394
3395 #. type: Plain text
3396 #: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786
3397 #: build/C/man2/perf_event_open.2:1803
3398 msgid "[To be documented]"
3399 msgstr ""
3400
3401 #. type: TP
3402 #: build/C/man2/perf_event_open.2:666
3403 #, no-wrap
3404 msgid "I<read_format>"
3405 msgstr ""
3406
3407 #. type: Plain text
3408 #: build/C/man2/perf_event_open.2:673
3409 msgid ""
3410 "This field specifies the format of the data returned by B<read>(2)  on a "
3411 "B<perf_event_open>()  file descriptor."
3412 msgstr ""
3413
3414 #. type: TP
3415 #: build/C/man2/perf_event_open.2:674
3416 #, no-wrap
3417 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3418 msgstr ""
3419
3420 #. type: Plain text
3421 #: build/C/man2/perf_event_open.2:681
3422 msgid ""
3423 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3424 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3425 msgstr ""
3426
3427 #. type: TP
3428 #: build/C/man2/perf_event_open.2:681
3429 #, no-wrap
3430 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3431 msgstr ""
3432
3433 #. type: Plain text
3434 #: build/C/man2/perf_event_open.2:688
3435 msgid ""
3436 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3437 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3438 msgstr ""
3439
3440 #. type: TP
3441 #: build/C/man2/perf_event_open.2:688
3442 #, no-wrap
3443 msgid "B<PERF_FORMAT_ID>"
3444 msgstr ""
3445
3446 #. type: Plain text
3447 #: build/C/man2/perf_event_open.2:691
3448 msgid "Adds a 64-bit unique value that corresponds to the event group."
3449 msgstr ""
3450
3451 #. type: TP
3452 #: build/C/man2/perf_event_open.2:691
3453 #, no-wrap
3454 msgid "B<PERF_FORMAT_GROUP>"
3455 msgstr ""
3456
3457 #. type: Plain text
3458 #: build/C/man2/perf_event_open.2:694
3459 msgid "Allows all counter values in an event group to be read with one read."
3460 msgstr ""
3461
3462 #. type: TP
3463 #: build/C/man2/perf_event_open.2:695
3464 #, no-wrap
3465 msgid "I<disabled>"
3466 msgstr ""
3467
3468 #. type: Plain text
3469 #: build/C/man2/perf_event_open.2:705
3470 msgid ""
3471 "The I<disabled> bit specifies whether the counter starts out disabled or "
3472 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3473 "B<prctl>(2), or I<enable_on_exec>."
3474 msgstr ""
3475
3476 #. type: TP
3477 #: build/C/man2/perf_event_open.2:705
3478 #, no-wrap
3479 msgid "I<inherit>"
3480 msgstr ""
3481
3482 #. type: Plain text
3483 #: build/C/man2/perf_event_open.2:714
3484 msgid ""
3485 "The I<inherit> bit specifies that this counter should count events of child "
3486 "tasks as well as the task specified.  This only applies to new children, not "
3487 "to any existing children at the time the counter is created (nor to any new "
3488 "children of existing children)."
3489 msgstr ""
3490
3491 #. type: Plain text
3492 #: build/C/man2/perf_event_open.2:719
3493 msgid ""
3494 "Inherit does not work for some combinations of I<read_format>s, such as "
3495 "B<PERF_FORMAT_GROUP>."
3496 msgstr ""
3497
3498 #. type: TP
3499 #: build/C/man2/perf_event_open.2:719
3500 #, no-wrap
3501 msgid "I<pinned>"
3502 msgstr ""
3503
3504 #. type: Plain text
3505 #: build/C/man2/perf_event_open.2:732
3506 msgid ""
3507 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3508 "at all possible.  It only applies to hardware counters and only to group "
3509 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3510 "there are not enough hardware counters or because of a conflict with some "
3511 "other event), then the counter goes into an 'error' state, where reads "
3512 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3513 "subsequently enabled or disabled."
3514 msgstr ""
3515
3516 #. type: TP
3517 #: build/C/man2/perf_event_open.2:732
3518 #, no-wrap
3519 msgid "I<exclusive>"
3520 msgstr ""
3521
3522 #. type: Plain text
3523 #: build/C/man2/perf_event_open.2:741
3524 msgid ""
3525 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3526 "it should be the only group using the CPU's counters.  In the future this "
3527 "may allow monitoring programs to support PMU features that need to run alone "
3528 "so that they do not disrupt other hardware counters."
3529 msgstr ""
3530
3531 #. type: TP
3532 #: build/C/man2/perf_event_open.2:741
3533 #, no-wrap
3534 msgid "I<exclude_user>"
3535 msgstr ""
3536
3537 #. type: Plain text
3538 #: build/C/man2/perf_event_open.2:744
3539 msgid ""
3540 "If this bit is set, the count excludes events that happen in user space."
3541 msgstr ""
3542
3543 #. type: TP
3544 #: build/C/man2/perf_event_open.2:744
3545 #, no-wrap
3546 msgid "I<exclude_kernel>"
3547 msgstr ""
3548
3549 #. type: Plain text
3550 #: build/C/man2/perf_event_open.2:747
3551 msgid ""
3552 "If this bit is set, the count excludes events that happen in kernel-space."
3553 msgstr ""
3554
3555 #. type: TP
3556 #: build/C/man2/perf_event_open.2:747
3557 #, no-wrap
3558 msgid "I<exclude_hv>"
3559 msgstr ""
3560
3561 #. type: Plain text
3562 #: build/C/man2/perf_event_open.2:755
3563 msgid ""
3564 "If this bit is set, the count excludes events that happen in the "
3565 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3566 "this (such as POWER).  Extra support is needed for handling hypervisor "
3567 "measurements on most machines."
3568 msgstr ""
3569
3570 #. type: TP
3571 #: build/C/man2/perf_event_open.2:755
3572 #, no-wrap
3573 msgid "I<exclude_idle>"
3574 msgstr ""
3575
3576 #. type: Plain text
3577 #: build/C/man2/perf_event_open.2:758
3578 msgid "If set, don't count when the CPU is idle."
3579 msgstr ""
3580
3581 #. type: TP
3582 #: build/C/man2/perf_event_open.2:758
3583 #, no-wrap
3584 msgid "I<mmap>"
3585 msgstr ""
3586
3587 #. type: Plain text
3588 #: build/C/man2/perf_event_open.2:763
3589 msgid "The I<mmap> bit enables recording of exec mmap events."
3590 msgstr ""
3591
3592 #. type: TP
3593 #: build/C/man2/perf_event_open.2:763
3594 #, no-wrap
3595 msgid "I<comm>"
3596 msgstr ""
3597
3598 #. type: Plain text
3599 #: build/C/man2/perf_event_open.2:774
3600 msgid ""
3601 "The I<comm> bit enables tracking of process command name as modified by the "
3602 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3603 "tools, there is no way to distinguish one system call versus the other."
3604 msgstr ""
3605
3606 #. type: TP
3607 #: build/C/man2/perf_event_open.2:774
3608 #, no-wrap
3609 msgid "I<freq>"
3610 msgstr ""
3611
3612 #. type: Plain text
3613 #: build/C/man2/perf_event_open.2:781
3614 msgid ""
3615 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3616 "when setting up the sampling interval."
3617 msgstr ""
3618
3619 #. type: TP
3620 #: build/C/man2/perf_event_open.2:781
3621 #, no-wrap
3622 msgid "I<inherit_stat>"
3623 msgstr ""
3624
3625 #. type: Plain text
3626 #: build/C/man2/perf_event_open.2:788
3627 msgid ""
3628 "This bit enables saving of event counts on context switch for inherited "
3629 "tasks.  This is only meaningful if the I<inherit> field is set."
3630 msgstr ""
3631
3632 #. type: TP
3633 #: build/C/man2/perf_event_open.2:788
3634 #, no-wrap
3635 msgid "I<enable_on_exec>"
3636 msgstr ""
3637
3638 #. type: Plain text
3639 #: build/C/man2/perf_event_open.2:793
3640 msgid ""
3641 "If this bit is set, a counter is automatically enabled after a call to "
3642 "B<exec>(2)."
3643 msgstr ""
3644
3645 #. type: TP
3646 #: build/C/man2/perf_event_open.2:793
3647 #, no-wrap
3648 msgid "I<task>"
3649 msgstr ""
3650
3651 #. type: Plain text
3652 #: build/C/man2/perf_event_open.2:797
3653 msgid ""
3654 "If this bit is set, then fork/exit notifications are included in the ring "
3655 "buffer."
3656 msgstr ""
3657
3658 #. type: TP
3659 #: build/C/man2/perf_event_open.2:797
3660 #, no-wrap
3661 msgid "I<watermark>"
3662 msgstr ""
3663
3664 #. type: Plain text
3665 #: build/C/man2/perf_event_open.2:805
3666 msgid ""
3667 "If set, have a sampling interrupt happen when we cross the "
3668 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3669 "I<wakeup_events> samples."
3670 msgstr ""
3671
3672 #. type: TP
3673 #: build/C/man2/perf_event_open.2:805
3674 #, fuzzy, no-wrap
3675 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3676 msgid "I<precise_ip> (Since Linux 2.6.35)"
3677 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3678
3679 #. type: Plain text
3680 #: build/C/man2/perf_event_open.2:815
3681 msgid ""
3682 "This controls the amount of skid.  Skid is how many instructions execute "
3683 "between an event of interest happening and the kernel being able to stop and "
3684 "record the event.  Smaller skid is better and allows more accurate reporting "
3685 "of which events correspond to which instructions, but hardware is often "
3686 "limited with how small this can be."
3687 msgstr ""
3688
3689 #. type: Plain text
3690 #: build/C/man2/perf_event_open.2:817
3691 #, fuzzy
3692 #| msgid "The I<subcmd> value is one of the following:"
3693 msgid "The values of this are the following:"
3694 msgstr "I<subcmd> の値は以下のいずれかである"
3695
3696 #. type: TP
3697 #: build/C/man2/perf_event_open.2:818
3698 #, no-wrap
3699 msgid "0 -"
3700 msgstr ""
3701
3702 #. type: Plain text
3703 #: build/C/man2/perf_event_open.2:822
3704 msgid "B<SAMPLE_IP> can have arbitrary skid"
3705 msgstr ""
3706
3707 #. type: TP
3708 #: build/C/man2/perf_event_open.2:822
3709 #, no-wrap
3710 msgid "1 -"
3711 msgstr ""
3712
3713 #. type: Plain text
3714 #: build/C/man2/perf_event_open.2:826
3715 msgid "B<SAMPLE_IP> must have constant skid"
3716 msgstr ""
3717
3718 #. type: TP
3719 #: build/C/man2/perf_event_open.2:826
3720 #, no-wrap
3721 msgid "2 -"
3722 msgstr ""
3723
3724 #. type: Plain text
3725 #: build/C/man2/perf_event_open.2:830
3726 msgid "B<SAMPLE_IP> requested to have 0 skid"
3727 msgstr ""
3728
3729 #. type: TP
3730 #: build/C/man2/perf_event_open.2:830
3731 #, no-wrap
3732 msgid "3 -"
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/perf_event_open.2:836
3737 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3738 msgstr ""
3739
3740 #. type: TP
3741 #: build/C/man2/perf_event_open.2:837
3742 #, fuzzy, no-wrap
3743 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3744 msgid "I<mmap_data> (Since Linux 2.6.36)"
3745 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3746
3747 #. type: Plain text
3748 #: build/C/man2/perf_event_open.2:843
3749 msgid ""
3750 "The counterpart of the I<mmap> field, but enables including data mmap events "
3751 "in the ring-buffer."
3752 msgstr ""
3753
3754 #. type: TP
3755 #: build/C/man2/perf_event_open.2:843
3756 #, fuzzy, no-wrap
3757 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3758 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3759 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3760
3761 #. type: Plain text
3762 #: build/C/man2/perf_event_open.2:851
3763 msgid ""
3764 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3765 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3766 "selected."
3767 msgstr ""
3768
3769 #. type: TP
3770 #: build/C/man2/perf_event_open.2:851
3771 #, no-wrap
3772 msgid "I<exclude_host> (Since Linux 3.2)"
3773 msgstr ""
3774
3775 #. type: Plain text
3776 #: build/C/man2/perf_event_open.2:854
3777 msgid "Do not measure time spent in VM host"
3778 msgstr ""
3779
3780 #. type: TP
3781 #: build/C/man2/perf_event_open.2:854
3782 #, no-wrap
3783 msgid "I<exclude_guest> (Since Linux 3.2)"
3784 msgstr ""
3785
3786 #. type: Plain text
3787 #: build/C/man2/perf_event_open.2:857
3788 msgid "Do not measure time spent in VM guest"
3789 msgstr ""
3790
3791 #. type: TP
3792 #: build/C/man2/perf_event_open.2:857
3793 #, no-wrap
3794 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3795 msgstr ""
3796
3797 #. type: Plain text
3798 #: build/C/man2/perf_event_open.2:860
3799 msgid "Do not include kernel callchains."
3800 msgstr ""
3801
3802 #. type: TP
3803 #: build/C/man2/perf_event_open.2:860
3804 #, no-wrap
3805 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3806 msgstr ""
3807
3808 #. type: Plain text
3809 #: build/C/man2/perf_event_open.2:863
3810 msgid "Do not include user callchains."
3811 msgstr ""
3812
3813 #. type: TP
3814 #: build/C/man2/perf_event_open.2:863
3815 #, no-wrap
3816 msgid "I<wakeup_events>, I<wakeup_watermark>"
3817 msgstr ""
3818
3819 #. type: Plain text
3820 #: build/C/man2/perf_event_open.2:873
3821 msgid ""
3822 "This union sets how many samples (I<wakeup_events>)  or bytes "
3823 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3824 "is used is selected by the I<watermark> bitflag."
3825 msgstr ""
3826
3827 #. type: TP
3828 #: build/C/man2/perf_event_open.2:873
3829 #, fuzzy, no-wrap
3830 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3831 msgid "I<bp_type> (Since Linux 2.6.33)"
3832 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3833
3834 #. type: Plain text
3835 #: build/C/man2/perf_event_open.2:877
3836 msgid "This chooses the breakpoint type.  It is one of:"
3837 msgstr ""
3838
3839 #. type: TP
3840 #: build/C/man2/perf_event_open.2:878
3841 #, no-wrap
3842 msgid "B<HW_BREAKPOINT_EMPTY>"
3843 msgstr ""
3844
3845 #. type: Plain text
3846 #: build/C/man2/perf_event_open.2:881
3847 msgid "no breakpoint"
3848 msgstr ""
3849
3850 #. type: TP
3851 #: build/C/man2/perf_event_open.2:881
3852 #, no-wrap
3853 msgid "B<HW_BREAKPOINT_R>"
3854 msgstr ""
3855
3856 #. type: Plain text
3857 #: build/C/man2/perf_event_open.2:884
3858 msgid "count when we read the memory location"
3859 msgstr ""
3860
3861 #. type: TP
3862 #: build/C/man2/perf_event_open.2:884
3863 #, no-wrap
3864 msgid "B<HW_BREAKPOINT_W>"
3865 msgstr ""
3866
3867 #. type: Plain text
3868 #: build/C/man2/perf_event_open.2:887
3869 msgid "count when we write the memory location"
3870 msgstr ""
3871
3872 #. type: TP
3873 #: build/C/man2/perf_event_open.2:887
3874 #, no-wrap
3875 msgid "B<HW_BREAKPOINT_RW>"
3876 msgstr ""
3877
3878 #. type: Plain text
3879 #: build/C/man2/perf_event_open.2:890
3880 msgid "count when we read or write the memory location"
3881 msgstr ""
3882
3883 #. type: TP
3884 #: build/C/man2/perf_event_open.2:890
3885 #, no-wrap
3886 msgid "B<HW_BREAKPOINT_X>"
3887 msgstr ""
3888
3889 #. type: Plain text
3890 #: build/C/man2/perf_event_open.2:893
3891 msgid "count when we execute code at the memory location"
3892 msgstr ""
3893
3894 #. type: Plain text
3895 #: build/C/man2/perf_event_open.2:902
3896 msgid ""
3897 "The values can be combined via a bitwise or, but the combination of "
3898 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3899 "allowed."
3900 msgstr ""
3901
3902 #. type: TP
3903 #: build/C/man2/perf_event_open.2:903
3904 #, fuzzy, no-wrap
3905 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3906 msgid "I<bp_addr> (Since Linux 2.6.33)"
3907 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3908
3909 #. type: Plain text
3910 #: build/C/man2/perf_event_open.2:910
3911 msgid ""
3912 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3913 "memory address of the instruction of interest; for read and write "
3914 "breakpoints it is the memory address of the memory location of interest."
3915 msgstr ""
3916
3917 #. type: TP
3918 #: build/C/man2/perf_event_open.2:910
3919 #, fuzzy, no-wrap
3920 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3921 msgid "I<config1> (Since Linux 2.6.39)"
3922 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3923
3924 #. type: Plain text
3925 #: build/C/man2/perf_event_open.2:917
3926 msgid ""
3927 "I<config1> is used for setting events that need an extra register or "
3928 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3929 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3930 msgstr ""
3931
3932 #. type: TP
3933 #: build/C/man2/perf_event_open.2:917
3934 #, fuzzy, no-wrap
3935 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3936 msgid "I<bp_len> (Since Linux 2.6.33)"
3937 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3938
3939 #. type: Plain text
3940 #: build/C/man2/perf_event_open.2:931
3941 msgid ""
3942 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3943 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3944 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3945 "an execution breakpoint, set this to I<sizeof(long)>."
3946 msgstr ""
3947
3948 #. type: TP
3949 #: build/C/man2/perf_event_open.2:931
3950 #, fuzzy, no-wrap
3951 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
3952 msgid "I<config2> (Since Linux 2.6.39)"
3953 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
3954
3955 #. type: Plain text
3956 #: build/C/man2/perf_event_open.2:938
3957 msgid "I<config2> is a further extension of the I<config1> field."
3958 msgstr ""
3959
3960 #. type: TP
3961 #: build/C/man2/perf_event_open.2:938
3962 #, no-wrap
3963 msgid "I<branch_sample_type> (Since Linux 3.4)"
3964 msgstr ""
3965
3966 #. type: Plain text
3967 #: build/C/man2/perf_event_open.2:942
3968 msgid ""
3969 "This is used with the CPUs hardware branch sampling, if available.  It can "
3970 "have one of the following values:"
3971 msgstr ""
3972
3973 #. type: TP
3974 #: build/C/man2/perf_event_open.2:943
3975 #, no-wrap
3976 msgid "B<PERF_SAMPLE_BRANCH_USER>"
3977 msgstr ""
3978
3979 #. type: Plain text
3980 #: build/C/man2/perf_event_open.2:946
3981 msgid "Branch target is in user space"
3982 msgstr ""
3983
3984 #. type: TP
3985 #: build/C/man2/perf_event_open.2:946
3986 #, no-wrap
3987 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
3988 msgstr ""
3989
3990 #. type: Plain text
3991 #: build/C/man2/perf_event_open.2:949
3992 msgid "Branch target is in kernel space"
3993 msgstr ""
3994
3995 #. type: TP
3996 #: build/C/man2/perf_event_open.2:949
3997 #, no-wrap
3998 msgid "B<PERF_SAMPLE_BRANCH_HV>"
3999 msgstr ""
4000
4001 #. type: Plain text
4002 #: build/C/man2/perf_event_open.2:952
4003 msgid "Branch target is in hypervisor"
4004 msgstr ""
4005
4006 #. type: TP
4007 #: build/C/man2/perf_event_open.2:952
4008 #, no-wrap
4009 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4010 msgstr ""
4011
4012 #. type: Plain text
4013 #: build/C/man2/perf_event_open.2:955
4014 msgid "Any branch type."
4015 msgstr ""
4016
4017 #. type: TP
4018 #: build/C/man2/perf_event_open.2:955
4019 #, no-wrap
4020 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4021 msgstr ""
4022
4023 #. type: Plain text
4024 #: build/C/man2/perf_event_open.2:958
4025 msgid "Any call branch"
4026 msgstr ""
4027
4028 #. type: TP
4029 #: build/C/man2/perf_event_open.2:958
4030 #, no-wrap
4031 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4032 msgstr ""
4033
4034 #. type: Plain text
4035 #: build/C/man2/perf_event_open.2:961
4036 msgid "Any return branch"
4037 msgstr ""
4038
4039 #. type: TP
4040 #: build/C/man2/perf_event_open.2:961
4041 #, no-wrap
4042 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4043 msgstr ""
4044
4045 #. type: Plain text
4046 #: build/C/man2/perf_event_open.2:964
4047 msgid "Indirect calls"
4048 msgstr ""
4049
4050 #. type: TP
4051 #: build/C/man2/perf_event_open.2:964
4052 #, no-wrap
4053 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4054 msgstr ""
4055
4056 #. type: Plain text
4057 #: build/C/man2/perf_event_open.2:967
4058 msgid "User, kernel, and hv"
4059 msgstr ""
4060
4061 #. type: TP
4062 #: build/C/man2/perf_event_open.2:968
4063 #, no-wrap
4064 msgid "I<sample_regs_user> (Since Linux 3.7)"
4065 msgstr ""
4066
4067 #.  FIXME: The following reference seems to be not quite right:
4068 #. type: Plain text
4069 #: build/C/man2/perf_event_open.2:974
4070 msgid ""
4071 "This defines the set of user registers to dump on samples.  See I<asm/"
4072 "perf_regs.h>."
4073 msgstr ""
4074
4075 #. type: TP
4076 #: build/C/man2/perf_event_open.2:974
4077 #, no-wrap
4078 msgid "I<sample_stack_user> (Since Linux 3.7)"
4079 msgstr ""
4080
4081 #. type: Plain text
4082 #: build/C/man2/perf_event_open.2:977
4083 msgid "This defines the size of the user stack to dump on samples."
4084 msgstr ""
4085
4086 #. type: SS
4087 #: build/C/man2/perf_event_open.2:977
4088 #, no-wrap
4089 msgid "Reading results"
4090 msgstr ""
4091
4092 #. type: Plain text
4093 #: build/C/man2/perf_event_open.2:987
4094 msgid ""
4095 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4096 "the events can be read from the file descriptor.  The values that are there "
4097 "are specified by the I<read_format> field in the I<attr> structure at open "
4098 "time."
4099 msgstr ""
4100
4101 #. type: Plain text
4102 #: build/C/man2/perf_event_open.2:992
4103 msgid ""
4104 "If you attempt to read into a buffer that is not big enough to hold the data "
4105 "B<ENOSPC> is returned"
4106 msgstr ""
4107
4108 #. type: Plain text
4109 #: build/C/man2/perf_event_open.2:994
4110 msgid "Here is the layout of the data returned by a read:"
4111 msgstr ""
4112
4113 #. type: IP
4114 #: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012
4115 #: build/C/man2/ptrace.2:1552 build/C/man2/ptrace.2:1562
4116 #: build/C/man2/ptrace.2:1570 build/C/man2/ptrace.2:1576
4117 #: build/C/man2/ptrace.2:1705
4118 #, no-wrap
4119 msgid "*"
4120 msgstr ""
4121
4122 #. type: Plain text
4123 #: build/C/man2/perf_event_open.2:998
4124 msgid ""
4125 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4126 "at once:"
4127 msgstr ""
4128
4129 #. type: Plain text
4130 #: build/C/man2/perf_event_open.2:1010
4131 #, no-wrap
4132 msgid ""
4133 "struct read_format {\n"
4134 "    u64 nr;            /* The number of events */\n"
4135 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4136 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4137 "    struct\n"
4138 "        u64 value;     /* The value of the event */\n"
4139 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4140 "    } values[nr];\n"
4141 "};\n"
4142 msgstr ""
4143
4144 #. type: Plain text
4145 #: build/C/man2/perf_event_open.2:1018
4146 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4147 msgstr ""
4148
4149 #. type: Plain text
4150 #: build/C/man2/perf_event_open.2:1027
4151 #, no-wrap
4152 msgid ""
4153 "struct read_format {\n"
4154 "    u64 value;         /* The value of the event */\n"
4155 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4156 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4157 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4158 "};\n"
4159 msgstr ""
4160
4161 #. type: Plain text
4162 #: build/C/man2/perf_event_open.2:1031
4163 msgid "The values read are as follows:"
4164 msgstr ""
4165
4166 #. type: TP
4167 #: build/C/man2/perf_event_open.2:1031
4168 #, no-wrap
4169 msgid "I<nr>"
4170 msgstr ""
4171
4172 #. type: Plain text
4173 #: build/C/man2/perf_event_open.2:1037
4174 msgid ""
4175 "The number of events in this file descriptor.  Only available if "
4176 "B<PERF_FORMAT_GROUP> was specified."
4177 msgstr ""
4178
4179 #. type: TP
4180 #: build/C/man2/perf_event_open.2:1037
4181 #, no-wrap
4182 msgid "I<time_enabled>, I<time_running>"
4183 msgstr ""
4184
4185 #. type: Plain text
4186 #: build/C/man2/perf_event_open.2:1049
4187 msgid ""
4188 "Total time the event was enabled and running.  Normally these are the same.  "
4189 "If more events are started than available counter slots on the PMU, then "
4190 "multiplexing happens and events only run part of the time.  In that case the "
4191 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4192 "value for the count."
4193 msgstr ""
4194
4195 #. type: TP
4196 #: build/C/man2/perf_event_open.2:1049
4197 #, no-wrap
4198 msgid "I<value>"
4199 msgstr ""
4200
4201 #. type: Plain text
4202 #: build/C/man2/perf_event_open.2:1052
4203 msgid "An unsigned 64-bit value containing the counter result."
4204 msgstr ""
4205
4206 #. type: TP
4207 #: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316
4208 #: build/C/man2/perf_event_open.2:1451
4209 #, no-wrap
4210 msgid "I<id>"
4211 msgstr ""
4212
4213 #. type: Plain text
4214 #: build/C/man2/perf_event_open.2:1058
4215 msgid ""
4216 "A globally unique value for this particular event, only there if "
4217 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4218 msgstr ""
4219
4220 #. type: SS
4221 #: build/C/man2/perf_event_open.2:1058
4222 #, no-wrap
4223 msgid "MMAP layout"
4224 msgstr ""
4225
4226 #. type: Plain text
4227 #: build/C/man2/perf_event_open.2:1068
4228 msgid ""
4229 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4230 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4231 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4232 msgstr ""
4233
4234 #. type: Plain text
4235 #: build/C/man2/perf_event_open.2:1074
4236 msgid ""
4237 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4238 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4239 "such as where the ring-buffer head is."
4240 msgstr ""
4241
4242 #. type: Plain text
4243 #: build/C/man2/perf_event_open.2:1077
4244 msgid ""
4245 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4246 "ring buffer when sampling even if you do not plan to access it."
4247 msgstr ""
4248
4249 #. type: Plain text
4250 #: build/C/man2/perf_event_open.2:1079
4251 msgid "The structure of the first metadata mmap page is as follows:"
4252 msgstr ""
4253
4254 #. type: Plain text
4255 #: build/C/man2/perf_event_open.2:1103
4256 #, no-wrap
4257 msgid ""
4258 "struct perf_event_mmap_page {\n"
4259 "    __u32 version;          /* version number of this structure */\n"
4260 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4261 "    __u32 lock;             /* seqlock for synchronization */\n"
4262 "    __u32 index;            /* hardware counter identifier */\n"
4263 "    __s64 offset;           /* add to hardware counter value */\n"
4264 "    __u64 time_enabled;     /* time event active */\n"
4265 "    __u64 time_running;     /* time event on CPU */\n"
4266 "    union {\n"
4267 "        __u64   capabilities;\n"
4268 "        __u64   cap_usr_time  : 1,\n"
4269 "                cap_usr_rdpmc : 1,\n"
4270 "    };\n"
4271 "    __u16   pmc_width;\n"
4272 "    __u16   time_shift;\n"
4273 "    __u32   time_mult;\n"
4274 "    __u64   time_offset;\n"
4275 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4276 "    __u64   data_head;         /* head in the data section */\n"
4277 "    __u64   data_tail;         /* user-space written tail */\n"
4278 "}\n"
4279 msgstr ""
4280
4281 #. type: Plain text
4282 #: build/C/man2/perf_event_open.2:1109
4283 msgid ""
4284 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4285 "in more detail:"
4286 msgstr ""
4287
4288 #. type: TP
4289 #: build/C/man2/perf_event_open.2:1109
4290 #, no-wrap
4291 msgid "I<version>"
4292 msgstr ""
4293
4294 #. type: Plain text
4295 #: build/C/man2/perf_event_open.2:1112
4296 msgid "Version number of this structure."
4297 msgstr ""
4298
4299 #. type: TP
4300 #: build/C/man2/perf_event_open.2:1112
4301 #, no-wrap
4302 msgid "I<compat_version>"
4303 msgstr ""
4304
4305 #. type: Plain text
4306 #: build/C/man2/perf_event_open.2:1115
4307 msgid "The lowest version this is compatible with."
4308 msgstr ""
4309
4310 #. type: TP
4311 #: build/C/man2/perf_event_open.2:1115
4312 #, no-wrap
4313 msgid "I<lock>"
4314 msgstr ""
4315
4316 #. type: Plain text
4317 #: build/C/man2/perf_event_open.2:1118
4318 msgid "A seqlock for synchronization."
4319 msgstr ""
4320
4321 #. type: TP
4322 #: build/C/man2/perf_event_open.2:1118
4323 #, no-wrap
4324 msgid "I<index>"
4325 msgstr ""
4326
4327 #. type: Plain text
4328 #: build/C/man2/perf_event_open.2:1121
4329 msgid "A unique hardware counter identifier."
4330 msgstr ""
4331
4332 #. type: TP
4333 #: build/C/man2/perf_event_open.2:1121
4334 #, no-wrap
4335 msgid "I<offset>"
4336 msgstr ""
4337
4338 #.  FIXME clarify
4339 #. type: Plain text
4340 #: build/C/man2/perf_event_open.2:1125
4341 msgid "Add this to hardware counter value??"
4342 msgstr ""
4343
4344 #. type: TP
4345 #: build/C/man2/perf_event_open.2:1125
4346 #, no-wrap
4347 msgid "I<time_enabled>"
4348 msgstr ""
4349
4350 #. type: Plain text
4351 #: build/C/man2/perf_event_open.2:1128
4352 msgid "Time the event was active."
4353 msgstr ""
4354
4355 #. type: TP
4356 #: build/C/man2/perf_event_open.2:1128
4357 #, no-wrap
4358 msgid "I<time_running>"
4359 msgstr ""
4360
4361 #. type: Plain text
4362 #: build/C/man2/perf_event_open.2:1131
4363 msgid "Time the event was running."
4364 msgstr ""
4365
4366 #. type: TP
4367 #: build/C/man2/perf_event_open.2:1131
4368 #, no-wrap
4369 msgid "I<cap_usr_time>"
4370 msgstr ""
4371
4372 #. type: Plain text
4373 #: build/C/man2/perf_event_open.2:1134
4374 msgid "User time capability"
4375 msgstr ""
4376
4377 #. type: TP
4378 #: build/C/man2/perf_event_open.2:1134
4379 #, no-wrap
4380 msgid "I<cap_usr_rdpmc>"
4381 msgstr ""
4382
4383 #. type: Plain text
4384 #: build/C/man2/perf_event_open.2:1139
4385 msgid ""
4386 "If the hardware supports user-space read of performance counters without "
4387 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4388 "can be used to do a read:"
4389 msgstr ""
4390
4391 #. type: Plain text
4392 #: build/C/man2/perf_event_open.2:1146
4393 #, no-wrap
4394 msgid ""
4395 "u32 seq, time_mult, time_shift, idx, width;\n"
4396 "u64 count, enabled, running;\n"
4397 "u64 cyc, time_offset;\n"
4398 "s64 pmc = 0;\n"
4399 msgstr ""
4400
4401 #. type: Plain text
4402 #: build/C/man2/perf_event_open.2:1152
4403 #, no-wrap
4404 msgid ""
4405 "do {\n"
4406 "    seq = pc-E<gt>lock;\n"
4407 "    barrier();\n"
4408 "    enabled = pc-E<gt>time_enabled;\n"
4409 "    running = pc-E<gt>time_running;\n"
4410 msgstr ""
4411
4412 #. type: Plain text
4413 #: build/C/man2/perf_event_open.2:1159
4414 #, no-wrap
4415 msgid ""
4416 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4417 "        cyc = rdtsc();\n"
4418 "        time_offset = pc-E<gt>time_offset;\n"
4419 "        time_mult   = pc-E<gt>time_mult;\n"
4420 "        time_shift  = pc-E<gt>time_shift;\n"
4421 "    }\n"
4422 msgstr ""
4423
4424 #. type: Plain text
4425 #: build/C/man2/perf_event_open.2:1162
4426 #, no-wrap
4427 msgid ""
4428 "    idx = pc-E<gt>index;\n"
4429 "    count = pc-E<gt>offset;\n"
4430 msgstr ""
4431
4432 #. type: Plain text
4433 #: build/C/man2/perf_event_open.2:1167
4434 #, no-wrap
4435 msgid ""
4436 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4437 "        width = pc-E<gt>pmc_width;\n"
4438 "        pmc = rdpmc(idx - 1);\n"
4439 "    }\n"
4440 msgstr ""
4441
4442 #. type: Plain text
4443 #: build/C/man2/perf_event_open.2:1170
4444 #, no-wrap
4445 msgid ""
4446 "    barrier();\n"
4447 "} while (pc-E<gt>lock != seq);\n"
4448 msgstr ""
4449
4450 #. type: TP
4451 #: build/C/man2/perf_event_open.2:1172
4452 #, no-wrap
4453 msgid "I<pmc_width>"
4454 msgstr ""
4455
4456 #. type: Plain text
4457 #: build/C/man2/perf_event_open.2:1179
4458 msgid ""
4459 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4460 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4461 "the result like:"
4462 msgstr ""
4463
4464 #. type: Plain text
4465 #: build/C/man2/perf_event_open.2:1185
4466 #, no-wrap
4467 msgid ""
4468 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4469 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4470 "count += pmc;\n"
4471 msgstr ""
4472
4473 #. type: TP
4474 #: build/C/man2/perf_event_open.2:1187
4475 #, no-wrap
4476 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4477 msgstr ""
4478
4479 #. type: Plain text
4480 #: build/C/man2/perf_event_open.2:1194
4481 msgid ""
4482 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4483 "time_enabled (in nanoseconds) using rdtsc or similar."
4484 msgstr ""
4485
4486 #. type: Plain text
4487 #: build/C/man2/perf_event_open.2:1202
4488 #, no-wrap
4489 msgid ""
4490 "    u64 quot, rem;\n"
4491 "    u64 delta;\n"
4492 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4493 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4494 "    delta = time_offset + quot * time_mult +\n"
4495 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4496 msgstr ""
4497
4498 #. type: Plain text
4499 #: build/C/man2/perf_event_open.2:1214
4500 msgid ""
4501 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4502 "the seqcount loop described above.  This delta can then be added to enabled "
4503 "and possible running (if idx), improving the scaling:"
4504 msgstr ""
4505
4506 #. type: Plain text
4507 #: build/C/man2/perf_event_open.2:1222
4508 #, no-wrap
4509 msgid ""
4510 "    enabled += delta;\n"
4511 "    if (idx)\n"
4512 "        running += delta;\n"
4513 "    quot = count / running;\n"
4514 "    rem  = count % running;\n"
4515 "    count = quot * enabled + (rem * enabled) / running;\n"
4516 msgstr ""
4517
4518 #. type: TP
4519 #: build/C/man2/perf_event_open.2:1223
4520 #, no-wrap
4521 msgid "I<data_head>"
4522 msgstr ""
4523
4524 #. type: Plain text
4525 #: build/C/man2/perf_event_open.2:1229
4526 msgid ""
4527 "This points to the head of the data section.  The value continuously "
4528 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4529 "size of the mmap buffer before accessing the samples."
4530 msgstr ""
4531
4532 #. type: Plain text
4533 #: build/C/man2/perf_event_open.2:1232
4534 msgid ""
4535 "On SMP-capable platforms, after reading the data_head value, user space "
4536 "should issue an rmb()."
4537 msgstr ""
4538
4539 #. type: TP
4540 #: build/C/man2/perf_event_open.2:1232
4541 #, no-wrap
4542 msgid "I<data_tail;>"
4543 msgstr ""
4544
4545 #. type: Plain text
4546 #: build/C/man2/perf_event_open.2:1240
4547 msgid ""
4548 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4549 "by user space to reflect the last read data.  In this case the kernel will "
4550 "not over-write unread data."
4551 msgstr ""
4552
4553 #. type: Plain text
4554 #: build/C/man2/perf_event_open.2:1242
4555 msgid "The following 2^n ring-buffer pages have the layout described below."
4556 msgstr ""
4557
4558 #. type: Plain text
4559 #: build/C/man2/perf_event_open.2:1256
4560 msgid ""
4561 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4562 "the sample_type selected fields related to where/when (identity)  an event "
4563 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4564 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4565 "I<perf_event_header> and the fields already present for the existing fields, "
4566 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4567 "supported by older perf tools, with these new optional fields being ignored."
4568 msgstr ""
4569
4570 #. type: Plain text
4571 #: build/C/man2/perf_event_open.2:1258
4572 msgid "The mmap values start with a header:"
4573 msgstr ""
4574
4575 #. type: Plain text
4576 #: build/C/man2/perf_event_open.2:1266
4577 #, no-wrap
4578 msgid ""
4579 "struct perf_event_header {\n"
4580 "    __u32   type;\n"
4581 "    __u16   misc;\n"
4582 "    __u16   size;\n"
4583 "};\n"
4584 msgstr ""
4585
4586 #. type: Plain text
4587 #: build/C/man2/perf_event_open.2:1272
4588 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4589 msgstr ""
4590
4591 #. type: Plain text
4592 #: build/C/man2/perf_event_open.2:1281
4593 msgid ""
4594 "The I<type> value is one of the below.  The values in the corresponding "
4595 "record (that follows the header)  depend on the I<type> selected as shown."
4596 msgstr ""
4597
4598 #. type: TP
4599 #: build/C/man2/perf_event_open.2:1282
4600 #, no-wrap
4601 msgid "B<PERF_RECORD_MMAP>"
4602 msgstr ""
4603
4604 #. type: Plain text
4605 #: build/C/man2/perf_event_open.2:1289
4606 msgid ""
4607 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4608 "user-space IPs to code.  They have the following structure:"
4609 msgstr ""
4610
4611 #. type: Plain text
4612 #: build/C/man2/perf_event_open.2:1300
4613 #, no-wrap
4614 msgid ""
4615 "struct {\n"
4616 "    struct perf_event_header header;\n"
4617 "    u32    pid, tid;\n"
4618 "    u64    addr;\n"
4619 "    u64    len;\n"
4620 "    u64    pgoff;\n"
4621 "    char   filename[];\n"
4622 "};\n"
4623 msgstr ""
4624
4625 #. type: TP
4626 #: build/C/man2/perf_event_open.2:1302
4627 #, no-wrap
4628 msgid "B<PERF_RECORD_LOST>"
4629 msgstr ""
4630
4631 #. type: Plain text
4632 #: build/C/man2/perf_event_open.2:1305
4633 msgid "This record indicates when events are lost."
4634 msgstr ""
4635
4636 #. type: Plain text
4637 #: build/C/man2/perf_event_open.2:1313
4638 #, no-wrap
4639 msgid ""
4640 "struct {\n"
4641 "    struct perf_event_header header;\n"
4642 "    u64 id;\n"
4643 "    u64 lost;\n"
4644 "};\n"
4645 msgstr ""
4646
4647 #. type: Plain text
4648 #: build/C/man2/perf_event_open.2:1319
4649 msgid "is the unique event ID for the samples that were lost."
4650 msgstr ""
4651
4652 #. type: TP
4653 #: build/C/man2/perf_event_open.2:1319
4654 #, no-wrap
4655 msgid "I<lost>"
4656 msgstr ""
4657
4658 #. type: Plain text
4659 #: build/C/man2/perf_event_open.2:1322
4660 #, fuzzy
4661 #| msgid "Returns the number of processes woken up."
4662 msgid "is the number of events that were lost."
4663 msgstr "wake したプロセスの数を返す。"
4664
4665 #. type: TP
4666 #: build/C/man2/perf_event_open.2:1323
4667 #, no-wrap
4668 msgid "B<PERF_RECORD_COMM>"
4669 msgstr ""
4670
4671 #. type: Plain text
4672 #: build/C/man2/perf_event_open.2:1326
4673 msgid "This record indicates a change in the process name."
4674 msgstr ""
4675
4676 #. type: Plain text
4677 #: build/C/man2/perf_event_open.2:1334
4678 #, no-wrap
4679 msgid ""
4680 "struct {\n"
4681 "    struct perf_event_header header;\n"
4682 "    u32 pid, tid;\n"
4683 "    char comm[];\n"
4684 "};\n"
4685 msgstr ""
4686
4687 #. type: TP
4688 #: build/C/man2/perf_event_open.2:1336
4689 #, fuzzy, no-wrap
4690 #| msgid "B<PTRACE_EVENT_EXIT>"
4691 msgid "B<PERF_RECORD_EXIT>"
4692 msgstr "B<PTRACE_EVENT_EXIT>"
4693
4694 #. type: Plain text
4695 #: build/C/man2/perf_event_open.2:1339
4696 msgid "This record indicates a process exit event."
4697 msgstr ""
4698
4699 #. type: Plain text
4700 #: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
4701 #, no-wrap
4702 msgid ""
4703 "struct {\n"
4704 "    struct perf_event_header header;\n"
4705 "    u32 pid, ppid;\n"
4706 "    u32 tid, ptid;\n"
4707 "    u64 time;\n"
4708 "};\n"
4709 msgstr ""
4710
4711 #. type: TP
4712 #: build/C/man2/perf_event_open.2:1350
4713 #, no-wrap
4714 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4715 msgstr ""
4716
4717 #. type: Plain text
4718 #: build/C/man2/perf_event_open.2:1353
4719 msgid "This record indicates a throttle/unthrottle event."
4720 msgstr ""
4721
4722 #. type: Plain text
4723 #: build/C/man2/perf_event_open.2:1362
4724 #, no-wrap
4725 msgid ""
4726 "struct {\n"
4727 "    struct perf_event_header header;\n"
4728 "    u64 time;\n"
4729 "    u64 id;\n"
4730 "    u64 stream_id;\n"
4731 "};\n"
4732 msgstr ""
4733
4734 #. type: TP
4735 #: build/C/man2/perf_event_open.2:1364
4736 #, fuzzy, no-wrap
4737 #| msgid "B<PTRACE_EVENT_FORK>"
4738 msgid "B<PERF_RECORD_FORK>"
4739 msgstr "B<PTRACE_EVENT_FORK>"
4740
4741 #. type: Plain text
4742 #: build/C/man2/perf_event_open.2:1367
4743 msgid "This record indicates a fork event."
4744 msgstr ""
4745
4746 #. type: TP
4747 #: build/C/man2/perf_event_open.2:1378
4748 #, no-wrap
4749 msgid "B<PERF_RECORD_READ>"
4750 msgstr ""
4751
4752 #. type: Plain text
4753 #: build/C/man2/perf_event_open.2:1381
4754 msgid "This record indicates a read event."
4755 msgstr ""
4756
4757 #. type: Plain text
4758 #: build/C/man2/perf_event_open.2:1389
4759 #, no-wrap
4760 msgid ""
4761 "struct {\n"
4762 "    struct perf_event_header header;\n"
4763 "    u32 pid, tid;\n"
4764 "    struct read_format values;\n"
4765 "};\n"
4766 msgstr ""
4767
4768 #. type: TP
4769 #: build/C/man2/perf_event_open.2:1391
4770 #, no-wrap
4771 msgid "B<PERF_RECORD_SAMPLE>"
4772 msgstr ""
4773
4774 #. type: Plain text
4775 #: build/C/man2/perf_event_open.2:1394
4776 msgid "This record indicates a sample."
4777 msgstr ""
4778
4779 #. type: Plain text
4780 #: build/C/man2/perf_event_open.2:1422
4781 #, no-wrap
4782 msgid ""
4783 "struct {\n"
4784 "    struct perf_event_header header;\n"
4785 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4786 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4787 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4788 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4789 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4790 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4791 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4792 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4793 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4794 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4795 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4796 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4797 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4798 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4799 "    struct perf_branch_entry lbr[bnr];\n"
4800 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4801 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4802 "    u64   regs[weight(mask)];\n"
4803 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4804 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4805 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4806 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4807 "};\n"
4808 msgstr ""
4809
4810 #. type: TP
4811 #: build/C/man2/perf_event_open.2:1424
4812 #, no-wrap
4813 msgid "I<ip>"
4814 msgstr ""
4815
4816 #. type: Plain text
4817 #: build/C/man2/perf_event_open.2:1430
4818 msgid ""
4819 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4820 "included."
4821 msgstr ""
4822
4823 #. type: TP
4824 #: build/C/man2/perf_event_open.2:1430
4825 #, no-wrap
4826 msgid "I<pid>, I<tid>"
4827 msgstr ""
4828
4829 #. type: Plain text
4830 #: build/C/man2/perf_event_open.2:1436
4831 msgid ""
4832 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4833 "ID are included."
4834 msgstr ""
4835
4836 #. type: TP
4837 #: build/C/man2/perf_event_open.2:1436
4838 #, no-wrap
4839 msgid "I<time>"
4840 msgstr ""
4841
4842 #. type: Plain text
4843 #: build/C/man2/perf_event_open.2:1444
4844 msgid ""
4845 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4846 "This is obtained via local_clock() which is a hardware timestamp if "
4847 "available and the jiffies value if not."
4848 msgstr ""
4849
4850 #. type: TP
4851 #: build/C/man2/perf_event_open.2:1444
4852 #, no-wrap
4853 msgid "I<addr>"
4854 msgstr ""
4855
4856 #. type: Plain text
4857 #: build/C/man2/perf_event_open.2:1451
4858 msgid ""
4859 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4860 "is usually the address of a tracepoint, breakpoint, or software event; "
4861 "otherwise the value is 0."
4862 msgstr ""
4863
4864 #. type: Plain text
4865 #: build/C/man2/perf_event_open.2:1459
4866 msgid ""
4867 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4868 "event is a member of an event group, the group leader ID is returned.  This "
4869 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4870 msgstr ""
4871
4872 #. type: TP
4873 #: build/C/man2/perf_event_open.2:1459
4874 #, no-wrap
4875 msgid "I<stream_id>"
4876 msgstr ""
4877
4878 #. type: Plain text
4879 #: build/C/man2/perf_event_open.2:1469
4880 msgid ""
4881 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4882 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4883 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4884 msgstr ""
4885
4886 #. type: TP
4887 #: build/C/man2/perf_event_open.2:1469
4888 #, no-wrap
4889 msgid "I<cpu>, I<res>"
4890 msgstr ""
4891
4892 #. type: Plain text
4893 #: build/C/man2/perf_event_open.2:1476
4894 msgid ""
4895 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4896 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4897 msgstr ""
4898
4899 #. type: TP
4900 #: build/C/man2/perf_event_open.2:1476
4901 #, no-wrap
4902 msgid "I<period>"
4903 msgstr ""
4904
4905 #. type: Plain text
4906 #: build/C/man2/perf_event_open.2:1482
4907 msgid ""
4908 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4909 "sampling period is written."
4910 msgstr ""
4911
4912 #. type: TP
4913 #: build/C/man2/perf_event_open.2:1482
4914 #, no-wrap
4915 msgid "I<v>"
4916 msgstr ""
4917
4918 #. type: Plain text
4919 #: build/C/man2/perf_event_open.2:1493
4920 msgid ""
4921 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4922 "included which has values for all events in the event group.  The values "
4923 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4924 "time."
4925 msgstr ""
4926
4927 #. type: TP
4928 #: build/C/man2/perf_event_open.2:1493
4929 #, no-wrap
4930 msgid "I<nr>, I<ips[nr]>"
4931 msgstr ""
4932
4933 #. type: Plain text
4934 #: build/C/man2/perf_event_open.2:1501
4935 msgid ""
4936 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4937 "which indicates how many following 64-bit instruction pointers will follow.  "
4938 "This is the current callchain."
4939 msgstr ""
4940
4941 #. type: TP
4942 #: build/C/man2/perf_event_open.2:1501
4943 #, no-wrap
4944 msgid "I<size>, I<data[size]>"
4945 msgstr ""
4946
4947 #. type: Plain text
4948 #: build/C/man2/perf_event_open.2:1508
4949 msgid ""
4950 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4951 "included followed by an array of 8-bit values of length size.  The values "
4952 "are padded with 0 to have 64-bit alignment."
4953 msgstr ""
4954
4955 #. type: Plain text
4956 #: build/C/man2/perf_event_open.2:1513
4957 msgid ""
4958 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4959 "make any promises with respect to the stability of its content, it may vary "
4960 "depending on event, hardware, and kernel version."
4961 msgstr ""
4962
4963 #. type: TP
4964 #: build/C/man2/perf_event_open.2:1513
4965 #, no-wrap
4966 msgid "I<bnr>, I<lbr[bnr]>"
4967 msgstr ""
4968
4969 #. type: Plain text
4970 #: build/C/man2/perf_event_open.2:1524
4971 msgid ""
4972 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
4973 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
4974 "structures.  These structures have from, to, and flags values indicating the "
4975 "from and to addresses from the branches on the callstack."
4976 msgstr ""
4977
4978 #. type: TP
4979 #: build/C/man2/perf_event_open.2:1524
4980 #, no-wrap
4981 msgid "I<abi>, I<regs[weight(mask)]>"
4982 msgstr ""
4983
4984 #. type: Plain text
4985 #: build/C/man2/perf_event_open.2:1530
4986 msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
4987 msgstr ""
4988
4989 #. type: Plain text
4990 #: build/C/man2/perf_event_open.2:1536
4991 msgid ""
4992 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
4993 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
4994 msgstr ""
4995
4996 #. type: TP
4997 #: build/C/man2/perf_event_open.2:1536
4998 #, no-wrap
4999 msgid "I<size>, I<data[size]>, I<dyn_size>"
5000 msgstr ""
5001
5002 #. type: Plain text
5003 #: build/C/man2/perf_event_open.2:1542
5004 msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
5005 msgstr ""
5006
5007 #. type: TP
5008 #: build/C/man2/perf_event_open.2:1544
5009 #, no-wrap
5010 msgid "I<misc>"
5011 msgstr ""
5012
5013 #. type: Plain text
5014 #: build/C/man2/perf_event_open.2:1549
5015 msgid "The I<misc> field contains additional information about the sample."
5016 msgstr ""
5017
5018 #. type: Plain text
5019 #: build/C/man2/perf_event_open.2:1554
5020 msgid ""
5021 "The CPU mode can be determined from this value by masking with "
5022 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5023 "these are not bit masks, only one can be set at a time):"
5024 msgstr ""
5025
5026 #. type: TP
5027 #: build/C/man2/perf_event_open.2:1555
5028 #, no-wrap
5029 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5030 msgstr ""
5031
5032 #. type: Plain text
5033 #: build/C/man2/perf_event_open.2:1558
5034 msgid "Unknown CPU mode."
5035 msgstr ""
5036
5037 #. type: TP
5038 #: build/C/man2/perf_event_open.2:1558
5039 #, no-wrap
5040 msgid "B<PERF_RECORD_MISC_KERNEL>"
5041 msgstr ""
5042
5043 #. type: Plain text
5044 #: build/C/man2/perf_event_open.2:1561
5045 msgid "Sample happened in the kernel."
5046 msgstr ""
5047
5048 #. type: TP
5049 #: build/C/man2/perf_event_open.2:1561
5050 #, no-wrap
5051 msgid "B<PERF_RECORD_MISC_USER>"
5052 msgstr ""
5053
5054 #. type: Plain text
5055 #: build/C/man2/perf_event_open.2:1564
5056 msgid "Sample happened in user code."
5057 msgstr ""
5058
5059 #. type: TP
5060 #: build/C/man2/perf_event_open.2:1564
5061 #, no-wrap
5062 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5063 msgstr ""
5064
5065 #. type: Plain text
5066 #: build/C/man2/perf_event_open.2:1567
5067 msgid "Sample happened in the hypervisor."
5068 msgstr ""
5069
5070 #. type: TP
5071 #: build/C/man2/perf_event_open.2:1567
5072 #, no-wrap
5073 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5074 msgstr ""
5075
5076 #. type: Plain text
5077 #: build/C/man2/perf_event_open.2:1570
5078 msgid "Sample happened in the guest kernel."
5079 msgstr ""
5080
5081 #. type: TP
5082 #: build/C/man2/perf_event_open.2:1570
5083 #, no-wrap
5084 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5085 msgstr ""
5086
5087 #. type: Plain text
5088 #: build/C/man2/perf_event_open.2:1573
5089 msgid "Sample happened in guest user code."
5090 msgstr ""
5091
5092 #. type: Plain text
5093 #: build/C/man2/perf_event_open.2:1576
5094 msgid "In addition, one of the following bits can be set:"
5095 msgstr ""
5096
5097 #. type: TP
5098 #: build/C/man2/perf_event_open.2:1577
5099 #, no-wrap
5100 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5101 msgstr ""
5102
5103 #. type: Plain text
5104 #: build/C/man2/perf_event_open.2:1585
5105 msgid ""
5106 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5107 "instruction that triggered the event.  See also I<perf_event_attr."
5108 "precise_ip>."
5109 msgstr ""
5110
5111 #. type: TP
5112 #: build/C/man2/perf_event_open.2:1585
5113 #, no-wrap
5114 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5115 msgstr ""
5116
5117 #. type: Plain text
5118 #: build/C/man2/perf_event_open.2:1588
5119 msgid "This indicates there is extended data available (currently not used)."
5120 msgstr ""
5121
5122 #. type: Plain text
5123 #: build/C/man2/perf_event_open.2:1591
5124 msgid "This indicates the size of the record."
5125 msgstr ""
5126
5127 #. type: SS
5128 #: build/C/man2/perf_event_open.2:1592
5129 #, no-wrap
5130 msgid "Signal overflow"
5131 msgstr ""
5132
5133 #. type: Plain text
5134 #: build/C/man2/perf_event_open.2:1601
5135 msgid ""
5136 "Events can be set to deliver a signal when a threshold is crossed.  The "
5137 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5138 "and B<fcntl>(2), system calls."
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man2/perf_event_open.2:1605
5143 msgid ""
5144 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5145 "non-zero value)."
5146 msgstr ""
5147
5148 #. type: Plain text
5149 #: build/C/man2/perf_event_open.2:1607
5150 msgid "There are two ways to generate signals."
5151 msgstr ""
5152
5153 #. type: Plain text
5154 #: build/C/man2/perf_event_open.2:1617
5155 msgid ""
5156 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5157 "will generate a signal if a certain number of samples or bytes have been "
5158 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5159 "is sent."
5160 msgstr ""
5161
5162 #. type: Plain text
5163 #: build/C/man2/perf_event_open.2:1629
5164 msgid ""
5165 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5166 "adds to a counter that decrements each time the event overflows.  When non-"
5167 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5168 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5169 msgstr ""
5170
5171 #.  FIXME(Vince) : Find out when this was introduced
5172 #. type: Plain text
5173 #: build/C/man2/perf_event_open.2:1635
5174 msgid ""
5175 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5176 "for every overflow, even if I<wakeup_events> is not set."
5177 msgstr ""
5178
5179 #. type: SS
5180 #: build/C/man2/perf_event_open.2:1635
5181 #, no-wrap
5182 msgid "rdpmc instruction"
5183 msgstr ""
5184
5185 #. type: Plain text
5186 #: build/C/man2/perf_event_open.2:1642
5187 msgid ""
5188 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5189 "low-latency reads without having to enter the kernel.  Note that using "
5190 "I<rdpmc> is not necessarily faster than other methods for reading event "
5191 "values."
5192 msgstr ""
5193
5194 #. type: Plain text
5195 #: build/C/man2/perf_event_open.2:1647
5196 msgid ""
5197 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5198 "page; documentation on how to calculate event values can be found in that "
5199 "section."
5200 msgstr ""
5201
5202 #. type: SS
5203 #: build/C/man2/perf_event_open.2:1647
5204 #, no-wrap
5205 msgid "perf_event ioctl calls"
5206 msgstr ""
5207
5208 #. type: Plain text
5209 #: build/C/man2/perf_event_open.2:1652
5210 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5211 msgstr ""
5212
5213 #. type: TP
5214 #: build/C/man2/perf_event_open.2:1652
5215 #, fuzzy, no-wrap
5216 #| msgid "B<PTRACE_EVENT_CLONE>"
5217 msgid "B<PERF_EVENT_IOC_ENABLE>"
5218 msgstr "B<PTRACE_EVENT_CLONE>"
5219
5220 #. type: Plain text
5221 #: build/C/man2/perf_event_open.2:1656
5222 msgid ""
5223 "Enables the individual event or event group specified by the file descriptor "
5224 "argument."
5225 msgstr ""
5226
5227 #. type: Plain text
5228 #: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671
5229 #: build/C/man2/perf_event_open.2:1699
5230 msgid "The ioctl argument is ignored."
5231 msgstr ""
5232
5233 #. type: TP
5234 #: build/C/man2/perf_event_open.2:1658
5235 #, fuzzy, no-wrap
5236 #| msgid "B<PTRACE_EVENT_CLONE>"
5237 msgid "B<PERF_EVENT_IOC_DISABLE>"
5238 msgstr "B<PTRACE_EVENT_CLONE>"
5239
5240 #. type: Plain text
5241 #: build/C/man2/perf_event_open.2:1662
5242 msgid ""
5243 "Disables the individual counter or event group specified by the file "
5244 "descriptor argument."
5245 msgstr ""
5246
5247 #. type: Plain text
5248 #: build/C/man2/perf_event_open.2:1669
5249 msgid ""
5250 "Enabling or disabling the leader of a group enables or disables the entire "
5251 "group; that is, while the group leader is disabled, none of the counters in "
5252 "the group will count.  Enabling or disabling a member of a group other than "
5253 "the leader only affects that counter; disabling a non-leader stops that "
5254 "counter from counting but doesn't affect any other counter."
5255 msgstr ""
5256
5257 #. type: TP
5258 #: build/C/man2/perf_event_open.2:1671
5259 #, fuzzy, no-wrap
5260 #| msgid "B<PTRACE_EVENT_FORK>"
5261 msgid "B<PERF_EVENT_IOC_REFRESH>"
5262 msgstr "B<PTRACE_EVENT_FORK>"
5263
5264 #. type: Plain text
5265 #: build/C/man2/perf_event_open.2:1685
5266 msgid ""
5267 "Non-inherited overflow counters can use this to enable a counter for a "
5268 "number of overflows specified by the argument, after which it is disabled.  "
5269 "Subsequent calls of this ioctl add the argument value to the current count.  "
5270 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5271 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5272 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5273 msgstr ""
5274
5275 #. type: TP
5276 #: build/C/man2/perf_event_open.2:1685
5277 #, fuzzy, no-wrap
5278 #| msgid "B<PTRACE_EVENT_FORK>"
5279 msgid "B<PERF_EVENT_IOC_RESET>"
5280 msgstr "B<PTRACE_EVENT_FORK>"
5281
5282 #. type: Plain text
5283 #: build/C/man2/perf_event_open.2:1697
5284 msgid ""
5285 "Reset the event count specified by the file descriptor argumentto zero.  "
5286 "This only resets the counts; there is no way to reset the multiplexing "
5287 "I<time_enabled> or I<time_running> values.  When sent to a group leader, "
5288 "only the leader is reset (child events are not)."
5289 msgstr ""
5290
5291 #. type: TP
5292 #: build/C/man2/perf_event_open.2:1699
5293 #, fuzzy, no-wrap
5294 #| msgid "B<PTRACE_EVENT_FORK>"
5295 msgid "B<PERF_EVENT_IOC_PERIOD>"
5296 msgstr "B<PTRACE_EVENT_FORK>"
5297
5298 #. type: Plain text
5299 #: build/C/man2/perf_event_open.2:1703
5300 msgid ""
5301 "IOC_PERIOD is the command to update the period; it does not update the "
5302 "current period but instead defers until next."
5303 msgstr ""
5304
5305 #. type: Plain text
5306 #: build/C/man2/perf_event_open.2:1706
5307 msgid ""
5308 "The argument is a pointer to a 64-bit value containing the desired new "
5309 "period."
5310 msgstr ""
5311
5312 #. type: TP
5313 #: build/C/man2/perf_event_open.2:1706
5314 #, no-wrap
5315 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5316 msgstr ""
5317
5318 #. type: Plain text
5319 #: build/C/man2/perf_event_open.2:1711
5320 msgid ""
5321 "This tells the kernel to report event notifications to the specified file "
5322 "descriptor rather than the default one.  The file descriptors must all be on "
5323 "the same CPU."
5324 msgstr ""
5325
5326 #. type: Plain text
5327 #: build/C/man2/perf_event_open.2:1714
5328 msgid ""
5329 "The argument specifies the desired file descriptor, or -1 if output should "
5330 "be ignored."
5331 msgstr ""
5332
5333 #. type: TP
5334 #: build/C/man2/perf_event_open.2:1714
5335 #, fuzzy, no-wrap
5336 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
5337 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5338 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
5339
5340 #. type: Plain text
5341 #: build/C/man2/perf_event_open.2:1717
5342 msgid "This adds an ftrace filter to this event."
5343 msgstr ""
5344
5345 #. type: Plain text
5346 #: build/C/man2/perf_event_open.2:1719
5347 msgid "The argument is a pointer to the desired ftrace filter."
5348 msgstr ""
5349
5350 #. type: SS
5351 #: build/C/man2/perf_event_open.2:1719
5352 #, no-wrap
5353 msgid "Using prctl"
5354 msgstr ""
5355
5356 #. type: Plain text
5357 #: build/C/man2/perf_event_open.2:1732
5358 msgid ""
5359 "A process can enable or disable all the event groups that are attached to it "
5360 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5361 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5362 "the current process, whether created by this process or by another, and does "
5363 "not affect any counters that this process has created on other processes.  "
5364 "It only enables or disables the group leaders, not any other members in the "
5365 "groups."
5366 msgstr ""
5367
5368 #. type: SS
5369 #: build/C/man2/perf_event_open.2:1732
5370 #, no-wrap
5371 msgid "perf_event related configuration files"
5372 msgstr ""
5373
5374 #. type: Plain text
5375 #: build/C/man2/perf_event_open.2:1735
5376 msgid "Files in I</proc/sys/kernel/>"
5377 msgstr ""
5378
5379 #. type: TP
5380 #: build/C/man2/perf_event_open.2:1736
5381 #, no-wrap
5382 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5383 msgstr ""
5384
5385 #. type: Plain text
5386 #: build/C/man2/perf_event_open.2:1742
5387 msgid ""
5388 "The I<perf_event_paranoid> file can be set to restrict access to the "
5389 "performance counters."
5390 msgstr ""
5391
5392 #. type: Plain text
5393 #: build/C/man2/perf_event_open.2:1744
5394 msgid "2 - only allow user-space measurements"
5395 msgstr ""
5396
5397 #. type: Plain text
5398 #: build/C/man2/perf_event_open.2:1746
5399 msgid "1 - (default) allow both kernel and user measurements"
5400 msgstr ""
5401
5402 #. type: Plain text
5403 #: build/C/man2/perf_event_open.2:1748
5404 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5405 msgstr ""
5406
5407 #. type: Plain text
5408 #: build/C/man2/perf_event_open.2:1750
5409 msgid "-1 - no restrictions"
5410 msgstr ""
5411
5412 #. type: Plain text
5413 #: build/C/man2/perf_event_open.2:1755
5414 msgid ""
5415 "The existence of the I<perf_event_paranoid> file is the official method for "
5416 "determining if a kernel supports B<perf_event_open>()."
5417 msgstr ""
5418
5419 #. type: TP
5420 #: build/C/man2/perf_event_open.2:1755
5421 #, no-wrap
5422 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5423 msgstr ""
5424
5425 #. type: Plain text
5426 #: build/C/man2/perf_event_open.2:1764
5427 msgid ""
5428 "This sets the maximum sample rate.  Setting this too high can allow users to "
5429 "sample at a rate that impacts overall machine performance and potentially "
5430 "lock up the machine.  The default value is 100000 (samples per second)."
5431 msgstr ""
5432
5433 #. type: TP
5434 #: build/C/man2/perf_event_open.2:1764
5435 #, no-wrap
5436 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5437 msgstr ""
5438
5439 #. type: Plain text
5440 #: build/C/man2/perf_event_open.2:1769
5441 msgid ""
5442 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5443 "516 (kB)."
5444 msgstr ""
5445
5446 #. type: Plain text
5447 #: build/C/man2/perf_event_open.2:1772
5448 msgid "Files in I</sys/bus/event_source/devices/>"
5449 msgstr ""
5450
5451 #. type: Plain text
5452 #: build/C/man2/perf_event_open.2:1778
5453 msgid ""
5454 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5455 "monitoring.  Information on how to program these PMUs can be found under I</"
5456 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5457 "different PMU."
5458 msgstr ""
5459
5460 #. type: TP
5461 #: build/C/man2/perf_event_open.2:1778
5462 #, no-wrap
5463 msgid "I</sys/bus/event_source/devices/*/type>"
5464 msgstr ""
5465
5466 #. type: Plain text
5467 #: build/C/man2/perf_event_open.2:1783
5468 msgid ""
5469 "This contains an integer that can be used in the I<type> field of "
5470 "perf_event_attr to indicate you wish to use this PMU."
5471 msgstr ""
5472
5473 #. type: TP
5474 #: build/C/man2/perf_event_open.2:1783
5475 #, no-wrap
5476 msgid "I</sys/bus/event_source/devices/*/rdpmc>"
5477 msgstr ""
5478
5479 #. type: TP
5480 #: build/C/man2/perf_event_open.2:1786
5481 #, no-wrap
5482 msgid "I</sys/bus/event_source/devices/*/format/>"
5483 msgstr ""
5484
5485 #. type: Plain text
5486 #: build/C/man2/perf_event_open.2:1791
5487 msgid ""
5488 "This sub-directory contains information on what bits in the I<config> field "
5489 "of perf_event_attr correspond to."
5490 msgstr ""
5491
5492 #. type: TP
5493 #: build/C/man2/perf_event_open.2:1791
5494 #, no-wrap
5495 msgid "I</sys/bus/event_source/devices/*/events/>"
5496 msgstr ""
5497
5498 #. type: Plain text
5499 #: build/C/man2/perf_event_open.2:1800
5500 msgid ""
5501 "This sub-directory contains files with pre-defined events.  The contents are "
5502 "strings describing the event settings expressed in terms of the fields found "
5503 "in the I<./format/> directory.  These are not necessarily complete lists of "
5504 "all events supported by a PMU, but usually a subset of events deemed useful "
5505 "or interesting."
5506 msgstr ""
5507
5508 #. type: TP
5509 #: build/C/man2/perf_event_open.2:1800
5510 #, no-wrap
5511 msgid "I</sys/bus/event_source/devices/*/uevent>"
5512 msgstr ""
5513
5514 #. type: Plain text
5515 #: build/C/man2/perf_event_open.2:1810
5516 msgid ""
5517 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5518 "occurred (in which case, I<errno> is set appropriately)."
5519 msgstr ""
5520
5521 #. type: Plain text
5522 #: build/C/man2/perf_event_open.2:1814
5523 msgid "Returned if the specified event is not available."
5524 msgstr ""
5525
5526 #. type: TP
5527 #: build/C/man2/perf_event_open.2:1814
5528 #, fuzzy, no-wrap
5529 #| msgid "B<ENOSYS>"
5530 msgid "B<ENOSPC>"
5531 msgstr "B<ENOSYS>"
5532
5533 #. type: Plain text
5534 #: build/C/man2/perf_event_open.2:1824
5535 msgid ""
5536 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5537 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5538 "B<ENOSPC> is still returned if you try to read results into too small of a "
5539 "buffer."
5540 msgstr ""
5541
5542 #. type: SH
5543 #: build/C/man2/perf_event_open.2:1824
5544 #, fuzzy, no-wrap
5545 #| msgid "VERSIONS"
5546 msgid "VERSION"
5547 msgstr "バージョン"
5548
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1829
5551 msgid ""
5552 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5553 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5554 msgstr ""
5555
5556 #. type: Plain text
5557 #: build/C/man2/perf_event_open.2:1834
5558 #, fuzzy
5559 #| msgid ""
5560 #| "B<personality>()  is Linux-specific and should not be used in programs "
5561 #| "intended to be portable."
5562 msgid ""
5563 "This B<perf_event_open>()  system call Linux- specific and should not be "
5564 "used in programs intended to be portable."
5565 msgstr ""
5566 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5567 "はない。"
5568
5569 #. type: Plain text
5570 #: build/C/man2/perf_event_open.2:1838
5571 #, fuzzy
5572 #| msgid ""
5573 #| "Glibc does not provide a wrapper for this system call; call it using "
5574 #| "B<syscall>(2)."
5575 msgid ""
5576 "Glibc does not provide a wrapper for this system call; call it using "
5577 "B<syscall>(2).  See the example below."
5578 msgstr ""
5579 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5580 "(2)  を使って呼び出すこと。"
5581
5582 #. type: Plain text
5583 #: build/C/man2/perf_event_open.2:1844
5584 msgid ""
5585 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5586 "checking for the existence of the file I</proc/sys/kernel/"
5587 "perf_event_paranoid>."
5588 msgstr ""
5589
5590 #. type: SH
5591 #: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134
5592 #: build/C/man2/ptrace.2:1810
5593 #, no-wrap
5594 msgid "BUGS"
5595 msgstr "バグ"
5596
5597 #. type: Plain text
5598 #: build/C/man2/perf_event_open.2:1851
5599 msgid ""
5600 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5601 "signals in threads.  This was introduced in Linux 2.6.32."
5602 msgstr ""
5603
5604 #. type: Plain text
5605 #: build/C/man2/perf_event_open.2:1859
5606 msgid ""
5607 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5608 "could be scheduled together until read time.  The same happens on all known "
5609 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5610 "events works you have to B<perf_event_open>(), start, then read before you "
5611 "know for sure you can get valid measurements."
5612 msgstr ""
5613
5614 #. type: Plain text
5615 #: build/C/man2/perf_event_open.2:1863
5616 msgid ""
5617 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5618 "that case, some events would silently return \"0\" if the kernel scheduled "
5619 "them in an improper counter slot."
5620 msgstr ""
5621
5622 #. type: Plain text
5623 #: build/C/man2/perf_event_open.2:1866
5624 msgid ""
5625 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5626 "results could be returned."
5627 msgstr ""
5628
5629 #. type: Plain text
5630 #: build/C/man2/perf_event_open.2:1869
5631 msgid ""
5632 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5633 "\"inherit\" is enabled and many threads are started."
5634 msgstr ""
5635
5636 #. type: Plain text
5637 #: build/C/man2/perf_event_open.2:1873
5638 msgid ""
5639 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5640 "processes."
5641 msgstr ""
5642
5643 #. type: Plain text
5644 #: build/C/man2/perf_event_open.2:1878
5645 msgid ""
5646 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5647 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5648 "This behavior is unsupported and should not be relied on."
5649 msgstr ""
5650
5651 #. type: Plain text
5652 #: build/C/man2/perf_event_open.2:1884
5653 msgid ""
5654 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5655 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5656 "the union has a non-zero value in it."
5657 msgstr ""
5658
5659 #. type: Plain text
5660 #: build/C/man2/perf_event_open.2:1889
5661 msgid ""
5662 "Always double-check your results! Various generalized events have had wrong "
5663 "values.  For example, retired branches measured the wrong thing on AMD "
5664 "machines until Linux 2.6.35."
5665 msgstr ""
5666
5667 #. type: SH
5668 #: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295
5669 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5670 #, no-wrap
5671 msgid "EXAMPLE"
5672 msgstr "例"
5673
5674 #. type: Plain text
5675 #: build/C/man2/perf_event_open.2:1893
5676 msgid ""
5677 "The following is a short example that measures the total instruction count "
5678 "of a call to B<printf>(3)."
5679 msgstr ""
5680
5681 #. type: Plain text
5682 #: build/C/man2/perf_event_open.2:1902
5683 #, fuzzy, no-wrap
5684 #| msgid ""
5685 #| "#define _GNU_SOURCE\n"
5686 #| "#include E<lt>fcntl.hE<gt>\n"
5687 #| "#include E<lt>stdio.hE<gt>\n"
5688 #| "#include E<lt>stdlib.hE<gt>\n"
5689 #| "#include E<lt>unistd.hE<gt>\n"
5690 #| "#include E<lt>errno.hE<gt>\n"
5691 #| "#include E<lt>limits.hE<gt>\n"
5692 msgid ""
5693 "#include E<lt>stdlib.hE<gt>\n"
5694 "#include E<lt>stdio.hE<gt>\n"
5695 "#include E<lt>unistd.hE<gt>\n"
5696 "#include E<lt>string.hE<gt>\n"
5697 "#include E<lt>sys/ioctl.hE<gt>\n"
5698 "#include E<lt>linux/perf_event.hE<gt>\n"
5699 "#include E<lt>asm/unistd.hE<gt>\n"
5700 msgstr ""
5701 "#define _GNU_SOURCE\n"
5702 "#include E<lt>fcntl.hE<gt>\n"
5703 "#include E<lt>stdio.hE<gt>\n"
5704 "#include E<lt>stdlib.hE<gt>\n"
5705 "#include E<lt>unistd.hE<gt>\n"
5706 "#include E<lt>errno.hE<gt>\n"
5707 "#include E<lt>limits.hE<gt>\n"
5708
5709 #. type: Plain text
5710 #: build/C/man2/perf_event_open.2:1908
5711 #, no-wrap
5712 msgid ""
5713 "long\n"
5714 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5715 "                int cpu, int group_fd, unsigned long flags)\n"
5716 "{\n"
5717 "    int ret;\n"
5718 msgstr ""
5719
5720 #. type: Plain text
5721 #: build/C/man2/perf_event_open.2:1913
5722 #, no-wrap
5723 msgid ""
5724 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
5725 "                   group_fd, flags);\n"
5726 "    return ret;\n"
5727 "}\n"
5728 msgstr ""
5729
5730 #. type: Plain text
5731 #: build/C/man2/perf_event_open.2:1920
5732 #, fuzzy, no-wrap
5733 #| msgid ""
5734 #| "int\n"
5735 #| "main(int argc, char *argv[])\n"
5736 #| "{\n"
5737 #| "    int fd;\n"
5738 #| "    int len, slen;\n"
5739 msgid ""
5740 "int\n"
5741 "main(int argc, char **argv)\n"
5742 "{\n"
5743 "    struct perf_event_attr pe;\n"
5744 "    long long count;\n"
5745 "    int fd;\n"
5746 msgstr ""
5747 "int\n"
5748 "main(int argc, char *argv[])\n"
5749 "{\n"
5750 "    int fd;\n"
5751 "    int len, slen;\n"
5752
5753 #. type: Plain text
5754 #: build/C/man2/perf_event_open.2:1928
5755 #, no-wrap
5756 msgid ""
5757 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
5758 "    pe.type = PERF_TYPE_HARDWARE;\n"
5759 "    pe.size = sizeof(struct perf_event_attr);\n"
5760 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
5761 "    pe.disabled = 1;\n"
5762 "    pe.exclude_kernel = 1;\n"
5763 "    pe.exclude_hv = 1;\n"
5764 msgstr ""
5765
5766 #. type: Plain text
5767 #: build/C/man2/perf_event_open.2:1934
5768 #, fuzzy, no-wrap
5769 #| msgid ""
5770 #| "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5771 #| "    if (fd == -1) {\n"
5772 #| "        perror(\"open\");\n"
5773 #| "        exit(EXIT_FAILURE);\n"
5774 #| "    }\n"
5775 msgid ""
5776 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
5777 "    if (fd == -1) {\n"
5778 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
5779 "       exit(EXIT_FAILURE);\n"
5780 "    }\n"
5781 msgstr ""
5782 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
5783 "    if (fd == -1) {\n"
5784 "        perror(\"open\");\n"
5785 "        exit(EXIT_FAILURE);\n"
5786 "    }\n"
5787
5788 #. type: Plain text
5789 #: build/C/man2/perf_event_open.2:1937
5790 #, no-wrap
5791 msgid ""
5792 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
5793 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
5794 msgstr ""
5795
5796 #. type: Plain text
5797 #: build/C/man2/perf_event_open.2:1939
5798 #, no-wrap
5799 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
5800 msgstr ""
5801
5802 #. type: Plain text
5803 #: build/C/man2/perf_event_open.2:1942
5804 #, no-wrap
5805 msgid ""
5806 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
5807 "    read(fd, &count, sizeof(long long));\n"
5808 msgstr ""
5809
5810 #. type: Plain text
5811 #: build/C/man2/perf_event_open.2:1944
5812 #, no-wrap
5813 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
5814 msgstr ""
5815
5816 #. type: Plain text
5817 #: build/C/man2/perf_event_open.2:1947
5818 #, no-wrap
5819 msgid ""
5820 "    close(fd);\n"
5821 "}\n"
5822 msgstr ""
5823
5824 #. type: Plain text
5825 #: build/C/man2/perf_event_open.2:1954
5826 #, fuzzy
5827 #| msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5828 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
5829 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
5830
5831 #. type: TH
5832 #: build/C/man2/perfmonctl.2:27
5833 #, no-wrap
5834 msgid "PERFMONCTL"
5835 msgstr ""
5836
5837 #. type: Plain text
5838 #: build/C/man2/perfmonctl.2:30
5839 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
5840 msgstr ""
5841
5842 #. type: Plain text
5843 #: build/C/man2/perfmonctl.2:34
5844 #, fuzzy, no-wrap
5845 #| msgid ""
5846 #| "B<#include E<lt>sys/quota.hE<gt>>\n"
5847 #| "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5848 msgid ""
5849 "B<#include E<lt>syscall.hE<gt>>\n"
5850 "B<#include E<lt>perfmon.hE<gt>>\n"
5851 msgstr ""
5852 "B<#include E<lt>sys/quota.hE<gt>>\n"
5853 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
5854
5855 #. type: Plain text
5856 #: build/C/man2/perfmonctl.2:36
5857 #, fuzzy, no-wrap
5858 #| msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5859 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
5860 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
5861
5862 #. type: Plain text
5863 #: build/C/man2/perfmonctl.2:47
5864 msgid ""
5865 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
5866 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
5867 "monitoring data) registers and PMC (performance monitoring control) "
5868 "registers, which gather hardware statistics."
5869 msgstr ""
5870
5871 #. type: Plain text
5872 #: build/C/man2/perfmonctl.2:57
5873 msgid ""
5874 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
5875 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
5876 "I<fd> argument specifies the perfmon context to operate on."
5877 msgstr ""
5878
5879 #. type: Plain text
5880 #: build/C/man2/perfmonctl.2:61
5881 msgid "Supported values for I<cmd> are:"
5882 msgstr ""
5883
5884 #. type: TP
5885 #: build/C/man2/perfmonctl.2:61
5886 #, fuzzy, no-wrap
5887 #| msgid "B<PTRACE_CONT>"
5888 msgid "B<PFM_CREATE_CONTEXT>"
5889 msgstr "B<PTRACE_CONT>"
5890
5891 #. type: Plain text
5892 #: build/C/man2/perfmonctl.2:65
5893 #, no-wrap
5894 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
5895 msgstr ""
5896
5897 #. type: Plain text
5898 #: build/C/man2/perfmonctl.2:67
5899 msgid "Set up a context."
5900 msgstr ""
5901
5902 #. type: Plain text
5903 #: build/C/man2/perfmonctl.2:74
5904 msgid ""
5905 "The I<fd> parameter is ignored.  A new perfmon context is created as "
5906 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
5907 "E<gt>ctx_fd>."
5908 msgstr ""
5909
5910 #. type: Plain text
5911 #: build/C/man2/perfmonctl.2:86
5912 msgid ""
5913 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
5914 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
5915 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
5916 "B<epoll>(7)."
5917 msgstr ""
5918
5919 #. type: Plain text
5920 #: build/C/man2/perfmonctl.2:90
5921 msgid ""
5922 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
5923 msgstr ""
5924
5925 #. type: TP
5926 #: build/C/man2/perfmonctl.2:90
5927 #, no-wrap
5928 msgid "B<PFM_WRITE_PMCS>"
5929 msgstr ""
5930
5931 #. type: Plain text
5932 #: build/C/man2/perfmonctl.2:95
5933 #, no-wrap
5934 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
5935 msgstr ""
5936
5937 #. type: Plain text
5938 #: build/C/man2/perfmonctl.2:97
5939 msgid "Set PMC registers."
5940 msgstr ""
5941
5942 #. type: TP
5943 #: build/C/man2/perfmonctl.2:97
5944 #, no-wrap
5945 msgid "B<PFM_WRITE_PMDS>"
5946 msgstr ""
5947
5948 #. type: Plain text
5949 #: build/C/man2/perfmonctl.2:101
5950 #, no-wrap
5951 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5952 msgstr ""
5953
5954 #.  pfm_write_pmds()
5955 #. type: Plain text
5956 #: build/C/man2/perfmonctl.2:104
5957 msgid "Set PMD registers."
5958 msgstr ""
5959
5960 #. type: TP
5961 #: build/C/man2/perfmonctl.2:104
5962 #, no-wrap
5963 msgid "B<PFM_READ_PMDS>"
5964 msgstr ""
5965
5966 #. type: Plain text
5967 #: build/C/man2/perfmonctl.2:109
5968 #, no-wrap
5969 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
5970 msgstr ""
5971
5972 #. type: Plain text
5973 #: build/C/man2/perfmonctl.2:111
5974 msgid "Read PMD registers."
5975 msgstr ""
5976
5977 #. type: TP
5978 #: build/C/man2/perfmonctl.2:111
5979 #, no-wrap
5980 msgid "B<PFM_START>"
5981 msgstr ""
5982
5983 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
5984 #. type: Plain text
5985 #: build/C/man2/perfmonctl.2:117
5986 #, no-wrap
5987 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
5988 msgstr ""
5989
5990 #. type: Plain text
5991 #: build/C/man2/perfmonctl.2:119
5992 msgid "Start monitoring."
5993 msgstr ""
5994
5995 #. type: TP
5996 #: build/C/man2/perfmonctl.2:119
5997 #, no-wrap
5998 msgid "B<PFM_STOP>"
5999 msgstr ""
6000
6001 #. type: Plain text
6002 #: build/C/man2/perfmonctl.2:124
6003 #, no-wrap
6004 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6005 msgstr ""
6006
6007 #. type: Plain text
6008 #: build/C/man2/perfmonctl.2:126
6009 msgid "Stop monitoring."
6010 msgstr ""
6011
6012 #. type: TP
6013 #: build/C/man2/perfmonctl.2:126
6014 #, fuzzy, no-wrap
6015 #| msgid "B<PTRACE_CONT>"
6016 msgid "B<PFM_LOAD_CONTEXT>"
6017 msgstr "B<PTRACE_CONT>"
6018
6019 #. type: Plain text
6020 #: build/C/man2/perfmonctl.2:131
6021 #, no-wrap
6022 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6023 msgstr ""
6024
6025 #. type: Plain text
6026 #: build/C/man2/perfmonctl.2:133
6027 msgid "Attach the context to a thread."
6028 msgstr ""
6029
6030 #. type: TP
6031 #: build/C/man2/perfmonctl.2:133
6032 #, no-wrap
6033 msgid "B<PFM_UNLOAD_CONTEXT>"
6034 msgstr ""
6035
6036 #. type: Plain text
6037 #: build/C/man2/perfmonctl.2:138
6038 #, no-wrap
6039 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6040 msgstr ""
6041
6042 #. type: Plain text
6043 #: build/C/man2/perfmonctl.2:140
6044 msgid "Detach the context from a thread."
6045 msgstr ""
6046
6047 #. type: TP
6048 #: build/C/man2/perfmonctl.2:140
6049 #, no-wrap
6050 msgid "B<PFM_RESTART>"
6051 msgstr ""
6052
6053 #. type: Plain text
6054 #: build/C/man2/perfmonctl.2:145
6055 #, no-wrap
6056 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6057 msgstr ""
6058
6059 #. type: Plain text
6060 #: build/C/man2/perfmonctl.2:147
6061 msgid "Restart monitoring after receiving an overflow notification."
6062 msgstr ""
6063
6064 #. type: TP
6065 #: build/C/man2/perfmonctl.2:147
6066 #, fuzzy, no-wrap
6067 #| msgid "B<Q_GETSTATS>"
6068 msgid "B<PFM_GET_FEATURES>"
6069 msgstr "B<Q_GETSTATS>"
6070
6071 #. type: Plain text
6072 #: build/C/man2/perfmonctl.2:152
6073 #, no-wrap
6074 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6075 msgstr ""
6076
6077 #. type: TP
6078 #: build/C/man2/perfmonctl.2:153
6079 #, no-wrap
6080 msgid "B<PFM_DEBUG>"
6081 msgstr ""
6082
6083 #. type: Plain text
6084 #: build/C/man2/perfmonctl.2:158
6085 #, no-wrap
6086 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6087 msgstr ""
6088
6089 #. type: Plain text
6090 #: build/C/man2/perfmonctl.2:162
6091 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6092 msgstr ""
6093
6094 #. type: TP
6095 #: build/C/man2/perfmonctl.2:162
6096 #, no-wrap
6097 msgid "B<PFM_GET_PMC_RESET_VAL>"
6098 msgstr ""
6099
6100 #. type: Plain text
6101 #: build/C/man2/perfmonctl.2:167
6102 #, no-wrap
6103 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6104 msgstr ""
6105
6106 #
6107 #
6108 #
6109 #.  .TP
6110 #.  .B PFM_CREATE_EVTSETS
6111 #.  create or modify event sets
6112 #.  .nf
6113 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6114 #.  .fi
6115 #.  .TP
6116 #.  .B PFM_DELETE_EVTSETS
6117 #.  delete event sets
6118 #.  .nf
6119 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6120 #.  .fi
6121 #.  .TP
6122 #.  .B PFM_GETINFO_EVTSETS
6123 #.  get information about event sets
6124 #.  .nf
6125 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6126 #.  .fi
6127 #. type: Plain text
6128 #: build/C/man2/perfmonctl.2:190
6129 msgid "Reset PMC registers to default values."
6130 msgstr ""
6131
6132 #. type: Plain text
6133 #: build/C/man2/perfmonctl.2:196
6134 #, fuzzy
6135 #| msgid ""
6136 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6137 #| "I<errno> is set to indicate the error."
6138 msgid ""
6139 "B<performctl>()  returns zero when the operation is successful.  On error, "
6140 "-1 is returned and I<errno> is set to indicate the cause of the error."
6141 msgstr ""
6142 "成功すると、 B<kexec_load> は 0 を返す。\n"
6143 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6144
6145 #. type: Plain text
6146 #: build/C/man2/perfmonctl.2:199
6147 #, fuzzy
6148 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6149 msgid "B<perfmonctl>()  is available since Linux 2.4."
6150 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6151
6152 #. type: Plain text
6153 #: build/C/man2/perfmonctl.2:202
6154 msgid ""
6155 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6156 "architecture."
6157 msgstr ""
6158
6159 #. type: Plain text
6160 #: build/C/man2/perfmonctl.2:207
6161 msgid "B<gprof>(1)"
6162 msgstr ""
6163
6164 #. type: Plain text
6165 #: build/C/man2/perfmonctl.2:209
6166 msgid "The perfmon2 interface specification"
6167 msgstr ""
6168
6169 #. type: TH
6170 #: build/C/man2/personality.2:32
6171 #, no-wrap
6172 msgid "PERSONALITY"
6173 msgstr "PERSONALITY"
6174
6175 #. type: TH
6176 #: build/C/man2/personality.2:32
6177 #, no-wrap
6178 msgid "2003-01-01"
6179 msgstr "2003-01-01"
6180
6181 #. type: Plain text
6182 #: build/C/man2/personality.2:35
6183 msgid "personality - set the process execution domain"
6184 msgstr "personality - プロセスを実行するドメインを設定する"
6185
6186 #. type: Plain text
6187 #: build/C/man2/personality.2:37
6188 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6189 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6190
6191 #. type: Plain text
6192 #: build/C/man2/personality.2:39
6193 msgid "B<int personality(unsigned long >I<persona>B<);>"
6194 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6195
6196 #. type: Plain text
6197 #: build/C/man2/personality.2:47
6198 msgid ""
6199 "Linux supports different execution domains, or personalities, for each "
6200 "process.  Among other things, execution domains tell Linux how to map signal "
6201 "numbers into signal actions.  The execution domain system allows Linux to "
6202 "provide limited support for binaries compiled under other UNIX-like "
6203 "operating systems."
6204 msgstr ""
6205 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6206 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6207 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6208 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6209 "対する限定的なサポートを提供している。"
6210
6211 #. type: Plain text
6212 #: build/C/man2/personality.2:57
6213 msgid ""
6214 "This function will return the current B<personality>()  when I<persona> "
6215 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6216 "by I<persona> the new execution domain of the calling process."
6217 msgstr ""
6218 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6219 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6220 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6221
6222 #. type: Plain text
6223 #: build/C/man2/personality.2:64
6224 msgid ""
6225 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6226 "and I<errno> is set appropriately."
6227 msgstr ""
6228 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6229 "I<errno> が適切に設定される。"
6230
6231 #. type: Plain text
6232 #: build/C/man2/personality.2:68
6233 msgid "The kernel was unable to change the personality."
6234 msgstr "カーネルがパーソナリティを変更できなかった。"
6235
6236 #. type: Plain text
6237 #: build/C/man2/personality.2:72
6238 msgid ""
6239 "B<personality>()  is Linux-specific and should not be used in programs "
6240 "intended to be portable."
6241 msgstr ""
6242 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6243 "はない。"
6244
6245 #. type: TH
6246 #: build/C/man2/pivot_root.2:10
6247 #, no-wrap
6248 msgid "PIVOT_ROOT"
6249 msgstr "PIVOT_ROOT"
6250
6251 #. type: Plain text
6252 #: build/C/man2/pivot_root.2:13
6253 msgid "pivot_root - change the root file system"
6254 msgstr "pivot_root - root ファイルシステムを変更する"
6255
6256 #. type: Plain text
6257 #: build/C/man2/pivot_root.2:15
6258 msgid ""
6259 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6260 msgstr ""
6261 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6262
6263 #.  The
6264 #.  .B CAP_SYS_ADMIN
6265 #.  capability is required.
6266 #. type: Plain text
6267 #: build/C/man2/pivot_root.2:27
6268 msgid ""
6269 "B<pivot_root>()  moves the root file system of the calling process to the "
6270 "directory I<put_old> and makes I<new_root> the new root file system of the "
6271 "calling process."
6272 msgstr ""
6273 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6274 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6275 "ルシステムにする。"
6276
6277 #. type: Plain text
6278 #: build/C/man2/pivot_root.2:34
6279 msgid ""
6280 "The typical use of B<pivot_root>()  is during system startup, when the "
6281 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6282 "the real root file system, and eventually turns the latter into the current "
6283 "root of all relevant processes or threads."
6284 msgstr ""
6285 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6286 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6287 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6288 "レント root に変更するような場合である。"
6289
6290 #. type: Plain text
6291 #: build/C/man2/pivot_root.2:46
6292 msgid ""
6293 "B<pivot_root>()  may or may not change the current root and the current "
6294 "working directory of any processes or threads which use the old root "
6295 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6296 "root or current working directory at the old root operate correctly in "
6297 "either case.  An easy way to ensure this is to change their root and current "
6298 "working directory to I<new_root> before invoking B<pivot_root>()."
6299 msgstr ""
6300 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6301 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6302 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6303 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6304 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6305 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6306 "更しておくことである。"
6307
6308 #. type: Plain text
6309 #: build/C/man2/pivot_root.2:64
6310 msgid ""
6311 "The paragraph above is intentionally vague because the implementation of "
6312 "B<pivot_root>()  may change in the future.  At the time of writing, "
6313 "B<pivot_root>()  changes root and current working directory of each process "
6314 "or thread to I<new_root> if they point to the old root directory.  This is "
6315 "necessary in order to prevent kernel threads from keeping the old root "
6316 "directory busy with their root and current working directory, even if they "
6317 "never access the file system in any way.  In the future, there may be a "
6318 "mechanism for kernel threads to explicitly relinquish any access to the file "
6319 "system, such that this fairly intrusive mechanism can be removed from "
6320 "B<pivot_root>()."
6321 msgstr ""
6322 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6323 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6324 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6325 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6326 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6327 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6328 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6329 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6330 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6331 "除されるかもしれない。"
6332
6333 #. type: Plain text
6334 #: build/C/man2/pivot_root.2:72
6335 msgid ""
6336 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6337 "may not affect its current working directory.  It is therefore recommended "
6338 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6339 msgstr ""
6340 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6341 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6342 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6343
6344 #. type: Plain text
6345 #: build/C/man2/pivot_root.2:74
6346 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6347 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6348
6349 #. type: IP
6350 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6351 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6352 #, no-wrap
6353 msgid "-"
6354 msgstr "-"
6355
6356 #. type: Plain text
6357 #: build/C/man2/pivot_root.2:76
6358 msgid "They must be directories."
6359 msgstr "ディレクトリでなければならない。"
6360
6361 #. type: Plain text
6362 #: build/C/man2/pivot_root.2:79
6363 msgid ""
6364 "I<new_root> and I<put_old> must not be on the same file system as the "
6365 "current root."
6366 msgstr ""
6367 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6368 "ない。"
6369
6370 #. type: Plain text
6371 #: build/C/man2/pivot_root.2:83
6372 msgid ""
6373 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6374 "of I</..> to the string pointed to by I<put_old> must yield the same "
6375 "directory as I<new_root>."
6376 msgstr ""
6377 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6378 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6379 "リが得られなければならない。"
6380
6381 #. type: Plain text
6382 #: build/C/man2/pivot_root.2:85
6383 msgid "No other file system may be mounted on I<put_old>."
6384 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6385
6386 #. type: Plain text
6387 #: build/C/man2/pivot_root.2:89
6388 msgid "See also B<pivot_root>(8)  for additional usage examples."
6389 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6390
6391 #. type: Plain text
6392 #: build/C/man2/pivot_root.2:96
6393 msgid ""
6394 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6395 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6396 "point of that file system is mounted on I<put_old>."
6397 msgstr ""
6398 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6399 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6400 "テムのマウントポイントが I<put_old> にマウントされる。"
6401
6402 #. type: Plain text
6403 #: build/C/man2/pivot_root.2:101
6404 msgid ""
6405 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6406 "mounts> will show the mount point of the file system containing I<new_root> "
6407 "as root (I</>)."
6408 msgstr ""
6409 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6410 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6411 "る。"
6412
6413 #. type: Plain text
6414 #: build/C/man2/pivot_root.2:110
6415 msgid ""
6416 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6417 "B<stat>(2).  Additionally, it may return:"
6418 msgstr ""
6419 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6420 "性がある。さらに以下を返すことがある:"
6421
6422 #. type: Plain text
6423 #: build/C/man2/pivot_root.2:114
6424 msgid ""
6425 "I<new_root> or I<put_old> are on the current root file system, or a file "
6426 "system is already mounted on I<put_old>."
6427 msgstr ""
6428 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6429 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6430
6431 #. type: Plain text
6432 #: build/C/man2/pivot_root.2:117
6433 msgid "I<put_old> is not underneath I<new_root>."
6434 msgstr "I<put_old> が I<new_root> の下層にない。"
6435
6436 #. type: TP
6437 #: build/C/man2/pivot_root.2:117
6438 #, no-wrap
6439 msgid "B<ENOTDIR>"
6440 msgstr "B<ENOTDIR>"
6441
6442 #. type: Plain text
6443 #: build/C/man2/pivot_root.2:120
6444 msgid "I<new_root> or I<put_old> is not a directory."
6445 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6446
6447 #. type: Plain text
6448 #: build/C/man2/pivot_root.2:125
6449 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6450 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6451
6452 #. type: Plain text
6453 #: build/C/man2/pivot_root.2:128
6454 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6455 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6456
6457 #. type: Plain text
6458 #: build/C/man2/pivot_root.2:131
6459 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6460 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6461
6462 #. type: Plain text
6463 #: build/C/man2/pivot_root.2:138
6464 msgid ""
6465 "B<pivot_root>()  should not have to change root and current working "
6466 "directory of all other processes in the system."
6467 msgstr ""
6468 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6469 "ディレクトリとを変更しなくてもよいはずである。"
6470
6471 #. type: Plain text
6472 #: build/C/man2/pivot_root.2:143
6473 msgid ""
6474 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6475 "insanity."
6476 msgstr ""
6477 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6478 "からない状態になってしまうだろう"
6479
6480 #. type: Plain text
6481 #: build/C/man2/pivot_root.2:149
6482 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6483 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6484
6485 #. type: TH
6486 #: build/C/man2/process_vm_readv.2:29
6487 #, no-wrap
6488 msgid "PROCESS_VM_READV"
6489 msgstr ""
6490
6491 #. type: TH
6492 #: build/C/man2/process_vm_readv.2:29
6493 #, no-wrap
6494 msgid "2012-04-25"
6495 msgstr "2012-04-25"
6496
6497 #. type: Plain text
6498 #: build/C/man2/process_vm_readv.2:32
6499 msgid ""
6500 "process_vm_readv, process_vm_writev - transfer data between process address "
6501 "spaces"
6502 msgstr ""
6503
6504 #. type: Plain text
6505 #: build/C/man2/process_vm_readv.2:35
6506 #, no-wrap
6507 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6508 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6509
6510 #. type: Plain text
6511 #: build/C/man2/process_vm_readv.2:42
6512 #, no-wrap
6513 msgid ""
6514 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6515 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6516 "B<                         unsigned long >I<liovcnt>B<,>\n"
6517 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6518 "B<                         unsigned long >I<riovcnt>B<,>\n"
6519 "B<                         unsigned long >I<flags>B<);>\n"
6520 msgstr ""
6521
6522 #. type: Plain text
6523 #: build/C/man2/process_vm_readv.2:49
6524 #, no-wrap
6525 msgid ""
6526 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6527 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6528 "B<                          unsigned long >I<liovcnt>B<,>\n"
6529 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6530 "B<                          unsigned long >I<riovcnt>B<,>\n"
6531 "B<                          unsigned long >I<flags>B<);>\n"
6532 msgstr ""
6533
6534 #. type: Plain text
6535 #: build/C/man2/process_vm_readv.2:57
6536 msgid ""
6537 "These system calls transfer data between the address space of the calling "
6538 "process (\"the local process\") and the process identified by I<pid> (\"the "
6539 "remote process\").  The data moves directly between the address spaces of "
6540 "the two processes, without passing through kernel space."
6541 msgstr ""
6542
6543 #. type: Plain text
6544 #: build/C/man2/process_vm_readv.2:82
6545 msgid ""
6546 "The B<process_vm_readv>()  system call transfers data from the remote "
6547 "process to the local process.  The data to be transferred is identified by "
6548 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6549 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6550 "the number of elements in I<remote_iov>.  The data is transferred to the "
6551 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6552 "pointer to an array describing address ranges in the calling process, and "
6553 "I<liovcnt> specifies the number of elements in I<local_iov>."
6554 msgstr ""
6555
6556 #. type: Plain text
6557 #: build/C/man2/process_vm_readv.2:96
6558 msgid ""
6559 "The B<process_vm_writev>()  system call is the converse of "
6560 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6561 "remote process.  Other than the direction of the transfer, the arguments "
6562 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6563 "meaning as for B<process_vm_readv>()."
6564 msgstr ""
6565
6566 #. type: Plain text
6567 #: build/C/man2/process_vm_readv.2:106
6568 msgid ""
6569 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6570 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6571 msgstr ""
6572 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6573 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6574 "されている:"
6575
6576 #. type: Plain text
6577 #: build/C/man2/process_vm_readv.2:113
6578 #, no-wrap
6579 msgid ""
6580 "struct iovec {\n"
6581 "    void  *iov_base;    /* Starting address */\n"
6582 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6583 "};\n"
6584 msgstr ""
6585 "struct iovec {\n"
6586 "    void  *iov_base;    /* Starting address */\n"
6587 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6588 "};\n"
6589
6590 #. type: Plain text
6591 #: build/C/man2/process_vm_readv.2:129
6592 msgid ""
6593 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6594 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6595 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6596 "to I<remote_iov[1]>, and so on."
6597 msgstr ""
6598 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6599 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6600 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6601 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6602 "以降も同様である。"
6603
6604 #. type: Plain text
6605 #: build/C/man2/process_vm_readv.2:140
6606 msgid ""
6607 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6608 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6609 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6610 msgstr ""
6611
6612 #. type: Plain text
6613 #: build/C/man2/process_vm_readv.2:148
6614 msgid ""
6615 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6616 "have to be the same.  Thus, it is possible to split a single local buffer "
6617 "into multiple remote buffers, or vice versa."
6618 msgstr ""
6619
6620 #. type: Plain text
6621 #: build/C/man2/process_vm_readv.2:152
6622 msgid "The I<flags> argument is currently unused and must be set to 0."
6623 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6624
6625 #.  In time, glibc might provide a wrapper that works around this limit,
6626 #.  as is done for readv()/writev()
6627 #. type: Plain text
6628 #: build/C/man2/process_vm_readv.2:165
6629 msgid ""
6630 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6631 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6632 "via the call I<sysconf(_SC_IOV_MAX)>)."
6633 msgstr ""
6634
6635 #. type: Plain text
6636 #: build/C/man2/process_vm_readv.2:175
6637 msgid ""
6638 "The count arguments and I<local_iov> are checked before doing any "
6639 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6640 "addresses refer to regions that are inaccessible to the local process, none "
6641 "of the vectors will be processed and an error will be returned immediately."
6642 msgstr ""
6643
6644 #. type: Plain text
6645 #: build/C/man2/process_vm_readv.2:195
6646 msgid ""
6647 "Note, however, that these system calls do not check the memory regions in "
6648 "the remote process until just before doing the read/write.  Consequently, a "
6649 "partial read/write (see RETURN VALUE)  may result if one of the "
6650 "I<remote_iov> elements points to an invalid memory region in the remote "
6651 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6652 "this in mind when attempting to read data of unknown length (such as C "
6653 "strings that are null-terminated) from a remote process, by avoiding "
6654 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6655 "(Instead, split the remote read into two I<remote_iov> elements and have "
6656 "them merge back into a single write I<local_iov> entry.  The first read "
6657 "entry goes up to the page boundary, while the second starts on the next page "
6658 "boundary.)"
6659 msgstr ""
6660
6661 #. type: Plain text
6662 #: build/C/man2/process_vm_readv.2:209
6663 msgid ""
6664 "In order to read from or write to another process, either the caller must "
6665 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6666 "ID, and saved set-user-ID of the remote process must match the real user ID "
6667 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6668 "group-ID of the remote process must match the real group ID of the caller.  "
6669 "(The permission required is exactly the same as that required to perform a "
6670 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6671 msgstr ""
6672
6673 #. type: Plain text
6674 #: build/C/man2/process_vm_readv.2:225
6675 msgid ""
6676 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6677 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6678 "value may be less than the total number of requested bytes, if a partial "
6679 "read/write occurred.  (Partial transfers apply at the granularity of "
6680 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6681 "splits a single I<iovec> element.)  The caller should check the return value "
6682 "to determine whether a partial read/write occurred."
6683 msgstr ""
6684
6685 #. type: Plain text
6686 #: build/C/man2/process_vm_readv.2:229
6687 msgid "On error, -1 is returned and I<errno> is set appropriately."
6688 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6689
6690 #. type: Plain text
6691 #: build/C/man2/process_vm_readv.2:241
6692 msgid ""
6693 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6694 "overflows a I<ssize_t> value."
6695 msgstr ""
6696
6697 #. type: Plain text
6698 #: build/C/man2/process_vm_readv.2:245
6699 msgid "I<flags> is not 0."
6700 msgstr "I<flags> が 0 でない。"
6701
6702 #. type: Plain text
6703 #: build/C/man2/process_vm_readv.2:251
6704 msgid "I<liovcnt> or I<riovcnt> is too large."
6705 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6706
6707 #. type: Plain text
6708 #: build/C/man2/process_vm_readv.2:256
6709 msgid ""
6710 "The memory described by I<local_iov> is outside the caller's accessible "
6711 "address space."
6712 msgstr ""
6713 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6714 "アドレス空間の外にある。"
6715
6716 #. type: Plain text
6717 #: build/C/man2/process_vm_readv.2:262
6718 msgid ""
6719 "The memory described by I<remote_iov> is outside the accessible address "
6720 "space of the process I<pid>."
6721 msgstr ""
6722
6723 #. type: Plain text
6724 #: build/C/man2/process_vm_readv.2:267
6725 msgid ""
6726 "Could not allocate memory for internal copies of the I<iovec> structures."
6727 msgstr ""
6728
6729 #. type: Plain text
6730 #: build/C/man2/process_vm_readv.2:271
6731 msgid ""
6732 "The caller does not have permission to access the address space of the "
6733 "process I<pid>."
6734 msgstr ""
6735 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6736 "持っていない。"
6737
6738 #. type: Plain text
6739 #: build/C/man2/process_vm_readv.2:276
6740 msgid "No process with ID I<pid> exists."
6741 msgstr "ID が I<pid> のプロセスが存在しない。"
6742
6743 #. type: Plain text
6744 #: build/C/man2/process_vm_readv.2:279
6745 msgid ""
6746 "These system calls were added in Linux 3.2.  Support is provided in glibc "
6747 "since version 2.15."
6748 msgstr ""
6749 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
6750 "サポートは glibc バージョン 2.15 以降で提供されている。"
6751
6752 #. type: Plain text
6753 #: build/C/man2/process_vm_readv.2:281
6754 msgid "These system calls are nonstandard Linux extensions."
6755 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
6756
6757 #. type: Plain text
6758 #: build/C/man2/process_vm_readv.2:287
6759 msgid ""
6760 "The data transfers performed by B<process_vm_readv>()  and "
6761 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
6762 msgstr ""
6763
6764 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
6765 #.  See also some benchmarks at http://lwn.net/Articles/405284/
6766 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
6767 #. type: Plain text
6768 #: build/C/man2/process_vm_readv.2:295
6769 msgid ""
6770 "These system calls were designed to permit fast message passing by allowing "
6771 "messages to be exchanged with a single copy operation (rather than the "
6772 "double copy that would be required when using, for example, shared memory or "
6773 "pipes)."
6774 msgstr ""
6775
6776 #. type: Plain text
6777 #: build/C/man2/process_vm_readv.2:303
6778 msgid ""
6779 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
6780 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
6781 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
6782 msgstr ""
6783
6784 #. type: Plain text
6785 #: build/C/man2/process_vm_readv.2:306
6786 #, no-wrap
6787 msgid "#include E<lt>sys/uio.hE<gt>\n"
6788 msgstr "#include E<lt>sys/uio.hE<gt>\n"
6789
6790 #. type: Plain text
6791 #: build/C/man2/process_vm_readv.2:316
6792 #, no-wrap
6793 msgid ""
6794 "int\n"
6795 "main(void)\n"
6796 "{\n"
6797 "    struct iovec local[2];\n"
6798 "    struct iovec remote[1];\n"
6799 "    char buf1[10];\n"
6800 "    char buf2[10];\n"
6801 "    ssize_t nread;\n"
6802 "    pid_t pid = 10;             /* PID of remote process */\n"
6803 msgstr ""
6804 "int\n"
6805 "main(void)\n"
6806 "{\n"
6807 "    struct iovec local[2];\n"
6808 "    struct iovec remote[1];\n"
6809 "    char buf1[10];\n"
6810 "    char buf2[10];\n"
6811 "    ssize_t nread;\n"
6812 "    pid_t pid = 10;             /* PID of remote process */\n"
6813
6814 #. type: Plain text
6815 #: build/C/man2/process_vm_readv.2:323
6816 #, no-wrap
6817 msgid ""
6818 "    local[0].iov_base = buf1;\n"
6819 "    local[0].iov_len = 10;\n"
6820 "    local[1].iov_base = buf2;\n"
6821 "    local[1].iov_len = 10;\n"
6822 "    remote[0].iov_base = (void *) 0x10000;\n"
6823 "    remote[1].iov_len = 20;\n"
6824 msgstr ""
6825 "    local[0].iov_base = buf1;\n"
6826 "    local[0].iov_len = 10;\n"
6827 "    local[1].iov_base = buf2;\n"
6828 "    local[1].iov_len = 10;\n"
6829 "    remote[0].iov_base = (void *) 0x10000;\n"
6830 "    remote[1].iov_len = 20;\n"
6831
6832 #. type: Plain text
6833 #: build/C/man2/process_vm_readv.2:330
6834 #, no-wrap
6835 msgid ""
6836 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6837 "    if (nread != 20)\n"
6838 "        return 1;\n"
6839 "    else\n"
6840 "        return 0;\n"
6841 "}\n"
6842 msgstr ""
6843 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
6844 "    if (nread != 20)\n"
6845 "        return 1;\n"
6846 "    else\n"
6847 "        return 0;\n"
6848 "}\n"
6849
6850 #. type: Plain text
6851 #: build/C/man2/process_vm_readv.2:334
6852 msgid "B<readv>(2), B<writev>(2)"
6853 msgstr "B<readv>(2), B<writev>(2)"
6854
6855 #. type: TH
6856 #: build/C/man2/ptrace.2:44
6857 #, no-wrap
6858 msgid "PTRACE"
6859 msgstr "PTRACE"
6860
6861 #. type: TH
6862 #: build/C/man2/ptrace.2:44
6863 #, fuzzy, no-wrap
6864 #| msgid "2009-02-20"
6865 msgid "2013-02-16"
6866 msgstr "2009-02-20"
6867
6868 #. type: Plain text
6869 #: build/C/man2/ptrace.2:47
6870 msgid "ptrace - process trace"
6871 msgstr "ptrace - プロセスのトレース"
6872
6873 #. type: Plain text
6874 #: build/C/man2/ptrace.2:50
6875 #, no-wrap
6876 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6877 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
6878
6879 #. type: Plain text
6880 #: build/C/man2/ptrace.2:53
6881 #, no-wrap
6882 msgid ""
6883 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6884 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6885 msgstr ""
6886 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
6887 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
6888
6889 #. type: Plain text
6890 #: build/C/man2/ptrace.2:62
6891 #, fuzzy
6892 #| msgid ""
6893 #| "The B<ptrace>()  system call provides a means by which a parent process "
6894 #| "may observe and control the execution of another process, and examine and "
6895 #| "change its core image and registers.  It is primarily used to implement "
6896 #| "breakpoint debugging and system call tracing."
6897 msgid ""
6898 "The B<ptrace>()  system call provides a means by which one process (the "
6899 "\"tracer\")  may observe and control the execution of another process (the "
6900 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
6901 "is primarily used to implement breakpoint debugging and system call tracing."
6902 msgstr ""
6903 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
6904 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
6905 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
6906 "コールのトレースを 実装するのに用いられる。"
6907
6908 #. type: Plain text
6909 #: build/C/man2/ptrace.2:73
6910 msgid ""
6911 "A tracee first needs to be attached to the tracer.  Attachment and "
6912 "subsequent commands are per thread: in a multithreaded process, every thread "
6913 "can be individually attached to a (potentially different) tracer, or left "
6914 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
6915 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
6916 "commands are always sent to a specific tracee using a call of the form"
6917 msgstr ""
6918
6919 #. type: Plain text
6920 #: build/C/man2/ptrace.2:75
6921 #, no-wrap
6922 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
6923 msgstr ""
6924
6925 #. type: Plain text
6926 #: build/C/man2/ptrace.2:79
6927 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
6928 msgstr ""
6929
6930 #. type: Plain text
6931 #: build/C/man2/ptrace.2:85
6932 msgid ""
6933 "(Note that in this page, a \"multithreaded process\" means a thread group "
6934 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
6935 msgstr ""
6936
6937 #. type: Plain text
6938 #: build/C/man2/ptrace.2:96
6939 #, fuzzy
6940 #| msgid ""
6941 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
6942 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
6943 #| "(3).  Alternatively, the parent may commence trace of an existing process "
6944 #| "using B<PTRACE_ATTACH>."
6945 msgid ""
6946 "A process can initiate a trace by calling B<fork>(2)  and having the "
6947 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
6948 "(2).  Alternatively, one process may commence tracing another process using "
6949 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
6950 msgstr ""
6951 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
6952 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
6953 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
6954 "を使用し、トレースを開始する。"
6955
6956 #. type: Plain text
6957 #: build/C/man2/ptrace.2:113
6958 #, fuzzy
6959 #| msgid ""
6960 #| "While being traced, the child will stop each time a signal is delivered, "
6961 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
6962 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
6963 #| "(2)  and may inspect and modify the child process while it is stopped.  "
6964 #| "The parent then causes the child to continue, optionally ignoring the "
6965 #| "delivered signal (or even delivering a different signal instead)."
6966 msgid ""
6967 "While being traced, the tracee will stop each time a signal is delivered, "
6968 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
6969 "its usual effect.)  The tracer will be notified at its next call to "
6970 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
6971 "return a I<status> value containing information that indicates the cause of "
6972 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
6973 "various ptrace requests to inspect and modify the tracee.  The tracer then "
6974 "causes the tracee to continue, optionally ignoring the delivered signal (or "
6975 "even delivering a different signal instead)."
6976 msgstr ""
6977 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
6978 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
6979 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
6980 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
6981 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
6982 "シグナルを 配送することもできる) 。"
6983
6984 #. type: Plain text
6985 #: build/C/man2/ptrace.2:123
6986 msgid ""
6987 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
6988 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
6989 "signal, giving the parent a chance to gain control before the new program "
6990 "begins execution."
6991 msgstr ""
6992
6993 #. type: Plain text
6994 #: build/C/man2/ptrace.2:127
6995 #, fuzzy
6996 #| msgid ""
6997 #| "When the parent is finished tracing, it can terminate the child with "
6998 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
6999 #| "mode via B<PTRACE_DETACH>."
7000 msgid ""
7001 "When the tracer is finished tracing, it can cause the tracee to continue "
7002 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7003 msgstr ""
7004 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7005 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7006 "ドにして、 実行を継続させることもできる。"
7007
7008 #. type: Plain text
7009 #: build/C/man2/ptrace.2:131
7010 msgid "The value of I<request> determines the action to be performed:"
7011 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7012
7013 #. type: TP
7014 #: build/C/man2/ptrace.2:131
7015 #, no-wrap
7016 msgid "B<PTRACE_TRACEME>"
7017 msgstr "B<PTRACE_TRACEME>"
7018
7019 #. type: Plain text
7020 #: build/C/man2/ptrace.2:141
7021 msgid ""
7022 "Indicate that this process is to be traced by its parent.  A process "
7023 "probably shouldn't make this request if its parent isn't expecting to trace "
7024 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7025 msgstr ""
7026
7027 #. type: Plain text
7028 #: build/C/man2/ptrace.2:156
7029 #, fuzzy
7030 #| msgid ""
7031 #| "The above request is used only by the child process; the rest are used "
7032 #| "only by the parent.  In the following requests, I<pid> specifies the "
7033 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7034 #| "the child process must be stopped."
7035 msgid ""
7036 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7037 "requests are used only by the tracer.  In the following requests, I<pid> "
7038 "specifies the thread ID of the tracee to be acted on.  For requests other "
7039 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7040 "B<PTRACE_KILL>, the tracee must be stopped."
7041 msgstr ""
7042 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7043 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7044 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7045 "らない。"
7046
7047 #. type: TP
7048 #: build/C/man2/ptrace.2:156
7049 #, no-wrap
7050 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7051 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7052
7053 #. type: Plain text
7054 #: build/C/man2/ptrace.2:167
7055 #, fuzzy
7056 #| msgid ""
7057 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7058 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7059 #| "separate text and data address spaces, so the two requests are currently "
7060 #| "equivalent.  (The argument I<data> is ignored.)"
7061 msgid ""
7062 "Read a word at the address I<addr> in the tracee's memory, returning the "
7063 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7064 "text and data address spaces, so these two requests are currently "
7065 "equivalent.  (I<data> is ignored.)"
7066 msgstr ""
7067 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7068 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7069 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7070 "ものである。 (引き数 I<data> は無視される。)"
7071
7072 #. type: TP
7073 #: build/C/man2/ptrace.2:167
7074 #, no-wrap
7075 msgid "B<PTRACE_PEEKUSER>"
7076 msgstr "B<PTRACE_PEEKUSER>"
7077
7078 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7079 #.  and that is the name that seems common on other systems.
7080 #. type: Plain text
7081 #: build/C/man2/ptrace.2:185
7082 #, fuzzy
7083 #| msgid ""
7084 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7085 #| "registers and other information about the process (see I<E<lt>sys/user."
7086 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7087 #| "Typically the offset must be word-aligned, though this might vary by "
7088 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7089 msgid ""
7090 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7091 "registers and other information about the process (see I<E<lt>sys/user."
7092 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7093 "Typically, the offset must be word-aligned, though this might vary by "
7094 "architecture.  See NOTES.  (I<data> is ignored.)"
7095 msgstr ""
7096 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7097 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7098 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7099 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7100 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7101 "される。 )"
7102
7103 #. type: TP
7104 #: build/C/man2/ptrace.2:185
7105 #, no-wrap
7106 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7107 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7108
7109 #. type: Plain text
7110 #: build/C/man2/ptrace.2:197
7111 #, fuzzy
7112 #| msgid ""
7113 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7114 #| "above, the two requests are currently equivalent."
7115 msgid ""
7116 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7117 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7118 "equivalent."
7119 msgstr ""
7120 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7121 "に、現在のところ二つの 要求は同じものである。"
7122
7123 #. type: TP
7124 #: build/C/man2/ptrace.2:197
7125 #, no-wrap
7126 msgid "B<PTRACE_POKEUSER>"
7127 msgstr "B<PTRACE_POKEUSER>"
7128
7129 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7130 #.  and that is the name that seems common on other systems.
7131 #.  FIXME In the preceding sentence, which modifications are disallowed,
7132 #.  and when they are disallowed, how does user space discover that fact?
7133 #. type: Plain text
7134 #: build/C/man2/ptrace.2:213
7135 #, fuzzy
7136 #| msgid ""
7137 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7138 #| "above, the offset must typically be word-aligned.  In order to maintain "
7139 #| "the integrity of the kernel, some modifications to the USER area are "
7140 #| "disallowed."
7141 msgid ""
7142 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7143 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7144 "maintain the integrity of the kernel, some modifications to the USER area "
7145 "are disallowed."
7146 msgstr ""
7147 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7148 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7149 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7150 "されている。"
7151
7152 #. type: TP
7153 #: build/C/man2/ptrace.2:213
7154 #, no-wrap
7155 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7156 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7157
7158 #. type: Plain text
7159 #: build/C/man2/ptrace.2:236
7160 #, fuzzy
7161 #| msgid ""
7162 #| "Copies the child's general purpose or floating-point registers, "
7163 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7164 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7165 msgid ""
7166 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7167 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7168 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7169 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7170 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7171 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7172 "architectures."
7173 msgstr ""
7174 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7175 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7176 "すること。(I<addr> は無視される。)"
7177
7178 #. type: TP
7179 #: build/C/man2/ptrace.2:236
7180 #, fuzzy, no-wrap
7181 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7182 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7183 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7184
7185 #. type: Plain text
7186 #: build/C/man2/ptrace.2:257
7187 msgid ""
7188 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7189 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7190 "numerical value 1)  usually results in reading of general-purpose "
7191 "registers.  If the CPU has, for example, floating-point and/or vector "
7192 "registers, they can be retrieved by setting I<addr> to the corresponding "
7193 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7194 "the destination buffer's location and length.  On return, the kernel "
7195 "modifies B<iov.len> to indicate the actual number of bytes returned."
7196 msgstr ""
7197
7198 #. type: TP
7199 #: build/C/man2/ptrace.2:257
7200 #, no-wrap
7201 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7202 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7203
7204 #. type: Plain text
7205 #: build/C/man2/ptrace.2:269
7206 #, fuzzy
7207 #| msgid ""
7208 #| "Retrieve information about the signal that caused the stop.  Copies a "
7209 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7210 #| "I<data> in the parent.  (I<addr> is ignored.)"
7211 msgid ""
7212 "Retrieve information about the signal that caused the stop.  Copy a "
7213 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7214 "I<data> in the tracer.  (I<addr> is ignored.)"
7215 msgstr ""
7216 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7217 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7218 "る。 (I<addr> は無視される。)"
7219
7220 #. type: TP
7221 #: build/C/man2/ptrace.2:269
7222 #, no-wrap
7223 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7224 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7225
7226 #.  FIXME In the preceding sentence, which modifications are disallowed,
7227 #.  and when they are disallowed, how does user space discover that fact?
7228 #. type: Plain text
7229 #: build/C/man2/ptrace.2:294
7230 #, fuzzy
7231 #| msgid ""
7232 #| "Copies the child's general purpose or floating-point registers, "
7233 #| "respectively, from location I<data> in the parent.  As for "
7234 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7235 #| "disallowed.  (I<addr> is ignored.)"
7236 msgid ""
7237 "Modify the tracee's general-purpose or floating-point registers, "
7238 "respectively, from the address I<data> in the tracer.  As for "
7239 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7240 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7241 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7242 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7243 "B<PTRACE_SETFPREGS> are not present on all architectures."
7244 msgstr ""
7245 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7246 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7247 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7248
7249 #. type: TP
7250 #: build/C/man2/ptrace.2:294
7251 #, fuzzy, no-wrap
7252 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7253 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7254 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7255
7256 #. type: Plain text
7257 #: build/C/man2/ptrace.2:303
7258 msgid ""
7259 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7260 "analogous to B<PTRACE_GETREGSET>."
7261 msgstr ""
7262
7263 #. type: TP
7264 #: build/C/man2/ptrace.2:303
7265 #, no-wrap
7266 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7267 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7268
7269 #. type: Plain text
7270 #: build/C/man2/ptrace.2:319
7271 #, fuzzy
7272 #| msgid ""
7273 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7274 #| "I<data> in the parent to the child.  This will only affect signals that "
7275 #| "would normally be delivered to the child and were caught by the tracer.  "
7276 #| "It may be difficult to tell these normal signals from synthetic signals "
7277 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7278 msgid ""
7279 "Set signal information: copy a I<siginfo_t> structure from the address "
7280 "I<data> in the tracer to the tracee.  This will affect only signals that "
7281 "would normally be delivered to the tracee and were caught by the tracer.  It "
7282 "may be difficult to tell these normal signals from synthetic signals "
7283 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7284 msgstr ""
7285 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7286 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7287 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7288 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7289 "かもしれない。 (I<addr> は無視される。)"
7290
7291 #. type: TP
7292 #: build/C/man2/ptrace.2:319
7293 #, no-wrap
7294 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7295 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7296
7297 #. type: Plain text
7298 #: build/C/man2/ptrace.2:328
7299 #, fuzzy
7300 #| msgid ""
7301 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7302 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7303 #| "the following flags:"
7304 msgid ""
7305 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7306 "interpreted as a bit mask of options, which are specified by the following "
7307 "flags:"
7308 msgstr ""
7309 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7310 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7311 "下のフラグを指定できる:"
7312
7313 #. type: TP
7314 #: build/C/man2/ptrace.2:329
7315 #, fuzzy, no-wrap
7316 #| msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7317 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7318 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7319
7320 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7321 #. type: Plain text
7322 #: build/C/man2/ptrace.2:337
7323 msgid ""
7324 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7325 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7326 "ensure that tracees can never escape the tracer's control."
7327 msgstr ""
7328
7329 #. type: TP
7330 #: build/C/man2/ptrace.2:337
7331 #, no-wrap
7332 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7333 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7334
7335 #. type: Plain text
7336 #: build/C/man2/ptrace.2:349
7337 #, fuzzy
7338 #| msgid ""
7339 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7340 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7341 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7342 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7343 msgid ""
7344 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7345 "newly cloned process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7346 "by the tracer will return a I<status> value such that"
7347 msgstr ""
7348 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7349 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7350 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7351 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7352
7353 #. type: Plain text
7354 #: build/C/man2/ptrace.2:352
7355 #, no-wrap
7356 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7357 msgstr ""
7358
7359 #. type: Plain text
7360 #: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437
7361 #: build/C/man2/ptrace.2:465
7362 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7363 msgstr ""
7364
7365 #. type: Plain text
7366 #: build/C/man2/ptrace.2:377
7367 #, fuzzy
7368 #| msgid ""
7369 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7370 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7371 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7372 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7373 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7374 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7375 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7376 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7377 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7378 msgid ""
7379 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7380 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7381 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7382 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7383 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7384 msgstr ""
7385 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7386 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7387 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7388 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7389 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7390 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7391 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7392 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7393 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7394
7395 #. type: TP
7396 #: build/C/man2/ptrace.2:377
7397 #, no-wrap
7398 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7399 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7400
7401 #. type: Plain text
7402 #: build/C/man2/ptrace.2:386
7403 msgid ""
7404 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7405 "will return a I<status> value such that"
7406 msgstr ""
7407
7408 #. type: Plain text
7409 #: build/C/man2/ptrace.2:389
7410 #, no-wrap
7411 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7412 msgstr ""
7413
7414 #. type: Plain text
7415 #: build/C/man2/ptrace.2:395
7416 msgid ""
7417 "If the execing thread is not a thread group leader, the thread ID is reset "
7418 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7419 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7420 msgstr ""
7421
7422 #. type: TP
7423 #: build/C/man2/ptrace.2:395
7424 #, no-wrap
7425 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7426 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7427
7428 #. type: Plain text
7429 #: build/C/man2/ptrace.2:403
7430 msgid ""
7431 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7432 "I<status> value such that"
7433 msgstr ""
7434
7435 #. type: Plain text
7436 #: build/C/man2/ptrace.2:406
7437 #, no-wrap
7438 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7439 msgstr ""
7440
7441 #. type: Plain text
7442 #: build/C/man2/ptrace.2:410
7443 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7444 msgstr ""
7445
7446 #. type: Plain text
7447 #: build/C/man2/ptrace.2:418
7448 #, fuzzy
7449 #| msgid ""
7450 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7451 #| "8>.  The child's exit status can be retrieved with "
7452 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7453 #| "when registers are still available, allowing the tracer to see where the "
7454 #| "exit occurred, whereas the normal exit notification is done after the "
7455 #| "process is finished exiting.  Even though context is available, the "
7456 #| "tracer cannot prevent the exit from happening at this point."
7457 msgid ""
7458 "The tracee is stopped early during process exit, when registers are still "
7459 "available, allowing the tracer to see where the exit occurred, whereas the "
7460 "normal exit notification is done after the process is finished exiting.  "
7461 "Even though context is available, the tracer cannot prevent the exit from "
7462 "happening at this point."
7463 msgstr ""
7464 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7465 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7466 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7467 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7468 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7469 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7470 "できない。"
7471
7472 #. type: TP
7473 #: build/C/man2/ptrace.2:418
7474 #, no-wrap
7475 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7476 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7477
7478 #. type: Plain text
7479 #: build/C/man2/ptrace.2:430
7480 #, fuzzy
7481 #| msgid ""
7482 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7483 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7484 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7485 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7486 msgid ""
7487 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7488 "newly forked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7489 "by the tracer will return a I<status> value such that"
7490 msgstr ""
7491 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7492 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7493 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7494 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7495
7496 #. type: Plain text
7497 #: build/C/man2/ptrace.2:433
7498 #, no-wrap
7499 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7500 msgstr ""
7501
7502 #. type: TP
7503 #: build/C/man2/ptrace.2:437
7504 #, no-wrap
7505 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7506 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7507
7508 #. type: Plain text
7509 #: build/C/man2/ptrace.2:446
7510 #, fuzzy
7511 #| msgid ""
7512 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7513 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7514 #| "the difference between normal traps and those caused by a syscall.  "
7515 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7516 msgid ""
7517 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7518 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7519 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7520 "may not work on all architectures.)"
7521 msgstr ""
7522 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7523 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7524 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7525 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7526
7527 #. type: TP
7528 #: build/C/man2/ptrace.2:446
7529 #, no-wrap
7530 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7531 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7532
7533 #. type: Plain text
7534 #: build/C/man2/ptrace.2:458
7535 #, fuzzy
7536 #| msgid ""
7537 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7538 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7539 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7540 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7541 msgid ""
7542 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7543 "newly vforked process, which will start with a B<SIGSTOP>.  A B<waitpid>(2)  "
7544 "by the tracer will return a I<status> value such that"
7545 msgstr ""
7546 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7547 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7548 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7549 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7550
7551 #. type: Plain text
7552 #: build/C/man2/ptrace.2:461
7553 #, no-wrap
7554 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7555 msgstr ""
7556
7557 #. type: TP
7558 #: build/C/man2/ptrace.2:465
7559 #, no-wrap
7560 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7561 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7562
7563 #. type: Plain text
7564 #: build/C/man2/ptrace.2:474
7565 msgid ""
7566 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7567 "by the tracer will return a I<status> value such that"
7568 msgstr ""
7569
7570 #. type: Plain text
7571 #: build/C/man2/ptrace.2:477
7572 #, no-wrap
7573 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7574 msgstr ""
7575
7576 #. type: Plain text
7577 #: build/C/man2/ptrace.2:481
7578 msgid ""
7579 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7580 "B<PTRACE_GETEVENTMSG>."
7581 msgstr ""
7582
7583 #. type: TP
7584 #: build/C/man2/ptrace.2:482
7585 #, no-wrap
7586 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7587 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7588
7589 #. type: Plain text
7590 #: build/C/man2/ptrace.2:502
7591 #, fuzzy
7592 #| msgid ""
7593 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7594 #| "just happened, placing it in the location I<data> in the parent.  For "
7595 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7596 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7597 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7598 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7599 #| "is ignored.)"
7600 msgid ""
7601 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7602 "just happened, placing it at the address I<data> in the tracer.  For "
7603 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7604 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7605 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7606 "ignored.)"
7607 msgstr ""
7608 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7609 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7610 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7611 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7612 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7613 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7614
7615 #. type: TP
7616 #: build/C/man2/ptrace.2:502
7617 #, no-wrap
7618 msgid "B<PTRACE_CONT>"
7619 msgstr "B<PTRACE_CONT>"
7620
7621 #. type: Plain text
7622 #: build/C/man2/ptrace.2:514
7623 #, fuzzy
7624 #| msgid ""
7625 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7626 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7627 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7628 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7629 #| "is ignored.)"
7630 msgid ""
7631 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7632 "interpreted as the number of a signal to be delivered to the tracee; "
7633 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7634 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7635 "is ignored.)"
7636 msgstr ""
7637 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7638 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7639 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7640 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7641 "は無視される。)"
7642
7643 #. type: TP
7644 #: build/C/man2/ptrace.2:514
7645 #, no-wrap
7646 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7647 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7648
7649 #. type: Plain text
7650 #: build/C/man2/ptrace.2:538
7651 #, fuzzy
7652 #| msgid ""
7653 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7654 #| "child to be stopped at the next entry to or exit from a system call, or "
7655 #| "after execution of a single instruction, respectively.  (The child will "
7656 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7657 #| "perspective, the child will appear to have been stopped by receipt of a "
7658 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7659 #| "inspect the arguments to the system call at the first stop, then do "
7660 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7661 #| "at the second stop.  The I<data> argument is treated as for "
7662 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7663 msgid ""
7664 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7665 "to be stopped at the next entry to or exit from a system call, or after "
7666 "execution of a single instruction, respectively.  (The tracee will also, as "
7667 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7668 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7669 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7670 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7671 "inspect the return value of the system call at the second stop.  The I<data> "
7672 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7673 msgstr ""
7674 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7675 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7676 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7677 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7678 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7679 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7680 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7681 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7682 "同じ様に解釈される。 (I<addr> は無視される。)"
7683
7684 #. type: TP
7685 #: build/C/man2/ptrace.2:538
7686 #, no-wrap
7687 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7688 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7689
7690 #.  As at 3.7
7691 #. type: Plain text
7692 #: build/C/man2/ptrace.2:559
7693 #, fuzzy
7694 #| msgid ""
7695 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7696 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7697 #| "but also singlestep if not a syscall.  This call is used by programs like "
7698 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7699 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7700 #| "not supported on all architectures.)"
7701 msgid ""
7702 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7703 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7704 "but also singlestep if not a system call.  This call is used by programs "
7705 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7706 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7707 "is ignored.  These requests are currently supported only on x86."
7708 msgstr ""
7709 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7710 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7711 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7712 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7713 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7714 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7715 "ポートされているわけではない。)"
7716
7717 #. type: TP
7718 #: build/C/man2/ptrace.2:559
7719 #, fuzzy, no-wrap
7720 #| msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7721 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7722 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7723
7724 #. type: Plain text
7725 #: build/C/man2/ptrace.2:570
7726 msgid ""
7727 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7728 "state of the tracee is similar to a process which has been stopped by a "
7729 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7730 "for additional information.  B<PTRACE_LISTEN> only works on tracees attached "
7731 "by B<PTRACE_SEIZE>."
7732 msgstr ""
7733
7734 #. type: TP
7735 #: build/C/man2/ptrace.2:570
7736 #, no-wrap
7737 msgid "B<PTRACE_KILL>"
7738 msgstr "B<PTRACE_KILL>"
7739
7740 #. type: Plain text
7741 #: build/C/man2/ptrace.2:579
7742 #, fuzzy
7743 #| msgid ""
7744 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7745 #| "ignored.)"
7746 msgid ""
7747 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
7748 "ignored.)"
7749 msgstr ""
7750 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
7751
7752 #.  [Note from Denys Vlasenko:
7753 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
7754 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
7755 #. type: Plain text
7756 #: build/C/man2/ptrace.2:598
7757 msgid ""
7758 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
7759 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
7760 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
7761 "may not work (i.e., may complete successfully but won't kill the tracee).  "
7762 "By contrast, sending a B<SIGKILL> directly has no such limitation."
7763 msgstr ""
7764
7765 #. type: TP
7766 #: build/C/man2/ptrace.2:598
7767 #, fuzzy, no-wrap
7768 #| msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7769 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
7770 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7771
7772 #. type: Plain text
7773 #: build/C/man2/ptrace.2:612
7774 msgid ""
7775 "Stop a tracee.  If the tracee is running, it will stop with "
7776 "B<PTRACE_EVENT_STOP>.  If the tracee is already stopped by a signal, or "
7777 "receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
7778 "group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>.  "
7779 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
7780 msgstr ""
7781
7782 #. type: TP
7783 #: build/C/man2/ptrace.2:612
7784 #, no-wrap
7785 msgid "B<PTRACE_ATTACH>"
7786 msgstr "B<PTRACE_ATTACH>"
7787
7788 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
7789 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
7790 #.          Basically, it's not true for any Linux in practical use.
7791 #.  ; the behavior of the tracee is as if it had done a
7792 #.  .BR PTRACE_TRACEME .
7793 #.  The calling process actually becomes the parent of the tracee
7794 #.  process for most purposes (e.g., it will receive
7795 #.  notification of tracee events and appears in
7796 #.  .BR ps (1)
7797 #.  output as the tracee's parent), but a
7798 #.  .BR getppid (2)
7799 #.  by the tracee will still return the PID of the original parent.
7800 #. type: Plain text
7801 #: build/C/man2/ptrace.2:640
7802 msgid ""
7803 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7804 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
7805 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
7806 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
7807 "additional information.  (I<addr> and I<data> are ignored.)"
7808 msgstr ""
7809
7810 #. type: TP
7811 #: build/C/man2/ptrace.2:640
7812 #, fuzzy, no-wrap
7813 #| msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7814 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
7815 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7816
7817 #. type: Plain text
7818 #: build/C/man2/ptrace.2:660
7819 msgid ""
7820 "Attach to the process specified in I<pid>, making it a tracee of the calling "
7821 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
7822 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
7823 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
7824 "mask of ptrace options to activate immediately."
7825 msgstr ""
7826
7827 #. type: TP
7828 #: build/C/man2/ptrace.2:660
7829 #, no-wrap
7830 msgid "B<PTRACE_DETACH>"
7831 msgstr "B<PTRACE_DETACH>"
7832
7833 #. type: Plain text
7834 #: build/C/man2/ptrace.2:669
7835 #, fuzzy
7836 #| msgid ""
7837 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
7838 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
7839 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
7840 #| "a traced child can be detached in this way regardless of which method was "
7841 #| "used to initiate tracing.  (I<addr> is ignored.)"
7842 msgid ""
7843 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
7844 "Under Linux, a tracee can be detached in this way regardless of which method "
7845 "was used to initiate tracing.  (I<addr> is ignored.)"
7846 msgstr ""
7847 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
7848 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
7849 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
7850 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
7851 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
7852
7853 #. type: SS
7854 #: build/C/man2/ptrace.2:669
7855 #, no-wrap
7856 msgid "Death under ptrace"
7857 msgstr ""
7858
7859 #. type: Plain text
7860 #: build/C/man2/ptrace.2:678
7861 msgid ""
7862 "When a (possibly multithreaded) process receives a killing signal (one whose "
7863 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
7864 "process), all threads exit.  Tracees report their death to their tracer(s).  "
7865 "Notification of this event is delivered via B<waitpid>(2)."
7866 msgstr ""
7867
7868 #. type: Plain text
7869 #: build/C/man2/ptrace.2:687
7870 msgid ""
7871 "Note that the killing signal will first cause signal-delivery-stop (on one "
7872 "tracee only), and only after it is injected by the tracer (or after it was "
7873 "dispatched to a thread which isn't traced), will death from the signal "
7874 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
7875 "delivery-stop\" is explained below.)"
7876 msgstr ""
7877
7878 #. type: Plain text
7879 #: build/C/man2/ptrace.2:699
7880 msgid ""
7881 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
7882 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
7883 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
7884 "B<SIGKILL> always kills the process (all its threads), even if some threads "
7885 "of the process are ptraced."
7886 msgstr ""
7887
7888 #. type: Plain text
7889 #: build/C/man2/ptrace.2:704
7890 msgid ""
7891 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
7892 "Other threads are not affected."
7893 msgstr ""
7894
7895 #. type: Plain text
7896 #: build/C/man2/ptrace.2:708
7897 msgid ""
7898 "When any thread executes B<exit_group>(2), every tracee in its thread group "
7899 "reports its death to its tracer."
7900 msgstr ""
7901
7902 #. type: Plain text
7903 #: build/C/man2/ptrace.2:722
7904 msgid ""
7905 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
7906 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
7907 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
7908 "on B<execve>(2)  in a multithreaded process."
7909 msgstr ""
7910
7911 #. type: Plain text
7912 #: build/C/man2/ptrace.2:747
7913 msgid ""
7914 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
7915 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
7916 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
7917 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
7918 "exists but is not ptrace-stopped (for commands which require a stopped "
7919 "tracee), or if it is not traced by the process which issued the ptrace "
7920 "call.  The tracer needs to keep track of the stopped/running state of the "
7921 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
7922 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
7923 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
7924 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
7925 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
7926 "yet fully dead\", but already refusing ptrace requests."
7927 msgstr ""
7928
7929 #. type: Plain text
7930 #: build/C/man2/ptrace.2:761
7931 msgid ""
7932 "The tracer can't assume that the tracee I<always> ends its life by reporting "
7933 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
7934 "does not occur.  For example, if a thread other than thread group leader "
7935 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
7936 "any subsequent ptrace stops will be reported under the thread group leader's "
7937 "PID."
7938 msgstr ""
7939
7940 #. type: SS
7941 #: build/C/man2/ptrace.2:761
7942 #, no-wrap
7943 msgid "Stopped states"
7944 msgstr ""
7945
7946 #. type: Plain text
7947 #: build/C/man2/ptrace.2:763
7948 msgid "A tracee can be in two states: running or stopped."
7949 msgstr ""
7950
7951 #. type: Plain text
7952 #: build/C/man2/ptrace.2:767
7953 msgid ""
7954 "There are many kinds of states when the tracee is stopped, and in ptrace "
7955 "discussions they are often conflated.  Therefore, it is important to use "
7956 "precise terms."
7957 msgstr ""
7958
7959 #. type: Plain text
7960 #: build/C/man2/ptrace.2:778
7961 msgid ""
7962 "In this manual page, any stopped state in which the tracee is ready to "
7963 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
7964 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
7965 "I<syscall-stop>, and so on.  These stopped states are described in detail "
7966 "below."
7967 msgstr ""
7968
7969 #. type: Plain text
7970 #: build/C/man2/ptrace.2:783
7971 msgid ""
7972 "When the running tracee enters ptrace-stop, it notifies its tracer using "
7973 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
7974 "manual page assumes that the tracer waits with:"
7975 msgstr ""
7976
7977 #. type: Plain text
7978 #: build/C/man2/ptrace.2:785
7979 #, no-wrap
7980 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
7981 msgstr ""
7982
7983 #.  Denys Vlasenko:
7984 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
7985 #.      I am not 100% sure there aren't ugly corner cases.) Are the
7986 #.      rules different if user wants to use waitid? Will waitid require
7987 #.      WEXITED?
7988 #. type: Plain text
7989 #: build/C/man2/ptrace.2:797
7990 msgid ""
7991 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
7992 "and I<WIFSTOPPED(status)> true."
7993 msgstr ""
7994
7995 #. type: Plain text
7996 #: build/C/man2/ptrace.2:805
7997 msgid ""
7998 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
7999 "but implies their functionality."
8000 msgstr ""
8001
8002 #. type: Plain text
8003 #: build/C/man2/ptrace.2:812
8004 msgid ""
8005 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8006 "recommended: the \"continued\" state is per-process and consuming it can "
8007 "confuse the real parent of the tracee."
8008 msgstr ""
8009
8010 #. type: Plain text
8011 #: build/C/man2/ptrace.2:820
8012 msgid ""
8013 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8014 "results available yet\")  even if the tracer knows there should be a "
8015 "notification.  Example:"
8016 msgstr ""
8017
8018 #. type: Plain text
8019 #: build/C/man2/ptrace.2:829
8020 #, no-wrap
8021 msgid ""
8022 "    errno = 0;\n"
8023 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8024 "    if (errno == ESRCH) {\n"
8025 "        /* tracee is dead */\n"
8026 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8027 "        /* r can still be 0 here! */\n"
8028 "    }\n"
8029 msgstr ""
8030
8031 #. type: Plain text
8032 #: build/C/man2/ptrace.2:852
8033 msgid ""
8034 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8035 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8036 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8037 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8038 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8039 "> macro can't be used to perform this examination, because it returns the "
8040 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8041 msgstr ""
8042
8043 #. type: SS
8044 #: build/C/man2/ptrace.2:852
8045 #, no-wrap
8046 msgid "Signal-delivery-stop"
8047 msgstr ""
8048
8049 #. type: Plain text
8050 #: build/C/man2/ptrace.2:872
8051 msgid ""
8052 "When a (possibly multithreaded) process receives any signal except "
8053 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8054 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8055 "can be explicitly selected by the caller.)  If the selected thread is "
8056 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8057 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8058 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8059 "the next ptrace restart request.  This second step of signal delivery is "
8060 "called I<signal injection> in this manual page.  Note that if the signal is "
8061 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8062 "with the usual exception that B<SIGSTOP> can't be blocked."
8063 msgstr ""
8064
8065 #. type: Plain text
8066 #: build/C/man2/ptrace.2:886
8067 msgid ""
8068 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8069 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8070 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8071 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8072 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8073 "group-stop; see below."
8074 msgstr ""
8075
8076 #. type: SS
8077 #: build/C/man2/ptrace.2:886
8078 #, no-wrap
8079 msgid "Signal injection and suppression"
8080 msgstr ""
8081
8082 #. type: Plain text
8083 #: build/C/man2/ptrace.2:889
8084 msgid ""
8085 "After signal-delivery-stop is observed by the tracer, the tracer should "
8086 "restart the tracee with the call"
8087 msgstr ""
8088
8089 #. type: Plain text
8090 #: build/C/man2/ptrace.2:891
8091 #, no-wrap
8092 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8093 msgstr ""
8094
8095 #. type: Plain text
8096 #: build/C/man2/ptrace.2:904
8097 msgid ""
8098 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8099 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8100 "delivered.  This operation is called I<signal injection> in this manual "
8101 "page, to distinguish it from signal-delivery-stop."
8102 msgstr ""
8103
8104 #. type: Plain text
8105 #: build/C/man2/ptrace.2:910
8106 msgid ""
8107 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8108 "tracer can cause a different signal to be injected."
8109 msgstr ""
8110
8111 #. type: Plain text
8112 #: build/C/man2/ptrace.2:926
8113 msgid ""
8114 "Note that a suppressed signal still causes system calls to return "
8115 "prematurely.  In this case system calls will be restarted: the tracer will "
8116 "observe the tracee to reexecute the interrupted system call (or "
8117 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8118 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8119 "calls (such as B<poll>(2))  which are not restartable after signal are "
8120 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8121 "some syscalls to fail with B<EINTR> even though no observable signal is "
8122 "injected to the tracee."
8123 msgstr ""
8124
8125 #. type: Plain text
8126 #: build/C/man2/ptrace.2:937
8127 msgid ""
8128 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8129 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8130 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8131 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8132 "instead."
8133 msgstr ""
8134
8135 #. type: Plain text
8136 #: build/C/man2/ptrace.2:944
8137 msgid ""
8138 "The fact that signal injection requests may be ignored when restarting the "
8139 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8140 "confusion among ptrace users.  One typical scenario is that the tracer "
8141 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8142 "tracee with"
8143 msgstr ""
8144
8145 #. type: Plain text
8146 #: build/C/man2/ptrace.2:946
8147 #, no-wrap
8148 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8149 msgstr ""
8150
8151 #. type: Plain text
8152 #: build/C/man2/ptrace.2:952
8153 msgid ""
8154 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8155 "the tracee continues to run."
8156 msgstr ""
8157
8158 #. type: Plain text
8159 #: build/C/man2/ptrace.2:972
8160 msgid ""
8161 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8162 "group-stopped process.  This side effect happens before signal-delivery-"
8163 "stop.  The tracer can't suppress this side effect (it can only suppress "
8164 "signal injection, which only causes the B<SIGCONT> handler to not be "
8165 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8166 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8167 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8168 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8169 "by the tracee after it was sent."
8170 msgstr ""
8171
8172 #. type: Plain text
8173 #: build/C/man2/ptrace.2:976
8174 msgid ""
8175 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8176 "side effect happens after signal injection, and therefore can be suppressed "
8177 "by the tracer."
8178 msgstr ""
8179
8180 #
8181 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8182 #.  there is:
8183 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8184 #.              if (signr == SIGSTOP)
8185 #.                      continue;
8186 #. type: Plain text
8187 #: build/C/man2/ptrace.2:986
8188 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8189 msgstr ""
8190
8191 #. type: Plain text
8192 #: build/C/man2/ptrace.2:1003
8193 msgid ""
8194 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8195 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8196 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8197 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8198 "match, otherwise the result is undefined."
8199 msgstr ""
8200
8201 #. type: SS
8202 #: build/C/man2/ptrace.2:1003
8203 #, no-wrap
8204 msgid "Group-stop"
8205 msgstr ""
8206
8207 #. type: Plain text
8208 #: build/C/man2/ptrace.2:1015
8209 msgid ""
8210 "When a (possibly multithreaded) process receives a stopping signal, all "
8211 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8212 "that the stopping signal will first cause signal-delivery-stop (on one "
8213 "tracee only), and only after it is injected by the tracer (or after it was "
8214 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8215 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8216 "reports its group-stop separately to the corresponding tracer."
8217 msgstr ""
8218
8219 #. type: Plain text
8220 #: build/C/man2/ptrace.2:1024
8221 msgid ""
8222 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8223 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8224 "(status)>.  The same result is returned by some other classes of ptrace-"
8225 "stops, therefore the recommended practice is to perform the call"
8226 msgstr ""
8227
8228 #. type: Plain text
8229 #: build/C/man2/ptrace.2:1026
8230 #, no-wrap
8231 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8232 msgstr ""
8233
8234 #. type: Plain text
8235 #: build/C/man2/ptrace.2:1047
8236 msgid ""
8237 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8238 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8239 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8240 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8241 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8242 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8243 "the tracee.)"
8244 msgstr ""
8245
8246 #. type: Plain text
8247 #: build/C/man2/ptrace.2:1056
8248 msgid ""
8249 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8250 "it restarts or kills it, the tracee will not run, and will not send "
8251 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8252 "enters into another B<waitpid>(2)  call."
8253 msgstr ""
8254
8255 #. type: Plain text
8256 #: build/C/man2/ptrace.2:1070
8257 msgid ""
8258 "The kernel behavior described in the previous paragraph causes a problem "
8259 "with transparent handling of stopping signals.  If the tracer restarts the "
8260 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8261 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8262 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8263 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8264 "signals to have no effect on the tracee."
8265 msgstr ""
8266
8267 #. type: Plain text
8268 #: build/C/man2/ptrace.2:1081
8269 msgid ""
8270 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8271 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8272 "in a way where it does not execute, but waits for a new event which it can "
8273 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8274 msgstr ""
8275
8276 #. type: SS
8277 #: build/C/man2/ptrace.2:1081
8278 #, no-wrap
8279 msgid "PTRACE_EVENT stops"
8280 msgstr ""
8281
8282 #. type: Plain text
8283 #: build/C/man2/ptrace.2:1087
8284 msgid ""
8285 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8286 "stops called B<PTRACE_EVENT> stops."
8287 msgstr ""
8288
8289 #. type: Plain text
8290 #: build/C/man2/ptrace.2:1101
8291 msgid ""
8292 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8293 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8294 "additional bit is set in the higher byte of the status word: the value "
8295 "I<statusE<gt>E<gt>8> will be"
8296 msgstr ""
8297
8298 #. type: Plain text
8299 #: build/C/man2/ptrace.2:1103
8300 #, no-wrap
8301 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8302 msgstr ""
8303
8304 #. type: Plain text
8305 #: build/C/man2/ptrace.2:1105
8306 msgid "The following events exist:"
8307 msgstr ""
8308
8309 #. type: TP
8310 #: build/C/man2/ptrace.2:1105
8311 #, no-wrap
8312 msgid "B<PTRACE_EVENT_VFORK>"
8313 msgstr "B<PTRACE_EVENT_VFORK>"
8314
8315 #. type: Plain text
8316 #: build/C/man2/ptrace.2:1118
8317 msgid ""
8318 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8319 "flag.  When the tracee is continued after this stop, it will wait for child "
8320 "to exit/exec before continuing its execution (in other words, the usual "
8321 "behavior on B<vfork>(2))."
8322 msgstr ""
8323
8324 #. type: TP
8325 #: build/C/man2/ptrace.2:1118
8326 #, no-wrap
8327 msgid "B<PTRACE_EVENT_FORK>"
8328 msgstr "B<PTRACE_EVENT_FORK>"
8329
8330 #. type: Plain text
8331 #: build/C/man2/ptrace.2:1126
8332 msgid ""
8333 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8334 "to B<SIGCHLD>."
8335 msgstr ""
8336
8337 #. type: TP
8338 #: build/C/man2/ptrace.2:1126
8339 #, no-wrap
8340 msgid "B<PTRACE_EVENT_CLONE>"
8341 msgstr "B<PTRACE_EVENT_CLONE>"
8342
8343 #. type: Plain text
8344 #: build/C/man2/ptrace.2:1130
8345 msgid "Stop before return from B<clone>(2)."
8346 msgstr ""
8347
8348 #. type: TP
8349 #: build/C/man2/ptrace.2:1130
8350 #, no-wrap
8351 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8352 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8353
8354 #. type: Plain text
8355 #: build/C/man2/ptrace.2:1140
8356 msgid ""
8357 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8358 "flag, but after the child unblocked this tracee by exiting or execing."
8359 msgstr ""
8360
8361 #. type: Plain text
8362 #: build/C/man2/ptrace.2:1146
8363 msgid ""
8364 "For all four stops described above, the stop occurs in the parent (i.e., the "
8365 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8366 "to retrieve the new thread's ID."
8367 msgstr ""
8368
8369 #. type: TP
8370 #: build/C/man2/ptrace.2:1146
8371 #, no-wrap
8372 msgid "B<PTRACE_EVENT_EXEC>"
8373 msgstr "B<PTRACE_EVENT_EXEC>"
8374
8375 #. type: Plain text
8376 #: build/C/man2/ptrace.2:1153
8377 msgid ""
8378 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8379 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8380 msgstr ""
8381
8382 #. type: TP
8383 #: build/C/man2/ptrace.2:1153
8384 #, no-wrap
8385 msgid "B<PTRACE_EVENT_EXIT>"
8386 msgstr "B<PTRACE_EVENT_EXIT>"
8387
8388 #. type: Plain text
8389 #: build/C/man2/ptrace.2:1169
8390 msgid ""
8391 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8392 "exit caused by B<execve>(2)  in a multithreaded process.  "
8393 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8394 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8395 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8396 msgstr ""
8397
8398 #. type: TP
8399 #: build/C/man2/ptrace.2:1169
8400 #, fuzzy, no-wrap
8401 #| msgid "B<PTRACE_EVENT_FORK>"
8402 msgid "B<PTRACE_EVENT_STOP>"
8403 msgstr "B<PTRACE_EVENT_FORK>"
8404
8405 #. type: Plain text
8406 #: build/C/man2/ptrace.2:1174
8407 msgid "Stop induced by B<PTRACE_INTERRUPT> command."
8408 msgstr ""
8409
8410 #. type: Plain text
8411 #: build/C/man2/ptrace.2:1186
8412 msgid ""
8413 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8414 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8415 msgstr ""
8416
8417 #. type: SS
8418 #: build/C/man2/ptrace.2:1186
8419 #, no-wrap
8420 msgid "Syscall-stops"
8421 msgstr ""
8422
8423 #. type: Plain text
8424 #: build/C/man2/ptrace.2:1199
8425 msgid ""
8426 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8427 "enter-stop just prior to entering any system call.  If the tracer restarts "
8428 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8429 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8430 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8431 "exit-stop; it happens I<after> syscall-exit-stop.)"
8432 msgstr ""
8433
8434 #. type: Plain text
8435 #: build/C/man2/ptrace.2:1213
8436 msgid ""
8437 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8438 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8439 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8440 "(2)  happened in another thread, and that thread is not traced by the same "
8441 "tracer; this situation is discussed later)."
8442 msgstr ""
8443
8444 #. type: Plain text
8445 #: build/C/man2/ptrace.2:1228
8446 msgid ""
8447 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8448 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8449 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8450 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8451 "0x80)>."
8452 msgstr ""
8453
8454 #. type: Plain text
8455 #: build/C/man2/ptrace.2:1234
8456 msgid ""
8457 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8458 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8459 msgstr ""
8460
8461 #. type: TP
8462 #: build/C/man2/ptrace.2:1234
8463 #, no-wrap
8464 msgid "I<si_code> E<lt>= 0"
8465 msgstr ""
8466
8467 #. type: Plain text
8468 #: build/C/man2/ptrace.2:1246
8469 msgid ""
8470 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8471 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8472 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8473 "asynchronous I/O request."
8474 msgstr ""
8475
8476 #. type: TP
8477 #: build/C/man2/ptrace.2:1246
8478 #, no-wrap
8479 msgid "I<si_code> == SI_KERNEL (0x80)"
8480 msgstr ""
8481
8482 #. type: Plain text
8483 #: build/C/man2/ptrace.2:1250
8484 msgid "B<SIGTRAP> was sent by the kernel."
8485 msgstr ""
8486
8487 #. type: TP
8488 #: build/C/man2/ptrace.2:1250
8489 #, no-wrap
8490 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8491 msgstr ""
8492
8493 #. type: Plain text
8494 #: build/C/man2/ptrace.2:1253
8495 msgid "This is a syscall-stop."
8496 msgstr ""
8497
8498 #. type: Plain text
8499 #: build/C/man2/ptrace.2:1258
8500 msgid ""
8501 "However, syscall-stops happen very often (twice per system call), and "
8502 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8503 "expensive."
8504 msgstr ""
8505
8506 #. type: Plain text
8507 #: build/C/man2/ptrace.2:1281
8508 msgid ""
8509 "Some architectures allow the cases to be distinguished by examining "
8510 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8511 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8512 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8513 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8514 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8515 "and can be detected this way.  But such detection is fragile and is best "
8516 "avoided."
8517 msgstr ""
8518
8519 #. type: Plain text
8520 #: build/C/man2/ptrace.2:1287
8521 msgid ""
8522 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8523 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8524 "reliable and does not incur a performance penalty."
8525 msgstr ""
8526
8527 #. type: Plain text
8528 #: build/C/man2/ptrace.2:1298
8529 msgid ""
8530 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8531 "other by the tracer.  The tracer needs to keep track of the sequence of "
8532 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8533 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8534 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8535 "kinds of ptrace-stop can occur in between."
8536 msgstr ""
8537
8538 #. type: Plain text
8539 #: build/C/man2/ptrace.2:1303
8540 msgid ""
8541 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8542 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8543 msgstr ""
8544
8545 #. type: Plain text
8546 #: build/C/man2/ptrace.2:1315
8547 msgid ""
8548 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8549 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8550 msgstr ""
8551
8552 #. type: SS
8553 #: build/C/man2/ptrace.2:1315
8554 #, no-wrap
8555 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8556 msgstr ""
8557
8558 #
8559 #.  FIXME
8560 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8561 #.  PTRACE_SYSEMU_SINGLESTEP
8562 #. type: Plain text
8563 #: build/C/man2/ptrace.2:1321
8564 msgid "[Details of these kinds of stops are yet to be documented.]"
8565 msgstr ""
8566
8567 #. type: SS
8568 #: build/C/man2/ptrace.2:1321
8569 #, no-wrap
8570 msgid "Informational and restarting ptrace commands"
8571 msgstr ""
8572
8573 #. type: Plain text
8574 #: build/C/man2/ptrace.2:1331
8575 msgid ""
8576 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8577 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8578 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8579 msgstr ""
8580
8581 #. type: Plain text
8582 #: build/C/man2/ptrace.2:1336
8583 msgid ""
8584 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8585 "tracee using informational commands.  These commands leave the tracee in "
8586 "ptrace-stopped state:"
8587 msgstr ""
8588
8589 #. type: Plain text
8590 #: build/C/man2/ptrace.2:1348
8591 #, no-wrap
8592 msgid ""
8593 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8594 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8595 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8596 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8597 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8598 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8599 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8600 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8601 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8602 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8603 msgstr ""
8604
8605 #. type: Plain text
8606 #: build/C/man2/ptrace.2:1360
8607 msgid ""
8608 "Note that some errors are not reported.  For example, setting signal "
8609 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8610 "call may succeed (return 0 and not set I<errno>); querying "
8611 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8612 "ptrace-stop is not documented as returning a meaningful event message."
8613 msgstr ""
8614
8615 #. type: Plain text
8616 #: build/C/man2/ptrace.2:1362
8617 msgid "The call"
8618 msgstr ""
8619
8620 #. type: Plain text
8621 #: build/C/man2/ptrace.2:1364
8622 #, no-wrap
8623 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8624 msgstr ""
8625
8626 #. type: Plain text
8627 #: build/C/man2/ptrace.2:1373
8628 msgid ""
8629 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8630 "inherited by new tracees created and \"auto-attached\" via active "
8631 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8632 "options."
8633 msgstr ""
8634
8635 #. type: Plain text
8636 #: build/C/man2/ptrace.2:1376
8637 msgid ""
8638 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8639 "the form:"
8640 msgstr ""
8641
8642 #. type: Plain text
8643 #: build/C/man2/ptrace.2:1378
8644 #, no-wrap
8645 msgid "    ptrace(cmd, pid, 0, sig);\n"
8646 msgstr ""
8647
8648 #. type: Plain text
8649 #: build/C/man2/ptrace.2:1399
8650 msgid ""
8651 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8652 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8653 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8654 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8655 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8656 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8657 msgstr ""
8658
8659 #. type: SS
8660 #: build/C/man2/ptrace.2:1399
8661 #, no-wrap
8662 msgid "Attaching and detaching"
8663 msgstr ""
8664
8665 #. type: Plain text
8666 #: build/C/man2/ptrace.2:1401
8667 msgid "A thread can be attached to the tracer using the call"
8668 msgstr ""
8669
8670 #. type: Plain text
8671 #: build/C/man2/ptrace.2:1403
8672 #, no-wrap
8673 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8674 msgstr ""
8675
8676 #. type: Plain text
8677 #: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1894
8678 msgid "or"
8679 msgstr ""
8680
8681 #. type: Plain text
8682 #: build/C/man2/ptrace.2:1407
8683 #, no-wrap
8684 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8685 msgstr ""
8686
8687 #
8688 #.  FIXME: Describe how to attach to a thread which is already
8689 #.         group-stopped.
8690 #. type: Plain text
8691 #: build/C/man2/ptrace.2:1432
8692 msgid ""
8693 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8694 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8695 "signals are concurrently sent to this thread during attach, the tracer may "
8696 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8697 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8698 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8699 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8700 "B<SIGSTOP> may be lost."
8701 msgstr ""
8702
8703 #. type: Plain text
8704 #: build/C/man2/ptrace.2:1439
8705 msgid ""
8706 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8707 "may cause a stray B<EINTR> return from the currently executing system call "
8708 "in the tracee, as described in the \"Signal injection and suppression\" "
8709 "section."
8710 msgstr ""
8711
8712 #. type: Plain text
8713 #: build/C/man2/ptrace.2:1450
8714 msgid ""
8715 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
8716 "B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it "
8717 "after attach (or at any other time) without sending it any signals, use "
8718 "B<PTRACE_INTERRUPT> command."
8719 msgstr ""
8720
8721 #. type: Plain text
8722 #: build/C/man2/ptrace.2:1452
8723 msgid "The request"
8724 msgstr ""
8725
8726 #. type: Plain text
8727 #: build/C/man2/ptrace.2:1454
8728 #, no-wrap
8729 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
8730 msgstr ""
8731
8732 #. type: Plain text
8733 #: build/C/man2/ptrace.2:1460
8734 msgid ""
8735 "turns the calling thread into a tracee.  The thread continues to run "
8736 "(doesn't enter ptrace-stop).  A common practice is to follow the "
8737 "B<PTRACE_TRACEME> with"
8738 msgstr ""
8739
8740 #. type: Plain text
8741 #: build/C/man2/ptrace.2:1462
8742 #, no-wrap
8743 msgid "    raise(SIGSTOP);\n"
8744 msgstr ""
8745
8746 #. type: Plain text
8747 #: build/C/man2/ptrace.2:1465
8748 msgid ""
8749 "and allow the parent (which is our tracer now) to observe our signal-"
8750 "delivery-stop."
8751 msgstr ""
8752
8753 #. type: Plain text
8754 #: build/C/man2/ptrace.2:1489
8755 msgid ""
8756 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
8757 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
8758 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
8759 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
8760 "other kinds of B<clone>(2), are automatically attached to the same tracer "
8761 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
8762 "them to enter signal-delivery-stop after they exit the system call which "
8763 "created them."
8764 msgstr ""
8765
8766 #. type: Plain text
8767 #: build/C/man2/ptrace.2:1491
8768 msgid "Detaching of the tracee is performed by:"
8769 msgstr ""
8770
8771 #. type: Plain text
8772 #: build/C/man2/ptrace.2:1493
8773 #, no-wrap
8774 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
8775 msgstr ""
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:1501
8779 msgid ""
8780 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
8781 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
8782 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
8783 msgstr ""
8784
8785 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
8786 #.         doesn't run, but continues to wait for SIGCONT.
8787 #. type: Plain text
8788 #: build/C/man2/ptrace.2:1525
8789 msgid ""
8790 "If the tracee is running when the tracer wants to detach it, the usual "
8791 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
8792 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
8793 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
8794 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
8795 "is that the tracee may enter other ptrace-stops and needs to be restarted "
8796 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
8797 "to be sure that the tracee is not already ptrace-stopped, because no signal "
8798 "delivery happens while it is\\(emnot even B<SIGSTOP>."
8799 msgstr ""
8800
8801 #. type: Plain text
8802 #: build/C/man2/ptrace.2:1533
8803 msgid ""
8804 "If the tracer dies, all tracees are automatically detached and restarted, "
8805 "unless they were in group-stop.  Handling of restart from group-stop is "
8806 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
8807 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
8808 "stop, the pending signal is injected."
8809 msgstr ""
8810
8811 #. type: SS
8812 #: build/C/man2/ptrace.2:1533
8813 #, no-wrap
8814 msgid "execve(2) under ptrace"
8815 msgstr ""
8816
8817 #
8818 #.  clone(2) CLONE_THREAD says:
8819 #.      If  any  of the threads in a thread group performs an execve(2),
8820 #.      then all threads other than the thread group leader are terminated,
8821 #.      and the new program is executed in the thread group leader.
8822 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
8823 #. type: Plain text
8824 #: build/C/man2/ptrace.2:1552
8825 msgid ""
8826 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
8827 "destroys all other threads in the process, and resets the thread ID of the "
8828 "execing thread to the thread group ID (process ID).  (Or, to put things "
8829 "another way, when a multithreaded process does an B<execve>(2), at "
8830 "completion of the call, it appears as though the B<execve>(2)  occurred in "
8831 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
8832 "This resetting of the thread ID looks very confusing to tracers:"
8833 msgstr ""
8834
8835 #. type: Plain text
8836 #: build/C/man2/ptrace.2:1562
8837 msgid ""
8838 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
8839 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
8840 "the thread group leader report death as if they exited via B<_exit>(2)  with "
8841 "exit code 0."
8842 msgstr ""
8843
8844 #. type: Plain text
8845 #: build/C/man2/ptrace.2:1570
8846 msgid ""
8847 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
8848 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
8849 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
8850 "ID is reset to be the same as its process ID, which is the same as the "
8851 "thread group leader's thread ID."
8852 msgstr ""
8853
8854 #. type: Plain text
8855 #: build/C/man2/ptrace.2:1576
8856 msgid ""
8857 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
8858 "option was turned on."
8859 msgstr ""
8860
8861 #. type: Plain text
8862 #: build/C/man2/ptrace.2:1597
8863 msgid ""
8864 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
8865 "this time, it appears to the tracer that the dead thread leader \"reappears "
8866 "from nowhere\".  (Note: the thread group leader does not report death via "
8867 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
8868 "eliminates the possibility that the tracer will see it dying and then "
8869 "reappearing.)  If the thread group leader was still alive, for the tracer "
8870 "this may look as if thread group leader returns from a different system call "
8871 "than it entered, or even \"returned from a system call even though it was "
8872 "not in any system call\".  If the thread group leader was not traced (or was "
8873 "traced by a different tracer), then during B<execve>(2)  it will appear as "
8874 "if it has become a tracee of the tracer of the execing tracee."
8875 msgstr ""
8876
8877 #. type: Plain text
8878 #: build/C/man2/ptrace.2:1600
8879 msgid ""
8880 "All of the above effects are the artifacts of the thread ID change in the "
8881 "tracee."
8882 msgstr ""
8883
8884 #. type: Plain text
8885 #: build/C/man2/ptrace.2:1620
8886 msgid ""
8887 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
8888 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
8889 "before B<execve>(2)  returns.  In this stop, the tracer can use "
8890 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
8891 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
8892 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
8893 msgstr ""
8894
8895 #. type: Plain text
8896 #: build/C/man2/ptrace.2:1626
8897 msgid ""
8898 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
8899 "guaranteed that except this tracee and the thread group leader, no other "
8900 "threads from the process are alive."
8901 msgstr ""
8902
8903 #. type: Plain text
8904 #: build/C/man2/ptrace.2:1634
8905 msgid ""
8906 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
8907 "clean up all its internal data structures describing the threads of this "
8908 "process, and retain only one data structure\\(emone which describes the "
8909 "single still running tracee, with"
8910 msgstr ""
8911
8912 #. type: Plain text
8913 #: build/C/man2/ptrace.2:1636
8914 #, no-wrap
8915 msgid "    thread ID == thread group ID == process ID.\n"
8916 msgstr ""
8917
8918 #. type: Plain text
8919 #: build/C/man2/ptrace.2:1640
8920 msgid "Example: two threads call B<execve>(2)  at the same time:"
8921 msgstr ""
8922
8923 #. type: Plain text
8924 #: build/C/man2/ptrace.2:1651
8925 #, no-wrap
8926 msgid ""
8927 "*** we get syscall-enter-stop in thread 1: **\n"
8928 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
8929 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
8930 "*** we get syscall-enter-stop in thread 2: **\n"
8931 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
8932 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
8933 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
8934 "*** we get syscall-exit-stop for PID0: **\n"
8935 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
8936 msgstr ""
8937
8938 #. type: Plain text
8939 #: build/C/man2/ptrace.2:1674
8940 msgid ""
8941 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
8942 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
8943 "(2)  returns.  This is an ordinary signal (similar to one which can be "
8944 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
8945 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
8946 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
8947 "delivered (much) later."
8948 msgstr ""
8949
8950 #. type: Plain text
8951 #: build/C/man2/ptrace.2:1693
8952 msgid ""
8953 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
8954 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
8955 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
8956 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
8957 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
8958 "B<SIGTRAP> is the recommended approach."
8959 msgstr ""
8960
8961 #. type: SS
8962 #: build/C/man2/ptrace.2:1693
8963 #, no-wrap
8964 msgid "Real parent"
8965 msgstr ""
8966
8967 #. type: Plain text
8968 #: build/C/man2/ptrace.2:1700
8969 msgid ""
8970 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
8971 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
8972 "receiving several kinds of B<waitpid>(2)  notifications when the child "
8973 "process is traced by some other process."
8974 msgstr ""
8975
8976 #. type: Plain text
8977 #: build/C/man2/ptrace.2:1703
8978 msgid ""
8979 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
8980 "exist; see BUGS below."
8981 msgstr ""
8982
8983 #. type: Plain text
8984 #: build/C/man2/ptrace.2:1705
8985 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
8986 msgstr ""
8987
8988 #. type: Plain text
8989 #: build/C/man2/ptrace.2:1713
8990 msgid ""
8991 "exit/death by signal is reported first to the tracer, then, when the tracer "
8992 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
8993 "only when the whole multithreaded process exits).  If the tracer and the "
8994 "real parent are the same process, the report is sent only once."
8995 msgstr ""
8996
8997 #. type: Plain text
8998 #: build/C/man2/ptrace.2:1727
8999 #, fuzzy
9000 #| msgid ""
9001 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9002 #| "other requests return zero.  On error, all requests return -1, and "
9003 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9004 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9005 #| "such requests to determine whether or not an error occurred."
9006 msgid ""
9007 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9008 "requests return zero.  On error, all requests return -1, and I<errno> is set "
9009 "appropriately.  Since the value returned by a successful B<PTRACE_PEEK*> "
9010 "request may be -1, the caller must clear I<errno> before the call, and then "
9011 "check it afterward to determine whether or not an error occurred."
9012 msgstr ""
9013 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9014 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9015 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9016 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9017 "なければならない。"
9018
9019 #. type: Plain text
9020 #: build/C/man2/ptrace.2:1731
9021 msgid ""
9022 "(i386 only) There was an error with allocating or freeing a debug register."
9023 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9024
9025 #. type: Plain text
9026 #: build/C/man2/ptrace.2:1742
9027 #, fuzzy
9028 #| msgid ""
9029 #| "There was an attempt to read from or write to an invalid area in the "
9030 #| "parent's or child's memory, probably because the area wasn't mapped or "
9031 #| "accessible.  Unfortunately, under Linux, different variations of this "
9032 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9033 msgid ""
9034 "There was an attempt to read from or write to an invalid area in the "
9035 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9036 "accessible.  Unfortunately, under Linux, different variations of this fault "
9037 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9038 msgstr ""
9039 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9040 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9041 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9042 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9043
9044 #. type: Plain text
9045 #: build/C/man2/ptrace.2:1745
9046 msgid "An attempt was made to set an invalid option."
9047 msgstr "不正なオプションを設定しようとした。"
9048
9049 #. type: Plain text
9050 #: build/C/man2/ptrace.2:1752
9051 #, fuzzy
9052 #| msgid ""
9053 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9054 #| "invalid area in the parent's or child's memory, or there was a word-"
9055 #| "alignment violation, or an invalid signal was specified during a restart "
9056 #| "request."
9057 msgid ""
9058 "I<request> is invalid, or an attempt was made to read from or write to an "
9059 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9060 "alignment violation, or an invalid signal was specified during a restart "
9061 "request."
9062 msgstr ""
9063 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9064 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9065 "開の要求で不正なシグナルを指定した。"
9066
9067 #. type: Plain text
9068 #: build/C/man2/ptrace.2:1765
9069 #, fuzzy
9070 #| msgid ""
9071 #| "The specified process cannot be traced.  This could be because the parent "
9072 #| "has insufficient privileges (the required capability is "
9073 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9074 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9075 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9076 #| "being traced, or be B<init>(8)  (PID 1)."
9077 msgid ""
9078 "The specified process cannot be traced.  This could be because the tracer "
9079 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9080 "unprivileged processes cannot trace processes that they cannot send signals "
9081 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9082 "Alternatively, the process may already be being traced, or (on kernels "
9083 "before 2.6.26) be B<init>(8)  (PID 1)."
9084 msgstr ""
9085 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9086 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9087 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9088 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9089 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9090 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9091
9092 #. type: Plain text
9093 #: build/C/man2/ptrace.2:1770
9094 #, fuzzy
9095 #| msgid ""
9096 #| "The specified process does not exist, or is not currently being traced by "
9097 #| "the caller, or is not stopped (for requests that require that)."
9098 msgid ""
9099 "The specified process does not exist, or is not currently being traced by "
9100 "the caller, or is not stopped (for requests that require a stopped tracee)."
9101 msgstr ""
9102 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9103 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9104 "ない (停止していることが必要な要求の場合)。"
9105
9106 #. type: Plain text
9107 #: build/C/man2/ptrace.2:1772
9108 msgid "SVr4, 4.3BSD."
9109 msgstr "SVr4, 4.3BSD."
9110
9111 #. type: Plain text
9112 #: build/C/man2/ptrace.2:1787
9113 #, fuzzy
9114 #| msgid ""
9115 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9116 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9117 #| "function with only the I<request> argument fixed.  This means that "
9118 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9119 #| "undocumented B<gcc>(1)  behavior."
9120 msgid ""
9121 "Although arguments to B<ptrace>()  are interpreted according to the "
9122 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9123 "function with only the I<request> argument fixed.  It is recommended to "
9124 "always supply four arguments, even if the requested operation does not use "
9125 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9126 msgstr ""
9127 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9128 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9129 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9130 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9131 "になる。"
9132
9133 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9134 #. type: Plain text
9135 #: build/C/man2/ptrace.2:1792
9136 #, fuzzy
9137 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9138 msgid ""
9139 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9140 "be traced."
9141 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9142
9143 #.  See http://lkml.org/lkml/2008/5/8/375
9144 #. type: Plain text
9145 #: build/C/man2/ptrace.2:1799
9146 #, fuzzy
9147 #| msgid ""
9148 #| "The layout of the contents of memory and the USER area are quite OS- and "
9149 #| "architecture-specific.  The offset supplied, and the data returned, might "
9150 #| "not entirely match with the definition of I<struct user>."
9151 msgid ""
9152 "The layout of the contents of memory and the USER area are quite operating-"
9153 "system- and architecture-specific.  The offset supplied, and the data "
9154 "returned, might not entirely match with the definition of I<struct user>."
9155 msgstr ""
9156 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9157 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9158 "に一致しないこともありえる。"
9159
9160 #. type: Plain text
9161 #: build/C/man2/ptrace.2:1802
9162 #, fuzzy
9163 #| msgid ""
9164 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9165 #| "Linux it is 32 bits, etc.)."
9166 msgid ""
9167 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9168 "for 32-bit Linux it is 32 bits)."
9169 msgstr ""
9170 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9171 "では 32 ビットである、など。)"
9172
9173 #. type: Plain text
9174 #: build/C/man2/ptrace.2:1810
9175 #, fuzzy
9176 #| msgid ""
9177 #| "This page documents the way the B<ptrace>()  call works currently in "
9178 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9179 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9180 msgid ""
9181 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9182 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9183 "of B<ptrace>()  is highly specific to the operating system and architecture."
9184 msgstr ""
9185 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9186 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9187 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9188
9189 #. type: Plain text
9190 #: build/C/man2/ptrace.2:1821
9191 #, fuzzy
9192 #| msgid ""
9193 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9194 #| "different value than the one for 2.4.  This leads to applications "
9195 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9196 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9197 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9198 msgid ""
9199 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9200 "different value than the one for 2.4.  This leads to applications compiled "
9201 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9202 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9203 "that is defined."
9204 msgstr ""
9205 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9206 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9207 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9208 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9209 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9210
9211 #. type: Plain text
9212 #: build/C/man2/ptrace.2:1824
9213 msgid ""
9214 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9215 "Last confirmed on 2.6.38.6."
9216 msgstr ""
9217
9218 #.  Note from Denys Vlasenko:
9219 #.      Here "exits" means any kind of death - _exit, exit_group,
9220 #.      signal death. Signal death and exit_group cases are trivial,
9221 #.      though: since signal death and exit_group kill all other threads
9222 #.      too, "until all other threads exit" thing happens rather soon
9223 #.      in these cases. Therefore, only _exit presents observably
9224 #.      puzzling behavior to ptrace users: thread leader _exit's,
9225 #.      but WIFEXITED isn't reported! We are trying to explain here
9226 #.      why it is so.
9227 #.   FIXME: ^^^ need to test/verify this scenario
9228 #. type: Plain text
9229 #: build/C/man2/ptrace.2:1855
9230 msgid ""
9231 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9232 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9233 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9234 "threads exit.  As explained above, if one of other threads calls B<execve>"
9235 "(2), the death of the thread group leader will I<never> be reported.  If the "
9236 "execed thread is not traced by this tracer, the tracer will never know that "
9237 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9238 "thread group leader instead of restarting it in this case.  Last confirmed "
9239 "on 2.6.38.6."
9240 msgstr ""
9241
9242 #. type: Plain text
9243 #: build/C/man2/ptrace.2:1865
9244 msgid ""
9245 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9246 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9247 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9248 "2.6.38.6."
9249 msgstr ""
9250
9251 #. type: Plain text
9252 #: build/C/man2/ptrace.2:1883
9253 msgid ""
9254 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9255 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9256 "is usually done by debuggers on every attach, in order to not introduce a "
9257 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9258 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9259 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9260 "that when you attach to a quiescent process with the command"
9261 msgstr ""
9262
9263 #. type: Plain text
9264 #: build/C/man2/ptrace.2:1885
9265 #, no-wrap
9266 msgid "    strace -p E<lt>process-IDE<gt>\n"
9267 msgstr ""
9268
9269 #. type: Plain text
9270 #: build/C/man2/ptrace.2:1888
9271 msgid "then, instead of the usual and expected one-line output such as"
9272 msgstr ""
9273
9274 #. type: Plain text
9275 #: build/C/man2/ptrace.2:1891
9276 #, no-wrap
9277 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9278 msgstr ""
9279
9280 #. type: Plain text
9281 #: build/C/man2/ptrace.2:1897
9282 #, no-wrap
9283 msgid "    select(6, [5], NULL, [5], NULL_\n"
9284 msgstr ""
9285
9286 #. type: Plain text
9287 #: build/C/man2/ptrace.2:1901
9288 msgid ""
9289 "('_' denotes the cursor position), you observe more than one line.  For "
9290 "example:"
9291 msgstr ""
9292
9293 #. type: Plain text
9294 #: build/C/man2/ptrace.2:1905
9295 #, no-wrap
9296 msgid ""
9297 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9298 "    epoll_wait(4,_\n"
9299 msgstr ""
9300
9301 #. type: Plain text
9302 #: build/C/man2/ptrace.2:1926
9303 msgid ""
9304 "What is not visible here is that the process was blocked in B<epoll_wait>"
9305 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9306 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9307 "case, the program reacted to B<EINTR> by checking the current time, and then "
9308 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9309 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9310 "(1)  attach.)"
9311 msgstr ""
9312
9313 #. type: Plain text
9314 #: build/C/man2/ptrace.2:1940
9315 msgid ""
9316 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9317 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9318 "B<capabilities>(7), B<signal>(7)"
9319 msgstr ""
9320 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9321 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9322 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9323
9324 #. type: TH
9325 #: build/C/man2/quotactl.2:27
9326 #, no-wrap
9327 msgid "QUOTACTL"
9328 msgstr "QUOTACTL"
9329
9330 #. type: TH
9331 #: build/C/man2/quotactl.2:27
9332 #, no-wrap
9333 msgid "2010-06-16"
9334 msgstr "2010-06-16"
9335
9336 #. type: Plain text
9337 #: build/C/man2/quotactl.2:30
9338 msgid "quotactl - manipulate disk quotas"
9339 msgstr "quotactl - ディスク quota を操作する"
9340
9341 #. type: Plain text
9342 #: build/C/man2/quotactl.2:34
9343 #, no-wrap
9344 msgid ""
9345 "B<#include E<lt>sys/quota.hE<gt>>\n"
9346 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9347 msgstr ""
9348 "B<#include E<lt>sys/quota.hE<gt>>\n"
9349 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9350
9351 #. type: Plain text
9352 #: build/C/man2/quotactl.2:37
9353 #, no-wrap
9354 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9355 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9356
9357 #. type: Plain text
9358 #: build/C/man2/quotactl.2:49
9359 #, fuzzy
9360 #| msgid ""
9361 #| "The quota system defines for each user and/or group a soft limit and a "
9362 #| "hard limit bounding the amount of disk space that can be used on a given "
9363 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9364 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9365 #| "soft limit for more than one week (by default)  at a time: after this "
9366 #| "week the soft limit counts as hard limit."
9367 msgid ""
9368 "The quota system can be used to set per-user and per-group limits on the "
9369 "amount of disk space used on a file system.  For each user and/or group, a "
9370 "soft limit and a hard limit can be set for each file system.  The hard limit "
9371 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9372 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9373 "week (by default) at a time; after this time, the soft limit counts as a "
9374 "hard limit."
9375 msgstr ""
9376 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9377 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9378 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9379 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9380 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9381 "過した後はハード・リミットを超過したと みなされる。"
9382
9383 #. type: Plain text
9384 #: build/C/man2/quotactl.2:74
9385 #, fuzzy
9386 #| msgid ""
9387 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9388 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9389 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9390 #| "respectively), and I<subcmd> is described below."
9391 msgid ""
9392 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9393 "indicates a command to be applied to the user or group ID specified in "
9394 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9395 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9396 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9397 msgstr ""
9398 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9399 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9400 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9401 "を指定する。 I<subcmd> は以下で説明する。"
9402
9403 #. type: Plain text
9404 #: build/C/man2/quotactl.2:79
9405 msgid ""
9406 "The I<special> argument is a pointer to a null-terminated string containing "
9407 "the pathname of the (mounted) block special device for the file system being "
9408 "manipulated."
9409 msgstr ""
9410
9411 #. type: Plain text
9412 #: build/C/man2/quotactl.2:87
9413 msgid ""
9414 "The I<addr> argument is the address of an optional, command-specific, data "
9415 "structure that is copied in or out of the system.  The interpretation of "
9416 "I<addr> is given with each command below."
9417 msgstr ""
9418
9419 #. type: Plain text
9420 #: build/C/man2/quotactl.2:91
9421 msgid "The I<subcmd> value is one of the following:"
9422 msgstr "I<subcmd> の値は以下のいずれかである"
9423
9424 #. type: TP
9425 #: build/C/man2/quotactl.2:91
9426 #, no-wrap
9427 msgid "B<Q_QUOTAON>"
9428 msgstr "B<Q_QUOTAON>"
9429
9430 #. type: Plain text
9431 #: build/C/man2/quotactl.2:98
9432 msgid ""
9433 "Turn on quotas for a file system.  The I<id> argument is the identification "
9434 "number of the quota format to be used.  Currently, there are three supported "
9435 "quota formats:"
9436 msgstr ""
9437
9438 #. type: TP
9439 #: build/C/man2/quotactl.2:99
9440 #, no-wrap
9441 msgid "B<QFMT_VFS_OLD>"
9442 msgstr ""
9443
9444 #. type: Plain text
9445 #: build/C/man2/quotactl.2:102
9446 msgid "The original quota format."
9447 msgstr ""
9448
9449 #. type: TP
9450 #: build/C/man2/quotactl.2:102
9451 #, no-wrap
9452 msgid "B<QFMT_VFS_V0>"
9453 msgstr ""
9454
9455 #. type: Plain text
9456 #: build/C/man2/quotactl.2:106
9457 msgid ""
9458 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9459 "quota limits up to 2^42 bytes and 2^32 inodes."
9460 msgstr ""
9461
9462 #. type: TP
9463 #: build/C/man2/quotactl.2:106
9464 #, no-wrap
9465 msgid "B<QFMT_VFS_V1>"
9466 msgstr ""
9467
9468 #. type: Plain text
9469 #: build/C/man2/quotactl.2:110
9470 msgid ""
9471 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9472 "bytes and 2^64 inodes."
9473 msgstr ""
9474
9475 #. type: Plain text
9476 #: build/C/man2/quotactl.2:121
9477 msgid ""
9478 "The I<addr> argument points to the pathname of a file containing the quotas "
9479 "for the file system.  The quota file must exist; it is normally created with "
9480 "the B<quotacheck>(8)  program.  This operation requires privilege "
9481 "(B<CAP_SYS_ADMIN>)."
9482 msgstr ""
9483
9484 #. type: TP
9485 #: build/C/man2/quotactl.2:121
9486 #, no-wrap
9487 msgid "B<Q_QUOTAOFF>"
9488 msgstr "B<Q_QUOTAOFF>"
9489
9490 #. type: Plain text
9491 #: build/C/man2/quotactl.2:131
9492 msgid ""
9493 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9494 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9495 msgstr ""
9496
9497 #. type: TP
9498 #: build/C/man2/quotactl.2:131
9499 #, no-wrap
9500 msgid "B<Q_GETQUOTA>"
9501 msgstr "B<Q_GETQUOTA>"
9502
9503 #. type: Plain text
9504 #: build/C/man2/quotactl.2:142
9505 #, fuzzy
9506 #| msgid ""
9507 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9508 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9509 msgid ""
9510 "Get disk quota limits and current usage for user or group I<id>.  The "
9511 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9512 "quota.hE<gt>> as follows:"
9513 msgstr ""
9514 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9515 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9516
9517 #. type: Plain text
9518 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9519 #, no-wrap
9520 msgid ""
9521 "/* uint64_t is an unsigned 64-bit integer;\n"
9522 "   uint32_t is an unsigned 32-bit integer */\n"
9523 msgstr ""
9524
9525 #. type: Plain text
9526 #: build/C/man2/quotactl.2:167
9527 #, no-wrap
9528 msgid ""
9529 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9530 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9531 "                                  quota blocks alloc */\n"
9532 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9533 "                                  disk quota blocks */\n"
9534 "    uint64_t dqb_curspace;     /* current quota block\n"
9535 "                                  count */\n"
9536 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9537 "                                  allocated inodes */\n"
9538 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9539 "    uint64_t dqb_curinodes;    /* current number of\n"
9540 "                                  allocated inodes */\n"
9541 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9542 "                                  disk use */\n"
9543 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9544 "                                  files */\n"
9545 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9546 "                                  constants */\n"
9547 "};\n"
9548 msgstr ""
9549
9550 #. type: Plain text
9551 #: build/C/man2/quotactl.2:170
9552 #, no-wrap
9553 msgid ""
9554 "/* Flags in dqb_valid that indicate which fields in\n"
9555 "   dqblk structure are valid. */\n"
9556 msgstr ""
9557
9558 #. type: Plain text
9559 #: build/C/man2/quotactl.2:181
9560 #, no-wrap
9561 msgid ""
9562 "#define QIF_BLIMITS   1\n"
9563 "#define QIF_SPACE     2\n"
9564 "#define QIF_ILIMITS   4\n"
9565 "#define QIF_INODES    8\n"
9566 "#define QIF_BTIME     16\n"
9567 "#define QIF_ITIME     32\n"
9568 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9569 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9570 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9571 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9572 msgstr ""
9573
9574 #. type: Plain text
9575 #: build/C/man2/quotactl.2:198
9576 msgid ""
9577 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9578 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9579 "entries of the I<dqblk> structure and marks them as valid in the "
9580 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9581 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9582 msgstr ""
9583
9584 #. type: TP
9585 #: build/C/man2/quotactl.2:198
9586 #, no-wrap
9587 msgid "B<Q_SETQUOTA>"
9588 msgstr "B<Q_SETQUOTA>"
9589
9590 #. type: Plain text
9591 #: build/C/man2/quotactl.2:218
9592 msgid ""
9593 "Set quota information for user or group I<id>, using the information "
9594 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9595 "field of the I<dqblk> structure indicates which entries in the structure "
9596 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9597 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9598 "requires privilege (B<CAP_SYS_ADMIN>)."
9599 msgstr ""
9600
9601 #. type: TP
9602 #: build/C/man2/quotactl.2:218
9603 #, no-wrap
9604 msgid "B<Q_GETINFO>"
9605 msgstr "B<Q_GETINFO>"
9606
9607 #. type: Plain text
9608 #: build/C/man2/quotactl.2:229
9609 #, fuzzy
9610 #| msgid ""
9611 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9612 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9613 msgid ""
9614 "Get information (like grace times) about quotafile.  The I<addr> argument "
9615 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9616 "I<E<lt>sys/quota.hE<gt>> as follows:"
9617 msgstr ""
9618 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9619 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9620
9621 #. type: Plain text
9622 #: build/C/man2/quotactl.2:238
9623 #, no-wrap
9624 msgid ""
9625 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9626 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9627 "                               becomes hard limit */\n"
9628 msgstr ""
9629
9630 #. type: Plain text
9631 #: build/C/man2/quotactl.2:245
9632 #, no-wrap
9633 msgid ""
9634 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9635 "                               becomes hard limit */\n"
9636 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9637 "                               (DQF_*) */\n"
9638 "    uint32_t dqi_valid;\n"
9639 "};\n"
9640 msgstr ""
9641
9642 #. type: Plain text
9643 #: build/C/man2/quotactl.2:247
9644 #, no-wrap
9645 msgid "/* Bits for dqi_flags */\n"
9646 msgstr ""
9647
9648 #. type: Plain text
9649 #: build/C/man2/quotactl.2:249
9650 #, no-wrap
9651 msgid "/* Quota format QFMT_VFS_OLD */\n"
9652 msgstr ""
9653
9654 #. type: Plain text
9655 #: build/C/man2/quotactl.2:251
9656 #, no-wrap
9657 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9658 msgstr ""
9659
9660 #. type: Plain text
9661 #: build/C/man2/quotactl.2:253
9662 #, no-wrap
9663 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9664 msgstr ""
9665
9666 #. type: Plain text
9667 #: build/C/man2/quotactl.2:256
9668 #, no-wrap
9669 msgid ""
9670 "/* Flags in dqi_valid that indicate which fields in\n"
9671 "   dqinfo structure are valid. */\n"
9672 msgstr ""
9673
9674 #. type: Plain text
9675 #: build/C/man2/quotactl.2:261
9676 #, no-wrap
9677 msgid ""
9678 "# define IIF_BGRACE\t1\n"
9679 "# define IIF_IGRACE\t2\n"
9680 "# define IIF_FLAGS\t4\n"
9681 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9682 msgstr ""
9683
9684 #. type: Plain text
9685 #: build/C/man2/quotactl.2:277
9686 msgid ""
9687 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9688 "the structure that are valid.  Currently, the kernel fills in all entries of "
9689 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9690 "field.  The I<id> argument is ignored."
9691 msgstr ""
9692
9693 #. type: TP
9694 #: build/C/man2/quotactl.2:277
9695 #, no-wrap
9696 msgid "B<Q_SETINFO>"
9697 msgstr "B<Q_SETINFO>"
9698
9699 #. type: Plain text
9700 #: build/C/man2/quotactl.2:301
9701 msgid ""
9702 "Set information about quotafile.  The I<addr> argument should be a pointer "
9703 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
9704 "indicates the entries in the structure that have been set by the caller.  "
9705 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
9706 "the previous quota interfaces.  The I<id> argument is ignored.  This "
9707 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9708 msgstr ""
9709
9710 #. type: TP
9711 #: build/C/man2/quotactl.2:301
9712 #, no-wrap
9713 msgid "B<Q_GETFMT>"
9714 msgstr "B<Q_GETFMT>"
9715
9716 #. type: Plain text
9717 #: build/C/man2/quotactl.2:308
9718 msgid ""
9719 "Get quota format used on the specified file system.  The I<addr> argument "
9720 "should be a pointer to a 4-byte buffer where the format number will be "
9721 "stored."
9722 msgstr ""
9723
9724 #. type: TP
9725 #: build/C/man2/quotactl.2:308
9726 #, no-wrap
9727 msgid "B<Q_SYNC>"
9728 msgstr "B<Q_SYNC>"
9729
9730 #. type: Plain text
9731 #: build/C/man2/quotactl.2:319
9732 msgid ""
9733 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
9734 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
9735 "I<id> arguments are ignored."
9736 msgstr ""
9737
9738 #. type: TP
9739 #: build/C/man2/quotactl.2:319
9740 #, no-wrap
9741 msgid "B<Q_GETSTATS>"
9742 msgstr "B<Q_GETSTATS>"
9743
9744 #.  Q_GETSTATS was removed in kernel 2.4.22.
9745 #. type: Plain text
9746 #: build/C/man2/quotactl.2:339
9747 msgid ""
9748 "Get statistics and other generic information about the quota subsystem.  The "
9749 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
9750 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
9751 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
9752 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
9753 "the information instead."
9754 msgstr ""
9755
9756 #. type: Plain text
9757 #: build/C/man2/quotactl.2:342
9758 msgid ""
9759 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
9760 "commands are bypassed and the following commands are used:"
9761 msgstr ""
9762
9763 #. type: TP
9764 #: build/C/man2/quotactl.2:342
9765 #, no-wrap
9766 msgid "B<Q_XQUOTAON>"
9767 msgstr "B<Q_XQUOTAON>"
9768
9769 #. type: Plain text
9770 #: build/C/man2/quotactl.2:363
9771 msgid ""
9772 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
9773 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
9774 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
9775 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
9776 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
9777 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
9778 "(B<CAP_SYS_ADMIN>)."
9779 msgstr ""
9780
9781 #. type: TP
9782 #: build/C/man2/quotactl.2:363
9783 #, no-wrap
9784 msgid "B<Q_XQUOTAOFF>"
9785 msgstr "B<Q_XQUOTAOFF>"
9786
9787 #. type: Plain text
9788 #: build/C/man2/quotactl.2:374
9789 msgid ""
9790 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
9791 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
9792 "accounting and/or limit enforcement need to be turned off.  This operation "
9793 "requires privilege (B<CAP_SYS_ADMIN>)."
9794 msgstr ""
9795
9796 #. type: TP
9797 #: build/C/man2/quotactl.2:374
9798 #, no-wrap
9799 msgid "B<Q_XGETQUOTA>"
9800 msgstr "B<Q_XGETQUOTA>"
9801
9802 #. type: Plain text
9803 #: build/C/man2/quotactl.2:388
9804 msgid ""
9805 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
9806 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
9807 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
9808 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
9809 "user."
9810 msgstr ""
9811
9812 #. type: TP
9813 #: build/C/man2/quotactl.2:388
9814 #, no-wrap
9815 msgid "B<Q_XSETQLIM>"
9816 msgstr "B<Q_XSETQLIM>"
9817
9818 #. type: Plain text
9819 #: build/C/man2/quotactl.2:400
9820 msgid ""
9821 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
9822 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
9823 "operation requires privilege (B<CAP_SYS_ADMIN>)."
9824 msgstr ""
9825
9826 #. type: TP
9827 #: build/C/man2/quotactl.2:400
9828 #, no-wrap
9829 msgid "B<Q_XGETQSTAT>"
9830 msgstr "B<Q_XGETQSTAT>"
9831
9832 #. type: Plain text
9833 #: build/C/man2/quotactl.2:408
9834 msgid ""
9835 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
9836 "quota information.  This is useful for finding out how much space is used to "
9837 "store quota information, and also to get quotaon/off status of a given local "
9838 "XFS file system."
9839 msgstr ""
9840
9841 #. type: TP
9842 #: build/C/man2/quotactl.2:408
9843 #, no-wrap
9844 msgid "B<Q_XQUOTARM>"
9845 msgstr "B<Q_XQUOTARM>"
9846
9847 #. type: Plain text
9848 #: build/C/man2/quotactl.2:412
9849 msgid ""
9850 "Free the disk space taken by disk quotas.  Quotas must have already been "
9851 "turned off."
9852 msgstr ""
9853
9854 #. type: Plain text
9855 #: build/C/man2/quotactl.2:419
9856 msgid ""
9857 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
9858 "quota information to disk (in addition to the other file system metadata "
9859 "that it writes out)."
9860 msgstr ""
9861
9862 #. type: SH
9863 #: build/C/man2/quotactl.2:419
9864 #, no-wrap
9865 msgid "RETURN VALUES"
9866 msgstr "返り値"
9867
9868 #. type: Plain text
9869 #: build/C/man2/quotactl.2:427
9870 msgid ""
9871 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
9872 "is set to indicate the error."
9873 msgstr ""
9874 "成功すると、 B<quotactl>()  は 0 を返す。\n"
9875 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
9876
9877 #. type: Plain text
9878 #: build/C/man2/quotactl.2:434
9879 msgid "I<addr> or I<special> is invalid."
9880 msgstr ""
9881
9882 #. type: Plain text
9883 #: build/C/man2/quotactl.2:440
9884 msgid "I<cmd> or I<type> is invalid."
9885 msgstr ""
9886
9887 #. type: TP
9888 #: build/C/man2/quotactl.2:440
9889 #, no-wrap
9890 msgid "B<ENOENT>"
9891 msgstr "B<ENOENT>"
9892
9893 #. type: Plain text
9894 #: build/C/man2/quotactl.2:447
9895 msgid "The file specified by I<special> or I<addr> does not exist."
9896 msgstr ""
9897
9898 #. type: Plain text
9899 #: build/C/man2/quotactl.2:452
9900 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
9901 msgstr ""
9902
9903 #. type: TP
9904 #: build/C/man2/quotactl.2:452
9905 #, no-wrap
9906 msgid "B<ENOTBLK>"
9907 msgstr "B<ENOTBLK>"
9908
9909 #. type: Plain text
9910 #: build/C/man2/quotactl.2:456
9911 msgid "I<special> is not a block device."
9912 msgstr "I<special> がブロックデバイスではない。"
9913
9914 #. type: Plain text
9915 #: build/C/man2/quotactl.2:461
9916 msgid ""
9917 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
9918 "specified operation."
9919 msgstr ""
9920
9921 #. type: Plain text
9922 #: build/C/man2/quotactl.2:465
9923 msgid ""
9924 "No disk quota is found for the indicated user.  Quotas have not been turned "
9925 "on for this file system."
9926 msgstr ""
9927
9928 #. type: Plain text
9929 #: build/C/man2/quotactl.2:474
9930 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
9931 msgstr ""
9932
9933 #. type: Plain text
9934 #: build/C/man2/quotactl.2:477
9935 msgid "Specified limits are out of range allowed by quota format."
9936 msgstr ""
9937
9938 #. type: Plain text
9939 #: build/C/man2/quotactl.2:486
9940 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
9941 msgstr ""
9942
9943 #. type: Plain text
9944 #: build/C/man2/quotactl.2:495
9945 msgid ""
9946 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
9947 "the quota file pointed to by I<addr> exists, but is not on the file system "
9948 "pointed to by I<special>."
9949 msgstr ""
9950
9951 #. type: Plain text
9952 #: build/C/man2/quotactl.2:501
9953 msgid ""
9954 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
9955 msgstr ""
9956
9957 #. type: Plain text
9958 #: build/C/man2/quotactl.2:504
9959 msgid "The quota file is corrupted."
9960 msgstr "quota ファイルが壊れている。"
9961
9962 #. type: Plain text
9963 #: build/C/man2/quotactl.2:507
9964 msgid "Specified quota format was not found."
9965 msgstr ""
9966
9967 #. type: Plain text
9968 #: build/C/man2/quotactl.2:512
9969 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9970 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
9971
9972 #. type: TH
9973 #: build/C/man2/sendfile.2:19
9974 #, no-wrap
9975 msgid "SENDFILE"
9976 msgstr "SENDFILE"
9977
9978 #. type: TH
9979 #: build/C/man2/sendfile.2:19
9980 #, no-wrap
9981 msgid "2011-09-14"
9982 msgstr "2011-09-14"
9983
9984 #. type: Plain text
9985 #: build/C/man2/sendfile.2:22
9986 msgid "sendfile - transfer data between file descriptors"
9987 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
9988
9989 #. type: Plain text
9990 #: build/C/man2/sendfile.2:24
9991 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
9992 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
9993
9994 #.  The below is too ugly. Comments about glibc versions belong
9995 #.  in the notes, not in the header.
9996 #.  .B #include <features.h>
9997 #.  .br
9998 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
9999 #.  .br
10000 #.  .B #include <sys/sendfile.h>
10001 #.  .br
10002 #.  #else
10003 #.  .br
10004 #.  .B #include <sys/types.h>
10005 #.  .br
10006 #.  .B /* No system prototype before glibc 2.1. */
10007 #.  .br
10008 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10009 #.  .br
10010 #.  .B #endif
10011 #. type: Plain text
10012 #: build/C/man2/sendfile.2:47
10013 msgid ""
10014 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10015 "size_t>I< count>B<);>"
10016 msgstr ""
10017 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10018 "size_t>I< count>B<);>"
10019
10020 #. type: Plain text
10021 #: build/C/man2/sendfile.2:57
10022 msgid ""
10023 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10024 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10025 "than the combination of B<read>(2)  and B<write>(2), which would require "
10026 "transferring data to and from user space."
10027 msgstr ""
10028 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10029 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10030 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10031 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10032 "るからである。"
10033
10034 #. type: Plain text
10035 #: build/C/man2/sendfile.2:62
10036 msgid ""
10037 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10038 "be a descriptor opened for writing."
10039 msgstr ""
10040 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10041 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10042
10043 #. type: Plain text
10044 #: build/C/man2/sendfile.2:83
10045 msgid ""
10046 "If I<offset> is not NULL, then it points to a variable holding the file "
10047 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10048 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10049 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10050 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10051 "otherwise the current file offset is adjusted to reflect the number of bytes "
10052 "read from I<in_fd>."
10053 msgstr ""
10054 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10055 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10056 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10057 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10058 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10059 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10060 "整する。"
10061
10062 #. type: Plain text
10063 #: build/C/man2/sendfile.2:90
10064 msgid ""
10065 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10066 "current file offset, and the file offset will be updated by the call."
10067 msgstr ""
10068 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10069 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10070
10071 #. type: Plain text
10072 #: build/C/man2/sendfile.2:93
10073 msgid "I<count> is the number of bytes to copy between the file descriptors."
10074 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10075
10076 #. type: Plain text
10077 #: build/C/man2/sendfile.2:100
10078 msgid ""
10079 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10080 "like operations (i.e., it cannot be a socket)."
10081 msgstr ""
10082 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10083 "な\n"
10084 "い (ソケットを指定することはできない)。"
10085
10086 #. type: Plain text
10087 #: build/C/man2/sendfile.2:108
10088 msgid ""
10089 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10090 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10091 "()  changes the file offset appropriately."
10092 msgstr ""
10093 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10094 "な\n"
10095 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10096 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10097
10098 #. type: Plain text
10099 #: build/C/man2/sendfile.2:115
10100 msgid ""
10101 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10102 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10103 msgstr ""
10104 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10105 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10106
10107 #. type: Plain text
10108 #: build/C/man2/sendfile.2:121
10109 msgid ""
10110 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10111 "block."
10112 msgstr ""
10113 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10114 "た。"
10115
10116 #. type: TP
10117 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10118 #: build/C/man2/vmsplice.2:123
10119 #, no-wrap
10120 msgid "B<EBADF>"
10121 msgstr "B<EBADF>"
10122
10123 #. type: Plain text
10124 #: build/C/man2/sendfile.2:125
10125 msgid ""
10126 "The input file was not opened for reading or the output file was not opened "
10127 "for writing."
10128 msgstr ""
10129 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10130 "のためにオープンされていない。"
10131
10132 #. type: Plain text
10133 #: build/C/man2/sendfile.2:128
10134 msgid "Bad address."
10135 msgstr "アドレスがおかしい。"
10136
10137 #. type: Plain text
10138 #: build/C/man2/sendfile.2:134
10139 msgid ""
10140 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10141 "available for I<in_fd>."
10142 msgstr ""
10143 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10144 "が I<in_fd> では利用できない。"
10145
10146 #. type: Plain text
10147 #: build/C/man2/sendfile.2:138
10148 msgid "Unspecified error while reading from I<in_fd>."
10149 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10150
10151 #. type: Plain text
10152 #: build/C/man2/sendfile.2:142
10153 msgid "Insufficient memory to read from I<in_fd>."
10154 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10155
10156 #. type: Plain text
10157 #: build/C/man2/sendfile.2:148
10158 msgid ""
10159 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10160 "sendfile.hE<gt>> is present since glibc 2.1."
10161 msgstr ""
10162 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10163 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10164
10165 #. type: Plain text
10166 #: build/C/man2/sendfile.2:150
10167 msgid "Not specified in POSIX.1-2001, or other standards."
10168 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10169
10170 #. type: Plain text
10171 #: build/C/man2/sendfile.2:155
10172 msgid ""
10173 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10174 "prototypes.  It should not be used in portable programs."
10175 msgstr ""
10176 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10177 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10178
10179 #. type: Plain text
10180 #: build/C/man2/sendfile.2:165
10181 msgid ""
10182 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10183 "need to send some header data in front of the file contents, you will find "
10184 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10185 "minimize the number of packets and to tune performance."
10186 msgstr ""
10187 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10188 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10189 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10190 "いいだろう。"
10191
10192 #. type: Plain text
10193 #: build/C/man2/sendfile.2:171
10194 msgid ""
10195 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10196 "B<sendfile>()  changed the current offset of that file."
10197 msgstr ""
10198 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10199 "き、\n"
10200 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10201
10202 #. type: Plain text
10203 #: build/C/man2/sendfile.2:183
10204 msgid ""
10205 "The original Linux B<sendfile>()  system call was not designed to handle "
10206 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10207 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10208 "function transparently deals with the kernel differences."
10209 msgstr ""
10210 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10211 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10212 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10213 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10214
10215 #. type: Plain text
10216 #: build/C/man2/sendfile.2:192
10217 msgid ""
10218 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10219 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10220 msgstr ""
10221 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10222 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10223
10224 #. type: Plain text
10225 #: build/C/man2/sendfile.2:197
10226 msgid ""
10227 "The Linux-specific B<splice>(2)  call supports transferring data between "
10228 "arbitrary files (e.g., a pair of sockets)."
10229 msgstr ""
10230 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10231 "ソケット同士) でのデータ転送をサポートしている。"
10232
10233 #. type: Plain text
10234 #: build/C/man2/sendfile.2:202
10235 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10236 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10237
10238 #. type: TH
10239 #: build/C/man2/set_tid_address.2:25
10240 #, no-wrap
10241 msgid "SET_TID_ADDRESS"
10242 msgstr "SET_TID_ADDRESS"
10243
10244 #. type: TH
10245 #: build/C/man2/set_tid_address.2:25
10246 #, no-wrap
10247 msgid "2012-07-19"
10248 msgstr "2012-07-19"
10249
10250 #. type: Plain text
10251 #: build/C/man2/set_tid_address.2:28
10252 msgid "set_tid_address - set pointer to thread ID"
10253 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10254
10255 #. type: Plain text
10256 #: build/C/man2/set_tid_address.2:31
10257 #, no-wrap
10258 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10259 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10260
10261 #. type: Plain text
10262 #: build/C/man2/set_tid_address.2:33
10263 #, no-wrap
10264 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10265 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10266
10267 #. type: Plain text
10268 #: build/C/man2/set_tid_address.2:40
10269 msgid ""
10270 "For each process, the kernel maintains two attributes (addresses) called "
10271 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10272 "value NULL by default."
10273 msgstr "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という 2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10274
10275 #. type: TP
10276 #: build/C/man2/set_tid_address.2:40
10277 #, no-wrap
10278 msgid "I<set_child_tid>"
10279 msgstr "I<set_child_tid>"
10280
10281 #. type: Plain text
10282 #: build/C/man2/set_tid_address.2:51
10283 msgid ""
10284 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10285 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10286 "that system call."
10287 msgstr "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始された場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数で渡された値に設定される。"
10288
10289 #. type: Plain text
10290 #: build/C/man2/set_tid_address.2:56
10291 msgid ""
10292 "When I<set_child_tid> is set, the very first thing the new process does is "
10293 "writing its PID at this address."
10294 msgstr ""
10295 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10296 "のアドレスに自身の PID を書き込むことである。"
10297
10298 #. type: TP
10299 #: build/C/man2/set_tid_address.2:56
10300 #, no-wrap
10301 msgid "I<clear_child_tid>"
10302 msgstr "I<clear_child_tid>"
10303
10304 #. type: Plain text
10305 #: build/C/man2/set_tid_address.2:67
10306 msgid ""
10307 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10308 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10309 "of that system call."
10310 msgstr "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数で渡された値に設定される。"
10311
10312 #. type: Plain text
10313 #: build/C/man2/set_tid_address.2:74
10314 msgid ""
10315 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10316 "the calling process to I<tidptr>."
10317 msgstr ""
10318 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10319 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10320
10321 #. type: Plain text
10322 #: build/C/man2/set_tid_address.2:82
10323 #, fuzzy
10324 #| msgid ""
10325 #| "When I<clear_child_tid> is set, and the process exits, and the process "
10326 #| "was sharing memory with other processes or threads, then 0 is written at "
10327 #| "this address, and a I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> "
10328 #| "call is done.  (That is, wake a single process waiting on this futex.)  "
10329 #| "Errors are ignored."
10330 msgid ""
10331 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10332 "process is sharing memory with other processes or threads, then 0 is written "
10333 "at the address specified in I<clear_child_tid> and the kernel performs the "
10334 "following operation:"
10335 msgstr ""
10336 "I<clear_child_tid> が設定されているときにプロセスが終了すると、 そのプロセス"
10337 "は他のプロセスまたはスレッドとメモリを共有しているので、 このアドレスに 0 が"
10338 "書き込まれ、 I<futex(child_tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);> の呼び出し"
10339 "が実行される (つまり、この futex で待っている 1 つのプロセスを起こす "
10340 "(wake))。 エラーは無視される。"
10341
10342 #. type: Plain text
10343 #: build/C/man2/set_tid_address.2:84
10344 #, no-wrap
10345 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10346 msgstr ""
10347
10348 #. type: Plain text
10349 #: build/C/man2/set_tid_address.2:88
10350 msgid ""
10351 "The effect of this operation is to wake a single process that is performing "
10352 "a futex wait on the memory location.  Errors from the futex wake operation "
10353 "are ignored."
10354 msgstr ""
10355
10356 #. type: Plain text
10357 #: build/C/man2/set_tid_address.2:91
10358 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10359 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10360
10361 #. type: Plain text
10362 #: build/C/man2/set_tid_address.2:94
10363 msgid "B<set_tid_address>()  always succeeds."
10364 msgstr "B<set_tid_address>()  は常に成功する。"
10365
10366 #. type: Plain text
10367 #: build/C/man2/set_tid_address.2:97
10368 msgid ""
10369 "This call is present since Linux 2.5.48.  Details as given here are valid "
10370 "since Linux 2.5.49."
10371 msgstr ""
10372 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10373 "2.5.49 以降で有効である。"
10374
10375 #. type: Plain text
10376 #: build/C/man2/set_tid_address.2:102
10377 msgid "B<clone>(2), B<futex>(2)"
10378 msgstr "B<clone>(2), B<futex>(2)"
10379
10380 #. type: TH
10381 #: build/C/man2/splice.2:26
10382 #, no-wrap
10383 msgid "SPLICE"
10384 msgstr "SPLICE"
10385
10386 #. type: TH
10387 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10388 #, no-wrap
10389 msgid "2012-05-04"
10390 msgstr "2012-05-04"
10391
10392 #. type: Plain text
10393 #: build/C/man2/splice.2:29
10394 msgid "splice - splice data to/from a pipe"
10395 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10396
10397 #. type: Plain text
10398 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10399 #, no-wrap
10400 msgid ""
10401 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10402 "B<#include E<lt>fcntl.hE<gt>>\n"
10403 msgstr ""
10404 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10405 "B<#include E<lt>fcntl.hE<gt>>\n"
10406
10407 #.  Return type was long before glibc 2.7
10408 #. type: Plain text
10409 #: build/C/man2/splice.2:38
10410 #, no-wrap
10411 msgid ""
10412 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10413 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10414 msgstr ""
10415 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10416 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10417
10418 #. type: Plain text
10419 #: build/C/man2/splice.2:50
10420 msgid ""
10421 "B<splice>()  moves data between two file descriptors without copying between "
10422 "kernel address space and user address space.  It transfers up to I<len> "
10423 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10424 "I<fd_out>, where one of the descriptors must refer to a pipe."
10425 msgstr ""
10426 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10427 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10428 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10429 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10430 "ならない。"
10431
10432 #. type: Plain text
10433 #: build/C/man2/splice.2:80
10434 msgid ""
10435 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10436 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10437 "starting from the current file offset, and the current file offset is "
10438 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10439 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10440 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10441 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10442 "apply for I<fd_out> and I<off_out>."
10443 msgstr ""
10444 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10445 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10446 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10447 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10448 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10449 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10450 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10451 "る。"
10452
10453 #. type: Plain text
10454 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10455 msgid ""
10456 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10457 "or more of the following values:"
10458 msgstr ""
10459 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10460
10461 #. type: TP
10462 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10463 #, no-wrap
10464 msgid "B<SPLICE_F_MOVE>"
10465 msgstr "B<SPLICE_F_MOVE>"
10466
10467 #. type: Plain text
10468 #: build/C/man2/splice.2:98
10469 msgid ""
10470 "Attempt to move pages instead of copying.  This is only a hint to the "
10471 "kernel: pages may still be copied if the kernel cannot move the pages from "
10472 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10473 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10474 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10475 "correct implementation may be restored."
10476 msgstr ""
10477 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10478 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10479 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10480 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10481 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10482 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10483
10484 #. type: TP
10485 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10486 #, no-wrap
10487 msgid "B<SPLICE_F_NONBLOCK>"
10488 msgstr "B<SPLICE_F_NONBLOCK>"
10489
10490 #. type: Plain text
10491 #: build/C/man2/splice.2:107
10492 msgid ""
10493 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10494 "B<splice>()  may nevertheless block because the file descriptors that are "
10495 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10496 msgstr ""
10497 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10498 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10499 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10500 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10501 "らである。"
10502
10503 #. type: TP
10504 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10505 #, no-wrap
10506 msgid "B<SPLICE_F_MORE>"
10507 msgstr "B<SPLICE_F_MORE>"
10508
10509 #. type: Plain text
10510 #: build/C/man2/splice.2:121
10511 msgid ""
10512 "More data will be coming in a subsequent splice.  This is a helpful hint "
10513 "when the I<fd_out> refers to a socket (see also the description of "
10514 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10515 msgstr ""
10516 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10517 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10518 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10519
10520 #. type: TP
10521 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10522 #, no-wrap
10523 msgid "B<SPLICE_F_GIFT>"
10524 msgstr "B<SPLICE_F_GIFT>"
10525
10526 #. type: Plain text
10527 #: build/C/man2/splice.2:127
10528 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10529 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10530
10531 #. type: Plain text
10532 #: build/C/man2/splice.2:136
10533 msgid ""
10534 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10535 "to or from the pipe.  A return value of 0 means that there was no data to "
10536 "transfer, and it would not make sense to block, because there are no writers "
10537 "connected to the write end of the pipe referred to by I<fd_in>."
10538 msgstr ""
10539 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10540 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10541 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10542 "れている者がいないからである。"
10543
10544 #. type: Plain text
10545 #: build/C/man2/splice.2:142
10546 msgid ""
10547 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10548 msgstr ""
10549 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10550 "る。"
10551
10552 #. type: Plain text
10553 #: build/C/man2/splice.2:147
10554 msgid ""
10555 "One or both file descriptors are not valid, or do not have proper read-write "
10556 "mode."
10557 msgstr ""
10558 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10559 "write モードではない。"
10560
10561 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10562 #.  splice() in append mode was broken
10563 #. type: Plain text
10564 #: build/C/man2/splice.2:155
10565 msgid ""
10566 "Target file system doesn't support splicing; target file is opened in append "
10567 "mode; neither of the descriptors refers to a pipe; or offset given for "
10568 "nonseekable device."
10569 msgstr ""
10570 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10571 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10572 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10573
10574 #. type: Plain text
10575 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10576 #: build/C/man2/vmsplice.2:138
10577 msgid "Out of memory."
10578 msgstr "メモリ不足。"
10579
10580 #. type: TP
10581 #: build/C/man2/splice.2:158
10582 #, no-wrap
10583 msgid "B<ESPIPE>"
10584 msgstr "B<ESPIPE>"
10585
10586 #. type: Plain text
10587 #: build/C/man2/splice.2:165
10588 msgid ""
10589 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10590 "descriptor refers to a pipe."
10591 msgstr ""
10592 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10593 "クリプタが パイプを参照している。"
10594
10595 #. type: Plain text
10596 #: build/C/man2/splice.2:170
10597 msgid ""
10598 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10599 "was added to glibc in version 2.5."
10600 msgstr ""
10601 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10602 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10603
10604 #. type: Plain text
10605 #: build/C/man2/splice.2:182
10606 msgid ""
10607 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10608 "user-space programs with full control over an arbitrary kernel buffer, "
10609 "implemented within the kernel using the same type of buffer that is used for "
10610 "a pipe.  In overview, these system calls perform the following tasks:"
10611 msgstr ""
10612 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10613 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10614 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10615 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10616
10617 #. type: TP
10618 #: build/C/man2/splice.2:182
10619 #, no-wrap
10620 msgid "B<splice>()"
10621 msgstr "B<splice>()"
10622
10623 #. type: Plain text
10624 #: build/C/man2/splice.2:186
10625 msgid ""
10626 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10627 "or from one buffer to another."
10628 msgstr ""
10629 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10630 "から別のバッファへの、データ移動を行う。"
10631
10632 #. type: TP
10633 #: build/C/man2/splice.2:186
10634 #, no-wrap
10635 msgid "B<tee>(2)"
10636 msgstr "B<tee>(2)"
10637
10638 #. type: Plain text
10639 #: build/C/man2/splice.2:189
10640 msgid "\"copies\" the data from one buffer to another."
10641 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10642
10643 #. type: TP
10644 #: build/C/man2/splice.2:189
10645 #, no-wrap
10646 msgid "B<vmsplice>(2)"
10647 msgstr "B<vmsplice>(2)"
10648
10649 #. type: Plain text
10650 #: build/C/man2/splice.2:192
10651 msgid "\"copies\" data from user space into the buffer."
10652 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10653
10654 #.  Linus: Now, imagine using the above in a media server, for example.
10655 #.  Let's say that a year or two has passed, so that the video drivers
10656 #.  have been updated to be able to do the splice thing, and what can
10657 #.  you do? You can:
10658 #.  - splice from the (mpeg or whatever - let's just assume that the video
10659 #.    input is either digital or does the encoding on its own - like they
10660 #.    pretty much all do) video input into a pipe (remember: no copies - the
10661 #.    video input will just DMA directly into memory, and splice will just
10662 #.    set up the pages in the pipe buffer)
10663 #.  - tee that pipe to split it up
10664 #.  - splice one end to a file (ie "save the compressed stream to disk")
10665 #.  - splice the other end to a real-time video decoder window for your
10666 #.    real-time viewing pleasure.
10667 #.  Linus: Now, the advantage of splice()/tee() is that you can
10668 #.  do zero-copy movement of data, and unlike sendfile() you can
10669 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10670 #.  than just sending the data to somebody else: you can duplicate
10671 #.  the data and choose to forward it to two or more different
10672 #.  users - for things like logging etc.).
10673 #. type: Plain text
10674 #: build/C/man2/splice.2:223
10675 msgid ""
10676 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10677 "does this by implementing a pipe buffer as a set of reference-counted "
10678 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10679 "in a buffer by creating new pointers (for the output buffer) referring to "
10680 "the pages, and increasing the reference counts for the pages: only pointers "
10681 "are copied, not the pages of the buffer."
10682 msgstr ""
10683 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10684 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10685 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10686 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10687 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10688 "タだけがコピーされ、 バッファのページはコピーされない。"
10689
10690 #. type: Plain text
10691 #: build/C/man2/splice.2:226
10692 msgid "See B<tee>(2)."
10693 msgstr "B<tee>(2)  参照。"
10694
10695 #. type: Plain text
10696 #: build/C/man2/splice.2:230
10697 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10698 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10699
10700 #. type: TH
10701 #: build/C/man2/tee.2:26
10702 #, no-wrap
10703 msgid "TEE"
10704 msgstr "TEE"
10705
10706 #. type: Plain text
10707 #: build/C/man2/tee.2:29
10708 msgid "tee - duplicating pipe content"
10709 msgstr "tee - パイプの中身を複製する"
10710
10711 #. type: Plain text
10712 #: build/C/man2/tee.2:36
10713 #, no-wrap
10714 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"
10715 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"
10716
10717 #.  Example programs http://brick.kernel.dk/snaps
10718 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
10719 #.  (again, incrementing their reference count, not copying the data) from
10720 #.  one pipe to two other pipes.
10721 #. type: Plain text
10722 #: build/C/man2/tee.2:56
10723 msgid ""
10724 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
10725 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
10726 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
10727 "therefore, that data can be copied by a subsequent B<splice>(2)."
10728 msgstr ""
10729 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
10730 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
10731 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
10732 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
10733
10734 #. type: Plain text
10735 #: build/C/man2/tee.2:62
10736 msgid ""
10737 "I<flags> is a series of modifier flags, which share the name space with "
10738 "B<splice>(2)  and B<vmsplice>(2):"
10739 msgstr ""
10740 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
10741 "名前である。"
10742
10743 #. type: Plain text
10744 #: build/C/man2/tee.2:68
10745 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
10746 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
10747
10748 #.  Not used for vmsplice
10749 #.  May be in the future -- therefore EAGAIN
10750 #. type: Plain text
10751 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10752 msgid "Do not block on I/O; see B<splice>(2)  for further details."
10753 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
10754
10755 #. type: Plain text
10756 #: build/C/man2/tee.2:79
10757 msgid ""
10758 "Currently has no effect for B<tee>(), but may be implemented in the future; "
10759 "see B<splice>(2)."
10760 msgstr ""
10761 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
10762 "る。 B<splice>(2)  参照。"
10763
10764 #. type: Plain text
10765 #: build/C/man2/tee.2:85
10766 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
10767 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
10768
10769 #. type: Plain text
10770 #: build/C/man2/tee.2:94
10771 msgid ""
10772 "Upon successful completion, B<tee>()  returns the number of bytes that were "
10773 "duplicated between the input and output.  A return value of 0 means that "
10774 "there was no data to transfer, and it would not make sense to block, because "
10775 "there are no writers connected to the write end of the pipe referred to by "
10776 "I<fd_in>."
10777 msgstr ""
10778 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
10779 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
10780 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
10781 "ている者がいないからである。"
10782
10783 #. type: Plain text
10784 #: build/C/man2/tee.2:100
10785 msgid ""
10786 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
10787 msgstr ""
10788 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
10789
10790 #. type: Plain text
10791 #: build/C/man2/tee.2:111
10792 msgid ""
10793 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
10794 "refer to the same pipe."
10795 msgstr ""
10796 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
10797 "と I<fd_out> が同じパイプを参照している。"
10798
10799 #. type: Plain text
10800 #: build/C/man2/tee.2:119
10801 msgid ""
10802 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
10803 "was added to glibc in version 2.5."
10804 msgstr ""
10805 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10806 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10807
10808 #. type: Plain text
10809 #: build/C/man2/tee.2:130
10810 msgid ""
10811 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
10812 "no real data copying takes place though: under the covers, B<tee>()  assigns "
10813 "data in the output by merely grabbing a reference to the input."
10814 msgstr ""
10815 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
10816 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
10817 "照だけを作成することで出力側にデータを 追加する。"
10818
10819 #. type: Plain text
10820 #: build/C/man2/tee.2:136
10821 msgid ""
10822 "The following example implements a basic B<tee>(1)  program using the B<tee>"
10823 "()  system call."
10824 msgstr ""
10825 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
10826 "ムを実装したものである。"
10827
10828 #. type: Plain text
10829 #: build/C/man2/tee.2:145
10830 #, no-wrap
10831 msgid ""
10832 "#define _GNU_SOURCE\n"
10833 "#include E<lt>fcntl.hE<gt>\n"
10834 "#include E<lt>stdio.hE<gt>\n"
10835 "#include E<lt>stdlib.hE<gt>\n"
10836 "#include E<lt>unistd.hE<gt>\n"
10837 "#include E<lt>errno.hE<gt>\n"
10838 "#include E<lt>limits.hE<gt>\n"
10839 msgstr ""
10840 "#define _GNU_SOURCE\n"
10841 "#include E<lt>fcntl.hE<gt>\n"
10842 "#include E<lt>stdio.hE<gt>\n"
10843 "#include E<lt>stdlib.hE<gt>\n"
10844 "#include E<lt>unistd.hE<gt>\n"
10845 "#include E<lt>errno.hE<gt>\n"
10846 "#include E<lt>limits.hE<gt>\n"
10847
10848 #. type: Plain text
10849 #: build/C/man2/tee.2:151
10850 #, no-wrap
10851 msgid ""
10852 "int\n"
10853 "main(int argc, char *argv[])\n"
10854 "{\n"
10855 "    int fd;\n"
10856 "    int len, slen;\n"
10857 msgstr ""
10858 "int\n"
10859 "main(int argc, char *argv[])\n"
10860 "{\n"
10861 "    int fd;\n"
10862 "    int len, slen;\n"
10863
10864 #. type: Plain text
10865 #: build/C/man2/tee.2:156
10866 #, no-wrap
10867 msgid ""
10868 "    if (argc != 2) {\n"
10869 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10870 "        exit(EXIT_FAILURE);\n"
10871 "    }\n"
10872 msgstr ""
10873 "    if (argc != 2) {\n"
10874 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
10875 "        exit(EXIT_FAILURE);\n"
10876 "    }\n"
10877
10878 #. type: Plain text
10879 #: build/C/man2/tee.2:162
10880 #, no-wrap
10881 msgid ""
10882 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10883 "    if (fd == -1) {\n"
10884 "        perror(\"open\");\n"
10885 "        exit(EXIT_FAILURE);\n"
10886 "    }\n"
10887 msgstr ""
10888 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
10889 "    if (fd == -1) {\n"
10890 "        perror(\"open\");\n"
10891 "        exit(EXIT_FAILURE);\n"
10892 "    }\n"
10893
10894 #. type: Plain text
10895 #: build/C/man2/tee.2:169
10896 #, no-wrap
10897 msgid ""
10898 "    do {\n"
10899 "        /*\n"
10900 "         * tee stdin to stdout.\n"
10901 "         */\n"
10902 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10903 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10904 msgstr ""
10905 "    do {\n"
10906 "        /*\n"
10907 "         * tee stdin to stdout.\n"
10908 "         */\n"
10909 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
10910 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
10911
10912 #. type: Plain text
10913 #: build/C/man2/tee.2:178
10914 #, no-wrap
10915 msgid ""
10916 "        if (len E<lt> 0) {\n"
10917 "            if (errno == EAGAIN)\n"
10918 "                continue;\n"
10919 "            perror(\"tee\");\n"
10920 "            exit(EXIT_FAILURE);\n"
10921 "        } else\n"
10922 "            if (len == 0)\n"
10923 "                break;\n"
10924 msgstr ""
10925 "        if (len E<lt> 0) {\n"
10926 "            if (errno == EAGAIN)\n"
10927 "                continue;\n"
10928 "            perror(\"tee\");\n"
10929 "            exit(EXIT_FAILURE);\n"
10930 "        } else\n"
10931 "            if (len == 0)\n"
10932 "                break;\n"
10933
10934 #. type: Plain text
10935 #: build/C/man2/tee.2:192
10936 #, no-wrap
10937 msgid ""
10938 "        /*\n"
10939 "         * Consume stdin by splicing it to a file.\n"
10940 "         */\n"
10941 "        while (len E<gt> 0) {\n"
10942 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10943 "                          len, SPLICE_F_MOVE);\n"
10944 "            if (slen E<lt> 0) {\n"
10945 "                perror(\"splice\");\n"
10946 "                break;\n"
10947 "            }\n"
10948 "            len -= slen;\n"
10949 "        }\n"
10950 "    } while (1);\n"
10951 msgstr ""
10952 "        /*\n"
10953 "         * Consume stdin by splicing it to a file.\n"
10954 "         */\n"
10955 "        while (len E<gt> 0) {\n"
10956 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
10957 "                          len, SPLICE_F_MOVE);\n"
10958 "            if (slen E<lt> 0) {\n"
10959 "                perror(\"splice\");\n"
10960 "                break;\n"
10961 "            }\n"
10962 "            len -= slen;\n"
10963 "        }\n"
10964 "    } while (1);\n"
10965
10966 #. type: Plain text
10967 #: build/C/man2/tee.2:196
10968 #, no-wrap
10969 msgid ""
10970 "    close(fd);\n"
10971 "    exit(EXIT_SUCCESS);\n"
10972 "}\n"
10973 msgstr ""
10974 "    close(fd);\n"
10975 "    exit(EXIT_SUCCESS);\n"
10976 "}\n"
10977
10978 #. type: Plain text
10979 #: build/C/man2/tee.2:200
10980 msgid "B<splice>(2), B<vmsplice>(2)"
10981 msgstr "B<splice>(2), B<vmsplice>(2)"
10982
10983 #. type: TH
10984 #: build/C/man2/vm86.2:26
10985 #, no-wrap
10986 msgid "VM86"
10987 msgstr "VM86"
10988
10989 #. type: TH
10990 #: build/C/man2/vm86.2:26
10991 #, no-wrap
10992 msgid "2009-02-20"
10993 msgstr "2009-02-20"
10994
10995 #. type: Plain text
10996 #: build/C/man2/vm86.2:29
10997 msgid "vm86old, vm86 - enter virtual 8086 mode"
10998 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
10999
11000 #. type: Plain text
11001 #: build/C/man2/vm86.2:31
11002 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11003 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11004
11005 #. type: Plain text
11006 #: build/C/man2/vm86.2:33
11007 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11008 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11009
11010 #. type: Plain text
11011 #: build/C/man2/vm86.2:35
11012 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11013 msgstr ""
11014 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11015
11016 #. type: Plain text
11017 #: build/C/man2/vm86.2:46
11018 msgid ""
11019 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11020 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11021 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11022 "and 1.1.9."
11023 msgstr ""
11024 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11025 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11026 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11027
11028 #. type: Plain text
11029 #: build/C/man2/vm86.2:50
11030 msgid ""
11031 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11032 "literature), and are used by B<dosemu>."
11033 msgstr ""
11034 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11035 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11036
11037 #. type: Plain text
11038 #: build/C/man2/vm86.2:52
11039 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11040 msgstr ""
11041 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11042 "ある。"
11043
11044 #. type: Plain text
11045 #: build/C/man2/vm86.2:62
11046 msgid ""
11047 "This return value is specific to i386 and indicates a problem with getting "
11048 "user-space data."
11049 msgstr ""
11050 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11051 "あったことを示す。"
11052
11053 #. type: Plain text
11054 #: build/C/man2/vm86.2:66
11055 msgid ""
11056 "This return value indicates the call is not implemented on the present "
11057 "architecture."
11058 msgstr ""
11059 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11060
11061 #. type: Plain text
11062 #: build/C/man2/vm86.2:71
11063 msgid ""
11064 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11065 "should only exist within vm86 mode itself.)"
11066 msgstr ""
11067 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11068 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11069 "い。)"
11070
11071 #. type: Plain text
11072 #: build/C/man2/vm86.2:74
11073 msgid ""
11074 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11075 "used in programs intended to be portable."
11076 msgstr ""
11077 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11078 "したプログラムでは使用すべきでない。"
11079
11080 #. type: TH
11081 #: build/C/man2/vmsplice.2:26
11082 #, no-wrap
11083 msgid "VMSPLICE"
11084 msgstr "VMSPLICE"
11085
11086 #. type: Plain text
11087 #: build/C/man2/vmsplice.2:29
11088 msgid "vmsplice - splice user pages into a pipe"
11089 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11090
11091 #. type: Plain text
11092 #: build/C/man2/vmsplice.2:34
11093 #, no-wrap
11094 msgid ""
11095 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11096 "B<#include E<lt>fcntl.hE<gt>>\n"
11097 "B<#include E<lt>sys/uio.hE<gt>>\n"
11098 msgstr ""
11099 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11100 "B<#include E<lt>fcntl.hE<gt>>\n"
11101 "B<#include E<lt>sys/uio.hE<gt>>\n"
11102
11103 #. type: Plain text
11104 #: build/C/man2/vmsplice.2:37
11105 #, no-wrap
11106 msgid ""
11107 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11108 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11109 msgstr ""
11110 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11111 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11112
11113 #.  Linus: vmsplice() system call to basically do a "write to
11114 #.  the buffer", but using the reference counting and VM traversal
11115 #.  to actually fill the buffer. This means that the user needs to
11116 #.  be careful not to reuse the user-space buffer it spliced into
11117 #.  the kernel-space one (contrast this to "write()", which copies
11118 #.  the actual data, and you can thus reuse the buffer immediately
11119 #.  after a successful write), but that is often easy to do.
11120 #. type: Plain text
11121 #: build/C/man2/vmsplice.2:57
11122 msgid ""
11123 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11124 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11125 "pipe."
11126 msgstr ""
11127 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11128 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11129 "ばならない。"
11130
11131 #. type: Plain text
11132 #: build/C/man2/vmsplice.2:64
11133 msgid ""
11134 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11135 "I<E<lt>sys/uio.hE<gt>>:"
11136 msgstr ""
11137 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11138 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11139
11140 #. type: Plain text
11141 #: build/C/man2/vmsplice.2:71
11142 #, no-wrap
11143 msgid ""
11144 "struct iovec {\n"
11145 "    void  *iov_base;            /* Starting address */\n"
11146 "    size_t iov_len;             /* Number of bytes */\n"
11147 "};\n"
11148 msgstr ""
11149 "struct iovec {\n"
11150 "    void  *iov_base;            /* 開始アドレス */\n"
11151 "    size_t iov_len;             /* バイト数 */\n"
11152 "};\n"
11153
11154 #. type: Plain text
11155 #: build/C/man2/vmsplice.2:84
11156 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11157 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11158
11159 #. type: Plain text
11160 #: build/C/man2/vmsplice.2:97
11161 msgid ""
11162 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11163 "future; see B<splice>(2)."
11164 msgstr ""
11165 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11166 "がある。 B<splice>(2)  参照。"
11167
11168 #.  FIXME Explain the following line in a little more detail:
11169 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11170 #. type: Plain text
11171 #: build/C/man2/vmsplice.2:113
11172 msgid ""
11173 "The user pages are a gift to the kernel.  The application may not modify "
11174 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11175 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11176 "successfully move the pages; if this flag is not specified, then a "
11177 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11178 "also be properly page aligned, both in memory and length."
11179 msgstr ""
11180 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11181 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11182 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11183 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11184 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11185 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11186 "なければならず、 長さもページ境界の倍数でなければならない。"
11187
11188 #. type: Plain text
11189 #: build/C/man2/vmsplice.2:122
11190 msgid ""
11191 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11192 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11193 "is set to indicate the error."
11194 msgstr ""
11195 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11196 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11197
11198 #. type: Plain text
11199 #: build/C/man2/vmsplice.2:127
11200 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11201 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11202
11203 #. type: Plain text
11204 #: build/C/man2/vmsplice.2:135
11205 msgid ""
11206 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11207 "B<SPLICE_F_GIFT> set."
11208 msgstr ""
11209 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11210 "設定されたがメモリがページ境界にあっていない。"
11211
11212 #. type: Plain text
11213 #: build/C/man2/vmsplice.2:143
11214 msgid ""
11215 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11216 "support was added to glibc in version 2.5."
11217 msgstr ""
11218 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11219 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11220
11221 #. type: Plain text
11222 #: build/C/man2/vmsplice.2:154
11223 msgid ""
11224 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11225 "it comes to limitations on number of segments being passed in.  This limit "
11226 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11227 "writing, that limit is 1024."
11228 msgstr ""
11229 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11230 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11231 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11232 "は 1024 である。"
11233
11234 #. type: Plain text
11235 #: build/C/man2/vmsplice.2:157
11236 msgid "B<splice>(2), B<tee>(2)"
11237 msgstr "B<splice>(2), B<tee>(2)"
11238
11239 #~ msgid "2010-08-29"
11240 #~ msgstr "2010-08-29"
11241
11242 #~ msgid ""
11243 #~ "Depending on which operation was executed, the returned value for a "
11244 #~ "successful call can have differing meanings."
11245 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11246
11247 #~ msgid ""
11248 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11249 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11250 #~ "was not equal to the expected value, the operation fails with the error "
11251 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11252 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11253 #~ msgstr ""
11254 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11255 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11256 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11257 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11258 #~ "敗する。"
11259
11260 #~ msgid "An operation was not defined or error in page alignment."
11261 #~ msgstr ""
11262 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11263
11264 #~ msgid "2010-11-04"
11265 #~ msgstr "2010-11-04"
11266
11267 #~ msgid "2007-06-01"
11268 #~ msgstr "2007-06-01"
11269
11270 #~ msgid "1995-11-29"
11271 #~ msgstr "1995-11-29"
11272
11273 #~ msgid "2012-04-26"
11274 #~ msgstr "2012-04-26"
11275
11276 #~ msgid "2004-09-10"
11277 #~ msgstr "2004-09-10"
11278
11279 #~ msgid "2009-09-15"
11280 #~ msgstr "2009-09-15"
11281
11282 #~ msgid "The B<splice>()  system call first appeared in Linux 2.6.17."
11283 #~ msgstr "B<splice>()  システムコールは Linux 2.6.17 で初めて登場した。"
11284
11285 #~ msgid "The B<tee>()  system call first appeared in Linux 2.6.17."
11286 #~ msgstr "B<tee>()  システムコールは Linux 2.6.17 で初めて登場した。"
11287
11288 #, fuzzy
11289 #~| msgid ""
11290 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11291 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11292 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11293 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11294 #~| "giving the parent a chance to gain control before the new program begins "
11295 #~| "execution.  A process probably shouldn't make this request if its parent "
11296 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11297 #~ msgid ""
11298 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11299 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11300 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11301 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11302 #~ "be sent to it, giving the parent a chance to gain control before the new "
11303 #~ "program begins execution.  A process probably shouldn't make this request "
11304 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11305 #~ "are ignored.)"
11306 #~ msgstr ""
11307 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11308 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11309 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11310 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11311 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11312 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11313 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11314 #~ "は無視される。)"
11315
11316 #~ msgid ""
11317 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11318 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11319 #~ msgstr ""
11320 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11321 #~ "\\ 8> で子プロセスの動作を停止させる。"
11322
11323 #~ msgid ""
11324 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11325 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11326 #~ msgstr ""
11327 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11328 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11329
11330 #~ msgid ""
11331 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11332 #~ "of the calling process; the behavior of the child is as if it had done a "
11333 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11334 #~ "the child process for most purposes (e.g., it will receive notification "
11335 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11336 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11337 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11338 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11339 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11340 #~ msgstr ""
11341 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11342 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11343 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11344 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11345 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11346 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11347 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11348 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11349 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11350
11351 #~ msgid ""
11352 #~ "Tracing causes a few subtle differences in the semantics of traced "
11353 #~ "processes.  For example, if a process is attached to with "
11354 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11355 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11356 #~ "effectively simulate this notification."
11357 #~ msgstr ""
11358 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11359 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11360 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11361 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11362
11363 #~ msgid ""
11364 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11365 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11366 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11367 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11368 #~ "child process after receiving one of these messages."
11369 #~ msgstr ""
11370 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11371 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11372 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11373 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11374 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11375 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11376
11377 #~ msgid ""
11378 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11379 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11380 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11381 #~ "and uniform way."
11382 #~ msgstr ""
11383 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11384 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11385 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11386 #~ "るものとなっている。"
11387
11388 #~ msgid "B<#include E<lt>sys/quota.hE<gt>>\n"
11389 #~ msgstr "B<#include E<lt>sys/quota.hE<gt>>\n"
11390
11391 #~ msgid ""
11392 #~ "The second argument I<special> is the block special device these quota "
11393 #~ "apply to.  It must be mounted."
11394 #~ msgstr ""
11395 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11396 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11397
11398 #~ msgid ""
11399 #~ "The third argument I<id> is the user or group ID these quota apply to "
11400 #~ "(when relevant)."
11401 #~ msgstr ""
11402 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11403 #~ "グループの ID を指定する。"
11404
11405 #~ msgid ""
11406 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11407 #~ "on the command."
11408 #~ msgstr ""
11409 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11410 #~ "指定する。"
11411
11412 #~ msgid ""
11413 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11414 #~ "containing the quota for the file system."
11415 #~ msgstr ""
11416 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11417 #~ "記録されているファイルの パス名を指定する。"
11418
11419 #~ msgid "Disable quota."
11420 #~ msgstr "quota を無効にする。"
11421
11422 #~ msgid "Set limits and current usage; I<addr> is as before."
11423 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11424
11425 #~ msgid "Set limits; I<addr> is as before."
11426 #~ msgstr "制限値を設定する; I<addr> は同上。"
11427
11428 #~ msgid "B<Q_SETUSE>"
11429 #~ msgstr "B<Q_SETUSE>"
11430
11431 #~ msgid "Set usage."
11432 #~ msgstr "使用量を設定する。"
11433
11434 #~ msgid "Sync disk copy of a file system's quota."
11435 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11436
11437 #~ msgid "Get collected stats."
11438 #~ msgstr "収集された統計を取得する。"
11439
11440 #~ msgid ""
11441 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11442 #~ "I<errno> is set appropriately."
11443 #~ msgstr ""
11444 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11445 #~ "I<errno> が適切な値に設定される。"
11446
11447 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11448 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11449
11450 #~ msgid "Bad I<addr> value."
11451 #~ msgstr "I<addr> の値に誤りがある。"
11452
11453 #~ msgid ""
11454 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11455 #~ msgstr ""
11456 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11457 #~ "付からなかった。"
11458
11459 #~ msgid "Cannot read or write the quota file."
11460 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11461
11462 #~ msgid "B<EMFILE>"
11463 #~ msgstr "B<EMFILE>"
11464
11465 #~ msgid "Too many open files: cannot open quota file."
11466 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11467
11468 #~ msgid "I<special> cannot be found in the mount table."
11469 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11470
11471 #~ msgid "B<ENOPKG>"
11472 #~ msgstr "B<ENOPKG>"
11473
11474 #~ msgid "The kernel was compiled without quota support."
11475 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11476
11477 #~ msgid ""
11478 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11479 #~ "asked for another I<id> than that of the process itself, or anything "
11480 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11481 #~ msgstr ""
11482 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11483 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11484 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11485
11486 #~ msgid ""
11487 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11488 #~ "for a file system that didn't have quota enabled."
11489 #~ msgstr ""
11490 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11491 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"
11492
11493 #~ msgid "BSD."
11494 #~ msgstr "BSD."