OSDN Git Service

(split) LDP: Addresses fuzzy strings in 3.53
[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-08-15 19:32+0900\n"
10 "PO-Revision-Date: 2013-08-16 14:23+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language: \n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17
18 #. type: TH
19 #: build/C/man2/arch_prctl.2:25
20 #, no-wrap
21 msgid "ARCH_PRCTL"
22 msgstr "ARCH_PRCTL"
23
24 #. type: TH
25 #: build/C/man2/arch_prctl.2:25
26 #, no-wrap
27 msgid "2007-12-26"
28 msgstr "2007-12-26"
29
30 #. type: TH
31 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
32 #: build/C/man2/get_robust_list.2:29 build/C/man2/getunwind.2:27
33 #: build/C/man2/kexec_load.2:26 build/C/man2/lookup_dcookie.2:27
34 #: build/C/man2/modify_ldt.2:24 build/C/man2/nfsservctl.2:8
35 #: build/C/man2/outb.2:26 build/C/man2/pciconfig_read.2:8
36 #: build/C/man2/perf_event_open.2:27 build/C/man2/perfmonctl.2:27
37 #: build/C/man2/personality.2:32 build/C/man2/pivot_root.2:10
38 #: build/C/man2/process_vm_readv.2:29 build/C/man2/ptrace.2:44
39 #: build/C/man2/quotactl.2:27 build/C/man2/sendfile.2:19
40 #: build/C/man2/set_tid_address.2:25 build/C/man2/splice.2:26
41 #: build/C/man2/tee.2:26 build/C/man2/vm86.2:26 build/C/man2/vmsplice.2:26
42 #, no-wrap
43 msgid "Linux"
44 msgstr "Linux"
45
46 #. type: TH
47 #: build/C/man2/arch_prctl.2:25 build/C/man2/futex.2:53
48 #: build/C/man2/getunwind.2:27 build/C/man2/kexec_load.2:26
49 #: build/C/man2/lookup_dcookie.2:27 build/C/man2/modify_ldt.2:24
50 #: build/C/man2/nfsservctl.2:8 build/C/man2/outb.2:26
51 #: build/C/man2/pciconfig_read.2:8 build/C/man2/perf_event_open.2:27
52 #: build/C/man2/perfmonctl.2:27 build/C/man2/personality.2:32
53 #: build/C/man2/pivot_root.2:10 build/C/man2/process_vm_readv.2:29
54 #: build/C/man2/ptrace.2:44 build/C/man2/quotactl.2:27
55 #: build/C/man2/sendfile.2:19 build/C/man2/set_tid_address.2:25
56 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vm86.2:26
57 #: build/C/man2/vmsplice.2:26
58 #, no-wrap
59 msgid "Linux Programmer's Manual"
60 msgstr "Linux Programmer's Manual"
61
62 #. type: SH
63 #: build/C/man2/arch_prctl.2:26 build/C/man2/futex.2:54
64 #: build/C/man2/get_robust_list.2:30 build/C/man2/getunwind.2:28
65 #: build/C/man2/kexec_load.2:27 build/C/man2/lookup_dcookie.2:28
66 #: build/C/man2/modify_ldt.2:25 build/C/man2/nfsservctl.2:9
67 #: build/C/man2/outb.2:27 build/C/man2/pciconfig_read.2:9
68 #: build/C/man2/perf_event_open.2:28 build/C/man2/perfmonctl.2:28
69 #: build/C/man2/personality.2:33 build/C/man2/pivot_root.2:11
70 #: build/C/man2/process_vm_readv.2:30 build/C/man2/ptrace.2:45
71 #: build/C/man2/quotactl.2:28 build/C/man2/sendfile.2:20
72 #: build/C/man2/set_tid_address.2:26 build/C/man2/splice.2:27
73 #: build/C/man2/tee.2:27 build/C/man2/vm86.2:27 build/C/man2/vmsplice.2:27
74 #, no-wrap
75 msgid "NAME"
76 msgstr "名前"
77
78 #. type: Plain text
79 #: build/C/man2/arch_prctl.2:28
80 msgid "arch_prctl - set architecture-specific thread state"
81 msgstr "arch_prctl - アーキテクチャ固有のスレッド状態を設定する"
82
83 #. type: SH
84 #: build/C/man2/arch_prctl.2:28 build/C/man2/futex.2:56
85 #: build/C/man2/get_robust_list.2:32 build/C/man2/getunwind.2:30
86 #: build/C/man2/kexec_load.2:29 build/C/man2/lookup_dcookie.2:30
87 #: build/C/man2/modify_ldt.2:27 build/C/man2/nfsservctl.2:11
88 #: build/C/man2/outb.2:31 build/C/man2/pciconfig_read.2:11
89 #: build/C/man2/perf_event_open.2:30 build/C/man2/perfmonctl.2:30
90 #: build/C/man2/personality.2:35 build/C/man2/pivot_root.2:13
91 #: build/C/man2/process_vm_readv.2:32 build/C/man2/ptrace.2:47
92 #: build/C/man2/quotactl.2:30 build/C/man2/sendfile.2:22
93 #: build/C/man2/set_tid_address.2:28 build/C/man2/splice.2:29
94 #: build/C/man2/tee.2:29 build/C/man2/vm86.2:29 build/C/man2/vmsplice.2:29
95 #, no-wrap
96 msgid "SYNOPSIS"
97 msgstr "書式"
98
99 #. type: Plain text
100 #: build/C/man2/arch_prctl.2:31
101 #, no-wrap
102 msgid "B<#include E<lt>asm/prctl.hE<gt>>\n"
103 msgstr "B<#include E<lt>asm/prctl.hE<gt>>\n"
104
105 #. type: Plain text
106 #: build/C/man2/arch_prctl.2:33
107 #, no-wrap
108 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
109 msgstr "B<#include E<lt>sys/prctl.hE<gt>>\n"
110
111 #. type: Plain text
112 #: build/C/man2/arch_prctl.2:36
113 #, no-wrap
114 msgid ""
115 "B<int arch_prctl(int >I<code>B<, unsigned long >I<addr>B<);>\n"
116 "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
117 msgstr "B<int arch_prctl(int >I<code>B<, unsigned long *>I<addr>B<);>\n"
118
119 #.  Return type was long before glibc 2.7
120 #. type: SH
121 #: build/C/man2/arch_prctl.2:37 build/C/man2/futex.2:68
122 #: build/C/man2/get_robust_list.2:44 build/C/man2/getunwind.2:40
123 #: build/C/man2/kexec_load.2:39 build/C/man2/lookup_dcookie.2:32
124 #: build/C/man2/modify_ldt.2:36 build/C/man2/nfsservctl.2:18
125 #: build/C/man2/outb.2:62 build/C/man2/pciconfig_read.2:22
126 #: build/C/man2/perf_event_open.2:42 build/C/man2/perfmonctl.2:39
127 #: build/C/man2/personality.2:39 build/C/man2/pivot_root.2:18
128 #: build/C/man2/process_vm_readv.2:50 build/C/man2/ptrace.2:54
129 #: build/C/man2/quotactl.2:38 build/C/man2/sendfile.2:47
130 #: build/C/man2/set_tid_address.2:34 build/C/man2/splice.2:39
131 #: build/C/man2/tee.2:38 build/C/man2/vm86.2:35 build/C/man2/vmsplice.2:39
132 #, no-wrap
133 msgid "DESCRIPTION"
134 msgstr "説明"
135
136 #. type: Plain text
137 #: build/C/man2/arch_prctl.2:52
138 msgid ""
139 "The B<arch_prctl>()  function sets architecture-specific process or thread "
140 "state.  I<code> selects a subfunction and passes argument I<addr> to it; "
141 "I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
142 "operations, or as an I<unsigned long\\ *>, for the \"get\" operations."
143 msgstr ""
144 "B<arch_prctl>()  関数はアーキテクチャ固有のプロセス状態またはスレッド状態を設"
145 "定する。 I<code> は副機能を選択し、引き数 I<addr> を副機能に渡す。 I<addr> "
146 "は、\"set\" 操作では I<unsigned long> として、\"get\" 操作では I<unsigned "
147 "long\\ *> として解釈される。"
148
149 #. type: Plain text
150 #: build/C/man2/arch_prctl.2:54
151 msgid "Subfunctions for x86-64 are:"
152 msgstr "x86-64 の副機能は以下の通り:"
153
154 #. type: TP
155 #: build/C/man2/arch_prctl.2:54
156 #, no-wrap
157 msgid "B<ARCH_SET_FS>"
158 msgstr "B<ARCH_SET_FS>"
159
160 #. type: Plain text
161 #: build/C/man2/arch_prctl.2:60
162 msgid "Set the 64-bit base for the I<FS> register to I<addr>."
163 msgstr "I<FS> レジスタの 64 ビットベースを I<addr> に設定する。"
164
165 #. type: TP
166 #: build/C/man2/arch_prctl.2:60
167 #, no-wrap
168 msgid "B<ARCH_GET_FS>"
169 msgstr "B<ARCH_GET_FS>"
170
171 #. type: Plain text
172 #: build/C/man2/arch_prctl.2:68
173 msgid ""
174 "Return the 64-bit base value for the I<FS> register of the current thread in "
175 "the I<unsigned long> pointed to by I<addr>."
176 msgstr ""
177 "現在のスレッドの I<FS> レジスタの 64 ビットベース値を、 I<addr> が指す "
178 "I<unsigned long> の領域に格納する。"
179
180 #. type: TP
181 #: build/C/man2/arch_prctl.2:68
182 #, no-wrap
183 msgid "B<ARCH_SET_GS>"
184 msgstr "B<ARCH_SET_GS>"
185
186 #. type: Plain text
187 #: build/C/man2/arch_prctl.2:74
188 msgid "Set the 64-bit base for the I<GS> register to I<addr>."
189 msgstr "I<GS> レジスタの 64 ビットベースを I<addr> に設定する。"
190
191 #. type: TP
192 #: build/C/man2/arch_prctl.2:74
193 #, no-wrap
194 msgid "B<ARCH_GET_GS>"
195 msgstr "B<ARCH_GET_GS>"
196
197 #. type: Plain text
198 #: build/C/man2/arch_prctl.2:82
199 msgid ""
200 "Return the 64-bit base value for the I<GS> register of the current thread in "
201 "the I<unsigned long> pointed to by I<addr>."
202 msgstr ""
203 "現在のスレッドの I<GS> レジスタの 64 ビットベース値を、 I<addr> が指す "
204 "I<unsigned long> の領域に格納する。"
205
206 #. type: SH
207 #: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209
208 #: build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81
209 #: build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43
210 #: build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51
211 #: build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:2026
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:1780 build/C/man2/quotactl.2:419
215 #: build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88
216 #: build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:54
217 #: build/C/man2/vmsplice.2:113
218 #, no-wrap
219 msgid "RETURN VALUE"
220 msgstr "返り値"
221
222 #. type: Plain text
223 #: build/C/man2/arch_prctl.2:88
224 msgid ""
225 "On success, B<arch_prctl>()  returns 0; on error, -1 is returned, and "
226 "I<errno> is set to indicate the error."
227 msgstr ""
228 "成功すると、 B<arch_prctl>()  は 0 を返す。エラーの場合、-1 を返し、 "
229 "I<errno> をエラーを示す値に設定する。"
230
231 #. type: SH
232 #: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234
233 #: build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88
234 #: build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50
235 #: build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77
236 #: build/C/man2/perf_event_open.2:2032 build/C/man2/personality.2:64
237 #: build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229
238 #: build/C/man2/ptrace.2:1801 build/C/man2/quotactl.2:427
239 #: build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91
240 #: build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:59
241 #: build/C/man2/vmsplice.2:122
242 #, no-wrap
243 msgid "ERRORS"
244 msgstr "エラー"
245
246 #. type: TP
247 #: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249
248 #: build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51
249 #: build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251
250 #: build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1805
251 #: build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125
252 #: build/C/man2/vm86.2:60
253 #, no-wrap
254 msgid "B<EFAULT>"
255 msgstr "B<EFAULT>"
256
257 #. type: Plain text
258 #: build/C/man2/arch_prctl.2:93
259 msgid ""
260 "I<addr> points to an unmapped address or is outside the process address "
261 "space."
262 msgstr ""
263 "I<addr> がアンマップされたアドレスを指しているか、プロセスのアドレス空間の外"
264 "にある。"
265
266 #. type: TP
267 #: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261
268 #: build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126
269 #: build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113
270 #: build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:2033
271 #: build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114
272 #: build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241
273 #: build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1816
274 #: build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501
275 #: build/C/man2/sendfile.2:128 build/C/man2/splice.2:147
276 #: build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
277 #, no-wrap
278 msgid "B<EINVAL>"
279 msgstr "B<EINVAL>"
280
281 #. type: Plain text
282 #: build/C/man2/arch_prctl.2:97
283 msgid "I<code> is not a valid subcommand."
284 msgstr "I<code> が有効なサブコマンドでない。"
285
286 #. type: TP
287 #: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98
288 #: build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65
289 #: build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120
290 #: build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1826
291 #: build/C/man2/quotactl.2:456 build/C/man2/vm86.2:68
292 #, no-wrap
293 msgid "B<EPERM>"
294 msgstr "B<EPERM>"
295
296 #.  .SH AUTHOR
297 #.  Man page written by Andi Kleen.
298 #. type: Plain text
299 #: build/C/man2/arch_prctl.2:103
300 msgid "I<addr> is outside the process address space."
301 msgstr "I<addr> がプロセスのアドレス空間の外にある。"
302
303 #. type: SH
304 #: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296
305 #: build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142
306 #: build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130
307 #: build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87
308 #: build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:2051
309 #: build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68
310 #: build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279
311 #: build/C/man2/ptrace.2:1844 build/C/man2/sendfile.2:148
312 #: build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170
313 #: build/C/man2/tee.2:119 build/C/man2/vm86.2:73 build/C/man2/vmsplice.2:143
314 #, no-wrap
315 msgid "CONFORMING TO"
316 msgstr "準拠"
317
318 #. type: Plain text
319 #: build/C/man2/arch_prctl.2:107
320 msgid ""
321 "B<arch_prctl>()  is a Linux/x86-64 extension and should not be used in "
322 "programs intended to be portable."
323 msgstr ""
324 "B<arch_prctl>()  は Linux/x86-64 拡張であり、移植性を意図したプログラムでは使"
325 "うべきでない。"
326
327 #. type: SH
328 #: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298
329 #: build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99
330 #: build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81
331 #: build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:2056
332 #: build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131
333 #: build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1846
334 #: build/C/man2/sendfile.2:155 build/C/man2/splice.2:172
335 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
336 #, no-wrap
337 msgid "NOTES"
338 msgstr "注意"
339
340 #. type: Plain text
341 #: build/C/man2/arch_prctl.2:110
342 msgid ""
343 "B<arch_prctl>()  is supported only on Linux/x86-64 for 64-bit programs "
344 "currently."
345 msgstr ""
346 "B<arch_prctl>()  は現在のところ Linux/x86-64 上の 64 ビットプログラムでのみサ"
347 "ポートされている。"
348
349 #. type: Plain text
350 #: build/C/man2/arch_prctl.2:112
351 msgid "The 64-bit base changes when a new 32-bit segment selector is loaded."
352 msgstr ""
353 "新しい 32 ビットセグメントセレクタがロードされた場合、 64 ビットベースは変更"
354 "される。"
355
356 #. type: Plain text
357 #: build/C/man2/arch_prctl.2:115
358 msgid "B<ARCH_SET_GS> is disabled in some kernels."
359 msgstr "B<ARCH_SET_GS> が無効にされているカーネルもある。"
360
361 #. type: Plain text
362 #: build/C/man2/arch_prctl.2:130
363 msgid ""
364 "Context switches for 64-bit segment bases are rather expensive.  It may be a "
365 "faster alternative to set a 32-bit base using a segment selector by setting "
366 "up an LDT with B<modify_ldt>(2)  or using the B<set_thread_area>(2)  system "
367 "call in kernel 2.5 or later.  B<arch_prctl>()  is needed only when you want "
368 "to set bases that are larger than 4GB.  Memory in the first 2GB of address "
369 "space can be allocated by using B<mmap>(2)  with the B<MAP_32BIT> flag."
370 msgstr ""
371 "64 ビットセグメントベースのコンテキストスイッチは、やや高価である。 LDT を "
372 "B<modify_ldt>(2)  で設定してセグメントセレクタを使うか、 (カーネル 2.5 以降"
373 "の)  B<set_thread_area>(2)  システムコールを使うことにより、 32 ビットベース"
374 "を設定するという高速な代替手段もある。 4GB より大きなベースを設定したい場合に"
375 "のみ、 B<arch_prctl>()  が必要である。 アドレス空間の最初の 2GB にあるメモリ"
376 "は、 B<mmap>(2)  に B<MAP_32BIT> フラグを指定して割り当てることができる。"
377
378 #. type: Plain text
379 #: build/C/man2/arch_prctl.2:135
380 msgid ""
381 "As of version 2.7, glibc provides no prototype for B<arch_prctl>().  You "
382 "have to declare it yourself for now.  This may be fixed in future glibc "
383 "versions."
384 msgstr ""
385 "バージョン 2.7 時点では、glibc には B<arch_prctl>()  のプロトタイプがない。 "
386 "今のところユーザは自分自身で宣言する必要がある。 これは将来の glibc のバー"
387 "ジョンで修正されるかもしれない。"
388
389 #. type: Plain text
390 #: build/C/man2/arch_prctl.2:138
391 msgid "I<FS> may be already used by the threading library."
392 msgstr "I<FS> はスレッドライブラリで既に使われているかもしれない。"
393
394 #. type: SH
395 #: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312
396 #: build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111
397 #: build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136
398 #: build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:114
399 #: build/C/man2/perf_event_open.2:2176 build/C/man2/perfmonctl.2:205
400 #: build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331
401 #: build/C/man2/ptrace.2:2000 build/C/man2/quotactl.2:507
402 #: build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99
403 #: build/C/man2/splice.2:226 build/C/man2/tee.2:197
404 #: build/C/man2/vmsplice.2:154
405 #, no-wrap
406 msgid "SEE ALSO"
407 msgstr "関連項目"
408
409 #. type: Plain text
410 #: build/C/man2/arch_prctl.2:143
411 msgid "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
412 msgstr "B<mmap>(2), B<modify_ldt>(2), B<prctl>(2), B<set_thread_area>(2)"
413
414 #. type: Plain text
415 #: build/C/man2/arch_prctl.2:145
416 msgid "AMD X86-64 Programmer's manual"
417 msgstr "AMD X86-64 Programmer's manual"
418
419 #. type: SH
420 #: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:326
421 #: build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113
422 #: build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88
423 #: build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58
424 #: build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:116
425 #: build/C/man2/perf_event_open.2:2182 build/C/man2/perfmonctl.2:209
426 #: build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149
427 #: build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:2014
428 #: build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203
429 #: build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230
430 #: build/C/man2/tee.2:200 build/C/man2/vm86.2:76 build/C/man2/vmsplice.2:157
431 #, no-wrap
432 msgid "COLOPHON"
433 msgstr "この文書について"
434
435 #. type: Plain text
436 #: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:333
437 #: build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120
438 #: build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95
439 #: build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65
440 #: build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:123
441 #: build/C/man2/perf_event_open.2:2189 build/C/man2/perfmonctl.2:216
442 #: build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156
443 #: build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:2021
444 #: build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210
445 #: build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237
446 #: build/C/man2/tee.2:207 build/C/man2/vm86.2:83 build/C/man2/vmsplice.2:164
447 msgid ""
448 "This page is part of release 3.53 of the Linux I<man-pages> project.  A "
449 "description of the project, and information about reporting bugs, can be "
450 "found at \\%http://www.kernel.org/doc/man-pages/."
451 msgstr ""
452 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.53 の一部\n"
453 "である。プロジェクトの説明とバグ報告に関する情報は\n"
454 "http://www.kernel.org/doc/man-pages/ に書かれている。"
455
456 #. type: TH
457 #: build/C/man2/futex.2:53
458 #, no-wrap
459 msgid "FUTEX"
460 msgstr "FUTEX"
461
462 #. type: TH
463 #: build/C/man2/futex.2:53
464 #, no-wrap
465 msgid "2013-07-30"
466 msgstr "2013-07-30"
467
468 #. type: Plain text
469 #: build/C/man2/futex.2:56
470 msgid "futex - fast user-space locking"
471 msgstr "futex - 高速ユーザ空間ロック"
472
473 #. type: Plain text
474 #: build/C/man2/futex.2:61
475 #, no-wrap
476 msgid ""
477 "B<#include E<lt>linux/futex.hE<gt>>\n"
478 "B<#include E<lt>sys/time.hE<gt>>\n"
479 msgstr ""
480 "B<#include E<lt>linux/futex.hE<gt>>\n"
481 "B<#include E<lt>sys/time.hE<gt>>\n"
482
483 #. type: Plain text
484 #: build/C/man2/futex.2:64
485 #, no-wrap
486 msgid "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
487 msgstr "B<int futex(int *>I<uaddr>B<, int >I<op>B<, int >I<val>B<, const struct timespec *>I<timeout>B<,>\n"
488
489 #.  int *? void *? u32 *?
490 #. type: Plain text
491 #: build/C/man2/futex.2:67
492 #, no-wrap
493 msgid "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
494 msgstr "B<          int *>I<uaddr2>B<, int >I<val3>B<);>\n"
495
496 #. type: Plain text
497 #: build/C/man2/futex.2:84
498 msgid ""
499 "The B<futex>()  system call provides a method for a program to wait for a "
500 "value at a given address to change, and a method to wake up anyone waiting "
501 "on a particular address (while the addresses for the same memory in separate "
502 "processes may not be equal, the kernel maps them internally so the same "
503 "memory mapped in different locations will correspond for B<futex>()  "
504 "calls).  This system call is typically used to implement the contended case "
505 "of a lock in shared memory, as described in B<futex>(7)."
506 msgstr ""
507 "B<futex>()  システムコールは、 指定したアドレスの値が変更されるのをプログラム"
508 "が待つ手段や 特定のアドレスに対して待機中のプロセスを wake (起床) させる手段"
509 "を提供する (プロセスが異なれば同じメモリに対するアドレスも同じではないかもし"
510 "れないが、 カーネルは異なる位置にマップされた同じメモリを B<futex>()  で使え"
511 "るよう内部でマップする)。 通常は、このシステムコールは B<futex>(7)  に書かれ"
512 "ているように、 共有メモリ中のロックが競合する場合の処理を実装するのに用いられ"
513 "る。"
514
515 #. type: Plain text
516 #: build/C/man2/futex.2:91
517 msgid ""
518 "When a B<futex>(7)  operation did not finish uncontended in user space, a "
519 "call needs to be made to the kernel to arbitrate.  Arbitration can either "
520 "mean putting the calling process to sleep or, conversely, waking a waiting "
521 "process."
522 msgstr ""
523 "B<futex>(7)  の操作がユーザ空間で競合なく完了しなかった場合、 カーネルに仲裁"
524 "させるためにシステムコールを呼ぶ必要がある。 仲裁というのは、呼び出しプロセス"
525 "を sleep (起床待ち) させたり、反対に 待ちプロセスを wake させたりすることを意"
526 "味する。"
527
528 #. type: Plain text
529 #: build/C/man2/futex.2:98
530 msgid ""
531 "Callers of this function are expected to adhere to the semantics as set out "
532 "in B<futex>(7).  As these semantics involve writing nonportable assembly "
533 "instructions, this in turn probably means that most users will in fact be "
534 "library authors and not general application developers."
535 msgstr ""
536 "この関数を呼び出すプロセスは B<futex>(7)  に記述されているセマンティクスに忠"
537 "実であることが要求される。 このセマンティクスには移植不可能なアセンブリ命令を"
538 "書くことが含まれる。 このことは言い換えると futex のユーザのほとんどは実際は"
539 "ライブラリの作者であり、 一般アプリケーションの開発者ではないということであ"
540 "る。"
541
542 #. type: Plain text
543 #: build/C/man2/futex.2:106
544 msgid ""
545 "The I<uaddr> argument needs to point to an aligned integer which stores the "
546 "counter.  The operation to execute is passed via the I<op> argument, along "
547 "with a value I<val>."
548 msgstr ""
549 "I<uaddr> 引き数は、カウンタを格納する、 アラインメントの揃った int 型変数を指"
550 "している必要がある。 実行する操作は I<op> 引き数を介して、値 I<val> とともに"
551 "渡される。"
552
553 #. type: Plain text
554 #: build/C/man2/futex.2:108
555 msgid "Five operations are currently defined:"
556 msgstr "現在のところ 5 つの操作が定義されている:"
557
558 #. type: TP
559 #: build/C/man2/futex.2:108 build/C/man2/futex.2:216
560 #, no-wrap
561 msgid "B<FUTEX_WAIT>"
562 msgstr "B<FUTEX_WAIT>"
563
564 #. type: Plain text
565 #: build/C/man2/futex.2:126
566 msgid ""
567 "This operation atomically verifies that the futex address I<uaddr> still "
568 "contains the value I<val>, and sleeps awaiting B<FUTEX_WAKE> on this futex "
569 "address.  If the I<timeout> argument is non-NULL, its contents describe the "
570 "minimum duration of the wait, which is infinite otherwise.  The arguments "
571 "I<uaddr2> and I<val3> are ignored."
572 msgstr ""
573 "この操作は futex アドレス I<uaddr> に指定された値 I<val> がまだ格納されている"
574 "かどうかを不可分操作で検証し、 sleep 状態で この futex アドレスに対して "
575 "B<FUTEX_WAKE> が実行されるのを待つ。 I<timeout> 引き数が NULL でない場合、そ"
576 "の内容は 待ち時間の最大値を表す。NULL の場合は無限大を表す。 引き数 "
577 "I<uaddr2> と I<val3> は無視される。"
578
579 #. type: Plain text
580 #: build/C/man2/futex.2:134
581 msgid ""
582 "For B<futex>(7), this call is executed if decrementing the count gave a "
583 "negative value (indicating contention), and will sleep until another process "
584 "releases the futex and executes the B<FUTEX_WAKE> operation."
585 msgstr ""
586 "B<futex>(7)  に照らし合わせると、この呼び出しは カウントのデクリメントで負の"
587 "値 (競合を表す) になった場合に実行され、 別のプロセスがその futex を解放し "
588 "B<FUTEX_WAKE> の操作を実行するまで sleep する。"
589
590 #. type: TP
591 #: build/C/man2/futex.2:134 build/C/man2/futex.2:222
592 #, no-wrap
593 msgid "B<FUTEX_WAKE>"
594 msgstr "B<FUTEX_WAKE>"
595
596 #. type: Plain text
597 #: build/C/man2/futex.2:145
598 msgid ""
599 "This operation wakes at most I<val> processes waiting on this futex address "
600 "(i.e., inside B<FUTEX_WAIT>).  The arguments I<timeout>, I<uaddr2> and "
601 "I<val3> are ignored."
602 msgstr ""
603 "この操作では指定した futex アドレスに対して待ち状態の (すなわち "
604 "B<FUTEX_WAIT> 中の) 最大 I<val> 個のプロセスを wake させる。 引き数 "
605 "I<timeout>, I<uaddr2>, I<val3> は無視される。"
606
607 #. type: Plain text
608 #: build/C/man2/futex.2:151
609 msgid ""
610 "For B<futex>(7), this is executed if incrementing the count showed that "
611 "there were waiters, once the futex value has been set to 1 (indicating that "
612 "it is available)."
613 msgstr ""
614 "B<futex>(4) に照らし合わせると、 この操作は カウントのインクリメントで待ちプ"
615 "ロセスがあると判明し、 futex 値が 1 に設定された (利用可能であることを表す) "
616 "場合に実行される。"
617
618 #. type: TP
619 #: build/C/man2/futex.2:151
620 #, no-wrap
621 msgid "B<FUTEX_FD> (present up to and including Linux 2.6.25)"
622 msgstr "B<FUTEX_FD> (Linux 2.6.25 以前)"
623
624 #.  , suitable for .BR poll (2).
625 #. type: Plain text
626 #: build/C/man2/futex.2:167
627 msgid ""
628 "To support asynchronous wakeups, this operation associates a file descriptor "
629 "with a futex.  If another process executes a B<FUTEX_WAKE>, the process will "
630 "receive the signal number that was passed in I<val>.  The calling process "
631 "must close the returned file descriptor after use.  The arguments "
632 "I<timeout>, I<uaddr2> and I<val3> are ignored."
633 msgstr ""
634 "非同期の wake に対応するため、この操作はファイルディスクリプタを futex に 関"
635 "連づける。 別のプロセスが B<FUTEX_WAKE> を実行すると、プロセスは I<val> で渡"
636 "されたシグナル番号のシグナルを受信する。 呼び出しプロセスは使用後、返された"
637 "ファイルディスクリプタを クローズしなければならない。 引き数 I<timeout>, "
638 "I<uaddr2>, I<val3> は無視される。"
639
640 #. type: Plain text
641 #: build/C/man2/futex.2:172
642 msgid ""
643 "To prevent race conditions, the caller should test if the futex has been "
644 "upped after B<FUTEX_FD> returns."
645 msgstr ""
646 "競合状態を防止するため、呼び出しプロセスは B<FUTEX_FD> が返ったあと futex が "
647 "up されたかどうかを確認しなければならない。"
648
649 #. type: Plain text
650 #: build/C/man2/futex.2:176
651 msgid ""
652 "Because it was inherently racy, B<FUTEX_FD> has been removed from Linux "
653 "2.6.26 onward."
654 msgstr ""
655 "B<FUTEX_FD> はもともと競合が起きやすかったため、 Linux 2.6.26 以降で削除され"
656 "ている。"
657
658 #. type: TP
659 #: build/C/man2/futex.2:176
660 #, no-wrap
661 msgid "B<FUTEX_REQUEUE> (since Linux 2.5.70)"
662 msgstr "B<FUTEX_REQUEUE> (Linux 2.5.70 以降)"
663
664 #. type: Plain text
665 #: build/C/man2/futex.2:191
666 msgid ""
667 "This operation was introduced in order to avoid a \"thundering herd\" effect "
668 "when B<FUTEX_WAKE> is used and all processes woken up need to acquire "
669 "another futex.  This call wakes up I<val> processes, and requeues all other "
670 "waiters on the futex at address I<uaddr2>.  The arguments I<timeout> and "
671 "I<val3> are ignored."
672 msgstr ""
673 "この操作は、 B<FUTEX_WAKE> が使われていて、かつ wake されている全てのプロセス"
674 "が 他の futex を取得する必要がある場合に、 「獣の群れの暴走 (thundering "
675 "herd)」効果を避けるために導入された。 この呼び出しは I<val> 個のプロセスを "
676 "wake し、アドレス I<uaddr2> で futex を待っている他の全てのプロセスを再度"
677 "キューにいれる。 引き数 I<timeout> と I<val3> は無視される。"
678
679 #. type: TP
680 #: build/C/man2/futex.2:191
681 #, no-wrap
682 msgid "B<FUTEX_CMP_REQUEUE> (since Linux 2.6.7)"
683 msgstr "B<FUTEX_CMP_REQUEUE> (Linux 2.6.7 以降)"
684
685 #. type: Plain text
686 #: build/C/man2/futex.2:209
687 msgid ""
688 "There was a race in the intended use of B<FUTEX_REQUEUE>, so "
689 "B<FUTEX_CMP_REQUEUE> was introduced.  This is similar to B<FUTEX_REQUEUE>, "
690 "but first checks whether the location I<uaddr> still contains the value "
691 "I<val3>.  If not, the operation fails with the error B<EAGAIN>.  The "
692 "argument I<timeout> is ignored."
693 msgstr ""
694 "故意に B<FUTEX_REQUEUE> を使う場合に競合が起こるため、 B<FUTEX_CMP_REQUEUE> "
695 "が導入された。これは B<FUTEX_REQUEUE> と似ているが、場所 I<uaddr> に値 "
696 "I<val3> がまだ保持されているかを最初にチェックする。 保持されていない場合、操"
697 "作はエラー B<EAGAIN> で失敗する。引き数 I<timeout> は無視される。"
698
699 #. type: Plain text
700 #: build/C/man2/futex.2:216
701 msgid ""
702 "In the event of an error, all operations return -1, and set I<errno> to "
703 "indicate the error.  The return value on success depends on the operation, "
704 "as described in the following list:"
705 msgstr ""
706 "エラーの場合、全ての操作で -1 が返り、 I<errno> がエラーの内容を示す値に設定"
707 "される。成功時の返り値は操作によって異なり、以下のリストに書かれている通りで"
708 "ある。"
709
710 #. type: Plain text
711 #: build/C/man2/futex.2:222
712 msgid ""
713 "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  See ERRORS for "
714 "the various possible error returns."
715 msgstr ""
716 "そのプロセスが B<FUTEX_WAKE> により wake された場合 0 を返す。発生する可能性"
717 "があるエラーについては「エラー」の節を参照。"
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 msgid ""
767 "B<FUTEX_CMP_REQUEUE> detected that the value pointed to by I<uaddr> is not "
768 "equal to the expected value I<val3>.  (This probably indicates a race; use "
769 "the safe B<FUTEX_WAKE> now.)"
770 msgstr ""
771 "B<FUTEX_CMP_REQUEUE> で、I<uaddr> が指す値が期待値 I<val3> と異なる状況が検出"
772 "された。 (これは競合を示しているかもしれない。この場合は安全な B<FUTEX_WAKE> "
773 "を使うこと。)"
774
775 #. type: Plain text
776 #: build/C/man2/futex.2:254
777 msgid "Error retrieving I<timeout> information from user space."
778 msgstr "ユーザ空間から I<timeout> の情報を取得する際にエラーが発生した。"
779
780 #. type: TP
781 #: build/C/man2/futex.2:254
782 #, no-wrap
783 msgid "B<EINTR>"
784 msgstr "B<EINTR>"
785
786 #. type: Plain text
787 #: build/C/man2/futex.2:261
788 msgid ""
789 "A B<FUTEX_WAIT> operation was interrupted by a signal (see B<signal>(7))  or "
790 "a spurious wakeup."
791 msgstr ""
792 "B<FUTEX_WAIT> 操作がシグナル (B<signal>(7) 参照) もしくは偽の wakeup により中"
793 "断された。"
794
795 #. type: Plain text
796 #: build/C/man2/futex.2:264
797 msgid "Invalid argument."
798 msgstr "無効な引き数。"
799
800 #. type: TP
801 #: build/C/man2/futex.2:264
802 #, no-wrap
803 msgid "B<ENFILE>"
804 msgstr "B<ENFILE>"
805
806 #. type: Plain text
807 #: build/C/man2/futex.2:267
808 msgid "The system limit on the total number of open files has been reached."
809 msgstr "オープンされているファイルの総数がシステムの制限に達した。"
810
811 #. type: TP
812 #: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126
813 #: build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447
814 #: build/C/man2/vm86.2:64
815 #, no-wrap
816 msgid "B<ENOSYS>"
817 msgstr "B<ENOSYS>"
818
819 #. type: Plain text
820 #: build/C/man2/futex.2:271
821 msgid "Invalid operation specified in I<op>."
822 msgstr "I<op> に無効な操作が指定された。"
823
824 #. type: TP
825 #: build/C/man2/futex.2:271
826 #, no-wrap
827 msgid "B<ETIMEDOUT>"
828 msgstr "B<ETIMEDOUT>"
829
830 #. type: Plain text
831 #: build/C/man2/futex.2:276
832 msgid "Timeout during the B<FUTEX_WAIT> operation."
833 msgstr "B<FUTEX_WAIT> 操作でタイムアウトが発生した。"
834
835 #. type: TP
836 #: build/C/man2/futex.2:276
837 #, no-wrap
838 msgid "B<EWOULDBLOCK>"
839 msgstr "B<EWOULDBLOCK>"
840
841 #. type: Plain text
842 #: build/C/man2/futex.2:286
843 msgid ""
844 "I<op> was B<FUTEX_WAIT> and the value pointed to by I<uaddr> was not equal "
845 "to the expected value I<val> at the time of the call."
846 msgstr ""
847 "I<op> が B<FUTEX_WAIT> で、その呼び出しにおいて I<uaddr> が指す値が期待値 "
848 "I<val> と異なっていた。"
849
850 #. type: SH
851 #: build/C/man2/futex.2:286 build/C/man2/get_robust_list.2:115
852 #: build/C/man2/getunwind.2:94 build/C/man2/kexec_load.2:138
853 #: build/C/man2/lookup_dcookie.2:73 build/C/man2/perfmonctl.2:196
854 #: build/C/man2/pivot_root.2:125 build/C/man2/process_vm_readv.2:276
855 #: build/C/man2/sendfile.2:142 build/C/man2/set_tid_address.2:94
856 #: build/C/man2/splice.2:165 build/C/man2/tee.2:114
857 #: build/C/man2/vmsplice.2:138
858 #, no-wrap
859 msgid "VERSIONS"
860 msgstr "バージョン"
861
862 #. type: Plain text
863 #: build/C/man2/futex.2:296
864 msgid ""
865 "Initial futex support was merged in Linux 2.5.7 but with different semantics "
866 "from what was described above.  A 4-argument system call with the semantics "
867 "described in this page was introduced in Linux 2.5.40.  In Linux 2.5.70 one "
868 "argument was added.  In Linux 2.6.7 a sixth argument was added\\(emmessy, "
869 "especially on the s390 architecture."
870 msgstr ""
871 "最初の futex 対応は Linux 2.5.7 で組み込まれたが、 上記のセマンティクスとは異"
872 "なる。 4 つの引き数のここに書かれているセマンティクスを持つ システムコール"
873 "は、Linux 2.5.40 で導入された。 Linux 2.5.70 では 1 つの引き数が追加された。 "
874 "Linux 2.6.7 では 6 番目の引き数が追加された。 これは汚く、s390 アーキテクチャ"
875 "上の特別のものである。"
876
877 #. type: Plain text
878 #: build/C/man2/futex.2:298 build/C/man2/kexec_load.2:144
879 #: build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:172
880 #: build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
881 msgid "This system call is Linux-specific."
882 msgstr "このシステムコールは Linux 固有である。"
883
884 #.  .SH "AUTHORS"
885 #.  .PP
886 #.  Futexes were designed and worked on by
887 #.  Hubertus Franke (IBM Thomas J. Watson Research Center),
888 #.  Matthew Kirkwood, Ingo Molnar (Red Hat)
889 #.  and Rusty Russell (IBM Linux Technology Center).
890 #.  This page written by bert hubert.
891 #. type: Plain text
892 #: build/C/man2/futex.2:312
893 msgid ""
894 "To reiterate, bare futexes are not intended as an easy-to-use abstraction "
895 "for end-users.  (There is no wrapper function for this system call in "
896 "glibc.)  Implementors are expected to be assembly literate and to have read "
897 "the sources of the futex user-space library referenced below."
898 msgstr ""
899 "繰り返すが、裸の futex はエンドユーザが容易に使うことのできる概念として 意図"
900 "されたものではない (glibc にはこのシステムコールに対するラッパー関数はな"
901 "い)。 実装者は、アセンブリ言語に慣れており、以下に挙げる futex ユーザ空間ライ"
902 "ブラリの ソースを読み終えていることが要求される。"
903
904 #. type: Plain text
905 #: build/C/man2/futex.2:315
906 msgid "B<restart_syscall>(2), B<futex>(7)"
907 msgstr "B<restart_syscall>(2), B<futex>(7)"
908
909 #. type: Plain text
910 #: build/C/man2/futex.2:318
911 msgid ""
912 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
913 "of the Ottawa Linux Symposium 2002), online at"
914 msgstr ""
915 "I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
916 "of the Ottawa Linux Symposium 2002), online at"
917
918 #. type: Plain text
919 #: build/C/man2/futex.2:321
920 msgid ""
921 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
922 "E<.UE>"
923 msgstr ""
924 "E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
925 "E<.UE>"
926
927 #. type: Plain text
928 #: build/C/man2/futex.2:323
929 msgid "Futex example library, futex-*.tar.bz2 at"
930 msgstr "futex の使用例ライブラリ, futex-*.tar.bz2"
931
932 #. type: Plain text
933 #: build/C/man2/futex.2:326
934 msgid ""
935 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
936 "E<.UE>"
937 msgstr ""
938 "E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
939 "E<.UE>"
940
941 #. type: TH
942 #: build/C/man2/get_robust_list.2:29
943 #, no-wrap
944 msgid "GET_ROBUST_LIST"
945 msgstr "GET_ROBUST_LIST"
946
947 #. type: TH
948 #: build/C/man2/get_robust_list.2:29 build/C/man2/kexec_load.2:26
949 #: build/C/man2/modify_ldt.2:24 build/C/man2/pivot_root.2:10
950 #, no-wrap
951 msgid "2012-07-13"
952 msgstr "2012-07-13"
953
954 #. type: TH
955 #: build/C/man2/get_robust_list.2:29
956 #, no-wrap
957 msgid "Linux System Calls"
958 msgstr ""
959
960 #. type: Plain text
961 #: build/C/man2/get_robust_list.2:32
962 msgid "get_robust_list, set_robust_list - get/set list of robust futexes"
963 msgstr ""
964
965 #. type: Plain text
966 #: build/C/man2/get_robust_list.2:36
967 #, no-wrap
968 msgid ""
969 "B<#include E<lt>linux/futex.hE<gt>>\n"
970 "B<#include E<lt>syscall.hE<gt>>\n"
971 msgstr ""
972 "B<#include E<lt>linux/futex.hE<gt>>\n"
973 "B<#include E<lt>syscall.hE<gt>>\n"
974
975 #. type: Plain text
976 #: build/C/man2/get_robust_list.2:40
977 #, no-wrap
978 msgid ""
979 "B<long get_robust_list(int >I<pid>B<, struct robust_list_head **>I<head_ptr>B<,>\n"
980 "B<\t\t\t  size_t *>I<len_ptr>B<);>\n"
981 "B<long set_robust_list(struct robust_list_head *>I<head>B<, size_t >I<len>B<);>\n"
982 msgstr ""
983
984 #. type: Plain text
985 #: build/C/man2/get_robust_list.2:44
986 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
987 msgstr ""
988 "I<注意>: これらのシステムコールには glibc ラッパー関数は存在しない。 「注意」"
989 "の節を参照。"
990
991 #. type: Plain text
992 #: build/C/man2/get_robust_list.2:49
993 msgid ""
994 "The robust futex implementation needs to maintain per-thread lists of robust "
995 "futexes which are unlocked when the thread exits.  These lists are managed "
996 "in user space; the kernel is notified about only the location of the head of "
997 "the list."
998 msgstr ""
999
1000 #. type: Plain text
1001 #: build/C/man2/get_robust_list.2:65
1002 msgid ""
1003 "The B<get_robust_list>()  system call returns the head of the robust futex "
1004 "list of the thread whose thread ID is specified in I<pid>.  If I<pid> is 0, "
1005 "the head of the list for the calling thread is returned.  The list head is "
1006 "stored in the location pointed to by I<head_ptr>.  The size of the object "
1007 "pointed to by I<**head_ptr> is stored in I<len_ptr>."
1008 msgstr ""
1009
1010 #. type: Plain text
1011 #: build/C/man2/get_robust_list.2:77
1012 msgid ""
1013 "The B<set_robust_list>()  system call requests the kernel to record the head "
1014 "of the list of robust futexes owned by the calling thread.  The I<head> "
1015 "argument is the list head to record.  The I<len> argument should be I<sizeof"
1016 "(*head)>."
1017 msgstr ""
1018
1019 #. type: Plain text
1020 #: build/C/man2/get_robust_list.2:84
1021 msgid ""
1022 "The B<set_robust_list>()  and B<get_robust_list>()  system calls return zero "
1023 "when the operation is successful, an error code otherwise."
1024 msgstr ""
1025
1026 #. type: Plain text
1027 #: build/C/man2/get_robust_list.2:88
1028 msgid ""
1029 "The B<set_robust_list>()  system call can fail with the following error:"
1030 msgstr ""
1031
1032 #. type: Plain text
1033 #: build/C/man2/get_robust_list.2:94
1034 msgid ""
1035 "I<len> does not match the size of structure B<struct robust_list_head> "
1036 "expected by kernel."
1037 msgstr ""
1038
1039 #. type: Plain text
1040 #: build/C/man2/get_robust_list.2:98
1041 msgid ""
1042 "The B<get_robust_list>()  system call can fail with the following errors:"
1043 msgstr ""
1044
1045 #. type: Plain text
1046 #: build/C/man2/get_robust_list.2:106
1047 msgid ""
1048 "The calling process does not have permission to see the robust futex list of "
1049 "the thread with the thread ID I<pid>, and does not have the "
1050 "B<CAP_SYS_PTRACE> capability."
1051 msgstr ""
1052
1053 #. type: TP
1054 #: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271
1055 #: build/C/man2/ptrace.2:1839 build/C/man2/quotactl.2:461
1056 #: build/C/man2/quotactl.2:504
1057 #, no-wrap
1058 msgid "B<ESRCH>"
1059 msgstr "B<ESRCH>"
1060
1061 #. type: Plain text
1062 #: build/C/man2/get_robust_list.2:111
1063 msgid "No thread with the thread ID I<pid> could be found."
1064 msgstr ""
1065
1066 #. type: Plain text
1067 #: build/C/man2/get_robust_list.2:115
1068 msgid ""
1069 "The head of the robust futex list can't be stored at the location I<head>."
1070 msgstr ""
1071
1072 #. type: Plain text
1073 #: build/C/man2/get_robust_list.2:119
1074 msgid ""
1075 "These system calls were added in Linux 2.6.17.  No library support is "
1076 "provided; use B<syscall>(2)."
1077 msgstr ""
1078 "これらのシステムコールは Linux 2.6.17 で追加された。ライブラリによる\n"
1079 "サポートは提供されていない。 B<syscall>(2) を使うこと。"
1080
1081 #. type: Plain text
1082 #: build/C/man2/get_robust_list.2:124
1083 msgid ""
1084 "These system calls are not needed by normal applications.  No support for "
1085 "them is provided in glibc.  In the unlikely event that you want to call them "
1086 "directly, use B<syscall>(2)."
1087 msgstr ""
1088 "通常のアプリケーションでは、これらのシステムコールは必要ではない。 glibc によ"
1089 "るサポートは提供されていない。おそらくないと思うが、このシステムコールを直接"
1090 "呼び出したい場合は B<syscall>(2) を使うこと。"
1091
1092 #. type: Plain text
1093 #: build/C/man2/get_robust_list.2:128
1094 msgid ""
1095 "A thread can have only one robust futex list; therefore applications that "
1096 "wish to use this functionality should use the robust mutexes provided by "
1097 "glibc."
1098 msgstr ""
1099
1100 #.  .BR pthread_mutexattr_setrobust_np (3)
1101 #. type: Plain text
1102 #: build/C/man2/get_robust_list.2:131
1103 msgid "B<futex>(2)"
1104 msgstr "B<futex>(2)"
1105
1106 #.  http://lwn.net/Articles/172149/
1107 #. type: Plain text
1108 #: build/C/man2/get_robust_list.2:137
1109 msgid ""
1110 "I<Documentation/robust-futexes.txt> and I<Documentation/robust-futex-ABI."
1111 "txt> in the Linux kernel source tree"
1112 msgstr ""
1113
1114 #. type: TH
1115 #: build/C/man2/getunwind.2:27
1116 #, no-wrap
1117 msgid "GETUNWIND"
1118 msgstr ""
1119
1120 #. type: TH
1121 #: build/C/man2/getunwind.2:27 build/C/man2/perfmonctl.2:27
1122 #, no-wrap
1123 msgid "2013-02-13"
1124 msgstr "2013-02-13"
1125
1126 #. type: Plain text
1127 #: build/C/man2/getunwind.2:30
1128 msgid "getunwind - copy the unwind data to caller's buffer"
1129 msgstr ""
1130
1131 #. type: Plain text
1132 #: build/C/man2/getunwind.2:34
1133 #, no-wrap
1134 msgid ""
1135 "B<#include E<lt>syscall.hE<gt>>\n"
1136 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1137 msgstr ""
1138 "B<#include E<lt>syscall.hE<gt>>\n"
1139 "B<#include E<lt>linux/unwind.hE<gt>>\n"
1140
1141 #. type: Plain text
1142 #: build/C/man2/getunwind.2:36
1143 #, no-wrap
1144 msgid "B<long getunwind(void >I<*buf>B<, size_t >I<buf_size>B<);>\n"
1145 msgstr ""
1146
1147 #. type: Plain text
1148 #: build/C/man2/getunwind.2:40 build/C/man2/kexec_load.2:39
1149 #: build/C/man2/modify_ldt.2:36 build/C/man2/perf_event_open.2:42
1150 #: build/C/man2/perfmonctl.2:39 build/C/man2/pivot_root.2:18
1151 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
1152 msgstr ""
1153 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
1154 "を参照。"
1155
1156 #. type: Plain text
1157 #: build/C/man2/getunwind.2:42
1158 msgid "I<Note: this function is obsolete.>"
1159 msgstr ""
1160
1161 #. type: Plain text
1162 #: build/C/man2/getunwind.2:52
1163 msgid ""
1164 "The IA-64-specific B<getunwind>()  system call copies the kernel's call "
1165 "frame unwind data into the buffer pointed to by I<buf> and returns the size "
1166 "of the unwind data; this data describes the gate page (kernel code that is "
1167 "mapped into user space)."
1168 msgstr ""
1169
1170 #. type: Plain text
1171 #: build/C/man2/getunwind.2:64
1172 msgid ""
1173 "The size of the buffer I<buf> is specified in I<buf_size>.  The data is "
1174 "copied only if I<buf_size> is greater than or equal to the size of the "
1175 "unwind data and I<buf> is not NULL; otherwise, no data is copied, and the "
1176 "call succeeds, returning the size that would be needed to store the unwind "
1177 "data."
1178 msgstr ""
1179
1180 #. type: Plain text
1181 #: build/C/man2/getunwind.2:68
1182 msgid ""
1183 "The first part of the unwind data contains an unwind table.  The rest "
1184 "contains the associated unwind information, in no particular order.  The "
1185 "unwind table contains entries of the following form:"
1186 msgstr ""
1187
1188 #. type: Plain text
1189 #: build/C/man2/getunwind.2:73
1190 #, no-wrap
1191 msgid ""
1192 "\tu64 start;      (64-bit address of start of function)\n"
1193 "\tu64 end;        (64-bit address of end of function)\n"
1194 "\tu64 info;       (BUF-relative offset to unwind info)\n"
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man2/getunwind.2:81
1199 msgid ""
1200 "An entry whose I<start> value is zero indicates the end of the table.  For "
1201 "more information about the format, see the I<IA-64 Software Conventions and "
1202 "Runtime Architecture> manual."
1203 msgstr ""
1204
1205 #. type: Plain text
1206 #: build/C/man2/getunwind.2:88
1207 msgid ""
1208 "On success, B<getunwind>()  returns the size of unwind table.  On error, -1 "
1209 "is returned and I<errno> is set to indicate the error."
1210 msgstr ""
1211
1212 #. type: Plain text
1213 #: build/C/man2/getunwind.2:94
1214 msgid ""
1215 "B<getunwind>()  fails with the error B<EFAULT> if the unwind info can't be "
1216 "stored in the space specified by I<buf>."
1217 msgstr ""
1218
1219 #. type: Plain text
1220 #: build/C/man2/getunwind.2:96
1221 msgid "This system call is available since Linux 2.4."
1222 msgstr ""
1223
1224 #. type: Plain text
1225 #: build/C/man2/getunwind.2:99
1226 msgid ""
1227 "This system call is Linux specific, and is available only on the IA-64 "
1228 "architecture."
1229 msgstr ""
1230
1231 #. type: Plain text
1232 #: build/C/man2/getunwind.2:107
1233 msgid ""
1234 "This system call has been deprecated.  The modern way to obtain the kernel's "
1235 "unwind data is via the gate DSO.  The address of the ELF header for this DSO "
1236 "is passed to user level via B<AT_SYSINFO_EHDR> (see B<getauxval>(3))."
1237 msgstr ""
1238
1239 #. type: Plain text
1240 #: build/C/man2/getunwind.2:111
1241 msgid ""
1242 "Glibc does not provide a wrapper for this system call; in the unlikely event "
1243 "that you want to call it, use B<syscall>(2)."
1244 msgstr ""
1245 "glibc はこのシステムコールに対するラッパー関数を提供していない。おそらくない"
1246 "と思うが、このシステムコールを呼び出したい場合は B<syscall>(2) を使うこと。"
1247
1248 #. type: Plain text
1249 #: build/C/man2/getunwind.2:113
1250 msgid "B<getauxval>(3)"
1251 msgstr "B<getauxval>(3)"
1252
1253 #. type: TH
1254 #: build/C/man2/kexec_load.2:26
1255 #, no-wrap
1256 msgid "KEXEC_LOAD"
1257 msgstr "KEXEC_LOAD"
1258
1259 #. type: Plain text
1260 #: build/C/man2/kexec_load.2:29
1261 msgid "kexec_load - load a new kernel for later execution"
1262 msgstr "kexec_load - 新しいカーネルを後で実行するためにロードする"
1263
1264 #. type: Plain text
1265 #: build/C/man2/kexec_load.2:31
1266 msgid "B<#include E<lt>linux/kexec.hE<gt>>"
1267 msgstr "B<#include E<lt>linux/kexec.hE<gt>>"
1268
1269 #. type: Plain text
1270 #: build/C/man2/kexec_load.2:33
1271 msgid ""
1272 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1273 ">"
1274 msgstr ""
1275 "B<long kexec_load(unsigned long >I<entry>B<, unsigned long >I<nr_segments>B<,"
1276 ">"
1277
1278 #. type: Plain text
1279 #: build/C/man2/kexec_load.2:36
1280 msgid "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1281 msgstr "B< struct kexec_segment *>I<segments>B<, unsigned long >I<flags>B<);>"
1282
1283 #. type: Plain text
1284 #: build/C/man2/kexec_load.2:44
1285 msgid ""
1286 "The B<kexec_load>()  system call loads a new kernel that can be executed "
1287 "later by B<reboot>(2)."
1288 msgstr ""
1289 "B<kexec_load>() システムコールは、新しいカーネルをロードし、\n"
1290 "その後の B<reboot>(2) で実行できるようにする。"
1291
1292 #. type: Plain text
1293 #: build/C/man2/kexec_load.2:50
1294 msgid ""
1295 "The I<flags> argument is a mask whose high-order bits control the operation "
1296 "of the call.  The following values can be specified in I<flags>:"
1297 msgstr ""
1298 "I<flags> 引き数はマスクビットで、\n"
1299 "その上位ビットでシステムコールの呼び出しの動作を制御する。\n"
1300 "I<flags> には以下の値を指定できる。"
1301
1302 #. type: TP
1303 #: build/C/man2/kexec_load.2:50
1304 #, no-wrap
1305 msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
1306 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
1307
1308 #.  FIXME figure out how this is really used
1309 #. type: Plain text
1310 #: build/C/man2/kexec_load.2:54
1311 msgid "Execute the new kernel automatically on a system crash."
1312 msgstr "システムのクラッシュ時に、新しいカーネルを自動的に実行する。"
1313
1314 #. type: TP
1315 #: build/C/man2/kexec_load.2:54
1316 #, no-wrap
1317 msgid "B<KEXEC_PRESERVE_CONTEXT> (since Linux 2.6.27)"
1318 msgstr "B<KEXEC_PRESERVE_CONTEXT> (Linux 2.6.27 以降)"
1319
1320 #. type: Plain text
1321 #: build/C/man2/kexec_load.2:64
1322 msgid ""
1323 "Preserve the system hardware and software states before executing the new "
1324 "kernel.  This could be used for system suspend.  This flag is available only "
1325 "if the kernel was configured with B<CONFIG_KEXEC_JUMP>, and is effective "
1326 "only if I<nr_segments> is greater than 0."
1327 msgstr ""
1328 "新しいカーネルを実行する前に、\n"
1329 "システムのハードウェアとソフトウェアの状態を保存する。\n"
1330 "システムの中断時 (suspend) などで使用できる。\n"
1331 "このフラグは、カーネルの設定で B<CONFIG_KEXEC_JUMP> が有効の場合のみ\n"
1332 "利用可能であり、 I<nr_segments> が 0 より大きい場合のみ効果がある。"
1333
1334 #. type: Plain text
1335 #: build/C/man2/kexec_load.2:84
1336 msgid ""
1337 "The low-order bits of I<flags> contain the architecture of the to-be-"
1338 "executed kernel.  Specify (OR) the constant B<KEXEC_ARCH_DEFAULT> to use the "
1339 "current architecture, or one of the following architecture constants "
1340 "B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>, B<KEXEC_ARCH_PPC>, "
1341 "B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>, B<KEXEC_ARCH_ARM>, "
1342 "B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>, B<KEXEC_ARCH_MIPS>, and "
1343 "B<KEXEC_ARCH_MIPS_LE>.  The architecture must be executable on the CPU of "
1344 "the system."
1345 msgstr ""
1346 "I<flags> の下位ビットには、実行されるカーネルのアーキテクチャが入る。\n"
1347 "現在のアーキテクチャを使うことを意味する定数 B<KEXEC_ARCH_DEFAULT> か、\n"
1348 "アーキテクチャ定数 B<KEXEC_ARCH_386>, B<KEXEC_ARCH_X86_64>,\n"
1349 "B<KEXEC_ARCH_PPC>, B<KEXEC_ARCH_PPC64>, B<KEXEC_ARCH_IA_64>,\n"
1350 "B<KEXEC_ARCH_ARM>, B<KEXEC_ARCH_S390>, B<KEXEC_ARCH_SH>,\n"
1351 "B<KEXEC_ARCH_MIPS>, B<KEXEC_ARCH_MIPS_LE> の\n"
1352 "いずれか一つを (OR で) 指定する。指定するアーキテクチャは、\n"
1353 "システムの CPU で実行可能なものでなければならない。"
1354
1355 #. type: Plain text
1356 #: build/C/man2/kexec_load.2:98
1357 msgid ""
1358 "The I<entry> argument is the physical entry address in the kernel image.  "
1359 "The I<nr_segments> argument is the number of segments pointed to by the "
1360 "I<segments> pointer.  The I<segments> argument is an array of "
1361 "I<kexec_segment> structures which define the kernel layout:"
1362 msgstr ""
1363 "I<entry> 引き数は、カーネルイメージの物理エントリーアドレスである。\n"
1364 "I<nr_segments> 引き数は、 I<segments> ポインタが指すセグメントの\n"
1365 "数である。 I<segments> 引き数は I<kexec_segment> 構造体の配列で、\n"
1366 "この構造体によりカーネルの配置が定義される。"
1367
1368 #. type: Plain text
1369 #: build/C/man2/kexec_load.2:107
1370 #, no-wrap
1371 msgid ""
1372 "struct kexec_segment {\n"
1373 "    void   *buf;        /* Buffer in user space */\n"
1374 "    size_t  bufsz;      /* Buffer length in user space */\n"
1375 "    void   *mem;        /* Physical address of kernel */\n"
1376 "    size_t  memsz;      /* Physical address length */\n"
1377 "};\n"
1378 msgstr ""
1379 "struct kexec_segment {\n"
1380 "    void   *buf;        /* Buffer in user space */\n"
1381 "    size_t  bufsz;      /* Buffer length in user space */\n"
1382 "    void   *mem;        /* Physical address of kernel */\n"
1383 "    size_t  memsz;      /* Physical address length */\n"
1384 "};\n"
1385
1386 #.  FIXME elaborate on the following:
1387 #. type: Plain text
1388 #: build/C/man2/kexec_load.2:114
1389 msgid ""
1390 "The kernel image defined by I<segments> is copied from the calling process "
1391 "into previously reserved memory."
1392 msgstr ""
1393 "I<segments> で定義されたカーネルイメージは、\n"
1394 "呼び出したプロセスから予約済みメモリにコピーされる。"
1395
1396 #. type: Plain text
1397 #: build/C/man2/kexec_load.2:121
1398 msgid ""
1399 "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
1400 "I<errno> is set to indicate the error."
1401 msgstr ""
1402 "成功すると、 B<kexec_load> は 0 を返す。\n"
1403 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
1404
1405 #. type: TP
1406 #: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110
1407 #: build/C/man2/ptrace.2:1802 build/C/man2/quotactl.2:495
1408 #, no-wrap
1409 msgid "B<EBUSY>"
1410 msgstr "B<EBUSY>"
1411
1412 #. type: Plain text
1413 #: build/C/man2/kexec_load.2:126
1414 msgid ""
1415 "Another crash kernel is already being loaded or a crash kernel is already in "
1416 "use."
1417 msgstr ""
1418 "別のクラッシュカーネルがすでにロードされているか、\n"
1419 "クラッシュカーネルがすでに使用されている。"
1420
1421 #.  KEXEC_SEGMENT_MAX == 16
1422 #. type: Plain text
1423 #: build/C/man2/kexec_load.2:133
1424 msgid "I<flags> is invalid; or I<nr_segments> is too large"
1425 msgstr "I<flags> が無効である。 I<nr_segments> が大きすぎる。"
1426
1427 #. type: Plain text
1428 #: build/C/man2/kexec_load.2:138
1429 msgid "The caller does not have the B<CAP_SYS_BOOT> capability."
1430 msgstr "呼び出し側が B<CAP_SYS_BOOT> ケーパビリティを持っていない。"
1431
1432 #. type: Plain text
1433 #: build/C/man2/kexec_load.2:142
1434 msgid "The B<kexec_load>()  system call first appeared in Linux 2.6.13."
1435 msgstr "B<kexec_load>() システムコールは Linux 2.6.13 で初めて登場した。"
1436
1437 #. type: Plain text
1438 #: build/C/man2/kexec_load.2:149
1439 msgid ""
1440 "Currently, there is no glibc support for B<kexec_load>().  Call it using "
1441 "B<syscall>(2)."
1442 msgstr ""
1443 "現在のところ、 B<kexec_load>() は glibc ではサポートされていない。\n"
1444 "B<syscall>(2) を使って呼び出すこと。"
1445
1446 #.  FIXME Andi submitted a patch for this.
1447 #.  Check if it got accepted later.
1448 #. type: Plain text
1449 #: build/C/man2/kexec_load.2:156
1450 msgid ""
1451 "The required constants are in the Linux kernel source file I<linux/kexec.h>, "
1452 "which is not currently exported to glibc.  Therefore, these constants must "
1453 "be defined manually."
1454 msgstr ""
1455 "必要な定数は Linux カーネルのソースファイル I<linux/kexec.h> で定義されてい"
1456 "る\n"
1457 "が、現在のところ glibc には公開されていない。\n"
1458 "そのため、これらの定数は手動で定義しなければならない。"
1459
1460 #. type: Plain text
1461 #: build/C/man2/kexec_load.2:159
1462 msgid ""
1463 "This system call is available only if the kernel was configured with "
1464 "B<CONFIG_KEXEC>."
1465 msgstr ""
1466 "このシステムコールは、カーネルの設定で B<CONFIG_KEXEC> が有効になって\n"
1467 "いる場合にのみ利用できる。"
1468
1469 #. type: Plain text
1470 #: build/C/man2/kexec_load.2:162
1471 msgid "B<reboot>(2), B<syscall>(2)"
1472 msgstr "B<reboot>(2), B<syscall>(2)"
1473
1474 #. type: TH
1475 #: build/C/man2/lookup_dcookie.2:27
1476 #, no-wrap
1477 msgid "LOOKUP_DCOOKIE"
1478 msgstr "LOOKUP_DCOOKIE"
1479
1480 #. type: TH
1481 #: build/C/man2/lookup_dcookie.2:27
1482 #, no-wrap
1483 msgid "2004-06-17"
1484 msgstr "2004-06-17"
1485
1486 #. type: Plain text
1487 #: build/C/man2/lookup_dcookie.2:30
1488 msgid "lookup_dcookie - return a directory entry's path"
1489 msgstr "lookup_dcookie - ディレクトリ・エントリのパス名を返す"
1490
1491 #. type: Plain text
1492 #: build/C/man2/lookup_dcookie.2:32
1493 msgid ""
1494 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1495 ">"
1496 msgstr ""
1497 "B<int lookup_dcookie(u64 >I<cookie>B<, char *>I<buffer>B<, size_t >I<len>B<);"
1498 ">"
1499
1500 #. type: Plain text
1501 #: build/C/man2/lookup_dcookie.2:38
1502 msgid ""
1503 "Look up the full path of the directory entry specified by the value "
1504 "I<cookie>.  The cookie is an opaque identifier uniquely identifying a "
1505 "particular directory entry.  The buffer given is filled in with the full "
1506 "path of the directory entry."
1507 msgstr ""
1508 "I<cookie> 値で指定されたディレクトリ・エントリのフルパス名を検索する。 "
1509 "cookie は、個々のディレクトリ・エントリを区別する内部識別子 (opaque "
1510 "identifier) である。引き数で指定されたバッファに、ディレクトリ・エントリの フ"
1511 "ルパス名が格納される。"
1512
1513 #. type: Plain text
1514 #: build/C/man2/lookup_dcookie.2:43
1515 msgid ""
1516 "For B<lookup_dcookie>()  to return successfully, the kernel must still hold "
1517 "a cookie reference to the directory entry."
1518 msgstr ""
1519 "B<lookup_dcookie>()  が正常に値を返すためには、カーネルがディレクトリ・エント"
1520 "リへの cookie 参照を 保持していなければならない。"
1521
1522 #. type: Plain text
1523 #: build/C/man2/lookup_dcookie.2:50
1524 msgid ""
1525 "On success, B<lookup_dcookie>()  returns the length of the path string "
1526 "copied into the buffer.  On error, -1 is returned, and I<errno> is set "
1527 "appropriately."
1528 msgstr ""
1529 "成功した場合、 B<lookup_dcookie>()  はバッファにコピーしたパス文字列の長さを"
1530 "返す。 エラーの場合は -1 を返し、 I<errno> に適切な値を設定する。"
1531
1532 #. type: Plain text
1533 #: build/C/man2/lookup_dcookie.2:54
1534 msgid "The buffer was not valid."
1535 msgstr "バッファが有効でなかった。"
1536
1537 #. type: Plain text
1538 #: build/C/man2/lookup_dcookie.2:58
1539 msgid ""
1540 "The kernel has no registered cookie/directory entry mappings at the time of "
1541 "lookup, or the cookie does not refer to a valid directory entry."
1542 msgstr ""
1543 "検索が行われた時、cookie とディレクトリ・エントリのマッピングがカーネルに 登"
1544 "録されていなかったか、または cookie が有効なディレクトリ・エントリを 参照して"
1545 "いない。"
1546
1547 #. type: TP
1548 #: build/C/man2/lookup_dcookie.2:58
1549 #, no-wrap
1550 msgid "B<ENAMETOOLONG>"
1551 msgstr "B<ENAMETOOLONG>"
1552
1553 #. type: Plain text
1554 #: build/C/man2/lookup_dcookie.2:61
1555 msgid "The name could not fit in the buffer."
1556 msgstr "名前がバッファに入り切らなかった。"
1557
1558 #. type: TP
1559 #: build/C/man2/lookup_dcookie.2:61 build/C/man2/process_vm_readv.2:262
1560 #: build/C/man2/sendfile.2:138 build/C/man2/splice.2:155
1561 #: build/C/man2/tee.2:111 build/C/man2/vmsplice.2:135
1562 #, no-wrap
1563 msgid "B<ENOMEM>"
1564 msgstr "B<ENOMEM>"
1565
1566 #. type: Plain text
1567 #: build/C/man2/lookup_dcookie.2:65
1568 msgid ""
1569 "The kernel could not allocate memory for the temporary buffer holding the "
1570 "path."
1571 msgstr ""
1572 "カーネルが、パス名を保持する一時バッファ用のメモリを割り当てることが できな"
1573 "かった。"
1574
1575 #. type: Plain text
1576 #: build/C/man2/lookup_dcookie.2:70
1577 msgid ""
1578 "The process does not have the capability B<CAP_SYS_ADMIN> required to look "
1579 "up cookie values."
1580 msgstr ""
1581 "プロセスが cookie 値を検索するのに必要なケーパビリティ B<CAP_SYS_ADMIN> を"
1582 "持っていない。"
1583
1584 #. type: TP
1585 #: build/C/man2/lookup_dcookie.2:70 build/C/man2/quotactl.2:474
1586 #, no-wrap
1587 msgid "B<ERANGE>"
1588 msgstr "B<ERANGE>"
1589
1590 #. type: Plain text
1591 #: build/C/man2/lookup_dcookie.2:73
1592 msgid ""
1593 "The buffer was not large enough to hold the path of the directory entry."
1594 msgstr ""
1595 "バッファが、ディレクトリ・エントリのパス名を収容するのに 十分な大きさではな"
1596 "かった。"
1597
1598 #. type: Plain text
1599 #: build/C/man2/lookup_dcookie.2:78
1600 msgid ""
1601 "Available since Linux 2.5.43.  The B<ENAMETOOLONG> error return was added in "
1602 "2.5.70."
1603 msgstr ""
1604 "Linux 2.5.43 以降で利用できる。 エラー B<ENAMETOOLONG> を返す仕様は 2.5.70 で"
1605 "追加された。"
1606
1607 #. type: Plain text
1608 #: build/C/man2/lookup_dcookie.2:81
1609 msgid "B<lookup_dcookie>()  is Linux-specific."
1610 msgstr "B<lookup_dcookie>()  は Linux 独自の関数である。"
1611
1612 #. type: Plain text
1613 #: build/C/man2/lookup_dcookie.2:85
1614 msgid ""
1615 "B<lookup_dcookie>()  is a special-purpose system call, currently used only "
1616 "by the oprofile profiler.  It relies on a kernel driver to register cookies "
1617 "for directory entries."
1618 msgstr ""
1619 "B<lookup_dcookie>()  は特殊な用途に使われるシステムコールで、現在のところ "
1620 "oprofile profiler で 使われているだけである。"
1621
1622 #. type: Plain text
1623 #: build/C/man2/lookup_dcookie.2:88
1624 msgid ""
1625 "The path returned may be suffixed by the string \" (deleted)\" if the "
1626 "directory entry has been removed."
1627 msgstr ""
1628 "指定されたディレクトリ・エントリが削除されていた場合、返されるパス名の最後に "
1629 "\" (deleted)\" という文字列が付加されることがある。"
1630
1631 #. type: TH
1632 #: build/C/man2/modify_ldt.2:24
1633 #, no-wrap
1634 msgid "MODIFY_LDT"
1635 msgstr "MODIFY_LDT"
1636
1637 #. type: Plain text
1638 #: build/C/man2/modify_ldt.2:27
1639 msgid "modify_ldt - get or set ldt"
1640 msgstr "modify_ldt - ldt を設定または取得する"
1641
1642 #. type: Plain text
1643 #: build/C/man2/modify_ldt.2:30
1644 #, no-wrap
1645 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1646 msgstr "B<#include E<lt>sys/types.hE<gt>>\n"
1647
1648 #. type: Plain text
1649 #: build/C/man2/modify_ldt.2:32
1650 #, no-wrap
1651 msgid "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1652 msgstr "B<int modify_ldt(int >I<func>B<, void *>I<ptr>B<, unsigned long >I<bytecount>B<);>\n"
1653
1654 #. type: Plain text
1655 #: build/C/man2/modify_ldt.2:41
1656 msgid ""
1657 "B<modify_ldt>()  reads or writes the local descriptor table (ldt) for a "
1658 "process.  The ldt is a per-process memory management table used by the i386 "
1659 "processor.  For more information on this table, see an Intel 386 processor "
1660 "handbook."
1661 msgstr ""
1662 "B<modify_ldt>()  はプロセスのローカル・ディスクリプタ・テーブル (local "
1663 "descriptor table; ldt)  を読み書きする。 ldt は i386 プロセッサで使用されるプ"
1664 "ロセスごとのメモリ管理テーブルである。 このテーブルに関してのより詳しい情報"
1665 "は Intel 386 processor handbook を 参照すること。"
1666
1667 #. type: Plain text
1668 #: build/C/man2/modify_ldt.2:51
1669 msgid ""
1670 "When I<func> is 0, B<modify_ldt>()  reads the ldt into the memory pointed to "
1671 "by I<ptr>.  The number of bytes read is the smaller of I<bytecount> and the "
1672 "actual size of the ldt."
1673 msgstr ""
1674 "I<func> が 0 ならば、 B<modify_ldt>()  は ldt を I<ptr> が指しているメモリに"
1675 "読み込む。 読み込むバイト数は実際の ldt のサイズか I<bytecount> より小さい方"
1676 "である。"
1677
1678 #.  FIXME ? say something about func == 2 and func == 0x11?
1679 #.  In Linux 2.4, func == 2 returned "the default ldt"
1680 #.  In Linux 2.6, func == 2 is a nop, returning a zeroed out structure.
1681 #.  Linux 2.4 and 2.6 implement an operation for func == 0x11
1682 #. type: Plain text
1683 #: build/C/man2/modify_ldt.2:69
1684 msgid ""
1685 "When I<func> is 1, B<modify_ldt>()  modifies one ldt entry.  I<ptr> points "
1686 "to a I<user_desc> structure and I<bytecount> must equal the size of this "
1687 "structure."
1688 msgstr ""
1689 "I<func> が 1 ならば、 B<modify_ldt>()  は ldt エントリの一つを変更する。 "
1690 "I<ptr> は I<user_desc> 構造体を指し、 I<bytecount> はこの構造体の大きさに等し"
1691 "くなければならない。"
1692
1693 #. type: Plain text
1694 #: build/C/man2/modify_ldt.2:73
1695 msgid "The I<user_desc> structure is defined in I<E<lt>asm/ldt.hE<gt>> as:"
1696 msgstr ""
1697 "I<user_desc> 構造体は I<E<lt>asm/ldt.hE<gt>> で以下のように定義されている:"
1698
1699 #. type: Plain text
1700 #: build/C/man2/modify_ldt.2:87
1701 #, no-wrap
1702 msgid ""
1703 "struct user_desc {\n"
1704 "    unsigned int  entry_number;\n"
1705 "    unsigned long base_addr;\n"
1706 "    unsigned int  limit;\n"
1707 "    unsigned int  seg_32bit:1;\n"
1708 "    unsigned int  contents:2;\n"
1709 "    unsigned int  read_exec_only:1;\n"
1710 "    unsigned int  limit_in_pages:1;\n"
1711 "    unsigned int  seg_not_present:1;\n"
1712 "    unsigned int  useable:1;\n"
1713 "};\n"
1714 msgstr ""
1715 "struct user_desc {\n"
1716 "    unsigned int  entry_number;\n"
1717 "    unsigned long base_addr;\n"
1718 "    unsigned int  limit;\n"
1719 "    unsigned int  seg_32bit:1;\n"
1720 "    unsigned int  contents:2;\n"
1721 "    unsigned int  read_exec_only:1;\n"
1722 "    unsigned int  limit_in_pages:1;\n"
1723 "    unsigned int  seg_not_present:1;\n"
1724 "    unsigned int  useable:1;\n"
1725 "};\n"
1726
1727 #.  .PP
1728 #.  The ldt is specific for the calling process. Any attempts to change
1729 #.  the ldt to include the address space of another process or the kernel
1730 #.  will result in a segmentation violation when trying to access the memory
1731 #.  outside of the process address space. The memory protection is enforced
1732 #.  at the paging layer.
1733 #. type: Plain text
1734 #: build/C/man2/modify_ldt.2:98
1735 msgid "In Linux 2.4 and earlier, this structure was named I<modify_ldt_ldt_s>."
1736 msgstr ""
1737 "Linux 2.4 以前では、この構造体は I<modify_ldt_ldt_s> という名前であった。"
1738
1739 #. type: Plain text
1740 #: build/C/man2/modify_ldt.2:108
1741 msgid ""
1742 "On success, B<modify_ldt>()  returns either the actual number of bytes read "
1743 "(for reading)  or 0 (for writing).  On failure, B<modify_ldt>()  returns -1 "
1744 "and sets I<errno> to indicate the error."
1745 msgstr ""
1746 "成功した場合は、 B<modify_ldt>()  は (読み込みの場合は) 実際に読み込んだバイ"
1747 "ト数、 または (書き込みの場合は) 0 を返す。 失敗した場合は B<modify_ldt>()  "
1748 "は -1 を返し、 I<errno> をエラーを示す値に設定する。"
1749
1750 #. type: Plain text
1751 #: build/C/man2/modify_ldt.2:113
1752 msgid "I<ptr> points outside the address space."
1753 msgstr "I<ptr> がアドレス空間の外を指している。"
1754
1755 #. type: Plain text
1756 #: build/C/man2/modify_ldt.2:126
1757 msgid ""
1758 "I<ptr> is 0, or I<func> is 1 and I<bytecount> is not equal to the size of "
1759 "the structure I<modify_ldt_ldt_s>, or I<func> is 1 and the new ldt entry has "
1760 "invalid values."
1761 msgstr ""
1762 "I<ptr> が 0 である、 または I<func> が 1 で I<bytecount> が "
1763 "I<modify_ldt_ldt_s> 構造体のサイズと等しくないか、 I<func> が 1 で新しい ldt "
1764 "エントリが無効な値である。"
1765
1766 #. type: Plain text
1767 #: build/C/man2/modify_ldt.2:130
1768 msgid "I<func> is neither 0 nor 1."
1769 msgstr "I<func> が 0 でも 1 でもない。"
1770
1771 #. type: Plain text
1772 #: build/C/man2/modify_ldt.2:133
1773 msgid ""
1774 "This call is Linux-specific and should not be used in programs intended to "
1775 "be portable."
1776 msgstr ""
1777 "このコールは Linux 特有であり、移植を意図したプログラムでは 使用してはいけな"
1778 "い。"
1779
1780 #. type: Plain text
1781 #: build/C/man2/modify_ldt.2:136 build/C/man2/perfmonctl.2:205
1782 #: build/C/man2/pivot_root.2:134
1783 msgid ""
1784 "Glibc does not provide a wrapper for this system call; call it using "
1785 "B<syscall>(2)."
1786 msgstr ""
1787 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
1788 "(2)  を使って呼び出すこと。"
1789
1790 #. type: Plain text
1791 #: build/C/man2/modify_ldt.2:138
1792 msgid "B<vm86>(2)"
1793 msgstr "B<vm86>(2)"
1794
1795 #. type: TH
1796 #: build/C/man2/nfsservctl.2:8
1797 #, no-wrap
1798 msgid "NFSSERVCTL"
1799 msgstr "NFSSERVCTL"
1800
1801 #. type: TH
1802 #: build/C/man2/nfsservctl.2:8
1803 #, no-wrap
1804 msgid "2012-03-05"
1805 msgstr "2012-03-05"
1806
1807 #. type: Plain text
1808 #: build/C/man2/nfsservctl.2:11
1809 msgid "nfsservctl - syscall interface to kernel nfs daemon"
1810 msgstr "nfsservctl - カーネル nfs デーモンのためのインターフェース"
1811
1812 #. type: Plain text
1813 #: build/C/man2/nfsservctl.2:14
1814 #, no-wrap
1815 msgid "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1816 msgstr "B<#include E<lt>linux/nfsd/syscall.hE<gt>>\n"
1817
1818 #. type: Plain text
1819 #: build/C/man2/nfsservctl.2:17
1820 #, no-wrap
1821 msgid ""
1822 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1823 "B<                union nfsctl_res *>I<resp>B<);>\n"
1824 msgstr ""
1825 "B<long nfsservctl(int >I<cmd>B<, struct nfsctl_arg *>I<argp>B<,>\n"
1826 "B<                union nfsctl_res *>I<resp>B<);>\n"
1827
1828 #. type: Plain text
1829 #: build/C/man2/nfsservctl.2:21
1830 msgid "I<Note>: Since Linux 3.1, this system call no longer exists."
1831 msgstr "I<注意>: Linux 3.1 以降では、このシステムコールはもはや存在しない。"
1832
1833 #. type: Plain text
1834 #: build/C/man2/nfsservctl.2:33
1835 #, no-wrap
1836 msgid ""
1837 "/*\n"
1838 " * These are the commands understood by nfsctl().\n"
1839 " */\n"
1840 "#define NFSCTL_SVC          0    /* This is a server process. */\n"
1841 "#define NFSCTL_ADDCLIENT    1    /* Add an NFS client. */\n"
1842 "#define NFSCTL_DELCLIENT    2    /* Remove an NFS client. */\n"
1843 "#define NFSCTL_EXPORT       3    /* export a file system. */\n"
1844 "#define NFSCTL_UNEXPORT     4    /* unexport a file system. */\n"
1845 "#define NFSCTL_UGIDUPDATE   5    /* update a client's UID/GID map. */\n"
1846 "#define NFSCTL_GETFH        6    /* get an fh (used by mountd) */\n"
1847 msgstr ""
1848 "/*\n"
1849 " * nfsctl() によって理解されるコマンド\n"
1850 " */\n"
1851 "#define NFSCTL_SVC          0    /* サーバープロセス */\n"
1852 "#define NFSCTL_ADDCLIENT    1    /* NFS クライアントを追加 */\n"
1853 "#define NFSCTL_DELCLIENT    2    /* NFS クライアンドを削除 */\n"
1854 "#define NFSCTL_EXPORT       3    /* ファイルシステムのエクスポート */\n"
1855 "#define NFSCTL_UNEXPORT     4    /* ファイルシステムのアンエクスポート */\n"
1856 "#define NFSCTL_UGIDUPDATE   5    /* UID/GID マップの更新 */\n"
1857 "#define NFSCTL_GETFH        6    /* (mountd で使用される) fh の取得 */\n"
1858
1859 #. type: Plain text
1860 #: build/C/man2/nfsservctl.2:45
1861 #, no-wrap
1862 msgid ""
1863 "struct nfsctl_arg {\n"
1864 "    int                       ca_version;     /* safeguard */\n"
1865 "    union {\n"
1866 "        struct nfsctl_svc     u_svc;\n"
1867 "        struct nfsctl_client  u_client;\n"
1868 "        struct nfsctl_export  u_export;\n"
1869 "        struct nfsctl_uidmap  u_umap;\n"
1870 "        struct nfsctl_fhparm  u_getfh;\n"
1871 "        unsigned int          u_debug;\n"
1872 "    } u;\n"
1873 "}\n"
1874 msgstr ""
1875 "struct nfsctl_arg {\n"
1876 "    int                       ca_version;     /* safeguard */\n"
1877 "    union {\n"
1878 "        struct nfsctl_svc     u_svc;\n"
1879 "        struct nfsctl_client  u_client;\n"
1880 "        struct nfsctl_export  u_export;\n"
1881 "        struct nfsctl_uidmap  u_umap;\n"
1882 "        struct nfsctl_fhparm  u_getfh;\n"
1883 "        unsigned int          u_debug;\n"
1884 "    } u;\n"
1885 "}\n"
1886
1887 #. type: Plain text
1888 #: build/C/man2/nfsservctl.2:50
1889 #, no-wrap
1890 msgid ""
1891 "union nfsctl_res {\n"
1892 "        struct knfs_fh          cr_getfh;\n"
1893 "        unsigned int            cr_debug;\n"
1894 "};\n"
1895 msgstr ""
1896 "union nfsctl_res {\n"
1897 "        struct knfs_fh          cr_getfh;\n"
1898 "        unsigned int            cr_debug;\n"
1899 "};\n"
1900
1901 #. type: Plain text
1902 #: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105
1903 #: build/C/man2/vm86.2:59
1904 msgid ""
1905 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
1906 "appropriately."
1907 msgstr ""
1908 "成功した場合は 0 が返される。エラーの場合は -1 が返され、 I<errno> が適切に設"
1909 "定される。"
1910
1911 #. type: Plain text
1912 #: build/C/man2/nfsservctl.2:58
1913 msgid "This call is Linux-specific."
1914 msgstr "このコールは Linux 特有である。"
1915
1916 #. type: TH
1917 #: build/C/man2/outb.2:26
1918 #, no-wrap
1919 msgid "OUTB"
1920 msgstr "OUTB"
1921
1922 #. type: TH
1923 #: build/C/man2/outb.2:26
1924 #, no-wrap
1925 msgid "2012-12-31"
1926 msgstr "2012-12-31"
1927
1928 #. type: Plain text
1929 #: build/C/man2/outb.2:31
1930 msgid ""
1931 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1932 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - port I/O"
1933 msgstr ""
1934 "outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, "
1935 "outb_p, outw_p, outl_p, inb_p, inw_p, inl_p - ポート入出力"
1936
1937 #. type: Plain text
1938 #: build/C/man2/outb.2:34
1939 #, no-wrap
1940 msgid "B<#include E<lt>sys/io.hE<gt>>\n"
1941 msgstr "B<#include E<lt>sys/io.hE<gt>>\n"
1942
1943 #. type: Plain text
1944 #: build/C/man2/outb.2:41
1945 #, no-wrap
1946 msgid ""
1947 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1948 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1949 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1950 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1951 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1952 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1953 msgstr ""
1954 "B<unsigned char inb(unsigned short int >I<port>B<);>\n"
1955 "B<unsigned char inb_p(unsigned short int >I<port>B<);>\n"
1956 "B<unsigned short int inw(unsigned short int >I<port>B<);>\n"
1957 "B<unsigned short int inw_p(unsigned short int >I<port>B<);>\n"
1958 "B<unsigned int inl(unsigned short int >I<port>B<);>\n"
1959 "B<unsigned int inl_p(unsigned short int >I<port>B<);>\n"
1960
1961 #. type: Plain text
1962 #: build/C/man2/outb.2:48
1963 #, no-wrap
1964 msgid ""
1965 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1966 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1967 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1968 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1969 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1970 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1971 msgstr ""
1972 "B<void outb(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1973 "B<void outb_p(unsigned char >I<value>B<, unsigned short int >I<port>B<);>\n"
1974 "B<void outw(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1975 "B<void outw_p(unsigned short int >I<value>B<, unsigned short int >I<port>B<);>\n"
1976 "B<void outl(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1977 "B<void outl_p(unsigned int >I<value>B<, unsigned short int >I<port>B<);>\n"
1978
1979 #. type: Plain text
1980 #: build/C/man2/outb.2:61
1981 #, no-wrap
1982 msgid ""
1983 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1984 "B<           unsigned long int >I<count>B<);>\n"
1985 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1986 "B<           unsigned long int >I<count>B<);>\n"
1987 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1988 "B<           unsigned long int >I<count>B<);>\n"
1989 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1990 "B<           unsigned long int >I<count>B<);>\n"
1991 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1992 "B<           unsigned long int >I<count>B<);>\n"
1993 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
1994 "B<           unsigned long int >I<count>B<);>\n"
1995 msgstr ""
1996 "B<void insb(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1997 "B<           unsigned long int >I<count>B<);>\n"
1998 "B<void insw(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
1999 "B<           unsigned long int >I<count>B<);>\n"
2000 "B<void insl(unsigned short int >I<port>B<, void *>I<addr>B<,>\n"
2001 "B<           unsigned long int >I<count>B<);>\n"
2002 "B<void outsb(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2003 "B<           unsigned long int >I<count>B<);>\n"
2004 "B<void outsw(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2005 "B<           unsigned long int >I<count>B<);>\n"
2006 "B<void outsl(unsigned short int >I<port>B<, const void *>I<addr>B<,>\n"
2007 "B<           unsigned long int >I<count>B<);>\n"
2008
2009 #. type: Plain text
2010 #: build/C/man2/outb.2:67
2011 msgid ""
2012 "This family of functions is used to do low-level port input and output.  The "
2013 "out* functions do port output, the in* functions do port input; the b-suffix "
2014 "functions are byte-width and the w-suffix functions word-width; the _p-"
2015 "suffix functions pause until the I/O completes."
2016 msgstr ""
2017 "この一連の関数はポートに対する低レベルの入出力に使用する。 out* 関数はポート"
2018 "出力、in* 関数はポート入力を行う。 語尾に b がついている関数はバイト単位、w "
2019 "がついている関数はワード単位である。 _p がついている関数は I/O が終了するまで"
2020 "待つ。"
2021
2022 #.  , given the following information
2023 #.  in addition to that given in
2024 #.  .BR outb (9).
2025 #. type: Plain text
2026 #: build/C/man2/outb.2:73
2027 msgid ""
2028 "They are primarily designed for internal kernel use, but can be used from "
2029 "user space."
2030 msgstr ""
2031 "これらの関数はもともとカーネル内部での使用を想定して設計されているが、 ユー"
2032 "ザー空間からでも使用できる。"
2033
2034 #. type: Plain text
2035 #: build/C/man2/outb.2:78
2036 msgid ""
2037 "You must compile with B<-O> or B<-O2> or similar.  The functions are defined "
2038 "as inline macros, and will not be substituted in without optimization "
2039 "enabled, causing unresolved references at link time."
2040 msgstr ""
2041 "B<-O> や B<-O2> などを指定してコンパイルしなければならない。 これらの関数はイ"
2042 "ンライン・マクロとして定義されており、 最適化を行わないと関数の展開が行われ"
2043 "ず、 リンクの時に「解決できない参照(unresolved reference)」が発生する。"
2044
2045 #. type: Plain text
2046 #: build/C/man2/outb.2:87
2047 msgid ""
2048 "You use B<ioperm>(2)  or alternatively B<iopl>(2)  to tell the kernel to "
2049 "allow the user space application to access the I/O ports in question.  "
2050 "Failure to do this will cause the application to receive a segmentation "
2051 "fault."
2052 msgstr ""
2053 "ユーザー空間のアプリケーションが I/O ポートにアクセスすることを カーネルに教"
2054 "えるために B<ioperm>(2)  もしくは B<iopl>(2)  を使用すること。これを忘れると"
2055 "アプリケーションはセグメンテーション違反 (segmentation fault) を受けとること"
2056 "になる。"
2057
2058 #. type: Plain text
2059 #: build/C/man2/outb.2:96
2060 msgid ""
2061 "B<outb>()  and friends are hardware-specific.  The I<value> argument is "
2062 "passed first and the I<port> argument is passed second, which is the "
2063 "opposite order from most DOS implementations."
2064 msgstr ""
2065 "B<outb>()  とその仲間はハードウェア特有である。 I<value> 引数が最初に渡さ"
2066 "れ、 I<port> 引数が二番目に渡される。 この順序はほとんどの DOS での実装とは逆"
2067 "である。"
2068
2069 #. type: Plain text
2070 #: build/C/man2/outb.2:99
2071 msgid "B<ioperm>(2), B<iopl>(2)"
2072 msgstr "B<ioperm>(2), B<iopl>(2)"
2073
2074 #. type: TH
2075 #: build/C/man2/pciconfig_read.2:8
2076 #, no-wrap
2077 msgid "PCICONFIG_READ"
2078 msgstr "PCICONFIG_READ"
2079
2080 #. type: TH
2081 #: build/C/man2/pciconfig_read.2:8
2082 #, no-wrap
2083 msgid "2003-07-14"
2084 msgstr "2003-07-14"
2085
2086 #. type: Plain text
2087 #: build/C/man2/pciconfig_read.2:11
2088 msgid ""
2089 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information "
2090 "handling"
2091 msgstr ""
2092 "pciconfig_read, pciconfig_write, pciconfig_iobase - pci デバイス情報を扱う"
2093
2094 #. type: Plain text
2095 #: build/C/man2/pciconfig_read.2:14
2096 #, no-wrap
2097 msgid "B<#include E<lt>pci.hE<gt>>\n"
2098 msgstr "B<#include E<lt>pci.hE<gt>>\n"
2099
2100 #. type: Plain text
2101 #: build/C/man2/pciconfig_read.2:21
2102 #, no-wrap
2103 msgid ""
2104 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2105 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2106 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2107 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2108 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2109 "B<          unsigned long >I<devfn>B<);>\n"
2110 msgstr ""
2111 "B<int pciconfig_read(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2112 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2113 "B<int pciconfig_write(unsigned long >I<bus>B<, unsigned long >I<dfn>B<,>\n"
2114 "B<          unsigned long >I<off>B<, unsigned long >I<len>B<, void *>I<buf>B<);>\n"
2115 "B<int pciconfig_iobase(long >I<which>B<, unsigned long >I<bus>B<,>\n"
2116 "B<          unsigned long >I<devfn>B<);>\n"
2117
2118 #. type: Plain text
2119 #: build/C/man2/pciconfig_read.2:27
2120 msgid ""
2121 "Most of the interaction with PCI devices is already handled by the kernel "
2122 "PCI layer, and thus these calls should not normally need to be accessed from "
2123 "user space."
2124 msgstr ""
2125 "PCI デバイスとのやり取り (interaction) は カーネル PCI レイヤですでに処理され"
2126 "ているので、 通常はこららの関数をユーザ空間からアクセスする必要はない。"
2127
2128 #. type: TP
2129 #: build/C/man2/pciconfig_read.2:27 build/C/man2/pciconfig_read.2:51
2130 #, no-wrap
2131 msgid "B<pciconfig_read>()"
2132 msgstr "B<pciconfig_read>()"
2133
2134 #. type: Plain text
2135 #: build/C/man2/pciconfig_read.2:36
2136 msgid "Reads to I<buf> from device I<dev> at offset I<off> value."
2137 msgstr "デバイス I<dev> のオフセット I<off> の値を I<buf> に読み込む。"
2138
2139 #. type: TP
2140 #: build/C/man2/pciconfig_read.2:36 build/C/man2/pciconfig_read.2:57
2141 #, no-wrap
2142 msgid "B<pciconfig_write>()"
2143 msgstr "B<pciconfig_write>()"
2144
2145 #. type: Plain text
2146 #: build/C/man2/pciconfig_read.2:45
2147 msgid "Writes from I<buf> to device I<dev> at offset I<off> value."
2148 msgstr "デバイス I<dev> のオフセット I<off> に I<buf> の値を書き込む。"
2149
2150 #. type: TP
2151 #: build/C/man2/pciconfig_read.2:45 build/C/man2/pciconfig_read.2:63
2152 #, no-wrap
2153 msgid "B<pciconfig_iobase>()"
2154 msgstr "B<pciconfig_iobase>()"
2155
2156 #. type: Plain text
2157 #: build/C/man2/pciconfig_read.2:50
2158 msgid ""
2159 "You pass it a bus/devfn pair and get a physical address for either the "
2160 "memory offset (for things like prep, this is 0xc0000000), the IO base for "
2161 "PIO cycles, or the ISA holes if any."
2162 msgstr ""
2163 "bus/devfn ペアをこの関数に渡し、 メモリオフセット (prep のようなものでは、こ"
2164 "の値は 0xc0000000 である) と PIO サイクルの IO ベースの物理アドレスを取得す"
2165 "る。 また、もしあるならば ISA hole の物理アドレスを取得する。"
2166
2167 #. type: Plain text
2168 #: build/C/man2/pciconfig_read.2:57 build/C/man2/pciconfig_read.2:63
2169 msgid ""
2170 "On success zero is returned.  On error, -1 is returned and I<errno> is set "
2171 "appropriately."
2172 msgstr ""
2173 "成功した場合、0 が返される。 エラーの場合、-1 が返され、 I<errno> が適切に設"
2174 "定される。"
2175
2176 #. type: Plain text
2177 #: build/C/man2/pciconfig_read.2:77
2178 msgid ""
2179 "Returns information on locations of various I/O regions in physical memory "
2180 "according to the I<which> value.  Values for I<which> are: "
2181 "B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, B<IOBASE_ISA_IO>, "
2182 "B<IOBASE_ISA_MEM>."
2183 msgstr ""
2184 "I<which> の値に基づいて、物理メモリ内の様々な I/O 領域の位置情報が返される。 "
2185 "I<which> の値は、 B<IOBASE_BRIDGE_NUMBER>, B<IOBASE_MEMORY>, B<IOBASE_IO>, "
2186 "B<IOBASE_ISA_IO>, B<IOBASE_ISA_MEM> である。"
2187
2188 #. type: Plain text
2189 #: build/C/man2/pciconfig_read.2:84
2190 msgid "I<len> value is invalid.  This does not apply to B<pciconfig_iobase>()."
2191 msgstr ""
2192 "I<len> の値が無効である。 このエラーは B<pciconfig_iobase>()  には適用されな"
2193 "い。"
2194
2195 #. type: TP
2196 #: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1819
2197 #: build/C/man2/sendfile.2:134
2198 #, no-wrap
2199 msgid "B<EIO>"
2200 msgstr "B<EIO>"
2201
2202 #. type: Plain text
2203 #: build/C/man2/pciconfig_read.2:87
2204 msgid "I/O error."
2205 msgstr "I/O エラー。"
2206
2207 #. type: TP
2208 #: build/C/man2/pciconfig_read.2:87
2209 #, no-wrap
2210 msgid "B<ENODEV>"
2211 msgstr "B<ENODEV>"
2212
2213 #. type: Plain text
2214 #: build/C/man2/pciconfig_read.2:93
2215 msgid ""
2216 "For B<pciconfig_iobase>(), \"hose\" value is NULL.  For the other calls, "
2217 "could not find a slot."
2218 msgstr ""
2219 "B<pciconfig_iobase>()  の場合、でホース (hose) の値が NULL である。 他の呼び"
2220 "出しの場合、スロット (slot) が見つからない。"
2221
2222 #. type: Plain text
2223 #: build/C/man2/pciconfig_read.2:98
2224 msgid "The system has not implemented these calls (B<CONFIG_PCI> not defined)."
2225 msgstr ""
2226 "このシステムはこれらの呼び出しを実装していない。 (B<CONFIG_PCI> が定義されて"
2227 "いない)。"
2228
2229 #. type: TP
2230 #: build/C/man2/pciconfig_read.2:98
2231 #, no-wrap
2232 msgid "B<EOPNOTSUPP>"
2233 msgstr "B<EOPNOTSUPP>"
2234
2235 #. type: Plain text
2236 #: build/C/man2/pciconfig_read.2:105
2237 msgid ""
2238 "This return value is valid only for B<pciconfig_iobase>().  It is returned "
2239 "if the value for I<which> is invalid."
2240 msgstr ""
2241 "この返り値は B<pciconfig_iobase>()  でのみ有効である。 このエラーは I<which> "
2242 "の値が無効であるときに返される。"
2243
2244 #. type: Plain text
2245 #: build/C/man2/pciconfig_read.2:112
2246 msgid ""
2247 "User does not have the B<CAP_SYS_ADMIN> capability.  This does not apply to "
2248 "B<pciconfig_iobase>()."
2249 msgstr ""
2250 "ユーザが B<CAP_SYS_ADMIN> 権限を持っていない。 このエラーは "
2251 "B<pciconfig_iobase>()  には適用されない。"
2252
2253 #. type: Plain text
2254 #: build/C/man2/pciconfig_read.2:114
2255 msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
2256 msgstr ""
2257 "これらの呼び出しは Linux 特有のものであり、 Linux 2.0.26/2.1.11 から使用可能"
2258 "である。"
2259
2260 #. type: Plain text
2261 #: build/C/man2/pciconfig_read.2:116
2262 msgid "B<capabilities>(7)"
2263 msgstr "B<capabilities>(7)"
2264
2265 #. type: TH
2266 #: build/C/man2/perf_event_open.2:27
2267 #, no-wrap
2268 msgid "PERF_EVENT_OPEN"
2269 msgstr "PERF_EVENT_OPEN"
2270
2271 #. type: TH
2272 #: build/C/man2/perf_event_open.2:27
2273 #, no-wrap
2274 msgid "2013-07-16"
2275 msgstr "2013-07-16"
2276
2277 #. type: Plain text
2278 #: build/C/man2/perf_event_open.2:30
2279 msgid "perf_event_open - set up performance monitoring"
2280 msgstr ""
2281
2282 #. type: Plain text
2283 #: build/C/man2/perf_event_open.2:34
2284 #, no-wrap
2285 msgid ""
2286 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2287 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2288 msgstr ""
2289 "B<#include E<lt>linux/perf_event.hE<gt>>\n"
2290 "B<#include E<lt>linux/hw_breakpoint.hE<gt>>\n"
2291
2292 #. type: Plain text
2293 #: build/C/man2/perf_event_open.2:38
2294 #, no-wrap
2295 msgid ""
2296 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2297 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2298 "B<                    unsigned long >I<flags>B<);>\n"
2299 msgstr ""
2300 "B<int perf_event_open(struct perf_event_attr *>I<attr>B<,>\n"
2301 "B<                    pid_t >I<pid>B<, int >I<cpu>B<, int >I<group_fd>B<,>\n"
2302 "B<                    unsigned long >I<flags>B<);>\n"
2303
2304 #. type: Plain text
2305 #: build/C/man2/perf_event_open.2:47
2306 msgid ""
2307 "Given a list of parameters, B<perf_event_open>()  returns a file descriptor, "
2308 "for use in subsequent system calls (B<read>(2), B<mmap>(2), B<prctl>(2), "
2309 "B<fcntl>(2), etc.)."
2310 msgstr ""
2311
2312 #. type: Plain text
2313 #: build/C/man2/perf_event_open.2:55
2314 msgid ""
2315 "A call to B<perf_event_open>()  creates a file descriptor that allows "
2316 "measuring performance information.  Each file descriptor corresponds to one "
2317 "event that is measured; these can be grouped together to measure multiple "
2318 "events simultaneously."
2319 msgstr ""
2320
2321 #. type: Plain text
2322 #: build/C/man2/perf_event_open.2:62
2323 msgid ""
2324 "Events can be enabled and disabled in two ways: via B<ioctl>(2)  and via "
2325 "B<prctl>(2)B<.> When an event is disabled it does not count or generate "
2326 "overflows but does continue to exist and maintain its count value."
2327 msgstr ""
2328
2329 #. type: Plain text
2330 #: build/C/man2/perf_event_open.2:76
2331 msgid ""
2332 "Events come in two flavors: counting and sampled.  A I<counting> event is "
2333 "one that is used for counting the aggregate number of events that occur.  In "
2334 "general, counting event results are gathered with a B<read>(2)  call.  A "
2335 "I<sampling> event periodically writes measurements to a buffer that can then "
2336 "be accessed via B<mmap>(2)B<.>"
2337 msgstr ""
2338
2339 #. type: SS
2340 #: build/C/man2/perf_event_open.2:76
2341 #, no-wrap
2342 msgid "Arguments"
2343 msgstr ""
2344
2345 #. type: Plain text
2346 #: build/C/man2/perf_event_open.2:90
2347 msgid ""
2348 "The argument I<pid> allows events to be attached to processes in various "
2349 "ways.  If I<pid> is 0, measurements happen on the current thread, if I<pid> "
2350 "is greater than 0, the process indicated by I<pid> is measured, and if "
2351 "I<pid> is -1, all processes are counted."
2352 msgstr ""
2353
2354 #. type: Plain text
2355 #: build/C/man2/perf_event_open.2:101
2356 msgid ""
2357 "The I<cpu> argument allows measurements to be specific to a CPU.  If I<cpu> "
2358 "is greater than or equal to 0, measurements are restricted to the specified "
2359 "CPU; if I<cpu> is -1, the events are measured on all CPUs."
2360 msgstr ""
2361
2362 #. type: Plain text
2363 #: build/C/man2/perf_event_open.2:107
2364 msgid ""
2365 "Note that the combination of I<pid> == -1 and I<cpu> == -1 is not valid."
2366 msgstr ""
2367
2368 #. type: Plain text
2369 #: build/C/man2/perf_event_open.2:115
2370 msgid ""
2371 "A I<pid> E<gt> 0 and I<cpu> == -1 setting measures per-process and follows "
2372 "that process to whatever CPU the process gets scheduled to.  Per-process "
2373 "events can be created by any user."
2374 msgstr ""
2375
2376 #. type: Plain text
2377 #: build/C/man2/perf_event_open.2:126
2378 msgid ""
2379 "A I<pid> == -1 and I<cpu> E<gt>= 0 setting is per-CPU and measures all "
2380 "processes on the specified CPU.  Per-CPU events need the B<CAP_SYS_ADMIN> "
2381 "capability or a I</proc/sys/kernel/perf_event_paranoid> value of less than 1."
2382 msgstr ""
2383
2384 #. type: Plain text
2385 #: build/C/man2/perf_event_open.2:148
2386 msgid ""
2387 "The I<group_fd> argument allows event groups to be created.  An event group "
2388 "has one event which is the group leader.  The leader is created first, with "
2389 "I<group_fd> = -1.  The rest of the group members are created with subsequent "
2390 "B<perf_event_open>()  calls with I<group_fd> being set to the fd of the "
2391 "group leader.  (A single event on its own is created with I<group_fd> = -1 "
2392 "and is considered to be a group with only 1 member.)  An event group is "
2393 "scheduled onto the CPU as a unit: it will be put onto the CPU only if all of "
2394 "the events in the group can be put onto the CPU.  This means that the values "
2395 "of the member events can be meaningfully compared, added, divided (to get "
2396 "ratios), etc., with each other, since they have counted events for the same "
2397 "set of executed instructions."
2398 msgstr ""
2399
2400 #. type: Plain text
2401 #: build/C/man2/perf_event_open.2:152
2402 #, fuzzy
2403 #| msgid ""
2404 #| "The I<flags> argument is a bit mask that is composed by ORing together "
2405 #| "zero or more of the following values:"
2406 msgid ""
2407 "The I<flags> argument is formed by ORing together zero or more of the "
2408 "following values:"
2409 msgstr ""
2410 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
2411
2412 #. type: TP
2413 #: build/C/man2/perf_event_open.2:152
2414 #, no-wrap
2415 msgid "B<PERF_FLAG_FD_NO_GROUP>"
2416 msgstr ""
2417
2418 #.  FIXME The following sentence is unclear
2419 #.  FIXME So, why is it useful?
2420 #. type: Plain text
2421 #: build/C/man2/perf_event_open.2:159
2422 msgid ""
2423 "This flag allows creating an event as part of an event group but having no "
2424 "group leader.  It is unclear why this is useful."
2425 msgstr ""
2426
2427 #. type: TP
2428 #: build/C/man2/perf_event_open.2:159
2429 #, no-wrap
2430 msgid "B<PERF_FLAG_FD_OUTPUT>"
2431 msgstr ""
2432
2433 #. type: Plain text
2434 #: build/C/man2/perf_event_open.2:162
2435 msgid "This flag re-routes the output from an event to the group leader."
2436 msgstr ""
2437
2438 #. type: TP
2439 #: build/C/man2/perf_event_open.2:162
2440 #, fuzzy, no-wrap
2441 #| msgid "B<KEXEC_ON_CRASH> (since Linux 2.6.13)"
2442 msgid "B<PERF_FLAG_PID_CGROUP> (Since Linux 2.6.39)."
2443 msgstr "B<KEXEC_ON_CRASH> (Linux 2.6.13 以降)"
2444
2445 #. type: Plain text
2446 #: build/C/man2/perf_event_open.2:185
2447 msgid ""
2448 "This flag activates per-container system-wide monitoring.  A container is an "
2449 "abstraction that isolates a set of resources for finer grain control (CPUs, "
2450 "memory, etc...).  In this mode, the event is measured only if the thread "
2451 "running on the monitored CPU belongs to the designated container (cgroup).  "
2452 "The cgroup is identified by passing a file descriptor opened on its "
2453 "directory in the cgroupfs filesystem.  For instance, if the cgroup to "
2454 "monitor is called I<test>, then a file descriptor opened on I</dev/cgroup/"
2455 "test> (assuming cgroupfs is mounted on I</dev/cgroup>)  must be passed as "
2456 "the I<pid> parameter.  cgroup monitoring is available only for system-wide "
2457 "events and may therefore require extra permissions."
2458 msgstr ""
2459
2460 #. type: Plain text
2461 #: build/C/man2/perf_event_open.2:190
2462 msgid ""
2463 "The I<perf_event_attr> structure provides detailed configuration information "
2464 "for the event being created."
2465 msgstr ""
2466
2467 #. type: Plain text
2468 #: build/C/man2/perf_event_open.2:197
2469 #, no-wrap
2470 msgid ""
2471 "struct perf_event_attr {\n"
2472 "    __u32     type;         /* Type of event */\n"
2473 "    __u32     size;         /* Size of attribute structure */\n"
2474 "    __u64     config;       /* Type-specific configuration */\n"
2475 msgstr ""
2476
2477 #. type: Plain text
2478 #: build/C/man2/perf_event_open.2:202
2479 #, no-wrap
2480 msgid ""
2481 "    union {\n"
2482 "        __u64 sample_period;    /* Period of sampling */\n"
2483 "        __u64 sample_freq;      /* Frequency of sampling */\n"
2484 "    };\n"
2485 msgstr ""
2486
2487 #. type: Plain text
2488 #: build/C/man2/perf_event_open.2:205
2489 #, no-wrap
2490 msgid ""
2491 "    __u64     sample_type;  /* Specifies values included in sample */\n"
2492 "    __u64     read_format;  /* Specifies values returned in read */\n"
2493 msgstr ""
2494
2495 #. type: Plain text
2496 #: build/C/man2/perf_event_open.2:231
2497 #, no-wrap
2498 msgid ""
2499 "    __u64     disabled       : 1,   /* off by default */\n"
2500 "              inherit        : 1,   /* children inherit it */\n"
2501 "              pinned         : 1,   /* must always be on PMU */\n"
2502 "              exclusive      : 1,   /* only group on PMU */\n"
2503 "              exclude_user   : 1,   /* don't count user */\n"
2504 "              exclude_kernel : 1,   /* don't count kernel */\n"
2505 "              exclude_hv     : 1,   /* don't count hypervisor */\n"
2506 "              exclude_idle   : 1,   /* don't count when idle */\n"
2507 "              mmap           : 1,   /* include mmap data */\n"
2508 "              comm           : 1,   /* include comm data */\n"
2509 "              freq           : 1,   /* use freq, not period */\n"
2510 "              inherit_stat   : 1,   /* per task counts */\n"
2511 "              enable_on_exec : 1,   /* next exec enables */\n"
2512 "              task           : 1,   /* trace fork/exit */\n"
2513 "              watermark      : 1,   /* wakeup_watermark */\n"
2514 "              precise_ip     : 2,   /* skid constraint */\n"
2515 "              mmap_data      : 1,   /* non-exec mmap data */\n"
2516 "              sample_id_all  : 1,   /* sample_type all events */\n"
2517 "              exclude_host   : 1,   /* don't count in host */\n"
2518 "              exclude_guest  : 1,   /* don't count in guest */\n"
2519 "              exclude_callchain_kernel : 1,\n"
2520 "                                    /* exclude kernel callchains */\n"
2521 "              exclude_callchain_user   : 1,\n"
2522 "\t                            /* exclude user callchains */\n"
2523 "              __reserved_1   : 41;\n"
2524 msgstr ""
2525
2526 #. type: Plain text
2527 #: build/C/man2/perf_event_open.2:236
2528 #, no-wrap
2529 msgid ""
2530 "    union {\n"
2531 "        __u32 wakeup_events;    /* wakeup every n events */\n"
2532 "        __u32 wakeup_watermark; /* bytes before wakeup */\n"
2533 "    };\n"
2534 msgstr ""
2535
2536 #. type: Plain text
2537 #: build/C/man2/perf_event_open.2:238
2538 #, no-wrap
2539 msgid "    __u32     bp_type;          /* breakpoint type */\n"
2540 msgstr ""
2541
2542 #. type: Plain text
2543 #: build/C/man2/perf_event_open.2:243
2544 #, no-wrap
2545 msgid ""
2546 "    union {\n"
2547 "        __u64 bp_addr;          /* breakpoint address */\n"
2548 "        __u64 config1;          /* extension of config */\n"
2549 "    };\n"
2550 msgstr ""
2551
2552 #. type: Plain text
2553 #: build/C/man2/perf_event_open.2:253
2554 #, no-wrap
2555 msgid ""
2556 "    union {\n"
2557 "        __u64 bp_len;           /* breakpoint length */\n"
2558 "        __u64 config2;          /* extension of config1 */\n"
2559 "    };\n"
2560 "    __u64   branch_sample_type; /* enum perf_branch_sample_type */\n"
2561 "    __u64   sample_regs_user;   /* user regs to dump on samples */\n"
2562 "    __u32   sample_stack_user;  /* size of stack to dump on\n"
2563 "                                   samples */\n"
2564 "    __u32   __reserved_2;       /* Align to u64 */\n"
2565 msgstr ""
2566
2567 #. type: Plain text
2568 #: build/C/man2/perf_event_open.2:255
2569 #, no-wrap
2570 msgid "};\n"
2571 msgstr ""
2572
2573 #. type: Plain text
2574 #: build/C/man2/perf_event_open.2:261
2575 msgid ""
2576 "The fields of the I<perf_event_attr> structure are described in more detail "
2577 "below:"
2578 msgstr ""
2579
2580 #. type: TP
2581 #: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1311
2582 #, no-wrap
2583 msgid "I<type>"
2584 msgstr ""
2585
2586 #. type: Plain text
2587 #: build/C/man2/perf_event_open.2:265
2588 msgid ""
2589 "This field specifies the overall event type.  It has one of the following "
2590 "values:"
2591 msgstr ""
2592
2593 #. type: TP
2594 #: build/C/man2/perf_event_open.2:266
2595 #, no-wrap
2596 msgid "B<PERF_TYPE_HARDWARE>"
2597 msgstr ""
2598
2599 #. type: Plain text
2600 #: build/C/man2/perf_event_open.2:273
2601 msgid ""
2602 "This indicates one of the \"generalized\" hardware events provided by the "
2603 "kernel.  See the I<config> field definition for more details."
2604 msgstr ""
2605
2606 #. type: TP
2607 #: build/C/man2/perf_event_open.2:273
2608 #, no-wrap
2609 msgid "B<PERF_TYPE_SOFTWARE>"
2610 msgstr ""
2611
2612 #. type: Plain text
2613 #: build/C/man2/perf_event_open.2:277
2614 msgid ""
2615 "This indicates one of the software-defined events provided by the kernel "
2616 "(even if no hardware support is available)."
2617 msgstr ""
2618
2619 #. type: TP
2620 #: build/C/man2/perf_event_open.2:277
2621 #, no-wrap
2622 msgid "B<PERF_TYPE_TRACEPOINT>"
2623 msgstr "B<PERF_TYPE_TRACEPOINT>"
2624
2625 #. type: Plain text
2626 #: build/C/man2/perf_event_open.2:281
2627 msgid ""
2628 "This indicates a tracepoint provided by the kernel tracepoint infrastructure."
2629 msgstr ""
2630
2631 #. type: TP
2632 #: build/C/man2/perf_event_open.2:281
2633 #, no-wrap
2634 msgid "B<PERF_TYPE_HW_CACHE>"
2635 msgstr ""
2636
2637 #. type: Plain text
2638 #: build/C/man2/perf_event_open.2:287
2639 msgid ""
2640 "This indicates a hardware cache event.  This has a special encoding, "
2641 "described in the I<config> field definition."
2642 msgstr ""
2643
2644 #. type: TP
2645 #: build/C/man2/perf_event_open.2:287
2646 #, no-wrap
2647 msgid "B<PERF_TYPE_RAW>"
2648 msgstr ""
2649
2650 #. type: Plain text
2651 #: build/C/man2/perf_event_open.2:291
2652 msgid ""
2653 "This indicates a \"raw\" implementation-specific event in the I<config> "
2654 "field."
2655 msgstr ""
2656
2657 #. type: TP
2658 #: build/C/man2/perf_event_open.2:291
2659 #, no-wrap
2660 msgid "B<PERF_TYPE_BREAKPOINT> (Since Linux 2.6.33)"
2661 msgstr "B<PERF_TYPE_BREAKPOINT> (Linux 2.6.33 以降)"
2662
2663 #. type: Plain text
2664 #: build/C/man2/perf_event_open.2:296
2665 msgid ""
2666 "This indicates a hardware breakpoint as provided by the CPU.  Breakpoints "
2667 "can be read/write accesses to an address as well as execution of an "
2668 "instruction address."
2669 msgstr ""
2670
2671 #. type: TP
2672 #: build/C/man2/perf_event_open.2:296
2673 #, no-wrap
2674 msgid "dynamic PMU"
2675 msgstr ""
2676
2677 #. type: Plain text
2678 #: build/C/man2/perf_event_open.2:315
2679 msgid ""
2680 "Since Linux 2.6.39, B<perf_event_open>()  can support multiple PMUs.  To "
2681 "enable this, a value exported by the kernel can be used in the I<type> field "
2682 "to indicate which PMU to use.  The value to use can be found in the sysfs "
2683 "filesystem: there is a subdirectory per PMU instance under I</sys/bus/"
2684 "event_source/devices>.  In each sub-directory there is a I<type> file whose "
2685 "content is an integer that can be used in the I<type> field.  For instance, "
2686 "I</sys/bus/event_source/devices/cpu/type> contains the value for the core "
2687 "CPU PMU, which is usually 4."
2688 msgstr ""
2689
2690 #. type: TP
2691 #: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1770
2692 #, no-wrap
2693 msgid "I<size>"
2694 msgstr ""
2695
2696 #. type: Plain text
2697 #: build/C/man2/perf_event_open.2:325
2698 msgid ""
2699 "The size of the I<perf_event_attr> structure for forward/backward "
2700 "compatibility.  Set this using I<sizeof(struct perf_event_attr)> to allow "
2701 "the kernel to see the struct size at the time of compilation."
2702 msgstr ""
2703
2704 #. type: Plain text
2705 #: build/C/man2/perf_event_open.2:340
2706 msgid ""
2707 "The related define B<PERF_ATTR_SIZE_VER0> is set to 64; this was the size of "
2708 "the first published struct.  B<PERF_ATTR_SIZE_VER1> is 72, corresponding to "
2709 "the addition of breakpoints in Linux 2.6.33.  B<PERF_ATTR_SIZE_VER2> is 80 "
2710 "corresponding to the addition of branch sampling in Linux 3.4.  "
2711 "B<PERF_ATR_SIZE_VER3> is 96 corresponding to the addition of "
2712 "I<sample_regs_user> and I<sample_stack_user> in Linux 3.7."
2713 msgstr ""
2714
2715 #. type: TP
2716 #: build/C/man2/perf_event_open.2:340
2717 #, no-wrap
2718 msgid "I<config>"
2719 msgstr ""
2720
2721 #. type: Plain text
2722 #: build/C/man2/perf_event_open.2:351
2723 msgid ""
2724 "This specifies which event you want, in conjunction with the I<type> field.  "
2725 "The I<config1> and I<config2> fields are also taken into account in cases "
2726 "where 64 bits is not enough to fully specify the event.  The encoding of "
2727 "these fields are event dependent."
2728 msgstr ""
2729
2730 #. type: Plain text
2731 #: build/C/man2/perf_event_open.2:357
2732 msgid ""
2733 "The most significant bit (bit 63) of I<config> signifies CPU-specific (raw) "
2734 "counter configuration data; if the most significant bit is unset, the next 7 "
2735 "bits are an event type and the rest of the bits are the event identifier."
2736 msgstr ""
2737
2738 #. type: Plain text
2739 #: build/C/man2/perf_event_open.2:368
2740 msgid ""
2741 "There are various ways to set the I<config> field that are dependent on the "
2742 "value of the previously described I<type> field.  What follows are various "
2743 "possible settings for I<config> separated out by I<type>."
2744 msgstr ""
2745
2746 #. type: Plain text
2747 #: build/C/man2/perf_event_open.2:378
2748 msgid ""
2749 "If I<type> is B<PERF_TYPE_HARDWARE>, we are measuring one of the generalized "
2750 "hardware CPU events.  Not all of these are available on all platforms.  Set "
2751 "I<config> to one of the following:"
2752 msgstr ""
2753
2754 #. type: TP
2755 #: build/C/man2/perf_event_open.2:379
2756 #, no-wrap
2757 msgid "B<PERF_COUNT_HW_CPU_CYCLES>"
2758 msgstr ""
2759
2760 #. type: Plain text
2761 #: build/C/man2/perf_event_open.2:383
2762 msgid "Total cycles.  Be wary of what happens during CPU frequency scaling"
2763 msgstr ""
2764
2765 #. type: TP
2766 #: build/C/man2/perf_event_open.2:383
2767 #, no-wrap
2768 msgid "B<PERF_COUNT_HW_INSTRUCTIONS>"
2769 msgstr ""
2770
2771 #. type: Plain text
2772 #: build/C/man2/perf_event_open.2:388
2773 msgid ""
2774 "Retired instructions.  Be careful, these can be affected by various issues, "
2775 "most notably hardware interrupt counts"
2776 msgstr ""
2777
2778 #. type: TP
2779 #: build/C/man2/perf_event_open.2:388
2780 #, no-wrap
2781 msgid "B<PERF_COUNT_HW_CACHE_REFERENCES>"
2782 msgstr ""
2783
2784 #. type: Plain text
2785 #: build/C/man2/perf_event_open.2:395
2786 msgid ""
2787 "Cache accesses.  Usually this indicates Last Level Cache accesses but this "
2788 "may vary depending on your CPU.  This may include prefetches and coherency "
2789 "messages; again this depends on the design of your CPU."
2790 msgstr ""
2791
2792 #. type: TP
2793 #: build/C/man2/perf_event_open.2:395
2794 #, no-wrap
2795 msgid "B<PERF_COUNT_HW_CACHE_MISSES>"
2796 msgstr ""
2797
2798 #. type: Plain text
2799 #: build/C/man2/perf_event_open.2:402
2800 msgid ""
2801 "Cache misses.  Usually this indicates Last Level Cache misses; this is "
2802 "intended to be used in conjunction with the "
2803 "B<PERF_COUNT_HW_CACHE_REFERENCES> event to calculate cache miss rates."
2804 msgstr ""
2805
2806 #. type: TP
2807 #: build/C/man2/perf_event_open.2:402
2808 #, no-wrap
2809 msgid "B<PERF_COUNT_HW_BRANCH_INSTRUCTIONS>"
2810 msgstr ""
2811
2812 #. type: Plain text
2813 #: build/C/man2/perf_event_open.2:407
2814 msgid ""
2815 "Retired branch instructions.  Prior to Linux 2.6.34, this used the wrong "
2816 "event on AMD processors."
2817 msgstr ""
2818
2819 #. type: TP
2820 #: build/C/man2/perf_event_open.2:407
2821 #, no-wrap
2822 msgid "B<PERF_COUNT_HW_BRANCH_MISSES>"
2823 msgstr ""
2824
2825 #. type: Plain text
2826 #: build/C/man2/perf_event_open.2:410
2827 msgid "Mispredicted branch instructions."
2828 msgstr ""
2829
2830 #. type: TP
2831 #: build/C/man2/perf_event_open.2:410
2832 #, no-wrap
2833 msgid "B<PERF_COUNT_HW_BUS_CYCLES>"
2834 msgstr ""
2835
2836 #. type: Plain text
2837 #: build/C/man2/perf_event_open.2:413
2838 msgid "Bus cycles, which can be different from total cycles."
2839 msgstr ""
2840
2841 #. type: TP
2842 #: build/C/man2/perf_event_open.2:413
2843 #, no-wrap
2844 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Since Linux 3.0)"
2845 msgstr "B<PERF_COUNT_HW_STALLED_CYCLES_FRONTEND> (Linux 3.0 以降)"
2846
2847 #. type: Plain text
2848 #: build/C/man2/perf_event_open.2:416
2849 msgid "Stalled cycles during issue."
2850 msgstr ""
2851
2852 #. type: TP
2853 #: build/C/man2/perf_event_open.2:416
2854 #, no-wrap
2855 msgid "B<PERF_COUNT_HW_STALLED_CYCLES_BACKEND> (Since Linux 3.0)"
2856 msgstr ""
2857
2858 #. type: Plain text
2859 #: build/C/man2/perf_event_open.2:419
2860 msgid "Stalled cycles during retirement."
2861 msgstr ""
2862
2863 #. type: TP
2864 #: build/C/man2/perf_event_open.2:419
2865 #, no-wrap
2866 msgid "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Since Linux 3.3)"
2867 msgstr "B<PERF_COUNT_HW_REF_CPU_CYCLES> (Linux 3.3 以降)"
2868
2869 #. type: Plain text
2870 #: build/C/man2/perf_event_open.2:422
2871 msgid "Total cycles; not affected by CPU frequency scaling."
2872 msgstr ""
2873
2874 #. type: Plain text
2875 #: build/C/man2/perf_event_open.2:432
2876 msgid ""
2877 "If I<type> is B<PERF_TYPE_SOFTWARE>, we are measuring software events "
2878 "provided by the kernel.  Set I<config> to one of the following:"
2879 msgstr ""
2880
2881 #. type: TP
2882 #: build/C/man2/perf_event_open.2:433
2883 #, no-wrap
2884 msgid "B<PERF_COUNT_SW_CPU_CLOCK>"
2885 msgstr ""
2886
2887 #. type: Plain text
2888 #: build/C/man2/perf_event_open.2:436
2889 msgid "This reports the CPU clock, a high-resolution per-CPU timer."
2890 msgstr ""
2891
2892 #. type: TP
2893 #: build/C/man2/perf_event_open.2:436
2894 #, no-wrap
2895 msgid "B<PERF_COUNT_SW_TASK_CLOCK>"
2896 msgstr ""
2897
2898 #. type: Plain text
2899 #: build/C/man2/perf_event_open.2:439
2900 msgid "This reports a clock count specific to the task that is running."
2901 msgstr ""
2902
2903 #. type: TP
2904 #: build/C/man2/perf_event_open.2:439
2905 #, no-wrap
2906 msgid "B<PERF_COUNT_SW_PAGE_FAULTS>"
2907 msgstr ""
2908
2909 #. type: Plain text
2910 #: build/C/man2/perf_event_open.2:442
2911 msgid "This reports the number of page faults."
2912 msgstr ""
2913
2914 #. type: TP
2915 #: build/C/man2/perf_event_open.2:442
2916 #, no-wrap
2917 msgid "B<PERF_COUNT_SW_CONTEXT_SWITCHES>"
2918 msgstr ""
2919
2920 #. type: Plain text
2921 #: build/C/man2/perf_event_open.2:447
2922 msgid ""
2923 "This counts context switches.  Until Linux 2.6.34, these were all reported "
2924 "as user-space events, after that they are reported as happening in the "
2925 "kernel."
2926 msgstr ""
2927
2928 #. type: TP
2929 #: build/C/man2/perf_event_open.2:447
2930 #, no-wrap
2931 msgid "B<PERF_COUNT_SW_CPU_MIGRATIONS>"
2932 msgstr ""
2933
2934 #. type: Plain text
2935 #: build/C/man2/perf_event_open.2:451
2936 msgid "This reports the number of times the process has migrated to a new CPU."
2937 msgstr ""
2938
2939 #. type: TP
2940 #: build/C/man2/perf_event_open.2:451
2941 #, no-wrap
2942 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MIN>"
2943 msgstr ""
2944
2945 #. type: Plain text
2946 #: build/C/man2/perf_event_open.2:455
2947 msgid ""
2948 "This counts the number of minor page faults.  These did not require disk I/O "
2949 "to handle."
2950 msgstr ""
2951
2952 #. type: TP
2953 #: build/C/man2/perf_event_open.2:455
2954 #, no-wrap
2955 msgid "B<PERF_COUNT_SW_PAGE_FAULTS_MAJ>"
2956 msgstr ""
2957
2958 #. type: Plain text
2959 #: build/C/man2/perf_event_open.2:459
2960 msgid ""
2961 "This counts the number of major page faults.  These required disk I/O to "
2962 "handle."
2963 msgstr ""
2964
2965 #. type: TP
2966 #: build/C/man2/perf_event_open.2:459
2967 #, no-wrap
2968 msgid "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Since Linux 2.6.33)"
2969 msgstr "B<PERF_COUNT_SW_ALIGNMENT_FAULTS> (Linux 2.6.33 以降)"
2970
2971 #. type: Plain text
2972 #: build/C/man2/perf_event_open.2:465
2973 msgid ""
2974 "This counts the number of alignment faults.  These happen when unaligned "
2975 "memory accesses happen; the kernel can handle these but it reduces "
2976 "performance.  This happens only on some architectures (never on x86)."
2977 msgstr ""
2978
2979 #. type: TP
2980 #: build/C/man2/perf_event_open.2:465
2981 #, no-wrap
2982 msgid "B<PERF_COUNT_SW_EMULATION_FAULTS> (Since Linux 2.6.33)"
2983 msgstr "B<PERF_COUNT_SW_EMULATION_FAULTS> (Linux 2.6.33 以降)"
2984
2985 #. type: Plain text
2986 #: build/C/man2/perf_event_open.2:471
2987 msgid ""
2988 "This counts the number of emulation faults.  The kernel sometimes traps on "
2989 "unimplemented instructions and emulates them for user space.  This can "
2990 "negatively impact performance."
2991 msgstr ""
2992
2993 #. type: Plain text
2994 #: build/C/man2/perf_event_open.2:484
2995 msgid ""
2996 "If I<type> is B<PERF_TYPE_TRACEPOINT>, then we are measuring kernel "
2997 "tracepoints.  The value to use in I<config> can be obtained from under "
2998 "debugfs I<tracing/events/*/*/id> if ftrace is enabled in the kernel."
2999 msgstr ""
3000
3001 #. type: Plain text
3002 #: build/C/man2/perf_event_open.2:495
3003 msgid ""
3004 "If I<type> is B<PERF_TYPE_HW_CACHE>, then we are measuring a hardware CPU "
3005 "cache event.  To calculate the appropriate I<config> value use the following "
3006 "equation:"
3007 msgstr ""
3008
3009 #. type: Plain text
3010 #: build/C/man2/perf_event_open.2:500
3011 #, no-wrap
3012 msgid ""
3013 "    (perf_hw_cache_id) | (perf_hw_cache_op_id E<lt>E<lt> 8) |\n"
3014 "    (perf_hw_cache_op_result_id E<lt>E<lt> 16)\n"
3015 msgstr ""
3016
3017 #. type: Plain text
3018 #: build/C/man2/perf_event_open.2:505
3019 msgid "where I<perf_hw_cache_id> is one of:"
3020 msgstr ""
3021
3022 #. type: TP
3023 #: build/C/man2/perf_event_open.2:506
3024 #, no-wrap
3025 msgid "B<PERF_COUNT_HW_CACHE_L1D>"
3026 msgstr ""
3027
3028 #. type: Plain text
3029 #: build/C/man2/perf_event_open.2:509
3030 msgid "for measuring Level 1 Data Cache"
3031 msgstr ""
3032
3033 #. type: TP
3034 #: build/C/man2/perf_event_open.2:509
3035 #, no-wrap
3036 msgid "B<PERF_COUNT_HW_CACHE_L1I>"
3037 msgstr ""
3038
3039 #. type: Plain text
3040 #: build/C/man2/perf_event_open.2:512
3041 msgid "for measuring Level 1 Instruction Cache"
3042 msgstr ""
3043
3044 #. type: TP
3045 #: build/C/man2/perf_event_open.2:512
3046 #, no-wrap
3047 msgid "B<PERF_COUNT_HW_CACHE_LL>"
3048 msgstr ""
3049
3050 #. type: Plain text
3051 #: build/C/man2/perf_event_open.2:515
3052 msgid "for measuring Last-Level Cache"
3053 msgstr ""
3054
3055 #. type: TP
3056 #: build/C/man2/perf_event_open.2:515
3057 #, no-wrap
3058 msgid "B<PERF_COUNT_HW_CACHE_DTLB>"
3059 msgstr ""
3060
3061 #. type: Plain text
3062 #: build/C/man2/perf_event_open.2:518
3063 msgid "for measuring the Data TLB"
3064 msgstr ""
3065
3066 #. type: TP
3067 #: build/C/man2/perf_event_open.2:518
3068 #, no-wrap
3069 msgid "B<PERF_COUNT_HW_CACHE_ITLB>"
3070 msgstr ""
3071
3072 #. type: Plain text
3073 #: build/C/man2/perf_event_open.2:521
3074 msgid "for measuring the Instruction TLB"
3075 msgstr ""
3076
3077 #. type: TP
3078 #: build/C/man2/perf_event_open.2:521
3079 #, no-wrap
3080 msgid "B<PERF_COUNT_HW_CACHE_BPU>"
3081 msgstr ""
3082
3083 #. type: Plain text
3084 #: build/C/man2/perf_event_open.2:524
3085 msgid "for measuring the branch prediction unit"
3086 msgstr ""
3087
3088 #. type: TP
3089 #: build/C/man2/perf_event_open.2:524
3090 #, no-wrap
3091 msgid "B<PERF_COUNT_HW_CACHE_NODE> (Since Linux 3.0)"
3092 msgstr "B<PERF_COUNT_HW_CACHE_NODE> (Linux 3.0 以降)"
3093
3094 #. type: Plain text
3095 #: build/C/man2/perf_event_open.2:527
3096 msgid "for measuring local memory accesses"
3097 msgstr ""
3098
3099 #. type: Plain text
3100 #: build/C/man2/perf_event_open.2:532
3101 msgid "and I<perf_hw_cache_op_id> is one of"
3102 msgstr ""
3103
3104 #. type: TP
3105 #: build/C/man2/perf_event_open.2:533
3106 #, no-wrap
3107 msgid "B<PERF_COUNT_HW_CACHE_OP_READ>"
3108 msgstr ""
3109
3110 #. type: Plain text
3111 #: build/C/man2/perf_event_open.2:536
3112 msgid "for read accesses"
3113 msgstr ""
3114
3115 #. type: TP
3116 #: build/C/man2/perf_event_open.2:536
3117 #, no-wrap
3118 msgid "B<PERF_COUNT_HW_CACHE_OP_WRITE>"
3119 msgstr ""
3120
3121 #. type: Plain text
3122 #: build/C/man2/perf_event_open.2:539
3123 msgid "for write accesses"
3124 msgstr ""
3125
3126 #. type: TP
3127 #: build/C/man2/perf_event_open.2:539
3128 #, no-wrap
3129 msgid "B<PERF_COUNT_HW_CACHE_OP_PREFETCH>"
3130 msgstr ""
3131
3132 #. type: Plain text
3133 #: build/C/man2/perf_event_open.2:542
3134 msgid "for prefetch accesses"
3135 msgstr ""
3136
3137 #. type: Plain text
3138 #: build/C/man2/perf_event_open.2:547
3139 msgid "and I<perf_hw_cache_op_result_id> is one of"
3140 msgstr ""
3141
3142 #. type: TP
3143 #: build/C/man2/perf_event_open.2:548
3144 #, no-wrap
3145 msgid "B<PERF_COUNT_HW_CACHE_RESULT_ACCESS>"
3146 msgstr ""
3147
3148 #. type: Plain text
3149 #: build/C/man2/perf_event_open.2:551
3150 msgid "to measure accesses"
3151 msgstr ""
3152
3153 #. type: TP
3154 #: build/C/man2/perf_event_open.2:551
3155 #, no-wrap
3156 msgid "B<PERF_COUNT_HW_CACHE_RESULT_MISS>"
3157 msgstr ""
3158
3159 #. type: Plain text
3160 #: build/C/man2/perf_event_open.2:554
3161 msgid "to measure misses"
3162 msgstr ""
3163
3164 #. type: Plain text
3165 #: build/C/man2/perf_event_open.2:572
3166 msgid ""
3167 "If I<type> is B<PERF_TYPE_RAW>, then a custom \"raw\" I<config> value is "
3168 "needed.  Most CPUs support events that are not covered by the \"generalized"
3169 "\" events.  These are implementation defined; see your CPU manual (for "
3170 "example the Intel Volume 3B documentation or the AMD BIOS and Kernel "
3171 "Developer Guide).  The libpfm4 library can be used to translate from the "
3172 "name in the architectural manuals to the raw hex value B<perf_event_open>()  "
3173 "expects in this field."
3174 msgstr ""
3175
3176 #. type: Plain text
3177 #: build/C/man2/perf_event_open.2:581
3178 msgid ""
3179 "If I<type> is B<PERF_TYPE_BREAKPOINT>, then leave I<config> set to zero.  "
3180 "Its parameters are set in other places."
3181 msgstr ""
3182
3183 #. type: TP
3184 #: build/C/man2/perf_event_open.2:582
3185 #, no-wrap
3186 msgid "I<sample_period>, I<sample_freq>"
3187 msgstr ""
3188
3189 #. type: Plain text
3190 #: build/C/man2/perf_event_open.2:594
3191 msgid ""
3192 "A \"sampling\" counter is one that generates an interrupt every N events, "
3193 "where N is given by I<sample_period>.  A sampling counter has "
3194 "I<sample_period> E<gt> 0.  When an overflow interrupt occurs, requested data "
3195 "is recorded in the mmap buffer.  The I<sample_type> field controls what data "
3196 "is recorded on each interrupt."
3197 msgstr ""
3198
3199 #. type: Plain text
3200 #: build/C/man2/perf_event_open.2:604
3201 msgid ""
3202 "I<sample_freq> can be used if you wish to use frequency rather than period.  "
3203 "In this case you set the I<freq> flag.  The kernel will adjust the sampling "
3204 "period to try and achieve the desired rate.  The rate of adjustment is a "
3205 "timer tick."
3206 msgstr ""
3207
3208 #. type: TP
3209 #: build/C/man2/perf_event_open.2:604
3210 #, no-wrap
3211 msgid "I<sample_type>"
3212 msgstr ""
3213
3214 #. type: Plain text
3215 #: build/C/man2/perf_event_open.2:616
3216 msgid ""
3217 "The various bits in this field specify which values to include in the "
3218 "sample.  They will be recorded in a ring-buffer, which is available to user "
3219 "space using B<mmap>(2).  The order in which the values are saved in the "
3220 "sample are documented in the MMAP Layout subsection below; it is not the "
3221 "I<enum perf_event_sample_format> order."
3222 msgstr ""
3223
3224 #. type: TP
3225 #: build/C/man2/perf_event_open.2:617
3226 #, no-wrap
3227 msgid "B<PERF_SAMPLE_IP>"
3228 msgstr ""
3229
3230 #. type: Plain text
3231 #: build/C/man2/perf_event_open.2:620
3232 msgid "Records instruction pointer."
3233 msgstr ""
3234
3235 #. type: TP
3236 #: build/C/man2/perf_event_open.2:620
3237 #, no-wrap
3238 msgid "B<PERF_SAMPLE_TID>"
3239 msgstr ""
3240
3241 #. type: Plain text
3242 #: build/C/man2/perf_event_open.2:623
3243 msgid "Records the process and thread IDs."
3244 msgstr ""
3245
3246 #. type: TP
3247 #: build/C/man2/perf_event_open.2:623
3248 #, no-wrap
3249 msgid "B<PERF_SAMPLE_TIME>"
3250 msgstr ""
3251
3252 #. type: Plain text
3253 #: build/C/man2/perf_event_open.2:626
3254 msgid "Records a timestamp."
3255 msgstr ""
3256
3257 #. type: TP
3258 #: build/C/man2/perf_event_open.2:626
3259 #, no-wrap
3260 msgid "B<PERF_SAMPLE_ADDR>"
3261 msgstr ""
3262
3263 #. type: Plain text
3264 #: build/C/man2/perf_event_open.2:629
3265 msgid "Records an address, if applicable."
3266 msgstr ""
3267
3268 #. type: TP
3269 #: build/C/man2/perf_event_open.2:629
3270 #, no-wrap
3271 msgid "B<PERF_SAMPLE_READ>"
3272 msgstr ""
3273
3274 #. type: Plain text
3275 #: build/C/man2/perf_event_open.2:632
3276 msgid ""
3277 "Record counter values for all events in a group, not just the group leader."
3278 msgstr ""
3279
3280 #. type: TP
3281 #: build/C/man2/perf_event_open.2:632
3282 #, no-wrap
3283 msgid "B<PERF_SAMPLE_CALLCHAIN>"
3284 msgstr ""
3285
3286 #. type: Plain text
3287 #: build/C/man2/perf_event_open.2:635
3288 msgid "Records the callchain (stack backtrace)."
3289 msgstr ""
3290
3291 #. type: TP
3292 #: build/C/man2/perf_event_open.2:635
3293 #, no-wrap
3294 msgid "B<PERF_SAMPLE_ID>"
3295 msgstr ""
3296
3297 #. type: Plain text
3298 #: build/C/man2/perf_event_open.2:638
3299 msgid "Records a unique ID for the opened event's group leader."
3300 msgstr ""
3301
3302 #. type: TP
3303 #: build/C/man2/perf_event_open.2:638
3304 #, no-wrap
3305 msgid "B<PERF_SAMPLE_CPU>"
3306 msgstr ""
3307
3308 #. type: Plain text
3309 #: build/C/man2/perf_event_open.2:641
3310 msgid "Records CPU number."
3311 msgstr ""
3312
3313 #. type: TP
3314 #: build/C/man2/perf_event_open.2:641
3315 #, no-wrap
3316 msgid "B<PERF_SAMPLE_PERIOD>"
3317 msgstr ""
3318
3319 #. type: Plain text
3320 #: build/C/man2/perf_event_open.2:644
3321 msgid "Records the current sampling period."
3322 msgstr ""
3323
3324 #. type: TP
3325 #: build/C/man2/perf_event_open.2:644
3326 #, no-wrap
3327 msgid "B<PERF_SAMPLE_STREAM_ID>"
3328 msgstr ""
3329
3330 #. type: Plain text
3331 #: build/C/man2/perf_event_open.2:651
3332 msgid ""
3333 "Records a unique ID for the opened event.  Unlike B<PERF_SAMPLE_ID> the "
3334 "actual ID is returned, not the group leader.  This ID is the same as the one "
3335 "returned by PERF_FORMAT_ID."
3336 msgstr ""
3337
3338 #. type: TP
3339 #: build/C/man2/perf_event_open.2:651
3340 #, no-wrap
3341 msgid "B<PERF_SAMPLE_RAW>"
3342 msgstr ""
3343
3344 #. type: Plain text
3345 #: build/C/man2/perf_event_open.2:655
3346 msgid ""
3347 "Records additional data, if applicable.  Usually returned by tracepoint "
3348 "events."
3349 msgstr ""
3350
3351 #. type: TP
3352 #: build/C/man2/perf_event_open.2:655
3353 #, no-wrap
3354 msgid "B<PERF_SAMPLE_BRANCH_STACK> (Since Linux 3.4)"
3355 msgstr "B<PERF_SAMPLE_BRANCH_STACK> (Linux 3.4 以降)"
3356
3357 #. type: Plain text
3358 #: build/C/man2/perf_event_open.2:660
3359 msgid ""
3360 "This provides a record of recent branches, as provided by CPU branch "
3361 "sampling hardware (such as Intel Last Branch Record).  Not all hardware "
3362 "supports this feature."
3363 msgstr ""
3364
3365 #. type: Plain text
3366 #: build/C/man2/perf_event_open.2:664
3367 msgid ""
3368 "See the I<branch_sample_type> field for how to filter which branches are "
3369 "reported."
3370 msgstr ""
3371
3372 #. type: TP
3373 #: build/C/man2/perf_event_open.2:664
3374 #, no-wrap
3375 msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
3376 msgstr "B<PERF_SAMPLE_REGS_USER> (Linux 3.7 以降)"
3377
3378 #. type: Plain text
3379 #: build/C/man2/perf_event_open.2:668
3380 msgid ""
3381 "Records the current user-level CPU register state (the values in the process "
3382 "before the kernel was called)."
3383 msgstr ""
3384
3385 #. type: TP
3386 #: build/C/man2/perf_event_open.2:668
3387 #, no-wrap
3388 msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
3389 msgstr "B<PERF_SAMPLE_STACK_USER> (Linux 3.7 以降)"
3390
3391 #. type: Plain text
3392 #: build/C/man2/perf_event_open.2:671
3393 msgid "Records the user level stack, allowing stack unwinding."
3394 msgstr ""
3395
3396 #. type: TP
3397 #: build/C/man2/perf_event_open.2:671
3398 #, no-wrap
3399 msgid "B<PERF_SAMPLE_WEIGHT> (Since Linux 3.10)"
3400 msgstr "B<PERF_SAMPLE_WEIGHT> (Linux 3.10 以降)"
3401
3402 #. type: Plain text
3403 #: build/C/man2/perf_event_open.2:677
3404 msgid ""
3405 "Records a hardware provided weight value that expresses how costly the "
3406 "sampled event was.  This allows the hardware to highlight expensive events "
3407 "in a profile."
3408 msgstr ""
3409
3410 #. type: TP
3411 #: build/C/man2/perf_event_open.2:677
3412 #, no-wrap
3413 msgid "B<PERF_SAMPLE_DATA_SRC> (Since Linux 3.10)"
3414 msgstr "B<PERF_SAMPLE_DATA_SRC> (Linux 3.10 以降)"
3415
3416 #. type: Plain text
3417 #: build/C/man2/perf_event_open.2:683
3418 msgid ""
3419 "Records the data source: where in the memory hierarchy the data associated "
3420 "with the sampled instruction came from.  This is only available if the "
3421 "underlying hardware supports this feature."
3422 msgstr ""
3423
3424 #. type: TP
3425 #: build/C/man2/perf_event_open.2:684
3426 #, no-wrap
3427 msgid "I<read_format>"
3428 msgstr ""
3429
3430 #. type: Plain text
3431 #: build/C/man2/perf_event_open.2:691
3432 msgid ""
3433 "This field specifies the format of the data returned by B<read>(2)  on a "
3434 "B<perf_event_open>()  file descriptor."
3435 msgstr ""
3436
3437 #. type: TP
3438 #: build/C/man2/perf_event_open.2:692
3439 #, no-wrap
3440 msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
3441 msgstr ""
3442
3443 #. type: Plain text
3444 #: build/C/man2/perf_event_open.2:699
3445 msgid ""
3446 "Adds the 64-bit I<time_enabled> field.  This can be used to calculate "
3447 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3448 msgstr ""
3449
3450 #. type: TP
3451 #: build/C/man2/perf_event_open.2:699
3452 #, no-wrap
3453 msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
3454 msgstr ""
3455
3456 #. type: Plain text
3457 #: build/C/man2/perf_event_open.2:706
3458 msgid ""
3459 "Adds the 64-bit I<time_running> field.  This can be used to calculate "
3460 "estimated totals if the PMU is overcommitted and multiplexing is happening."
3461 msgstr ""
3462
3463 #. type: TP
3464 #: build/C/man2/perf_event_open.2:706
3465 #, no-wrap
3466 msgid "B<PERF_FORMAT_ID>"
3467 msgstr ""
3468
3469 #. type: Plain text
3470 #: build/C/man2/perf_event_open.2:709
3471 msgid "Adds a 64-bit unique value that corresponds to the event group."
3472 msgstr ""
3473
3474 #. type: TP
3475 #: build/C/man2/perf_event_open.2:709
3476 #, no-wrap
3477 msgid "B<PERF_FORMAT_GROUP>"
3478 msgstr ""
3479
3480 #. type: Plain text
3481 #: build/C/man2/perf_event_open.2:712
3482 msgid "Allows all counter values in an event group to be read with one read."
3483 msgstr ""
3484
3485 #. type: TP
3486 #: build/C/man2/perf_event_open.2:713
3487 #, no-wrap
3488 msgid "I<disabled>"
3489 msgstr ""
3490
3491 #. type: Plain text
3492 #: build/C/man2/perf_event_open.2:723
3493 msgid ""
3494 "The I<disabled> bit specifies whether the counter starts out disabled or "
3495 "enabled.  If disabled, the event can later be enabled by B<ioctl>(2), "
3496 "B<prctl>(2), or I<enable_on_exec>."
3497 msgstr ""
3498
3499 #. type: TP
3500 #: build/C/man2/perf_event_open.2:723
3501 #, no-wrap
3502 msgid "I<inherit>"
3503 msgstr ""
3504
3505 #. type: Plain text
3506 #: build/C/man2/perf_event_open.2:732
3507 msgid ""
3508 "The I<inherit> bit specifies that this counter should count events of child "
3509 "tasks as well as the task specified.  This applies only to new children, not "
3510 "to any existing children at the time the counter is created (nor to any new "
3511 "children of existing children)."
3512 msgstr ""
3513
3514 #. type: Plain text
3515 #: build/C/man2/perf_event_open.2:737
3516 msgid ""
3517 "Inherit does not work for some combinations of I<read_format>s, such as "
3518 "B<PERF_FORMAT_GROUP>."
3519 msgstr ""
3520
3521 #. type: TP
3522 #: build/C/man2/perf_event_open.2:737
3523 #, no-wrap
3524 msgid "I<pinned>"
3525 msgstr ""
3526
3527 #. type: Plain text
3528 #: build/C/man2/perf_event_open.2:750
3529 msgid ""
3530 "The I<pinned> bit specifies that the counter should always be on the CPU if "
3531 "at all possible.  It applies only to hardware counters and only to group "
3532 "leaders.  If a pinned counter cannot be put onto the CPU (e.g., because "
3533 "there are not enough hardware counters or because of a conflict with some "
3534 "other event), then the counter goes into an 'error' state, where reads "
3535 "return end-of-file (i.e., B<read>(2)  returns 0) until the counter is "
3536 "subsequently enabled or disabled."
3537 msgstr ""
3538
3539 #. type: TP
3540 #: build/C/man2/perf_event_open.2:750
3541 #, no-wrap
3542 msgid "I<exclusive>"
3543 msgstr ""
3544
3545 #. type: Plain text
3546 #: build/C/man2/perf_event_open.2:759
3547 msgid ""
3548 "The I<exclusive> bit specifies that when this counter's group is on the CPU, "
3549 "it should be the only group using the CPU's counters.  In the future this "
3550 "may allow monitoring programs to support PMU features that need to run alone "
3551 "so that they do not disrupt other hardware counters."
3552 msgstr ""
3553
3554 #. type: TP
3555 #: build/C/man2/perf_event_open.2:759
3556 #, no-wrap
3557 msgid "I<exclude_user>"
3558 msgstr ""
3559
3560 #. type: Plain text
3561 #: build/C/man2/perf_event_open.2:762
3562 msgid ""
3563 "If this bit is set, the count excludes events that happen in user space."
3564 msgstr ""
3565
3566 #. type: TP
3567 #: build/C/man2/perf_event_open.2:762
3568 #, no-wrap
3569 msgid "I<exclude_kernel>"
3570 msgstr ""
3571
3572 #. type: Plain text
3573 #: build/C/man2/perf_event_open.2:765
3574 msgid ""
3575 "If this bit is set, the count excludes events that happen in kernel-space."
3576 msgstr ""
3577
3578 #. type: TP
3579 #: build/C/man2/perf_event_open.2:765
3580 #, no-wrap
3581 msgid "I<exclude_hv>"
3582 msgstr ""
3583
3584 #. type: Plain text
3585 #: build/C/man2/perf_event_open.2:773
3586 msgid ""
3587 "If this bit is set, the count excludes events that happen in the "
3588 "hypervisor.  This is mainly for PMUs that have built-in support for handling "
3589 "this (such as POWER).  Extra support is needed for handling hypervisor "
3590 "measurements on most machines."
3591 msgstr ""
3592
3593 #. type: TP
3594 #: build/C/man2/perf_event_open.2:773
3595 #, no-wrap
3596 msgid "I<exclude_idle>"
3597 msgstr ""
3598
3599 #. type: Plain text
3600 #: build/C/man2/perf_event_open.2:776
3601 msgid "If set, don't count when the CPU is idle."
3602 msgstr ""
3603
3604 #. type: TP
3605 #: build/C/man2/perf_event_open.2:776
3606 #, no-wrap
3607 msgid "I<mmap>"
3608 msgstr ""
3609
3610 #. type: Plain text
3611 #: build/C/man2/perf_event_open.2:781
3612 msgid "The I<mmap> bit enables recording of exec mmap events."
3613 msgstr ""
3614
3615 #. type: TP
3616 #: build/C/man2/perf_event_open.2:781
3617 #, no-wrap
3618 msgid "I<comm>"
3619 msgstr ""
3620
3621 #. type: Plain text
3622 #: build/C/man2/perf_event_open.2:792
3623 msgid ""
3624 "The I<comm> bit enables tracking of process command name as modified by the "
3625 "I<exec>(2)  and I<prctl>(PR_SET_NAME)  system calls.  Unfortunately for "
3626 "tools, there is no way to distinguish one system call versus the other."
3627 msgstr ""
3628
3629 #. type: TP
3630 #: build/C/man2/perf_event_open.2:792
3631 #, no-wrap
3632 msgid "I<freq>"
3633 msgstr ""
3634
3635 #. type: Plain text
3636 #: build/C/man2/perf_event_open.2:799
3637 msgid ""
3638 "If this bit is set, then I<sample_frequency> not I<sample_period> is used "
3639 "when setting up the sampling interval."
3640 msgstr ""
3641
3642 #. type: TP
3643 #: build/C/man2/perf_event_open.2:799
3644 #, no-wrap
3645 msgid "I<inherit_stat>"
3646 msgstr ""
3647
3648 #. type: Plain text
3649 #: build/C/man2/perf_event_open.2:806
3650 msgid ""
3651 "This bit enables saving of event counts on context switch for inherited "
3652 "tasks.  This is meaningful only if the I<inherit> field is set."
3653 msgstr ""
3654
3655 #. type: TP
3656 #: build/C/man2/perf_event_open.2:806
3657 #, no-wrap
3658 msgid "I<enable_on_exec>"
3659 msgstr ""
3660
3661 #. type: Plain text
3662 #: build/C/man2/perf_event_open.2:811
3663 msgid ""
3664 "If this bit is set, a counter is automatically enabled after a call to "
3665 "B<exec>(2)."
3666 msgstr ""
3667
3668 #. type: TP
3669 #: build/C/man2/perf_event_open.2:811
3670 #, no-wrap
3671 msgid "I<task>"
3672 msgstr ""
3673
3674 #. type: Plain text
3675 #: build/C/man2/perf_event_open.2:815
3676 msgid ""
3677 "If this bit is set, then fork/exit notifications are included in the ring "
3678 "buffer."
3679 msgstr ""
3680
3681 #. type: TP
3682 #: build/C/man2/perf_event_open.2:815
3683 #, no-wrap
3684 msgid "I<watermark>"
3685 msgstr ""
3686
3687 #. type: Plain text
3688 #: build/C/man2/perf_event_open.2:823
3689 msgid ""
3690 "If set, have a sampling interrupt happen when we cross the "
3691 "I<wakeup_watermark> boundary.  Otherwise interrupts happen after "
3692 "I<wakeup_events> samples."
3693 msgstr ""
3694
3695 #. type: TP
3696 #: build/C/man2/perf_event_open.2:823
3697 #, no-wrap
3698 msgid "I<precise_ip> (Since Linux 2.6.35)"
3699 msgstr "I<precise_ip> (Linux 2.6.35 以降)"
3700
3701 #. type: Plain text
3702 #: build/C/man2/perf_event_open.2:833
3703 msgid ""
3704 "This controls the amount of skid.  Skid is how many instructions execute "
3705 "between an event of interest happening and the kernel being able to stop and "
3706 "record the event.  Smaller skid is better and allows more accurate reporting "
3707 "of which events correspond to which instructions, but hardware is often "
3708 "limited with how small this can be."
3709 msgstr ""
3710
3711 #. type: Plain text
3712 #: build/C/man2/perf_event_open.2:835
3713 #, fuzzy
3714 #| msgid "The I<subcmd> value is one of the following:"
3715 msgid "The values of this are the following:"
3716 msgstr "I<subcmd> の値は以下のいずれかである"
3717
3718 #. type: TP
3719 #: build/C/man2/perf_event_open.2:836
3720 #, no-wrap
3721 msgid "0 -"
3722 msgstr ""
3723
3724 #. type: Plain text
3725 #: build/C/man2/perf_event_open.2:840
3726 msgid "B<SAMPLE_IP> can have arbitrary skid"
3727 msgstr ""
3728
3729 #. type: TP
3730 #: build/C/man2/perf_event_open.2:840
3731 #, no-wrap
3732 msgid "1 -"
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/perf_event_open.2:844
3737 msgid "B<SAMPLE_IP> must have constant skid"
3738 msgstr ""
3739
3740 #. type: TP
3741 #: build/C/man2/perf_event_open.2:844
3742 #, no-wrap
3743 msgid "2 -"
3744 msgstr ""
3745
3746 #. type: Plain text
3747 #: build/C/man2/perf_event_open.2:848
3748 msgid "B<SAMPLE_IP> requested to have 0 skid"
3749 msgstr ""
3750
3751 #. type: TP
3752 #: build/C/man2/perf_event_open.2:848
3753 #, no-wrap
3754 msgid "3 -"
3755 msgstr ""
3756
3757 #. type: Plain text
3758 #: build/C/man2/perf_event_open.2:854
3759 msgid "B<SAMPLE_IP> must have 0 skid.  See also B<PERF_RECORD_MISC_EXACT_IP>."
3760 msgstr ""
3761
3762 #. type: TP
3763 #: build/C/man2/perf_event_open.2:855
3764 #, no-wrap
3765 msgid "I<mmap_data> (Since Linux 2.6.36)"
3766 msgstr "I<mmap_data> (Linux 2.6.36 以降)"
3767
3768 #. type: Plain text
3769 #: build/C/man2/perf_event_open.2:861
3770 msgid ""
3771 "The counterpart of the I<mmap> field, but enables including data mmap events "
3772 "in the ring-buffer."
3773 msgstr ""
3774
3775 #. type: TP
3776 #: build/C/man2/perf_event_open.2:861
3777 #, no-wrap
3778 msgid "I<sample_id_all> (Since Linux 2.6.38)"
3779 msgstr "I<sample_id_all> (Linux 2.6.38 以降)"
3780
3781 #. type: Plain text
3782 #: build/C/man2/perf_event_open.2:869
3783 msgid ""
3784 "If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
3785 "in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
3786 "selected."
3787 msgstr ""
3788
3789 #. type: TP
3790 #: build/C/man2/perf_event_open.2:869
3791 #, no-wrap
3792 msgid "I<exclude_host> (Since Linux 3.2)"
3793 msgstr ""
3794
3795 #. type: Plain text
3796 #: build/C/man2/perf_event_open.2:872
3797 msgid "Do not measure time spent in VM host"
3798 msgstr ""
3799
3800 #. type: TP
3801 #: build/C/man2/perf_event_open.2:872
3802 #, no-wrap
3803 msgid "I<exclude_guest> (Since Linux 3.2)"
3804 msgstr ""
3805
3806 #. type: Plain text
3807 #: build/C/man2/perf_event_open.2:875
3808 msgid "Do not measure time spent in VM guest"
3809 msgstr ""
3810
3811 #. type: TP
3812 #: build/C/man2/perf_event_open.2:875
3813 #, no-wrap
3814 msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
3815 msgstr ""
3816
3817 #. type: Plain text
3818 #: build/C/man2/perf_event_open.2:878
3819 msgid "Do not include kernel callchains."
3820 msgstr ""
3821
3822 #. type: TP
3823 #: build/C/man2/perf_event_open.2:878
3824 #, no-wrap
3825 msgid "I<exclude_callchain_user> (Since Linux 3.7)"
3826 msgstr ""
3827
3828 #. type: Plain text
3829 #: build/C/man2/perf_event_open.2:881
3830 msgid "Do not include user callchains."
3831 msgstr ""
3832
3833 #. type: TP
3834 #: build/C/man2/perf_event_open.2:881
3835 #, no-wrap
3836 msgid "I<wakeup_events>, I<wakeup_watermark>"
3837 msgstr ""
3838
3839 #. type: Plain text
3840 #: build/C/man2/perf_event_open.2:891
3841 msgid ""
3842 "This union sets how many samples (I<wakeup_events>)  or bytes "
3843 "(I<wakeup_watermark>)  happen before an overflow signal happens.  Which one "
3844 "is used is selected by the I<watermark> bitflag."
3845 msgstr ""
3846
3847 #. type: Plain text
3848 #: build/C/man2/perf_event_open.2:901
3849 msgid ""
3850 "I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types.  To receive "
3851 "a signal for every incoming B<PERF_RECORD> type set I<wakeup_watermark> to 1."
3852 msgstr ""
3853
3854 #. type: TP
3855 #: build/C/man2/perf_event_open.2:901
3856 #, no-wrap
3857 msgid "I<bp_type> (Since Linux 2.6.33)"
3858 msgstr "I<bp_type> (Linux 2.6.33 以降)"
3859
3860 #. type: Plain text
3861 #: build/C/man2/perf_event_open.2:905
3862 msgid "This chooses the breakpoint type.  It is one of:"
3863 msgstr ""
3864
3865 #. type: TP
3866 #: build/C/man2/perf_event_open.2:906
3867 #, no-wrap
3868 msgid "B<HW_BREAKPOINT_EMPTY>"
3869 msgstr ""
3870
3871 #. type: Plain text
3872 #: build/C/man2/perf_event_open.2:909
3873 msgid "no breakpoint"
3874 msgstr ""
3875
3876 #. type: TP
3877 #: build/C/man2/perf_event_open.2:909
3878 #, no-wrap
3879 msgid "B<HW_BREAKPOINT_R>"
3880 msgstr ""
3881
3882 #. type: Plain text
3883 #: build/C/man2/perf_event_open.2:912
3884 msgid "count when we read the memory location"
3885 msgstr ""
3886
3887 #. type: TP
3888 #: build/C/man2/perf_event_open.2:912
3889 #, no-wrap
3890 msgid "B<HW_BREAKPOINT_W>"
3891 msgstr ""
3892
3893 #. type: Plain text
3894 #: build/C/man2/perf_event_open.2:915
3895 msgid "count when we write the memory location"
3896 msgstr ""
3897
3898 #. type: TP
3899 #: build/C/man2/perf_event_open.2:915
3900 #, no-wrap
3901 msgid "B<HW_BREAKPOINT_RW>"
3902 msgstr ""
3903
3904 #. type: Plain text
3905 #: build/C/man2/perf_event_open.2:918
3906 msgid "count when we read or write the memory location"
3907 msgstr ""
3908
3909 #. type: TP
3910 #: build/C/man2/perf_event_open.2:918
3911 #, no-wrap
3912 msgid "B<HW_BREAKPOINT_X>"
3913 msgstr ""
3914
3915 #. type: Plain text
3916 #: build/C/man2/perf_event_open.2:921
3917 msgid "count when we execute code at the memory location"
3918 msgstr ""
3919
3920 #. type: Plain text
3921 #: build/C/man2/perf_event_open.2:930
3922 msgid ""
3923 "The values can be combined via a bitwise or, but the combination of "
3924 "B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
3925 "allowed."
3926 msgstr ""
3927
3928 #. type: TP
3929 #: build/C/man2/perf_event_open.2:931
3930 #, no-wrap
3931 msgid "I<bp_addr> (Since Linux 2.6.33)"
3932 msgstr "I<bp_addr> (Linux 2.6.33 以降)"
3933
3934 #. type: Plain text
3935 #: build/C/man2/perf_event_open.2:938
3936 msgid ""
3937 "I<bp_addr> address of the breakpoint.  For execution breakpoints this is the "
3938 "memory address of the instruction of interest; for read and write "
3939 "breakpoints it is the memory address of the memory location of interest."
3940 msgstr ""
3941
3942 #. type: TP
3943 #: build/C/man2/perf_event_open.2:938
3944 #, no-wrap
3945 msgid "I<config1> (Since Linux 2.6.39)"
3946 msgstr "I<config1> (Linux 2.6.39 以降)"
3947
3948 #. type: Plain text
3949 #: build/C/man2/perf_event_open.2:945
3950 msgid ""
3951 "I<config1> is used for setting events that need an extra register or "
3952 "otherwise do not fit in the regular config field.  Raw OFFCORE_EVENTS on "
3953 "Nehalem/Westmere/SandyBridge use this field on 3.3 and later kernels."
3954 msgstr ""
3955
3956 #. type: TP
3957 #: build/C/man2/perf_event_open.2:945
3958 #, no-wrap
3959 msgid "I<bp_len> (Since Linux 2.6.33)"
3960 msgstr "I<bp_len> (Linux 2.6.33 以降)"
3961
3962 #. type: Plain text
3963 #: build/C/man2/perf_event_open.2:959
3964 msgid ""
3965 "I<bp_len> is the length of the breakpoint being measured if I<type> is "
3966 "B<PERF_TYPE_BREAKPOINT>.  Options are B<HW_BREAKPOINT_LEN_1>, "
3967 "B<HW_BREAKPOINT_LEN_2>, B<HW_BREAKPOINT_LEN_4>, B<HW_BREAKPOINT_LEN_8>.  For "
3968 "an execution breakpoint, set this to I<sizeof(long)>."
3969 msgstr ""
3970
3971 #. type: TP
3972 #: build/C/man2/perf_event_open.2:959
3973 #, no-wrap
3974 msgid "I<config2> (Since Linux 2.6.39)"
3975 msgstr "I<config2> (Linux 2.6.39 以降)"
3976
3977 #. type: Plain text
3978 #: build/C/man2/perf_event_open.2:966
3979 msgid "I<config2> is a further extension of the I<config1> field."
3980 msgstr ""
3981
3982 #. type: TP
3983 #: build/C/man2/perf_event_open.2:966
3984 #, no-wrap
3985 msgid "I<branch_sample_type> (Since Linux 3.4)"
3986 msgstr ""
3987
3988 #. type: Plain text
3989 #: build/C/man2/perf_event_open.2:979
3990 msgid ""
3991 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
3992 "to include in the branch record.  If the user does not set privilege level "
3993 "explicitly, the kernel will use the event's privilege level.  Event and "
3994 "branch privilege levels do not have to match.  The value is formed by ORing "
3995 "together zero or more of the following values, although "
3996 "B<PERF_SAMPLE_BRANCH_ANY> covers all branch types."
3997 msgstr ""
3998
3999 #. type: TP
4000 #: build/C/man2/perf_event_open.2:980
4001 #, no-wrap
4002 msgid "B<PERF_SAMPLE_BRANCH_USER>"
4003 msgstr ""
4004
4005 #. type: Plain text
4006 #: build/C/man2/perf_event_open.2:983
4007 msgid "Branch target is in user space"
4008 msgstr ""
4009
4010 #. type: TP
4011 #: build/C/man2/perf_event_open.2:983
4012 #, no-wrap
4013 msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
4014 msgstr ""
4015
4016 #. type: Plain text
4017 #: build/C/man2/perf_event_open.2:986
4018 msgid "Branch target is in kernel space"
4019 msgstr ""
4020
4021 #. type: TP
4022 #: build/C/man2/perf_event_open.2:986
4023 #, no-wrap
4024 msgid "B<PERF_SAMPLE_BRANCH_HV>"
4025 msgstr ""
4026
4027 #. type: Plain text
4028 #: build/C/man2/perf_event_open.2:989
4029 msgid "Branch target is in hypervisor"
4030 msgstr ""
4031
4032 #. type: TP
4033 #: build/C/man2/perf_event_open.2:989
4034 #, no-wrap
4035 msgid "B<PERF_SAMPLE_BRANCH_ANY>"
4036 msgstr ""
4037
4038 #. type: Plain text
4039 #: build/C/man2/perf_event_open.2:992
4040 msgid "Any branch type."
4041 msgstr ""
4042
4043 #. type: TP
4044 #: build/C/man2/perf_event_open.2:992
4045 #, no-wrap
4046 msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
4047 msgstr ""
4048
4049 #. type: Plain text
4050 #: build/C/man2/perf_event_open.2:995
4051 msgid "Any call branch"
4052 msgstr ""
4053
4054 #. type: TP
4055 #: build/C/man2/perf_event_open.2:995
4056 #, no-wrap
4057 msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
4058 msgstr ""
4059
4060 #. type: Plain text
4061 #: build/C/man2/perf_event_open.2:998
4062 msgid "Any return branch"
4063 msgstr ""
4064
4065 #. type: TP
4066 #: build/C/man2/perf_event_open.2:998
4067 #, no-wrap
4068 msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
4069 msgstr ""
4070
4071 #. type: Plain text
4072 #: build/C/man2/perf_event_open.2:1001
4073 msgid "Indirect calls"
4074 msgstr ""
4075
4076 #. type: TP
4077 #: build/C/man2/perf_event_open.2:1001
4078 #, no-wrap
4079 msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
4080 msgstr ""
4081
4082 #. type: Plain text
4083 #: build/C/man2/perf_event_open.2:1004
4084 msgid "User, kernel, and hv"
4085 msgstr ""
4086
4087 #. type: TP
4088 #: build/C/man2/perf_event_open.2:1005
4089 #, no-wrap
4090 msgid "I<sample_regs_user> (Since Linux 3.7)"
4091 msgstr ""
4092
4093 #. type: Plain text
4094 #: build/C/man2/perf_event_open.2:1011
4095 msgid ""
4096 "This bitmask defines the set of user CPU registers to dump on samples.  The "
4097 "layout of the register mask is architecture specific and described in the "
4098 "kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
4099 msgstr ""
4100
4101 #. type: TP
4102 #: build/C/man2/perf_event_open.2:1011
4103 #, no-wrap
4104 msgid "I<sample_stack_user> (Since Linux 3.7)"
4105 msgstr ""
4106
4107 #. type: Plain text
4108 #: build/C/man2/perf_event_open.2:1016
4109 msgid ""
4110 "This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
4111 "is specified."
4112 msgstr ""
4113
4114 #. type: SS
4115 #: build/C/man2/perf_event_open.2:1016
4116 #, no-wrap
4117 msgid "Reading results"
4118 msgstr ""
4119
4120 #. type: Plain text
4121 #: build/C/man2/perf_event_open.2:1026
4122 msgid ""
4123 "Once a B<perf_event_open>()  file descriptor has been opened, the values of "
4124 "the events can be read from the file descriptor.  The values that are there "
4125 "are specified by the I<read_format> field in the I<attr> structure at open "
4126 "time."
4127 msgstr ""
4128
4129 #. type: Plain text
4130 #: build/C/man2/perf_event_open.2:1031
4131 msgid ""
4132 "If you attempt to read into a buffer that is not big enough to hold the data "
4133 "B<ENOSPC> is returned"
4134 msgstr ""
4135
4136 #. type: Plain text
4137 #: build/C/man2/perf_event_open.2:1033
4138 msgid "Here is the layout of the data returned by a read:"
4139 msgstr ""
4140
4141 #. type: IP
4142 #: build/C/man2/perf_event_open.2:1033 build/C/man2/perf_event_open.2:1051
4143 #: build/C/man2/ptrace.2:1619 build/C/man2/ptrace.2:1629
4144 #: build/C/man2/ptrace.2:1637 build/C/man2/ptrace.2:1643
4145 #: build/C/man2/ptrace.2:1772
4146 #, no-wrap
4147 msgid "*"
4148 msgstr ""
4149
4150 #. type: Plain text
4151 #: build/C/man2/perf_event_open.2:1037
4152 msgid ""
4153 "If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
4154 "at once:"
4155 msgstr ""
4156
4157 #. type: Plain text
4158 #: build/C/man2/perf_event_open.2:1049
4159 #, no-wrap
4160 msgid ""
4161 "struct read_format {\n"
4162 "    u64 nr;            /* The number of events */\n"
4163 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4164 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4165 "    struct\n"
4166 "        u64 value;     /* The value of the event */\n"
4167 "        u64 id;        /* if PERF_FORMAT_ID */\n"
4168 "    } values[nr];\n"
4169 "};\n"
4170 msgstr ""
4171
4172 #. type: Plain text
4173 #: build/C/man2/perf_event_open.2:1057
4174 msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
4175 msgstr ""
4176
4177 #. type: Plain text
4178 #: build/C/man2/perf_event_open.2:1066
4179 #, no-wrap
4180 msgid ""
4181 "struct read_format {\n"
4182 "    u64 value;         /* The value of the event */\n"
4183 "    u64 time_enabled;  /* if PERF_FORMAT_TOTAL_TIME_ENABLED */\n"
4184 "    u64 time_running;  /* if PERF_FORMAT_TOTAL_TIME_RUNNING */\n"
4185 "    u64 id;            /* if PERF_FORMAT_ID */\n"
4186 "};\n"
4187 msgstr ""
4188
4189 #. type: Plain text
4190 #: build/C/man2/perf_event_open.2:1070
4191 msgid "The values read are as follows:"
4192 msgstr ""
4193
4194 #. type: TP
4195 #: build/C/man2/perf_event_open.2:1070
4196 #, no-wrap
4197 msgid "I<nr>"
4198 msgstr ""
4199
4200 #. type: Plain text
4201 #: build/C/man2/perf_event_open.2:1076
4202 msgid ""
4203 "The number of events in this file descriptor.  Only available if "
4204 "B<PERF_FORMAT_GROUP> was specified."
4205 msgstr ""
4206
4207 #. type: TP
4208 #: build/C/man2/perf_event_open.2:1076
4209 #, no-wrap
4210 msgid "I<time_enabled>, I<time_running>"
4211 msgstr ""
4212
4213 #. type: Plain text
4214 #: build/C/man2/perf_event_open.2:1088
4215 msgid ""
4216 "Total time the event was enabled and running.  Normally these are the same.  "
4217 "If more events are started than available counter slots on the PMU, then "
4218 "multiplexing happens and events run only part of the time.  In that case the "
4219 "I<time_enabled> and I<time running> values can be used to scale an estimated "
4220 "value for the count."
4221 msgstr ""
4222
4223 #. type: TP
4224 #: build/C/man2/perf_event_open.2:1088
4225 #, no-wrap
4226 msgid "I<value>"
4227 msgstr ""
4228
4229 #. type: Plain text
4230 #: build/C/man2/perf_event_open.2:1091
4231 msgid "An unsigned 64-bit value containing the counter result."
4232 msgstr ""
4233
4234 #. type: TP
4235 #: build/C/man2/perf_event_open.2:1091 build/C/man2/perf_event_open.2:1355
4236 #: build/C/man2/perf_event_open.2:1492
4237 #, no-wrap
4238 msgid "I<id>"
4239 msgstr ""
4240
4241 #. type: Plain text
4242 #: build/C/man2/perf_event_open.2:1097
4243 msgid ""
4244 "A globally unique value for this particular event, only there if "
4245 "B<PERF_FORMAT_ID> was specified in I<read_format>."
4246 msgstr ""
4247
4248 #. type: SS
4249 #: build/C/man2/perf_event_open.2:1097
4250 #, no-wrap
4251 msgid "MMAP layout"
4252 msgstr ""
4253
4254 #. type: Plain text
4255 #: build/C/man2/perf_event_open.2:1107
4256 msgid ""
4257 "When using B<perf_event_open>()  in sampled mode, asynchronous events (like "
4258 "counter overflow or B<PROT_EXEC> mmap tracking)  are logged into a ring-"
4259 "buffer.  This ring-buffer is created and accessed through B<mmap>(2)."
4260 msgstr ""
4261
4262 #. type: Plain text
4263 #: build/C/man2/perf_event_open.2:1113
4264 msgid ""
4265 "The mmap size should be 1+2^n pages, where the first page is a metadata page "
4266 "(I<struct perf_event_mmap_page>)  that contains various bits of information "
4267 "such as where the ring-buffer head is."
4268 msgstr ""
4269
4270 #. type: Plain text
4271 #: build/C/man2/perf_event_open.2:1116
4272 msgid ""
4273 "Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
4274 "ring buffer when sampling even if you do not plan to access it."
4275 msgstr ""
4276
4277 #. type: Plain text
4278 #: build/C/man2/perf_event_open.2:1118
4279 msgid "The structure of the first metadata mmap page is as follows:"
4280 msgstr ""
4281
4282 #. type: Plain text
4283 #: build/C/man2/perf_event_open.2:1142
4284 #, no-wrap
4285 msgid ""
4286 "struct perf_event_mmap_page {\n"
4287 "    __u32 version;          /* version number of this structure */\n"
4288 "    __u32 compat_version;   /* lowest version this is compat with */\n"
4289 "    __u32 lock;             /* seqlock for synchronization */\n"
4290 "    __u32 index;            /* hardware counter identifier */\n"
4291 "    __s64 offset;           /* add to hardware counter value */\n"
4292 "    __u64 time_enabled;     /* time event active */\n"
4293 "    __u64 time_running;     /* time event on CPU */\n"
4294 "    union {\n"
4295 "        __u64   capabilities;\n"
4296 "        __u64   cap_usr_time  : 1,\n"
4297 "                cap_usr_rdpmc : 1,\n"
4298 "    };\n"
4299 "    __u16   pmc_width;\n"
4300 "    __u16   time_shift;\n"
4301 "    __u32   time_mult;\n"
4302 "    __u64   time_offset;\n"
4303 "    __u64   __reserved[120];   /* Pad to 1k */\n"
4304 "    __u64   data_head;         /* head in the data section */\n"
4305 "    __u64   data_tail;         /* user-space written tail */\n"
4306 "}\n"
4307 msgstr ""
4308
4309 #. type: Plain text
4310 #: build/C/man2/perf_event_open.2:1148
4311 msgid ""
4312 "The following looks at the fields in the I<perf_event_mmap_page> structure "
4313 "in more detail:"
4314 msgstr ""
4315
4316 #. type: TP
4317 #: build/C/man2/perf_event_open.2:1148
4318 #, no-wrap
4319 msgid "I<version>"
4320 msgstr ""
4321
4322 #. type: Plain text
4323 #: build/C/man2/perf_event_open.2:1151
4324 msgid "Version number of this structure."
4325 msgstr ""
4326
4327 #. type: TP
4328 #: build/C/man2/perf_event_open.2:1151
4329 #, no-wrap
4330 msgid "I<compat_version>"
4331 msgstr ""
4332
4333 #. type: Plain text
4334 #: build/C/man2/perf_event_open.2:1154
4335 msgid "The lowest version this is compatible with."
4336 msgstr ""
4337
4338 #. type: TP
4339 #: build/C/man2/perf_event_open.2:1154
4340 #, no-wrap
4341 msgid "I<lock>"
4342 msgstr ""
4343
4344 #. type: Plain text
4345 #: build/C/man2/perf_event_open.2:1157
4346 msgid "A seqlock for synchronization."
4347 msgstr ""
4348
4349 #. type: TP
4350 #: build/C/man2/perf_event_open.2:1157
4351 #, no-wrap
4352 msgid "I<index>"
4353 msgstr ""
4354
4355 #. type: Plain text
4356 #: build/C/man2/perf_event_open.2:1160
4357 msgid "A unique hardware counter identifier."
4358 msgstr ""
4359
4360 #. type: TP
4361 #: build/C/man2/perf_event_open.2:1160
4362 #, no-wrap
4363 msgid "I<offset>"
4364 msgstr ""
4365
4366 #.  FIXME clarify
4367 #. type: Plain text
4368 #: build/C/man2/perf_event_open.2:1164
4369 msgid "Add this to hardware counter value??"
4370 msgstr ""
4371
4372 #. type: TP
4373 #: build/C/man2/perf_event_open.2:1164
4374 #, no-wrap
4375 msgid "I<time_enabled>"
4376 msgstr ""
4377
4378 #. type: Plain text
4379 #: build/C/man2/perf_event_open.2:1167
4380 msgid "Time the event was active."
4381 msgstr ""
4382
4383 #. type: TP
4384 #: build/C/man2/perf_event_open.2:1167
4385 #, no-wrap
4386 msgid "I<time_running>"
4387 msgstr ""
4388
4389 #. type: Plain text
4390 #: build/C/man2/perf_event_open.2:1170
4391 msgid "Time the event was running."
4392 msgstr ""
4393
4394 #. type: TP
4395 #: build/C/man2/perf_event_open.2:1170
4396 #, no-wrap
4397 msgid "I<cap_usr_time>"
4398 msgstr ""
4399
4400 #. type: Plain text
4401 #: build/C/man2/perf_event_open.2:1173
4402 msgid "User time capability"
4403 msgstr ""
4404
4405 #. type: TP
4406 #: build/C/man2/perf_event_open.2:1173
4407 #, no-wrap
4408 msgid "I<cap_usr_rdpmc>"
4409 msgstr ""
4410
4411 #. type: Plain text
4412 #: build/C/man2/perf_event_open.2:1178
4413 msgid ""
4414 "If the hardware supports user-space read of performance counters without "
4415 "syscall (this is the \"rdpmc\" instruction on x86), then the following code "
4416 "can be used to do a read:"
4417 msgstr ""
4418
4419 #. type: Plain text
4420 #: build/C/man2/perf_event_open.2:1185
4421 #, no-wrap
4422 msgid ""
4423 "u32 seq, time_mult, time_shift, idx, width;\n"
4424 "u64 count, enabled, running;\n"
4425 "u64 cyc, time_offset;\n"
4426 "s64 pmc = 0;\n"
4427 msgstr ""
4428
4429 #. type: Plain text
4430 #: build/C/man2/perf_event_open.2:1191
4431 #, no-wrap
4432 msgid ""
4433 "do {\n"
4434 "    seq = pc-E<gt>lock;\n"
4435 "    barrier();\n"
4436 "    enabled = pc-E<gt>time_enabled;\n"
4437 "    running = pc-E<gt>time_running;\n"
4438 msgstr ""
4439
4440 #. type: Plain text
4441 #: build/C/man2/perf_event_open.2:1198
4442 #, no-wrap
4443 msgid ""
4444 "    if (pc-E<gt>cap_usr_time && enabled != running) {\n"
4445 "        cyc = rdtsc();\n"
4446 "        time_offset = pc-E<gt>time_offset;\n"
4447 "        time_mult   = pc-E<gt>time_mult;\n"
4448 "        time_shift  = pc-E<gt>time_shift;\n"
4449 "    }\n"
4450 msgstr ""
4451
4452 #. type: Plain text
4453 #: build/C/man2/perf_event_open.2:1201
4454 #, no-wrap
4455 msgid ""
4456 "    idx = pc-E<gt>index;\n"
4457 "    count = pc-E<gt>offset;\n"
4458 msgstr ""
4459
4460 #. type: Plain text
4461 #: build/C/man2/perf_event_open.2:1206
4462 #, no-wrap
4463 msgid ""
4464 "    if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
4465 "        width = pc-E<gt>pmc_width;\n"
4466 "        pmc = rdpmc(idx - 1);\n"
4467 "    }\n"
4468 msgstr ""
4469
4470 #. type: Plain text
4471 #: build/C/man2/perf_event_open.2:1209
4472 #, no-wrap
4473 msgid ""
4474 "    barrier();\n"
4475 "} while (pc-E<gt>lock != seq);\n"
4476 msgstr ""
4477
4478 #. type: TP
4479 #: build/C/man2/perf_event_open.2:1211
4480 #, no-wrap
4481 msgid "I<pmc_width>"
4482 msgstr ""
4483
4484 #. type: Plain text
4485 #: build/C/man2/perf_event_open.2:1218
4486 msgid ""
4487 "If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
4488 "using the rdpmc or equivalent instruction.  This can be used to sign extend "
4489 "the result like:"
4490 msgstr ""
4491
4492 #. type: Plain text
4493 #: build/C/man2/perf_event_open.2:1224
4494 #, no-wrap
4495 msgid ""
4496 "pmc E<lt>E<lt>= 64 - pmc_width;\n"
4497 "pmc E<gt>E<gt>= 64 - pmc_width; // signed shift right\n"
4498 "count += pmc;\n"
4499 msgstr ""
4500
4501 #. type: TP
4502 #: build/C/man2/perf_event_open.2:1226
4503 #, no-wrap
4504 msgid "I<time_shift>, I<time_mult>, I<time_offset>"
4505 msgstr ""
4506
4507 #. type: Plain text
4508 #: build/C/man2/perf_event_open.2:1233
4509 msgid ""
4510 "If I<cap_usr_time>, these fields can be used to compute the time delta since "
4511 "time_enabled (in nanoseconds) using rdtsc or similar."
4512 msgstr ""
4513
4514 #. type: Plain text
4515 #: build/C/man2/perf_event_open.2:1241
4516 #, no-wrap
4517 msgid ""
4518 "    u64 quot, rem;\n"
4519 "    u64 delta;\n"
4520 "    quot = (cyc E<gt>E<gt> time_shift);\n"
4521 "    rem = cyc & ((1 E<lt>E<lt> time_shift) - 1);\n"
4522 "    delta = time_offset + quot * time_mult +\n"
4523 "            ((rem * time_mult) E<gt>E<gt> time_shift);\n"
4524 msgstr ""
4525
4526 #. type: Plain text
4527 #: build/C/man2/perf_event_open.2:1253
4528 msgid ""
4529 "Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
4530 "the seqcount loop described above.  This delta can then be added to enabled "
4531 "and possible running (if idx), improving the scaling:"
4532 msgstr ""
4533
4534 #. type: Plain text
4535 #: build/C/man2/perf_event_open.2:1261
4536 #, no-wrap
4537 msgid ""
4538 "    enabled += delta;\n"
4539 "    if (idx)\n"
4540 "        running += delta;\n"
4541 "    quot = count / running;\n"
4542 "    rem  = count % running;\n"
4543 "    count = quot * enabled + (rem * enabled) / running;\n"
4544 msgstr ""
4545
4546 #. type: TP
4547 #: build/C/man2/perf_event_open.2:1262
4548 #, no-wrap
4549 msgid "I<data_head>"
4550 msgstr ""
4551
4552 #. type: Plain text
4553 #: build/C/man2/perf_event_open.2:1268
4554 msgid ""
4555 "This points to the head of the data section.  The value continuously "
4556 "increases, it does not wrap.  The value needs to be manually wrapped by the "
4557 "size of the mmap buffer before accessing the samples."
4558 msgstr ""
4559
4560 #. type: Plain text
4561 #: build/C/man2/perf_event_open.2:1271
4562 msgid ""
4563 "On SMP-capable platforms, after reading the data_head value, user space "
4564 "should issue an rmb()."
4565 msgstr ""
4566
4567 #. type: TP
4568 #: build/C/man2/perf_event_open.2:1271
4569 #, no-wrap
4570 msgid "I<data_tail;>"
4571 msgstr ""
4572
4573 #. type: Plain text
4574 #: build/C/man2/perf_event_open.2:1279
4575 msgid ""
4576 "When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
4577 "by user space to reflect the last read data.  In this case the kernel will "
4578 "not over-write unread data."
4579 msgstr ""
4580
4581 #. type: Plain text
4582 #: build/C/man2/perf_event_open.2:1281
4583 msgid "The following 2^n ring-buffer pages have the layout described below."
4584 msgstr ""
4585
4586 #. type: Plain text
4587 #: build/C/man2/perf_event_open.2:1295
4588 msgid ""
4589 "If I<perf_event_attr.sample_id_all> is set, then all event types will have "
4590 "the sample_type selected fields related to where/when (identity)  an event "
4591 "took place (TID, TIME, ID, CPU, STREAM_ID) described in "
4592 "B<PERF_RECORD_SAMPLE> below, it will be stashed just after the "
4593 "I<perf_event_header> and the fields already present for the existing fields, "
4594 "i.e., at the end of the payload.  That way a newer perf.data file will be "
4595 "supported by older perf tools, with these new optional fields being ignored."
4596 msgstr ""
4597
4598 #. type: Plain text
4599 #: build/C/man2/perf_event_open.2:1297
4600 msgid "The mmap values start with a header:"
4601 msgstr ""
4602
4603 #. type: Plain text
4604 #: build/C/man2/perf_event_open.2:1305
4605 #, no-wrap
4606 msgid ""
4607 "struct perf_event_header {\n"
4608 "    __u32   type;\n"
4609 "    __u16   misc;\n"
4610 "    __u16   size;\n"
4611 "};\n"
4612 msgstr ""
4613
4614 #. type: Plain text
4615 #: build/C/man2/perf_event_open.2:1311
4616 msgid "Below, we describe the I<perf_event_header> fields in more detail."
4617 msgstr ""
4618
4619 #. type: Plain text
4620 #: build/C/man2/perf_event_open.2:1320
4621 msgid ""
4622 "The I<type> value is one of the below.  The values in the corresponding "
4623 "record (that follows the header)  depend on the I<type> selected as shown."
4624 msgstr ""
4625
4626 #. type: TP
4627 #: build/C/man2/perf_event_open.2:1321
4628 #, no-wrap
4629 msgid "B<PERF_RECORD_MMAP>"
4630 msgstr ""
4631
4632 #. type: Plain text
4633 #: build/C/man2/perf_event_open.2:1328
4634 msgid ""
4635 "The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
4636 "user-space IPs to code.  They have the following structure:"
4637 msgstr ""
4638
4639 #. type: Plain text
4640 #: build/C/man2/perf_event_open.2:1339
4641 #, no-wrap
4642 msgid ""
4643 "struct {\n"
4644 "    struct perf_event_header header;\n"
4645 "    u32    pid, tid;\n"
4646 "    u64    addr;\n"
4647 "    u64    len;\n"
4648 "    u64    pgoff;\n"
4649 "    char   filename[];\n"
4650 "};\n"
4651 msgstr ""
4652
4653 #. type: TP
4654 #: build/C/man2/perf_event_open.2:1341
4655 #, no-wrap
4656 msgid "B<PERF_RECORD_LOST>"
4657 msgstr ""
4658
4659 #. type: Plain text
4660 #: build/C/man2/perf_event_open.2:1344
4661 msgid "This record indicates when events are lost."
4662 msgstr ""
4663
4664 #. type: Plain text
4665 #: build/C/man2/perf_event_open.2:1352
4666 #, no-wrap
4667 msgid ""
4668 "struct {\n"
4669 "    struct perf_event_header header;\n"
4670 "    u64 id;\n"
4671 "    u64 lost;\n"
4672 "};\n"
4673 msgstr ""
4674
4675 #. type: Plain text
4676 #: build/C/man2/perf_event_open.2:1358
4677 msgid "is the unique event ID for the samples that were lost."
4678 msgstr ""
4679
4680 #. type: TP
4681 #: build/C/man2/perf_event_open.2:1358
4682 #, no-wrap
4683 msgid "I<lost>"
4684 msgstr ""
4685
4686 #. type: Plain text
4687 #: build/C/man2/perf_event_open.2:1361
4688 #, fuzzy
4689 #| msgid "Returns the number of processes woken up."
4690 msgid "is the number of events that were lost."
4691 msgstr "wake したプロセスの数を返す。"
4692
4693 #. type: TP
4694 #: build/C/man2/perf_event_open.2:1362
4695 #, no-wrap
4696 msgid "B<PERF_RECORD_COMM>"
4697 msgstr ""
4698
4699 #. type: Plain text
4700 #: build/C/man2/perf_event_open.2:1365
4701 msgid "This record indicates a change in the process name."
4702 msgstr ""
4703
4704 #. type: Plain text
4705 #: build/C/man2/perf_event_open.2:1373
4706 #, no-wrap
4707 msgid ""
4708 "struct {\n"
4709 "    struct perf_event_header header;\n"
4710 "    u32 pid, tid;\n"
4711 "    char comm[];\n"
4712 "};\n"
4713 msgstr ""
4714
4715 #. type: TP
4716 #: build/C/man2/perf_event_open.2:1375
4717 #, no-wrap
4718 msgid "B<PERF_RECORD_EXIT>"
4719 msgstr "B<PERF_RECORD_EXIT>"
4720
4721 #. type: Plain text
4722 #: build/C/man2/perf_event_open.2:1378
4723 msgid "This record indicates a process exit event."
4724 msgstr ""
4725
4726 #. type: Plain text
4727 #: build/C/man2/perf_event_open.2:1387 build/C/man2/perf_event_open.2:1415
4728 #, no-wrap
4729 msgid ""
4730 "struct {\n"
4731 "    struct perf_event_header header;\n"
4732 "    u32 pid, ppid;\n"
4733 "    u32 tid, ptid;\n"
4734 "    u64 time;\n"
4735 "};\n"
4736 msgstr ""
4737
4738 #. type: TP
4739 #: build/C/man2/perf_event_open.2:1389
4740 #, no-wrap
4741 msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
4742 msgstr ""
4743
4744 #. type: Plain text
4745 #: build/C/man2/perf_event_open.2:1392
4746 msgid "This record indicates a throttle/unthrottle event."
4747 msgstr ""
4748
4749 #. type: Plain text
4750 #: build/C/man2/perf_event_open.2:1401
4751 #, no-wrap
4752 msgid ""
4753 "struct {\n"
4754 "    struct perf_event_header header;\n"
4755 "    u64 time;\n"
4756 "    u64 id;\n"
4757 "    u64 stream_id;\n"
4758 "};\n"
4759 msgstr ""
4760
4761 #. type: TP
4762 #: build/C/man2/perf_event_open.2:1403
4763 #, no-wrap
4764 msgid "B<PERF_RECORD_FORK>"
4765 msgstr "B<PERF_RECORD_FORK>"
4766
4767 #. type: Plain text
4768 #: build/C/man2/perf_event_open.2:1406
4769 msgid "This record indicates a fork event."
4770 msgstr ""
4771
4772 #. type: TP
4773 #: build/C/man2/perf_event_open.2:1417
4774 #, no-wrap
4775 msgid "B<PERF_RECORD_READ>"
4776 msgstr ""
4777
4778 #. type: Plain text
4779 #: build/C/man2/perf_event_open.2:1420
4780 msgid "This record indicates a read event."
4781 msgstr ""
4782
4783 #. type: Plain text
4784 #: build/C/man2/perf_event_open.2:1428
4785 #, no-wrap
4786 msgid ""
4787 "struct {\n"
4788 "    struct perf_event_header header;\n"
4789 "    u32 pid, tid;\n"
4790 "    struct read_format values;\n"
4791 "};\n"
4792 msgstr ""
4793
4794 #. type: TP
4795 #: build/C/man2/perf_event_open.2:1430
4796 #, no-wrap
4797 msgid "B<PERF_RECORD_SAMPLE>"
4798 msgstr ""
4799
4800 #. type: Plain text
4801 #: build/C/man2/perf_event_open.2:1433
4802 msgid "This record indicates a sample."
4803 msgstr ""
4804
4805 #. type: Plain text
4806 #: build/C/man2/perf_event_open.2:1463
4807 #, no-wrap
4808 msgid ""
4809 "struct {\n"
4810 "    struct perf_event_header header;\n"
4811 "    u64   ip;         /* if PERF_SAMPLE_IP */\n"
4812 "    u32   pid, tid;   /* if PERF_SAMPLE_TID */\n"
4813 "    u64   time;       /* if PERF_SAMPLE_TIME */\n"
4814 "    u64   addr;       /* if PERF_SAMPLE_ADDR */\n"
4815 "    u64   id;         /* if PERF_SAMPLE_ID */\n"
4816 "    u64   stream_id;  /* if PERF_SAMPLE_STREAM_ID */\n"
4817 "    u32   cpu, res;   /* if PERF_SAMPLE_CPU */\n"
4818 "    u64   period;     /* if PERF_SAMPLE_PERIOD */\n"
4819 "    struct read_format v; /* if PERF_SAMPLE_READ */\n"
4820 "    u64   nr;         /* if PERF_SAMPLE_CALLCHAIN */\n"
4821 "    u64   ips[nr];    /* if PERF_SAMPLE_CALLCHAIN */\n"
4822 "    u32   size;       /* if PERF_SAMPLE_RAW */\n"
4823 "    char  data[size]; /* if PERF_SAMPLE_RAW */\n"
4824 "    u64   bnr;        /* if PERF_SAMPLE_BRANCH_STACK */\n"
4825 "    struct perf_branch_entry lbr[bnr];\n"
4826 "                      /* if PERF_SAMPLE_BRANCH_STACK */\n"
4827 "    u64   abi;        /* if PERF_SAMPLE_REGS_USER */\n"
4828 "    u64   regs[weight(mask)];\n"
4829 "                      /* if PERF_SAMPLE_REGS_USER */\n"
4830 "    u64   size;       /* if PERF_SAMPLE_STACK_USER */\n"
4831 "    char  data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
4832 "    u64   dyn_size;   /* if PERF_SAMPLE_STACK_USER */\n"
4833 "    u64   weight;     /* if PERF_SAMPLE_WEIGHT */\n"
4834 "    u64   data_src;   /* if PERF_SAMPLE_DATA_SRC */\n"
4835 "};\n"
4836 msgstr ""
4837
4838 #. type: TP
4839 #: build/C/man2/perf_event_open.2:1465
4840 #, no-wrap
4841 msgid "I<ip>"
4842 msgstr ""
4843
4844 #. type: Plain text
4845 #: build/C/man2/perf_event_open.2:1471
4846 msgid ""
4847 "If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
4848 "included."
4849 msgstr ""
4850
4851 #. type: TP
4852 #: build/C/man2/perf_event_open.2:1471
4853 #, no-wrap
4854 msgid "I<pid>, I<tid>"
4855 msgstr ""
4856
4857 #. type: Plain text
4858 #: build/C/man2/perf_event_open.2:1477
4859 msgid ""
4860 "If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
4861 "ID are included."
4862 msgstr ""
4863
4864 #. type: TP
4865 #: build/C/man2/perf_event_open.2:1477
4866 #, no-wrap
4867 msgid "I<time>"
4868 msgstr ""
4869
4870 #. type: Plain text
4871 #: build/C/man2/perf_event_open.2:1485
4872 msgid ""
4873 "If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included.  "
4874 "This is obtained via local_clock() which is a hardware timestamp if "
4875 "available and the jiffies value if not."
4876 msgstr ""
4877
4878 #. type: TP
4879 #: build/C/man2/perf_event_open.2:1485
4880 #, no-wrap
4881 msgid "I<addr>"
4882 msgstr ""
4883
4884 #. type: Plain text
4885 #: build/C/man2/perf_event_open.2:1492
4886 msgid ""
4887 "If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included.  This "
4888 "is usually the address of a tracepoint, breakpoint, or software event; "
4889 "otherwise the value is 0."
4890 msgstr ""
4891
4892 #. type: Plain text
4893 #: build/C/man2/perf_event_open.2:1500
4894 msgid ""
4895 "If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included.  If the "
4896 "event is a member of an event group, the group leader ID is returned.  This "
4897 "ID is the same as the one returned by B<PERF_FORMAT_ID>."
4898 msgstr ""
4899
4900 #. type: TP
4901 #: build/C/man2/perf_event_open.2:1500
4902 #, no-wrap
4903 msgid "I<stream_id>"
4904 msgstr ""
4905
4906 #. type: Plain text
4907 #: build/C/man2/perf_event_open.2:1510
4908 msgid ""
4909 "If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included.  "
4910 "Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader.  "
4911 "This ID is the same as the one returned by B<PERF_FORMAT_ID>."
4912 msgstr ""
4913
4914 #. type: TP
4915 #: build/C/man2/perf_event_open.2:1510
4916 #, no-wrap
4917 msgid "I<cpu>, I<res>"
4918 msgstr ""
4919
4920 #. type: Plain text
4921 #: build/C/man2/perf_event_open.2:1517
4922 msgid ""
4923 "If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
4924 "CPU was being used, in addition to a reserved (unused)  32-bit value."
4925 msgstr ""
4926
4927 #. type: TP
4928 #: build/C/man2/perf_event_open.2:1517
4929 #, no-wrap
4930 msgid "I<period>"
4931 msgstr ""
4932
4933 #. type: Plain text
4934 #: build/C/man2/perf_event_open.2:1523
4935 msgid ""
4936 "If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
4937 "sampling period is written."
4938 msgstr ""
4939
4940 #. type: TP
4941 #: build/C/man2/perf_event_open.2:1523
4942 #, no-wrap
4943 msgid "I<v>"
4944 msgstr ""
4945
4946 #. type: Plain text
4947 #: build/C/man2/perf_event_open.2:1534
4948 msgid ""
4949 "If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
4950 "included which has values for all events in the event group.  The values "
4951 "included depend on the I<read_format> value used at B<perf_event_open>()  "
4952 "time."
4953 msgstr ""
4954
4955 #. type: TP
4956 #: build/C/man2/perf_event_open.2:1534
4957 #, no-wrap
4958 msgid "I<nr>, I<ips[nr]>"
4959 msgstr ""
4960
4961 #. type: Plain text
4962 #: build/C/man2/perf_event_open.2:1542
4963 msgid ""
4964 "If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
4965 "which indicates how many following 64-bit instruction pointers will follow.  "
4966 "This is the current callchain."
4967 msgstr ""
4968
4969 #. type: TP
4970 #: build/C/man2/perf_event_open.2:1542
4971 #, no-wrap
4972 msgid "I<size>, I<data[size]>"
4973 msgstr ""
4974
4975 #. type: Plain text
4976 #: build/C/man2/perf_event_open.2:1549
4977 msgid ""
4978 "If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
4979 "included followed by an array of 8-bit values of length size.  The values "
4980 "are padded with 0 to have 64-bit alignment."
4981 msgstr ""
4982
4983 #. type: Plain text
4984 #: build/C/man2/perf_event_open.2:1554
4985 msgid ""
4986 "This RAW record data is opaque with respect to the ABI.  The ABI doesn't "
4987 "make any promises with respect to the stability of its content, it may vary "
4988 "depending on event, hardware, and kernel version."
4989 msgstr ""
4990
4991 #. type: TP
4992 #: build/C/man2/perf_event_open.2:1554
4993 #, no-wrap
4994 msgid "I<bnr>, I<lbr[bnr]>"
4995 msgstr ""
4996
4997 #. type: Plain text
4998 #: build/C/man2/perf_event_open.2:1563
4999 msgid ""
5000 "If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
5001 "the number of records is included, followed by I<bnr> I<perf_branch_entry> "
5002 "structures which each include the fields:"
5003 msgstr ""
5004
5005 #. type: TP
5006 #: build/C/man2/perf_event_open.2:1564
5007 #, no-wrap
5008 msgid "I<from>"
5009 msgstr ""
5010
5011 #. type: Plain text
5012 #: build/C/man2/perf_event_open.2:1567
5013 msgid "indicating the source instruction (may not be a branch)"
5014 msgstr ""
5015
5016 #. type: TP
5017 #: build/C/man2/perf_event_open.2:1567
5018 #, no-wrap
5019 msgid "I<to>"
5020 msgstr ""
5021
5022 #. type: Plain text
5023 #: build/C/man2/perf_event_open.2:1570
5024 msgid "the branch target"
5025 msgstr ""
5026
5027 #. type: TP
5028 #: build/C/man2/perf_event_open.2:1570
5029 #, no-wrap
5030 msgid "I<mispred>"
5031 msgstr ""
5032
5033 #. type: Plain text
5034 #: build/C/man2/perf_event_open.2:1573
5035 msgid "the branch target was mispredicted"
5036 msgstr ""
5037
5038 #. type: TP
5039 #: build/C/man2/perf_event_open.2:1573
5040 #, no-wrap
5041 msgid "I<predicted>"
5042 msgstr ""
5043
5044 #. type: Plain text
5045 #: build/C/man2/perf_event_open.2:1576
5046 msgid "the branch target was predicted."
5047 msgstr ""
5048
5049 #. type: Plain text
5050 #: build/C/man2/perf_event_open.2:1579
5051 msgid ""
5052 "The entries are from most to least recent, so the first entry has the most "
5053 "recent branch."
5054 msgstr ""
5055
5056 #. type: Plain text
5057 #: build/C/man2/perf_event_open.2:1586
5058 msgid ""
5059 "Support for I<mispred> and I<predicted> is optional; if not supported, both "
5060 "values will be 0."
5061 msgstr ""
5062
5063 #. type: TP
5064 #: build/C/man2/perf_event_open.2:1587
5065 #, no-wrap
5066 msgid "I<abi>, I<regs[weight(mask)]>"
5067 msgstr ""
5068
5069 #. type: Plain text
5070 #: build/C/man2/perf_event_open.2:1592
5071 msgid ""
5072 "If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
5073 "recorded."
5074 msgstr ""
5075
5076 #. type: Plain text
5077 #: build/C/man2/perf_event_open.2:1598
5078 msgid ""
5079 "The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
5080 "B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
5081 msgstr ""
5082
5083 #. type: Plain text
5084 #: build/C/man2/perf_event_open.2:1608
5085 msgid ""
5086 "The I<regs> field is an array of the CPU registers that were specified by "
5087 "the I<sample_regs_user> attr field.  The number of values is the number of "
5088 "bits set in the I<sample_regs_user> bitmask."
5089 msgstr ""
5090
5091 #. type: TP
5092 #: build/C/man2/perf_event_open.2:1608
5093 #, no-wrap
5094 msgid "I<size>, I<data[size]>, I<dyn_size>"
5095 msgstr ""
5096
5097 #. type: Plain text
5098 #: build/C/man2/perf_event_open.2:1622
5099 msgid ""
5100 "If B<PERF_SAMPLE_STACK_USER> is enabled, then record the user stack to "
5101 "enable backtracing.  I<size> is the size requested by the user in "
5102 "I<stack_user_size> or else the maximum record size.  I<data> is the stack "
5103 "data.  I<dyn_size> is the amount of data actually dumped (can be less than "
5104 "I<size>)."
5105 msgstr ""
5106
5107 #. type: TP
5108 #: build/C/man2/perf_event_open.2:1622
5109 #, no-wrap
5110 msgid "I<weight>"
5111 msgstr ""
5112
5113 #. type: Plain text
5114 #: build/C/man2/perf_event_open.2:1630
5115 msgid ""
5116 "If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64 bit value provided by the "
5117 "hardware is recorded that indicates how costly the event was.  This allows "
5118 "expensive events to stand out more clearly in profiles."
5119 msgstr ""
5120
5121 #. type: TP
5122 #: build/C/man2/perf_event_open.2:1630
5123 #, no-wrap
5124 msgid "I<data_src>"
5125 msgstr ""
5126
5127 #. type: Plain text
5128 #: build/C/man2/perf_event_open.2:1636
5129 msgid ""
5130 "If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64 bit value is recorded that "
5131 "is made up of the following fields:"
5132 msgstr ""
5133
5134 #. type: TP
5135 #: build/C/man2/perf_event_open.2:1637
5136 #, no-wrap
5137 msgid "I<mem_op>"
5138 msgstr ""
5139
5140 #. type: Plain text
5141 #: build/C/man2/perf_event_open.2:1650
5142 msgid ""
5143 "type of opcode, a bitwise combination of B<PERF_MEM_OP_NA> (not available), "
5144 "B<PERF_MEM_OP_LOAD> (load instruction), B<PERF_MEM_OP_STORE> (store "
5145 "instruction), B<PERF_MEM_OP_PFETCH> (prefetch), and B<PERF_MEM_OP_EXEC> "
5146 "(executable code)."
5147 msgstr ""
5148
5149 #. type: TP
5150 #: build/C/man2/perf_event_open.2:1650
5151 #, no-wrap
5152 msgid "I<mem_lvl>"
5153 msgstr ""
5154
5155 #. type: Plain text
5156 #: build/C/man2/perf_event_open.2:1681
5157 msgid ""
5158 "memory hierarchy level hit or miss, a bitwise combination of "
5159 "B<PERF_MEM_LVL_NA> (not available), B<PERF_MEM_LVL_HIT> (hit), "
5160 "B<PERF_MEM_LVL_MISS> (miss), B<PERF_MEM_LVL_L1> (level 1 cache), "
5161 "B<PERF_MEM_LVL_LFB> (line fill buffer), B<PERF_MEM_LVL_L2> (level 2 cache), "
5162 "B<PERF_MEM_LVL_L3> (level 3 cache), B<PERF_MEM_LVL_LOC_RAM> (local DRAM), "
5163 "B<PERF_MEM_LVL_REM_RAM1> (remote DRAM 1 hop), B<PERF_MEM_LVL_REM_RAM2> "
5164 "(remote DRAM 2 hops), B<PERF_MEM_LVL_REM_CCE1> (remote cache 1 hop), "
5165 "B<PERF_MEM_LVL_REM_CCE2> (remote cache 2 hops), B<PERF_MEM_LVL_IO> (I/O "
5166 "memory), and B<PERF_MEM_LVL_UNC> (uncached memory)."
5167 msgstr ""
5168
5169 #. type: TP
5170 #: build/C/man2/perf_event_open.2:1681
5171 #, no-wrap
5172 msgid "I<mem_snoop>"
5173 msgstr ""
5174
5175 #. type: Plain text
5176 #: build/C/man2/perf_event_open.2:1694
5177 msgid ""
5178 "snoop mode, a bitwise combination of B<PERF_MEM_SNOOP_NA> (not available), "
5179 "B<PERF_MEM_SNOOP_NONE> (no snoop), B<PERF_MEM_SNOOP_HIT> (snoop hit), "
5180 "B<PERF_MEM_SNOOP_MISS> (snoop miss), and B<PERF_MEM_SNOOP_HITM> (snoop hit "
5181 "modified)."
5182 msgstr ""
5183
5184 #. type: TP
5185 #: build/C/man2/perf_event_open.2:1694
5186 #, no-wrap
5187 msgid "I<mem_lock>"
5188 msgstr ""
5189
5190 #. type: Plain text
5191 #: build/C/man2/perf_event_open.2:1701
5192 msgid ""
5193 "lock instruction, a bitwise combination of B<PERF_MEM_LOCK_NA> (not "
5194 "available) and B<PERF_MEM_LOCK_LOCKED> (locked transaction)."
5195 msgstr ""
5196
5197 #. type: TP
5198 #: build/C/man2/perf_event_open.2:1701
5199 #, no-wrap
5200 msgid "I<mem_dtlb>"
5201 msgstr ""
5202
5203 #. type: Plain text
5204 #: build/C/man2/perf_event_open.2:1718
5205 msgid ""
5206 "tlb access hit or miss, a bitwise combination of B<PERF_MEM_TLB_NA> (not "
5207 "available), B<PERF_MEM_TLB_HIT> (hit), B<PERF_MEM_TLB_MISS> (miss), "
5208 "B<PERF_MEM_TLB_L1> (level 1 TLB), B<PERF_MEM_TLB_L2> (level 2 TLB), "
5209 "B<PERF_MEM_TLB_WK> (hardware walker), and B<PERF_MEM_TLB_OS> (OS fault "
5210 "handler)."
5211 msgstr ""
5212
5213 #. type: TP
5214 #: build/C/man2/perf_event_open.2:1721
5215 #, no-wrap
5216 msgid "I<misc>"
5217 msgstr ""
5218
5219 #. type: Plain text
5220 #: build/C/man2/perf_event_open.2:1726
5221 msgid "The I<misc> field contains additional information about the sample."
5222 msgstr ""
5223
5224 #. type: Plain text
5225 #: build/C/man2/perf_event_open.2:1731
5226 msgid ""
5227 "The CPU mode can be determined from this value by masking with "
5228 "B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
5229 "these are not bit masks, only one can be set at a time):"
5230 msgstr ""
5231
5232 #. type: TP
5233 #: build/C/man2/perf_event_open.2:1732
5234 #, no-wrap
5235 msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
5236 msgstr ""
5237
5238 #. type: Plain text
5239 #: build/C/man2/perf_event_open.2:1735
5240 msgid "Unknown CPU mode."
5241 msgstr ""
5242
5243 #. type: TP
5244 #: build/C/man2/perf_event_open.2:1735
5245 #, no-wrap
5246 msgid "B<PERF_RECORD_MISC_KERNEL>"
5247 msgstr ""
5248
5249 #. type: Plain text
5250 #: build/C/man2/perf_event_open.2:1738
5251 msgid "Sample happened in the kernel."
5252 msgstr ""
5253
5254 #. type: TP
5255 #: build/C/man2/perf_event_open.2:1738
5256 #, no-wrap
5257 msgid "B<PERF_RECORD_MISC_USER>"
5258 msgstr ""
5259
5260 #. type: Plain text
5261 #: build/C/man2/perf_event_open.2:1741
5262 msgid "Sample happened in user code."
5263 msgstr ""
5264
5265 #. type: TP
5266 #: build/C/man2/perf_event_open.2:1741
5267 #, no-wrap
5268 msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
5269 msgstr ""
5270
5271 #. type: Plain text
5272 #: build/C/man2/perf_event_open.2:1744
5273 msgid "Sample happened in the hypervisor."
5274 msgstr ""
5275
5276 #. type: TP
5277 #: build/C/man2/perf_event_open.2:1744
5278 #, no-wrap
5279 msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
5280 msgstr ""
5281
5282 #. type: Plain text
5283 #: build/C/man2/perf_event_open.2:1747
5284 msgid "Sample happened in the guest kernel."
5285 msgstr ""
5286
5287 #. type: TP
5288 #: build/C/man2/perf_event_open.2:1747
5289 #, no-wrap
5290 msgid "B<PERF_RECORD_MISC_GUEST_USER>"
5291 msgstr ""
5292
5293 #. type: Plain text
5294 #: build/C/man2/perf_event_open.2:1750
5295 msgid "Sample happened in guest user code."
5296 msgstr ""
5297
5298 #. type: Plain text
5299 #: build/C/man2/perf_event_open.2:1754
5300 msgid "In addition, one of the following bits can be set:"
5301 msgstr ""
5302
5303 #. type: TP
5304 #: build/C/man2/perf_event_open.2:1754
5305 #, no-wrap
5306 msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
5307 msgstr "B<PERF_RECORD_MISC_MMAP_DATA>"
5308
5309 #. type: Plain text
5310 #: build/C/man2/perf_event_open.2:1758
5311 msgid ""
5312 "This is set when the mapping is not executable; otherwise the mapping is "
5313 "executable."
5314 msgstr ""
5315
5316 #. type: TP
5317 #: build/C/man2/perf_event_open.2:1758
5318 #, no-wrap
5319 msgid "B<PERF_RECORD_MISC_EXACT_IP>"
5320 msgstr ""
5321
5322 #. type: Plain text
5323 #: build/C/man2/perf_event_open.2:1766
5324 msgid ""
5325 "This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
5326 "instruction that triggered the event.  See also I<perf_event_attr."
5327 "precise_ip>."
5328 msgstr ""
5329
5330 #. type: TP
5331 #: build/C/man2/perf_event_open.2:1766
5332 #, no-wrap
5333 msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
5334 msgstr ""
5335
5336 #. type: Plain text
5337 #: build/C/man2/perf_event_open.2:1769
5338 msgid "This indicates there is extended data available (currently not used)."
5339 msgstr ""
5340
5341 #. type: Plain text
5342 #: build/C/man2/perf_event_open.2:1773
5343 msgid "This indicates the size of the record."
5344 msgstr ""
5345
5346 #. type: SS
5347 #: build/C/man2/perf_event_open.2:1774
5348 #, no-wrap
5349 msgid "Signal overflow"
5350 msgstr ""
5351
5352 #. type: Plain text
5353 #: build/C/man2/perf_event_open.2:1783
5354 msgid ""
5355 "Events can be set to deliver a signal when a threshold is crossed.  The "
5356 "signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2)  "
5357 "and B<fcntl>(2), system calls."
5358 msgstr ""
5359
5360 #. type: Plain text
5361 #: build/C/man2/perf_event_open.2:1787
5362 msgid ""
5363 "To generate signals, sampling must be enabled (I<sample_period> must have a "
5364 "non-zero value)."
5365 msgstr ""
5366
5367 #. type: Plain text
5368 #: build/C/man2/perf_event_open.2:1789
5369 msgid "There are two ways to generate signals."
5370 msgstr ""
5371
5372 #. type: Plain text
5373 #: build/C/man2/perf_event_open.2:1799
5374 msgid ""
5375 "The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
5376 "will generate a signal if a certain number of samples or bytes have been "
5377 "written to the mmap ring buffer.  In this case a signal of type B<POLL_IN> "
5378 "is sent."
5379 msgstr ""
5380
5381 #. type: Plain text
5382 #: build/C/man2/perf_event_open.2:1811
5383 msgid ""
5384 "The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl.  This ioctl "
5385 "adds to a counter that decrements each time the event overflows.  When non-"
5386 "zero, a B<POLL_IN> signal is sent on overflow, but once the value reaches 0, "
5387 "a signal is sent of type B<POLL_HUP> and the underlying event is disabled."
5388 msgstr ""
5389
5390 #.  FIXME(Vince) : Find out when this was introduced
5391 #. type: Plain text
5392 #: build/C/man2/perf_event_open.2:1817
5393 msgid ""
5394 "Note: on newer kernels (definitely noticed with 3.2)  a signal is provided "
5395 "for every overflow, even if I<wakeup_events> is not set."
5396 msgstr ""
5397
5398 #. type: SS
5399 #: build/C/man2/perf_event_open.2:1817
5400 #, no-wrap
5401 msgid "rdpmc instruction"
5402 msgstr ""
5403
5404 #. type: Plain text
5405 #: build/C/man2/perf_event_open.2:1824
5406 msgid ""
5407 "Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
5408 "low-latency reads without having to enter the kernel.  Note that using "
5409 "I<rdpmc> is not necessarily faster than other methods for reading event "
5410 "values."
5411 msgstr ""
5412
5413 #. type: Plain text
5414 #: build/C/man2/perf_event_open.2:1829
5415 msgid ""
5416 "Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
5417 "page; documentation on how to calculate event values can be found in that "
5418 "section."
5419 msgstr ""
5420
5421 #. type: SS
5422 #: build/C/man2/perf_event_open.2:1829
5423 #, no-wrap
5424 msgid "perf_event ioctl calls"
5425 msgstr ""
5426
5427 #. type: Plain text
5428 #: build/C/man2/perf_event_open.2:1834
5429 msgid "Various ioctls act on B<perf_event_open>()  file descriptors"
5430 msgstr ""
5431
5432 #. type: TP
5433 #: build/C/man2/perf_event_open.2:1834
5434 #, no-wrap
5435 msgid "B<PERF_EVENT_IOC_ENABLE>"
5436 msgstr "B<PERF_EVENT_IOC_ENABLE>"
5437
5438 #. type: Plain text
5439 #: build/C/man2/perf_event_open.2:1838
5440 msgid ""
5441 "Enables the individual event or event group specified by the file descriptor "
5442 "argument."
5443 msgstr ""
5444
5445 #. type: Plain text
5446 #: build/C/man2/perf_event_open.2:1844
5447 msgid ""
5448 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5449 "events in a group are enabled, even if the event specified is not the group "
5450 "leader (but see BUGS)."
5451 msgstr ""
5452
5453 #. type: TP
5454 #: build/C/man2/perf_event_open.2:1844
5455 #, no-wrap
5456 msgid "B<PERF_EVENT_IOC_DISABLE>"
5457 msgstr "B<PERF_EVENT_IOC_DISABLE>"
5458
5459 #. type: Plain text
5460 #: build/C/man2/perf_event_open.2:1848
5461 msgid ""
5462 "Disables the individual counter or event group specified by the file "
5463 "descriptor argument."
5464 msgstr ""
5465
5466 #. type: Plain text
5467 #: build/C/man2/perf_event_open.2:1855
5468 msgid ""
5469 "Enabling or disabling the leader of a group enables or disables the entire "
5470 "group; that is, while the group leader is disabled, none of the counters in "
5471 "the group will count.  Enabling or disabling a member of a group other than "
5472 "the leader affects only that counter; disabling a non-leader stops that "
5473 "counter from counting but doesn't affect any other counter."
5474 msgstr ""
5475
5476 #. type: Plain text
5477 #: build/C/man2/perf_event_open.2:1861
5478 msgid ""
5479 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5480 "events in a group are disabled, even if the event specified is not the group "
5481 "leader (but see BUGS)."
5482 msgstr ""
5483
5484 #. type: TP
5485 #: build/C/man2/perf_event_open.2:1861
5486 #, no-wrap
5487 msgid "B<PERF_EVENT_IOC_REFRESH>"
5488 msgstr "B<PERF_EVENT_IOC_REFRESH>"
5489
5490 #. type: Plain text
5491 #: build/C/man2/perf_event_open.2:1875
5492 msgid ""
5493 "Non-inherited overflow counters can use this to enable a counter for a "
5494 "number of overflows specified by the argument, after which it is disabled.  "
5495 "Subsequent calls of this ioctl add the argument value to the current count.  "
5496 "A signal with B<POLL_IN> set will happen on each overflow until the count "
5497 "reaches 0; when that happens a signal with POLL_HUP set is sent and the "
5498 "event is disabled.  Using an argument of 0 is considered undefined behavior."
5499 msgstr ""
5500
5501 #. type: TP
5502 #: build/C/man2/perf_event_open.2:1875
5503 #, no-wrap
5504 msgid "B<PERF_EVENT_IOC_RESET>"
5505 msgstr "B<PERF_EVENT_IOC_RESET>"
5506
5507 #. type: Plain text
5508 #: build/C/man2/perf_event_open.2:1885
5509 msgid ""
5510 "Reset the event count specified by the file descriptor argument to zero.  "
5511 "This resets only the counts; there is no way to reset the multiplexing "
5512 "I<time_enabled> or I<time_running> values."
5513 msgstr ""
5514
5515 #. type: Plain text
5516 #: build/C/man2/perf_event_open.2:1891
5517 msgid ""
5518 "If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
5519 "events in a group are reset, even if the event specified is not the group "
5520 "leader (but see BUGS)."
5521 msgstr ""
5522
5523 #. type: TP
5524 #: build/C/man2/perf_event_open.2:1891
5525 #, no-wrap
5526 msgid "B<PERF_EVENT_IOC_PERIOD>"
5527 msgstr "B<PERF_EVENT_IOC_PERIOD>"
5528
5529 #. type: Plain text
5530 #: build/C/man2/perf_event_open.2:1895
5531 msgid ""
5532 "IOC_PERIOD is the command to update the period; it does not update the "
5533 "current period but instead defers until next."
5534 msgstr ""
5535
5536 #. type: Plain text
5537 #: build/C/man2/perf_event_open.2:1898
5538 msgid ""
5539 "The argument is a pointer to a 64-bit value containing the desired new "
5540 "period."
5541 msgstr ""
5542
5543 #. type: TP
5544 #: build/C/man2/perf_event_open.2:1898
5545 #, no-wrap
5546 msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
5547 msgstr ""
5548
5549 #. type: Plain text
5550 #: build/C/man2/perf_event_open.2:1903
5551 msgid ""
5552 "This tells the kernel to report event notifications to the specified file "
5553 "descriptor rather than the default one.  The file descriptors must all be on "
5554 "the same CPU."
5555 msgstr ""
5556
5557 #. type: Plain text
5558 #: build/C/man2/perf_event_open.2:1906
5559 msgid ""
5560 "The argument specifies the desired file descriptor, or -1 if output should "
5561 "be ignored."
5562 msgstr ""
5563
5564 #. type: TP
5565 #: build/C/man2/perf_event_open.2:1906
5566 #, no-wrap
5567 msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
5568 msgstr "B<PERF_EVENT_IOC_SET_FILTER> (Linux 2.6.33 以降)"
5569
5570 #. type: Plain text
5571 #: build/C/man2/perf_event_open.2:1909
5572 msgid "This adds an ftrace filter to this event."
5573 msgstr ""
5574
5575 #. type: Plain text
5576 #: build/C/man2/perf_event_open.2:1911
5577 msgid "The argument is a pointer to the desired ftrace filter."
5578 msgstr ""
5579
5580 #. type: SS
5581 #: build/C/man2/perf_event_open.2:1911
5582 #, no-wrap
5583 msgid "Using prctl"
5584 msgstr ""
5585
5586 #. type: Plain text
5587 #: build/C/man2/perf_event_open.2:1924
5588 msgid ""
5589 "A process can enable or disable all the event groups that are attached to it "
5590 "using the B<prctl>(2)  B<PR_TASK_PERF_EVENTS_ENABLE> and "
5591 "B<PR_TASK_PERF_EVENTS_DISABLE> operations.  This applies to all counters on "
5592 "the current process, whether created by this process or by another, and does "
5593 "not affect any counters that this process has created on other processes.  "
5594 "It enables or disables only the group leaders, not any other members in the "
5595 "groups."
5596 msgstr ""
5597
5598 #. type: SS
5599 #: build/C/man2/perf_event_open.2:1924
5600 #, no-wrap
5601 msgid "perf_event related configuration files"
5602 msgstr ""
5603
5604 #. type: Plain text
5605 #: build/C/man2/perf_event_open.2:1927
5606 msgid "Files in I</proc/sys/kernel/>"
5607 msgstr ""
5608
5609 #. type: TP
5610 #: build/C/man2/perf_event_open.2:1928
5611 #, no-wrap
5612 msgid "I</proc/sys/kernel/perf_event_paranoid>"
5613 msgstr ""
5614
5615 #. type: Plain text
5616 #: build/C/man2/perf_event_open.2:1934
5617 msgid ""
5618 "The I<perf_event_paranoid> file can be set to restrict access to the "
5619 "performance counters."
5620 msgstr ""
5621
5622 #. type: Plain text
5623 #: build/C/man2/perf_event_open.2:1936
5624 msgid "2 - only allow user-space measurements"
5625 msgstr ""
5626
5627 #. type: Plain text
5628 #: build/C/man2/perf_event_open.2:1938
5629 msgid "1 - (default) allow both kernel and user measurements"
5630 msgstr ""
5631
5632 #. type: Plain text
5633 #: build/C/man2/perf_event_open.2:1940
5634 msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
5635 msgstr ""
5636
5637 #. type: Plain text
5638 #: build/C/man2/perf_event_open.2:1942
5639 msgid "-1 - no restrictions"
5640 msgstr ""
5641
5642 #. type: Plain text
5643 #: build/C/man2/perf_event_open.2:1947
5644 msgid ""
5645 "The existence of the I<perf_event_paranoid> file is the official method for "
5646 "determining if a kernel supports B<perf_event_open>()."
5647 msgstr ""
5648
5649 #. type: TP
5650 #: build/C/man2/perf_event_open.2:1947
5651 #, no-wrap
5652 msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
5653 msgstr ""
5654
5655 #. type: Plain text
5656 #: build/C/man2/perf_event_open.2:1956
5657 msgid ""
5658 "This sets the maximum sample rate.  Setting this too high can allow users to "
5659 "sample at a rate that impacts overall machine performance and potentially "
5660 "lock up the machine.  The default value is 100000 (samples per second)."
5661 msgstr ""
5662
5663 #. type: TP
5664 #: build/C/man2/perf_event_open.2:1956
5665 #, no-wrap
5666 msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
5667 msgstr ""
5668
5669 #. type: Plain text
5670 #: build/C/man2/perf_event_open.2:1961
5671 msgid ""
5672 "Maximum number of pages an unprivileged user can mlock (2) .  The default is "
5673 "516 (kB)."
5674 msgstr ""
5675
5676 #. type: Plain text
5677 #: build/C/man2/perf_event_open.2:1965
5678 msgid "Files in I</sys/bus/event_source/devices/>"
5679 msgstr ""
5680
5681 #. type: Plain text
5682 #: build/C/man2/perf_event_open.2:1971
5683 msgid ""
5684 "Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
5685 "monitoring.  Information on how to program these PMUs can be found under I</"
5686 "sys/bus/event_source/devices/>.  Each subdirectory corresponds to a "
5687 "different PMU."
5688 msgstr ""
5689
5690 #. type: TP
5691 #: build/C/man2/perf_event_open.2:1971
5692 #, no-wrap
5693 msgid "I</sys/bus/event_source/devices/*/type> (Since Linux 2.6.38)"
5694 msgstr "I</sys/bus/event_source/devices/*/type> (Linux 2.6.38 以降)"
5695
5696 #. type: Plain text
5697 #: build/C/man2/perf_event_open.2:1976
5698 msgid ""
5699 "This contains an integer that can be used in the I<type> field of "
5700 "perf_event_attr to indicate you wish to use this PMU."
5701 msgstr ""
5702
5703 #. type: TP
5704 #: build/C/man2/perf_event_open.2:1976
5705 #, no-wrap
5706 msgid "I</sys/bus/event_source/devices/*/rdpmc> (Since Linux 3.4)"
5707 msgstr ""
5708
5709 #. type: Plain text
5710 #: build/C/man2/perf_event_open.2:1981
5711 msgid ""
5712 "If this file is 1, then direct user-space access to the performance counter "
5713 "registers is allowed via the rdpmc instruction.  This can be disabled by "
5714 "echoing 0 to the file."
5715 msgstr ""
5716
5717 #. type: TP
5718 #: build/C/man2/perf_event_open.2:1981
5719 #, no-wrap
5720 msgid "I</sys/bus/event_source/devices/*/format/> (Since Linux 3.4)"
5721 msgstr ""
5722
5723 #. type: Plain text
5724 #: build/C/man2/perf_event_open.2:1987
5725 msgid ""
5726 "This sub-directory contains information on the architecture-specific sub-"
5727 "fields available for programming the various I<config> fields in the "
5728 "perf_event_attr struct."
5729 msgstr ""
5730
5731 #. type: Plain text
5732 #: build/C/man2/perf_event_open.2:1997
5733 msgid ""
5734 "The content of each file is the name of the config field, followed by a "
5735 "colon, followed by a series of integer bit ranges separated by commas.  For "
5736 "example, the file I<event> may contain the value I<config1:1,6-10,44> which "
5737 "indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
5738 "perf_event_attr::config1."
5739 msgstr ""
5740
5741 #. type: TP
5742 #: build/C/man2/perf_event_open.2:1997
5743 #, no-wrap
5744 msgid "I</sys/bus/event_source/devices/*/events/> (Since Linux 3.4)"
5745 msgstr ""
5746
5747 #. type: Plain text
5748 #: build/C/man2/perf_event_open.2:2006
5749 msgid ""
5750 "This sub-directory contains files with pre-defined events.  The contents are "
5751 "strings describing the event settings expressed in terms of the fields found "
5752 "in the previously mentioned I<./format/> directory.  These are not "
5753 "necessarily complete lists of all events supported by a PMU, but usually a "
5754 "subset of events deemed useful or interesting."
5755 msgstr ""
5756
5757 #. type: Plain text
5758 #: build/C/man2/perf_event_open.2:2014
5759 msgid ""
5760 "The content of each file is a list of attribute names separated by commas.  "
5761 "Each entry has an optional value (either hex or decimal).  If no value is "
5762 "specified than it is assumed to be a single-bit field with a value of 1.  An "
5763 "example entry may look like this: I<event=0x2,inv,ldlat=3>"
5764 msgstr ""
5765
5766 #. type: TP
5767 #: build/C/man2/perf_event_open.2:2014
5768 #, no-wrap
5769 msgid "I</sys/bus/event_source/devices/*/uevent>"
5770 msgstr ""
5771
5772 #. type: Plain text
5773 #: build/C/man2/perf_event_open.2:2018
5774 msgid ""
5775 "This file is the standard kernel device interface for injecting hotplug "
5776 "events."
5777 msgstr ""
5778
5779 #. type: TP
5780 #: build/C/man2/perf_event_open.2:2018
5781 #, no-wrap
5782 msgid "I</sys/bus/event_source/devices/*/cpumask> (Since Linux 3.7)"
5783 msgstr ""
5784
5785 #. type: Plain text
5786 #: build/C/man2/perf_event_open.2:2025
5787 msgid ""
5788 "The cpumask file contains a comma-separated list of integers that indicate a "
5789 "representative cpu number for each socket (package)  on the motherboard.  "
5790 "This is needed when setting up uncore or northbridge events, as those PMUs "
5791 "present socket-wide events."
5792 msgstr ""
5793
5794 #. type: Plain text
5795 #: build/C/man2/perf_event_open.2:2032
5796 msgid ""
5797 "B<perf_event_open>()  returns the new file descriptor, or -1 if an error "
5798 "occurred (in which case, I<errno> is set appropriately)."
5799 msgstr ""
5800
5801 #. type: Plain text
5802 #: build/C/man2/perf_event_open.2:2036
5803 msgid "Returned if the specified event is not available."
5804 msgstr ""
5805
5806 #. type: TP
5807 #: build/C/man2/perf_event_open.2:2036
5808 #, no-wrap
5809 msgid "B<ENOSPC>"
5810 msgstr "B<ENOSPC>"
5811
5812 #. type: Plain text
5813 #: build/C/man2/perf_event_open.2:2046
5814 msgid ""
5815 "Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
5816 "was returned.  Linus did not like this, and this was changed to B<EINVAL>.  "
5817 "B<ENOSPC> is still returned if you try to read results into too small of a "
5818 "buffer."
5819 msgstr ""
5820
5821 #. type: SH
5822 #: build/C/man2/perf_event_open.2:2046
5823 #, no-wrap
5824 msgid "VERSION"
5825 msgstr "バージョン"
5826
5827 #. type: Plain text
5828 #: build/C/man2/perf_event_open.2:2051
5829 msgid ""
5830 "B<perf_event_open>()  was introduced in Linux 2.6.31 but was called "
5831 "B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
5832 msgstr ""
5833
5834 #. type: Plain text
5835 #: build/C/man2/perf_event_open.2:2056
5836 #, fuzzy
5837 #| msgid ""
5838 #| "B<personality>()  is Linux-specific and should not be used in programs "
5839 #| "intended to be portable."
5840 msgid ""
5841 "This B<perf_event_open>()  system call Linux- specific and should not be "
5842 "used in programs intended to be portable."
5843 msgstr ""
5844 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
5845 "はない。"
5846
5847 #. type: Plain text
5848 #: build/C/man2/perf_event_open.2:2060
5849 #, fuzzy
5850 #| msgid ""
5851 #| "Glibc does not provide a wrapper for this system call; call it using "
5852 #| "B<syscall>(2)."
5853 msgid ""
5854 "Glibc does not provide a wrapper for this system call; call it using "
5855 "B<syscall>(2).  See the example below."
5856 msgstr ""
5857 "glibc はこのシステムコールに対するラッパー関数を提供していない。 B<syscall>"
5858 "(2)  を使って呼び出すこと。"
5859
5860 #. type: Plain text
5861 #: build/C/man2/perf_event_open.2:2066
5862 msgid ""
5863 "The official way of knowing if B<perf_event_open>()  support is enabled is "
5864 "checking for the existence of the file I</proc/sys/kernel/"
5865 "perf_event_paranoid>."
5866 msgstr ""
5867
5868 #. type: SH
5869 #: build/C/man2/perf_event_open.2:2066 build/C/man2/pivot_root.2:134
5870 #: build/C/man2/ptrace.2:1884
5871 #, no-wrap
5872 msgid "BUGS"
5873 msgstr "バグ"
5874
5875 #. type: Plain text
5876 #: build/C/man2/perf_event_open.2:2073
5877 msgid ""
5878 "The B<F_SETOWN_EX> option to B<fcntl>(2)  is needed to properly get overflow "
5879 "signals in threads.  This was introduced in Linux 2.6.32."
5880 msgstr ""
5881
5882 #. type: Plain text
5883 #: build/C/man2/perf_event_open.2:2081
5884 msgid ""
5885 "Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
5886 "could be scheduled together until read time.  The same happens on all known "
5887 "kernels if the NMI watchdog is enabled.  This means to see if a given set of "
5888 "events works you have to B<perf_event_open>(), start, then read before you "
5889 "know for sure you can get valid measurements."
5890 msgstr ""
5891
5892 #. type: Plain text
5893 #: build/C/man2/perf_event_open.2:2085
5894 msgid ""
5895 "Prior to Linux 2.6.34 event constraints were not enforced by the kernel.  In "
5896 "that case, some events would silently return \"0\" if the kernel scheduled "
5897 "them in an improper counter slot."
5898 msgstr ""
5899
5900 #. type: Plain text
5901 #: build/C/man2/perf_event_open.2:2088
5902 msgid ""
5903 "Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
5904 "results could be returned."
5905 msgstr ""
5906
5907 #. type: Plain text
5908 #: build/C/man2/perf_event_open.2:2091
5909 msgid ""
5910 "Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
5911 "\"inherit\" is enabled and many threads are started."
5912 msgstr ""
5913
5914 #. type: Plain text
5915 #: build/C/man2/perf_event_open.2:2095
5916 msgid ""
5917 "Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
5918 "processes."
5919 msgstr ""
5920
5921 #. type: Plain text
5922 #: build/C/man2/perf_event_open.2:2100
5923 msgid ""
5924 "In older Linux 2.6 versions, refreshing an event group leader refreshed all "
5925 "siblings, and refreshing with a parameter of 0 enabled infinite refresh.  "
5926 "This behavior is unsupported and should not be relied on."
5927 msgstr ""
5928
5929 #. type: Plain text
5930 #: build/C/man2/perf_event_open.2:2106
5931 msgid ""
5932 "There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
5933 "ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
5934 "the union has a non-zero value in it."
5935 msgstr ""
5936
5937 #. type: Plain text
5938 #: build/C/man2/perf_event_open.2:2112
5939 msgid ""
5940 "From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
5941 "was broken and would repeatedly operate on the event specified rather than "
5942 "iterating across all sibling events in a group."
5943 msgstr ""
5944
5945 #. type: Plain text
5946 #: build/C/man2/perf_event_open.2:2117
5947 msgid ""
5948 "Always double-check your results! Various generalized events have had wrong "
5949 "values.  For example, retired branches measured the wrong thing on AMD "
5950 "machines until Linux 2.6.35."
5951 msgstr ""
5952
5953 #. type: SH
5954 #: build/C/man2/perf_event_open.2:2117 build/C/man2/process_vm_readv.2:295
5955 #: build/C/man2/splice.2:223 build/C/man2/tee.2:130
5956 #, no-wrap
5957 msgid "EXAMPLE"
5958 msgstr "例"
5959
5960 #. type: Plain text
5961 #: build/C/man2/perf_event_open.2:2121
5962 msgid ""
5963 "The following is a short example that measures the total instruction count "
5964 "of a call to B<printf>(3)."
5965 msgstr ""
5966
5967 #. type: Plain text
5968 #: build/C/man2/perf_event_open.2:2130
5969 #, no-wrap
5970 msgid ""
5971 "#include E<lt>stdlib.hE<gt>\n"
5972 "#include E<lt>stdio.hE<gt>\n"
5973 "#include E<lt>unistd.hE<gt>\n"
5974 "#include E<lt>string.hE<gt>\n"
5975 "#include E<lt>sys/ioctl.hE<gt>\n"
5976 "#include E<lt>linux/perf_event.hE<gt>\n"
5977 "#include E<lt>asm/unistd.hE<gt>\n"
5978 msgstr ""
5979 "#include E<lt>stdlib.hE<gt>\n"
5980 "#include E<lt>stdio.hE<gt>\n"
5981 "#include E<lt>unistd.hE<gt>\n"
5982 "#include E<lt>string.hE<gt>\n"
5983 "#include E<lt>sys/ioctl.hE<gt>\n"
5984 "#include E<lt>linux/perf_event.hE<gt>\n"
5985 "#include E<lt>asm/unistd.hE<gt>\n"
5986
5987 #. type: Plain text
5988 #: build/C/man2/perf_event_open.2:2136
5989 #, no-wrap
5990 msgid ""
5991 "long\n"
5992 "perf_event_open(struct perf_event_attr *hw_event, pid_t pid,\n"
5993 "                int cpu, int group_fd, unsigned long flags)\n"
5994 "{\n"
5995 "    int ret;\n"
5996 msgstr ""
5997
5998 #. type: Plain text
5999 #: build/C/man2/perf_event_open.2:2141
6000 #, no-wrap
6001 msgid ""
6002 "    ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
6003 "                   group_fd, flags);\n"
6004 "    return ret;\n"
6005 "}\n"
6006 msgstr ""
6007
6008 #. type: Plain text
6009 #: build/C/man2/perf_event_open.2:2148
6010 #, no-wrap
6011 msgid ""
6012 "int\n"
6013 "main(int argc, char **argv)\n"
6014 "{\n"
6015 "    struct perf_event_attr pe;\n"
6016 "    long long count;\n"
6017 "    int fd;\n"
6018 msgstr ""
6019 "int\n"
6020 "main(int argc, char **argv)\n"
6021 "{\n"
6022 "    struct perf_event_attr pe;\n"
6023 "    long long count;\n"
6024 "    int fd;\n"
6025
6026 #. type: Plain text
6027 #: build/C/man2/perf_event_open.2:2156
6028 #, no-wrap
6029 msgid ""
6030 "    memset(&pe, 0, sizeof(struct perf_event_attr));\n"
6031 "    pe.type = PERF_TYPE_HARDWARE;\n"
6032 "    pe.size = sizeof(struct perf_event_attr);\n"
6033 "    pe.config = PERF_COUNT_HW_INSTRUCTIONS;\n"
6034 "    pe.disabled = 1;\n"
6035 "    pe.exclude_kernel = 1;\n"
6036 "    pe.exclude_hv = 1;\n"
6037 msgstr ""
6038
6039 #. type: Plain text
6040 #: build/C/man2/perf_event_open.2:2162
6041 #, no-wrap
6042 msgid ""
6043 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6044 "    if (fd == -1) {\n"
6045 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6046 "       exit(EXIT_FAILURE);\n"
6047 "    }\n"
6048 msgstr ""
6049 "    fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
6050 "    if (fd == -1) {\n"
6051 "       fprintf(stderr, \"Error opening leader %llx\\en\", pe.config);\n"
6052 "       exit(EXIT_FAILURE);\n"
6053 "    }\n"
6054
6055 #. type: Plain text
6056 #: build/C/man2/perf_event_open.2:2165
6057 #, no-wrap
6058 msgid ""
6059 "    ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
6060 "    ioctl(fd, PERF_EVENT_IOC_ENABLE, 0);\n"
6061 msgstr ""
6062
6063 #. type: Plain text
6064 #: build/C/man2/perf_event_open.2:2167
6065 #, no-wrap
6066 msgid "    printf(\"Measuring instruction count for this printf\\en\");\n"
6067 msgstr ""
6068
6069 #. type: Plain text
6070 #: build/C/man2/perf_event_open.2:2170
6071 #, no-wrap
6072 msgid ""
6073 "    ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
6074 "    read(fd, &count, sizeof(long long));\n"
6075 msgstr ""
6076
6077 #. type: Plain text
6078 #: build/C/man2/perf_event_open.2:2172
6079 #, no-wrap
6080 msgid "    printf(\"Used %lld instructions\\en\", count);\n"
6081 msgstr ""
6082
6083 #. type: Plain text
6084 #: build/C/man2/perf_event_open.2:2175
6085 #, no-wrap
6086 msgid ""
6087 "    close(fd);\n"
6088 "}\n"
6089 msgstr ""
6090
6091 #. type: Plain text
6092 #: build/C/man2/perf_event_open.2:2182
6093 msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6094 msgstr "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
6095
6096 #. type: TH
6097 #: build/C/man2/perfmonctl.2:27
6098 #, no-wrap
6099 msgid "PERFMONCTL"
6100 msgstr ""
6101
6102 #. type: Plain text
6103 #: build/C/man2/perfmonctl.2:30
6104 msgid "perfmonctl - interface to IA-64 performance monitoring unit"
6105 msgstr ""
6106
6107 #. type: Plain text
6108 #: build/C/man2/perfmonctl.2:34
6109 #, no-wrap
6110 msgid ""
6111 "B<#include E<lt>syscall.hE<gt>>\n"
6112 "B<#include E<lt>perfmon.hE<gt>>\n"
6113 msgstr ""
6114 "B<#include E<lt>syscall.hE<gt>>\n"
6115 "B<#include E<lt>perfmon.hE<gt>>\n"
6116
6117 #. type: Plain text
6118 #: build/C/man2/perfmonctl.2:36
6119 #, no-wrap
6120 msgid "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6121 msgstr "B<long perfmonctl(int >I<fd>B<, int >I<cmd>B<, void *>I<arg>B<, int >I<narg>B<);>\n"
6122
6123 #. type: Plain text
6124 #: build/C/man2/perfmonctl.2:47
6125 msgid ""
6126 "The IA-64-specific B<perfmonctl>()  system call provides an interface to the "
6127 "PMU (performance monitoring unit).  The PMU consists of PMD (performance "
6128 "monitoring data) registers and PMC (performance monitoring control) "
6129 "registers, which gather hardware statistics."
6130 msgstr ""
6131
6132 #. type: Plain text
6133 #: build/C/man2/perfmonctl.2:57
6134 msgid ""
6135 "B<perfmonctl>()  applies the operation I<cmd> to the input arguments "
6136 "specified by I<arg>.  The number of arguments is defined by I<narg>.  The "
6137 "I<fd> argument specifies the perfmon context to operate on."
6138 msgstr ""
6139
6140 #. type: Plain text
6141 #: build/C/man2/perfmonctl.2:61
6142 msgid "Supported values for I<cmd> are:"
6143 msgstr ""
6144
6145 #. type: TP
6146 #: build/C/man2/perfmonctl.2:61
6147 #, no-wrap
6148 msgid "B<PFM_CREATE_CONTEXT>"
6149 msgstr "B<PFM_CREATE_CONTEXT>"
6150
6151 #. type: Plain text
6152 #: build/C/man2/perfmonctl.2:65
6153 #, no-wrap
6154 msgid "B<perfmonctl(int >I<fd>B<, PFM_CREATE_CONTEXT, pfarg_context_t *>I<ctxt>B<, 1);>\n"
6155 msgstr ""
6156
6157 #. type: Plain text
6158 #: build/C/man2/perfmonctl.2:67
6159 msgid "Set up a context."
6160 msgstr ""
6161
6162 #. type: Plain text
6163 #: build/C/man2/perfmonctl.2:74
6164 msgid ""
6165 "The I<fd> parameter is ignored.  A new perfmon context is created as "
6166 "specified in I<ctxt> and its file descriptor is returned in I<ctxt-"
6167 "E<gt>ctx_fd>."
6168 msgstr ""
6169
6170 #. type: Plain text
6171 #: build/C/man2/perfmonctl.2:86
6172 msgid ""
6173 "The file descriptor can be used in subsequent calls to B<perfmonctl>()  and "
6174 "can be used to read event notifications (type I<pfm_msg_t>)  using B<read>"
6175 "(2).  The file descriptor is pollable using B<select>(2), B<poll>(2), and "
6176 "B<epoll>(7)."
6177 msgstr ""
6178
6179 #. type: Plain text
6180 #: build/C/man2/perfmonctl.2:90
6181 msgid ""
6182 "The context can be destroyed by calling B<close>(2)  on the file descriptor."
6183 msgstr ""
6184
6185 #. type: TP
6186 #: build/C/man2/perfmonctl.2:90
6187 #, no-wrap
6188 msgid "B<PFM_WRITE_PMCS>"
6189 msgstr ""
6190
6191 #. type: Plain text
6192 #: build/C/man2/perfmonctl.2:95
6193 #, no-wrap
6194 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMCS, pfarg_reg_t *>I<pmcs>B<, n);>\n"
6195 msgstr ""
6196
6197 #. type: Plain text
6198 #: build/C/man2/perfmonctl.2:97
6199 msgid "Set PMC registers."
6200 msgstr ""
6201
6202 #. type: TP
6203 #: build/C/man2/perfmonctl.2:97
6204 #, no-wrap
6205 msgid "B<PFM_WRITE_PMDS>"
6206 msgstr ""
6207
6208 #. type: Plain text
6209 #: build/C/man2/perfmonctl.2:101
6210 #, no-wrap
6211 msgid "B<perfmonctl(int >I<fd>B<, PFM_WRITE_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6212 msgstr ""
6213
6214 #.  pfm_write_pmds()
6215 #. type: Plain text
6216 #: build/C/man2/perfmonctl.2:104
6217 msgid "Set PMD registers."
6218 msgstr ""
6219
6220 #. type: TP
6221 #: build/C/man2/perfmonctl.2:104
6222 #, no-wrap
6223 msgid "B<PFM_READ_PMDS>"
6224 msgstr ""
6225
6226 #. type: Plain text
6227 #: build/C/man2/perfmonctl.2:109
6228 #, no-wrap
6229 msgid "B<perfmonctl(int >I<fd>B<, PFM_READ_PMDS, pfarg_reg_t *>I<pmds>B<, n);>\n"
6230 msgstr ""
6231
6232 #. type: Plain text
6233 #: build/C/man2/perfmonctl.2:111
6234 msgid "Read PMD registers."
6235 msgstr ""
6236
6237 #. type: TP
6238 #: build/C/man2/perfmonctl.2:111
6239 #, no-wrap
6240 msgid "B<PFM_START>"
6241 msgstr ""
6242
6243 #.  .BI  "perfmonctl(int " fd ", PFM_START, arg, 1);
6244 #. type: Plain text
6245 #: build/C/man2/perfmonctl.2:117
6246 #, no-wrap
6247 msgid "B<perfmonctl(int >I<fd>B<, PFM_START, NULL, 0);>\n"
6248 msgstr ""
6249
6250 #. type: Plain text
6251 #: build/C/man2/perfmonctl.2:119
6252 msgid "Start monitoring."
6253 msgstr ""
6254
6255 #. type: TP
6256 #: build/C/man2/perfmonctl.2:119
6257 #, no-wrap
6258 msgid "B<PFM_STOP>"
6259 msgstr ""
6260
6261 #. type: Plain text
6262 #: build/C/man2/perfmonctl.2:124
6263 #, no-wrap
6264 msgid "B<perfmonctl(int >I<fd>B<, PFM_STOP, NULL, 0);>\n"
6265 msgstr ""
6266
6267 #. type: Plain text
6268 #: build/C/man2/perfmonctl.2:126
6269 msgid "Stop monitoring."
6270 msgstr ""
6271
6272 #. type: TP
6273 #: build/C/man2/perfmonctl.2:126
6274 #, no-wrap
6275 msgid "B<PFM_LOAD_CONTEXT>"
6276 msgstr "B<PFM_LOAD_CONTEXT>"
6277
6278 #. type: Plain text
6279 #: build/C/man2/perfmonctl.2:131
6280 #, no-wrap
6281 msgid "B<perfmonctl(int >I<fd>B<, PFM_LOAD_CONTEXT, pfarg_load_t *>I<largs>B<, 1);>\n"
6282 msgstr ""
6283
6284 #. type: Plain text
6285 #: build/C/man2/perfmonctl.2:133
6286 msgid "Attach the context to a thread."
6287 msgstr ""
6288
6289 #. type: TP
6290 #: build/C/man2/perfmonctl.2:133
6291 #, no-wrap
6292 msgid "B<PFM_UNLOAD_CONTEXT>"
6293 msgstr ""
6294
6295 #. type: Plain text
6296 #: build/C/man2/perfmonctl.2:138
6297 #, no-wrap
6298 msgid "B<perfmonctl(int >I<fd>B<, PFM_UNLOAD_CONTEXT, NULL, 0);>\n"
6299 msgstr ""
6300
6301 #. type: Plain text
6302 #: build/C/man2/perfmonctl.2:140
6303 msgid "Detach the context from a thread."
6304 msgstr ""
6305
6306 #. type: TP
6307 #: build/C/man2/perfmonctl.2:140
6308 #, no-wrap
6309 msgid "B<PFM_RESTART>"
6310 msgstr ""
6311
6312 #. type: Plain text
6313 #: build/C/man2/perfmonctl.2:145
6314 #, no-wrap
6315 msgid "B<perfmonctl(int >I<fd>B<, PFM_RESTART, NULL, 0);>\n"
6316 msgstr ""
6317
6318 #. type: Plain text
6319 #: build/C/man2/perfmonctl.2:147
6320 msgid "Restart monitoring after receiving an overflow notification."
6321 msgstr ""
6322
6323 #. type: TP
6324 #: build/C/man2/perfmonctl.2:147
6325 #, no-wrap
6326 msgid "B<PFM_GET_FEATURES>"
6327 msgstr "B<PFM_GET_FEATURES>"
6328
6329 #. type: Plain text
6330 #: build/C/man2/perfmonctl.2:152
6331 #, no-wrap
6332 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_FEARURES, pfarg_features_t *>I<arg>B<, 1);>\n"
6333 msgstr ""
6334
6335 #. type: TP
6336 #: build/C/man2/perfmonctl.2:153
6337 #, no-wrap
6338 msgid "B<PFM_DEBUG>"
6339 msgstr ""
6340
6341 #. type: Plain text
6342 #: build/C/man2/perfmonctl.2:158
6343 #, no-wrap
6344 msgid "B<perfmonctl(int >I<fd>B<, PFM_DEBUG, >I<val>B<, 0);>\n"
6345 msgstr ""
6346
6347 #. type: Plain text
6348 #: build/C/man2/perfmonctl.2:162
6349 msgid "If I<val> is nonzero, enable debugging mode, otherwise disable."
6350 msgstr ""
6351
6352 #. type: TP
6353 #: build/C/man2/perfmonctl.2:162
6354 #, no-wrap
6355 msgid "B<PFM_GET_PMC_RESET_VAL>"
6356 msgstr ""
6357
6358 #. type: Plain text
6359 #: build/C/man2/perfmonctl.2:167
6360 #, no-wrap
6361 msgid "B<perfmonctl(int >I<fd>B<, PFM_GET_PMC_RESET_VAL, pfarg_reg_t * >I<req>B<, n);>\n"
6362 msgstr ""
6363
6364 #
6365 #
6366 #
6367 #.  .TP
6368 #.  .B PFM_CREATE_EVTSETS
6369 #.  create or modify event sets
6370 #.  .nf
6371 #.  .BI  "perfmonctl(int " fd ", PFM_CREATE_EVTSETS, pfarg_setdesc_t *desc , n);
6372 #.  .fi
6373 #.  .TP
6374 #.  .B PFM_DELETE_EVTSETS
6375 #.  delete event sets
6376 #.  .nf
6377 #.  .BI  "perfmonctl(int " fd ", PFM_DELETE_EVTSET, pfarg_setdesc_t *desc , n);
6378 #.  .fi
6379 #.  .TP
6380 #.  .B PFM_GETINFO_EVTSETS
6381 #.  get information about event sets
6382 #.  .nf
6383 #.  .BI  "perfmonctl(int " fd ", PFM_GETINFO_EVTSETS, pfarg_setinfo_t *info, n);
6384 #.  .fi
6385 #. type: Plain text
6386 #: build/C/man2/perfmonctl.2:190
6387 msgid "Reset PMC registers to default values."
6388 msgstr ""
6389
6390 #. type: Plain text
6391 #: build/C/man2/perfmonctl.2:196
6392 #, fuzzy
6393 #| msgid ""
6394 #| "On success, B<kexec_load>()  returns 0.  On error, -1 is returned and "
6395 #| "I<errno> is set to indicate the error."
6396 msgid ""
6397 "B<performctl>()  returns zero when the operation is successful.  On error, "
6398 "-1 is returned and I<errno> is set to indicate the cause of the error."
6399 msgstr ""
6400 "成功すると、 B<kexec_load> は 0 を返す。\n"
6401 "エラーの場合、 -1 が返り、 I<errno> にエラーを示す値が設定される。"
6402
6403 #. type: Plain text
6404 #: build/C/man2/perfmonctl.2:199
6405 #, fuzzy
6406 #| msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6407 msgid "B<perfmonctl>()  is available since Linux 2.4."
6408 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6409
6410 #. type: Plain text
6411 #: build/C/man2/perfmonctl.2:202
6412 msgid ""
6413 "B<perfmonctl>()  is Linux specific and is available only on the IA-64 "
6414 "architecture."
6415 msgstr ""
6416
6417 #. type: Plain text
6418 #: build/C/man2/perfmonctl.2:207
6419 msgid "B<gprof>(1)"
6420 msgstr ""
6421
6422 #. type: Plain text
6423 #: build/C/man2/perfmonctl.2:209
6424 msgid "The perfmon2 interface specification"
6425 msgstr ""
6426
6427 #. type: TH
6428 #: build/C/man2/personality.2:32
6429 #, no-wrap
6430 msgid "PERSONALITY"
6431 msgstr "PERSONALITY"
6432
6433 #. type: TH
6434 #: build/C/man2/personality.2:32
6435 #, no-wrap
6436 msgid "2003-01-01"
6437 msgstr "2003-01-01"
6438
6439 #. type: Plain text
6440 #: build/C/man2/personality.2:35
6441 msgid "personality - set the process execution domain"
6442 msgstr "personality - プロセスを実行するドメインを設定する"
6443
6444 #. type: Plain text
6445 #: build/C/man2/personality.2:37
6446 msgid "B<#include E<lt>sys/personality.hE<gt>>"
6447 msgstr "B<#include E<lt>sys/personality.hE<gt>>"
6448
6449 #. type: Plain text
6450 #: build/C/man2/personality.2:39
6451 msgid "B<int personality(unsigned long >I<persona>B<);>"
6452 msgstr "B<int personality(unsigned long >I<persona>B<);>"
6453
6454 #. type: Plain text
6455 #: build/C/man2/personality.2:47
6456 msgid ""
6457 "Linux supports different execution domains, or personalities, for each "
6458 "process.  Among other things, execution domains tell Linux how to map signal "
6459 "numbers into signal actions.  The execution domain system allows Linux to "
6460 "provide limited support for binaries compiled under other UNIX-like "
6461 "operating systems."
6462 msgstr ""
6463 "Linux は、プロセス毎の異なる実行ドメイン、すなわち パーソナリティ "
6464 "(personality) をサポートしている。 実行ドメインは Linux にシグナル番号にどの"
6465 "シグナルを割り付けるかを 教えたりする。また、実行ドメイン・システムにより、 "
6466 "Linux は他の UNIX 風のオペレーティング・システムでコンパイルされた バイナリに"
6467 "対する限定的なサポートを提供している。"
6468
6469 #. type: Plain text
6470 #: build/C/man2/personality.2:57
6471 msgid ""
6472 "This function will return the current B<personality>()  when I<persona> "
6473 "equals 0xffffffff.  Otherwise, it will make the execution domain referenced "
6474 "by I<persona> the new execution domain of the calling process."
6475 msgstr ""
6476 "B<personality ()> 関数は、 I<persona> が 0xffffffff の場合は現在の B<パーソナ"
6477 "リティ> を返す。 それ以外の場合、 I<persona> により参照される実行ドメイン"
6478 "を、 呼び出し元のプロセスの新しい実行ドメインとする。"
6479
6480 #. type: Plain text
6481 #: build/C/man2/personality.2:64
6482 msgid ""
6483 "On success, the previous I<persona> is returned.  On error, -1 is returned, "
6484 "and I<errno> is set appropriately."
6485 msgstr ""
6486 "成功した場合、以前の I<persona> が返される。エラーの場合は、-1 が返され、 "
6487 "I<errno> が適切に設定される。"
6488
6489 #. type: Plain text
6490 #: build/C/man2/personality.2:68
6491 msgid "The kernel was unable to change the personality."
6492 msgstr "カーネルがパーソナリティを変更できなかった。"
6493
6494 #. type: Plain text
6495 #: build/C/man2/personality.2:72
6496 msgid ""
6497 "B<personality>()  is Linux-specific and should not be used in programs "
6498 "intended to be portable."
6499 msgstr ""
6500 "B<personality>()  は Linux 固有であり、移植を意図したプログラムで使用すべきで"
6501 "はない。"
6502
6503 #. type: TH
6504 #: build/C/man2/pivot_root.2:10
6505 #, no-wrap
6506 msgid "PIVOT_ROOT"
6507 msgstr "PIVOT_ROOT"
6508
6509 #. type: Plain text
6510 #: build/C/man2/pivot_root.2:13
6511 msgid "pivot_root - change the root file system"
6512 msgstr "pivot_root - root ファイルシステムを変更する"
6513
6514 #. type: Plain text
6515 #: build/C/man2/pivot_root.2:15
6516 msgid ""
6517 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6518 msgstr ""
6519 "B<int pivot_root(const char *>I<new_root>B<, const char *>I<put_old>B<);>"
6520
6521 #.  The
6522 #.  .B CAP_SYS_ADMIN
6523 #.  capability is required.
6524 #. type: Plain text
6525 #: build/C/man2/pivot_root.2:27
6526 msgid ""
6527 "B<pivot_root>()  moves the root file system of the calling process to the "
6528 "directory I<put_old> and makes I<new_root> the new root file system of the "
6529 "calling process."
6530 msgstr ""
6531 "B<pivot_root>()  は呼び出し元のプロセスの root ファイルシステムを I<put_old> "
6532 "ディレクトリに移動し、 I<new_root> を呼び出し元のプロセスの新しい root ファイ"
6533 "ルシステムにする。"
6534
6535 #. type: Plain text
6536 #: build/C/man2/pivot_root.2:34
6537 msgid ""
6538 "The typical use of B<pivot_root>()  is during system startup, when the "
6539 "system mounts a temporary root file system (e.g., an B<initrd>), then mounts "
6540 "the real root file system, and eventually turns the latter into the current "
6541 "root of all relevant processes or threads."
6542 msgstr ""
6543 "B<pivot_root>()  の典型的な利用法は、システムの起動中にシステムが一時的な "
6544 "root ファイルシステム (例えば B<initrd>)  をマウントし、これに続いて本当の "
6545 "root ファイルシステムをマウントし、 後者を必要な全てのプロセス・スレッドの カ"
6546 "レント root に変更するような場合である。"
6547
6548 #. type: Plain text
6549 #: build/C/man2/pivot_root.2:46
6550 msgid ""
6551 "B<pivot_root>()  may or may not change the current root and the current "
6552 "working directory of any processes or threads which use the old root "
6553 "directory.  The caller of B<pivot_root>()  must ensure that processes with "
6554 "root or current working directory at the old root operate correctly in "
6555 "either case.  An easy way to ensure this is to change their root and current "
6556 "working directory to I<new_root> before invoking B<pivot_root>()."
6557 msgstr ""
6558 "古い root ディレクトリを使っていた全てのプロセスやスレッドの カレント root と"
6559 "カレントワーキングディレクトリを、 B<pivot_root>()  が変更するかどうかはわか"
6560 "らない。 B<pivot_root>()  の呼びだしプロセスは、古い root やカレントワーキン"
6561 "グディレクトリを使っていた プロセスが、いずれの場合でも正しく動作することを保"
6562 "証しなければならない。 これを簡単に行うには、それらのプロセスの root と カレ"
6563 "ントワーキングディレクトリを B<pivot_root>()  を呼び出す前に I<new_root> に変"
6564 "更しておくことである。"
6565
6566 #. type: Plain text
6567 #: build/C/man2/pivot_root.2:64
6568 msgid ""
6569 "The paragraph above is intentionally vague because the implementation of "
6570 "B<pivot_root>()  may change in the future.  At the time of writing, "
6571 "B<pivot_root>()  changes root and current working directory of each process "
6572 "or thread to I<new_root> if they point to the old root directory.  This is "
6573 "necessary in order to prevent kernel threads from keeping the old root "
6574 "directory busy with their root and current working directory, even if they "
6575 "never access the file system in any way.  In the future, there may be a "
6576 "mechanism for kernel threads to explicitly relinquish any access to the file "
6577 "system, such that this fairly intrusive mechanism can be removed from "
6578 "B<pivot_root>()."
6579 msgstr ""
6580 "上記の段落は、将来 B<pivot_root>()  が変更されるかも知れないことを鑑みて、わ"
6581 "ざと曖昧に書いてある。 本ページを記述している時点では、 B<pivot_root>()  は古"
6582 "い root ディレクトリを用いている全てのプロセス・スレッドの root と カレント"
6583 "ワーキングディレクトリを I<new_root> に変更する。これはカーネルのスレッドが古"
6584 "い root ディレクトリを busy 状態にしないために必要である。これらのスレッドが "
6585 "古いディレクトリを root やカレントワーキングディレクトリとしていると、 ファイ"
6586 "ルシステムに一切アクセスしない場合でも 古い root が busy になってしまうからで"
6587 "ある。 将来は、カーネルスレッドがあらゆるファイルシステムへのアクセスを 明示"
6588 "的に放棄するメカニズムができ、このでしゃばりな機能は B<pivot_root>()  から削"
6589 "除されるかもしれない。"
6590
6591 #. type: Plain text
6592 #: build/C/man2/pivot_root.2:72
6593 msgid ""
6594 "Note that this also applies to the calling process: B<pivot_root>()  may or "
6595 "may not affect its current working directory.  It is therefore recommended "
6596 "to call B<chdir(\"/\")> immediately after B<pivot_root>()."
6597 msgstr ""
6598 "これは呼び出し元のプロセスについても当てはまることに注意。 B<pivot_root>()  "
6599 "がカレントプロセスのカレントワーキングディレクトリに影響するかどうかは 分から"
6600 "ない。したがって B<pivot_root>()  の直後に B<chdir(\"/\")> を呼び出すとよい。"
6601
6602 #. type: Plain text
6603 #: build/C/man2/pivot_root.2:74
6604 msgid "The following restrictions apply to I<new_root> and I<put_old>:"
6605 msgstr "I<new_root> および I<put_old> には以下の制限がある:"
6606
6607 #. type: IP
6608 #: build/C/man2/pivot_root.2:74 build/C/man2/pivot_root.2:76
6609 #: build/C/man2/pivot_root.2:79 build/C/man2/pivot_root.2:83
6610 #, no-wrap
6611 msgid "-"
6612 msgstr "-"
6613
6614 #. type: Plain text
6615 #: build/C/man2/pivot_root.2:76
6616 msgid "They must be directories."
6617 msgstr "ディレクトリでなければならない。"
6618
6619 #. type: Plain text
6620 #: build/C/man2/pivot_root.2:79
6621 msgid ""
6622 "I<new_root> and I<put_old> must not be on the same file system as the "
6623 "current root."
6624 msgstr ""
6625 "I<new_root> と I<put_old> は現在の root と同じファイルシステムにあってはなら"
6626 "ない。"
6627
6628 #. type: Plain text
6629 #: build/C/man2/pivot_root.2:83
6630 msgid ""
6631 "I<put_old> must be underneath I<new_root>, that is, adding a nonzero number "
6632 "of I</..> to the string pointed to by I<put_old> must yield the same "
6633 "directory as I<new_root>."
6634 msgstr ""
6635 "I<put_old> は I<new_root> 以下になければならない。すなわち I<put_old> を差す"
6636 "文字列に 1 個以上の I<../> を付けることによって I<new_root> と同じディレクト"
6637 "リが得られなければならない。"
6638
6639 #. type: Plain text
6640 #: build/C/man2/pivot_root.2:85
6641 msgid "No other file system may be mounted on I<put_old>."
6642 msgstr "他のファイルシステムが I<put_old> にマウントされていてはならない。"
6643
6644 #. type: Plain text
6645 #: build/C/man2/pivot_root.2:89
6646 msgid "See also B<pivot_root>(8)  for additional usage examples."
6647 msgstr "利用例については B<pivot_root>(8)  を参照のこと。"
6648
6649 #. type: Plain text
6650 #: build/C/man2/pivot_root.2:96
6651 msgid ""
6652 "If the current root is not a mount point (e.g., after B<chroot>(2)  or "
6653 "B<pivot_root>(), see also below), not the old root directory, but the mount "
6654 "point of that file system is mounted on I<put_old>."
6655 msgstr ""
6656 "現在の root がマウントポイントではない (B<chroot>(2)  や B<pivot_root>()  の"
6657 "後など。以下も参照) 場合、 古い root ディレクトリではなく、 そのファイルシス"
6658 "テムのマウントポイントが I<put_old> にマウントされる。"
6659
6660 #. type: Plain text
6661 #: build/C/man2/pivot_root.2:101
6662 msgid ""
6663 "I<new_root> does not have to be a mount point.  In this case, I</proc/"
6664 "mounts> will show the mount point of the file system containing I<new_root> "
6665 "as root (I</>)."
6666 msgstr ""
6667 "I<new_root> はマウントポイントでなくてもよい。 この場合 I</proc/mounts> は、 "
6668 "I<new_root> を root (I</>)  とするファイルシステムのマウントポイントを表示す"
6669 "る。"
6670
6671 #. type: Plain text
6672 #: build/C/man2/pivot_root.2:110
6673 msgid ""
6674 "B<pivot_root>()  may return (in I<errno>) any of the errors returned by "
6675 "B<stat>(2).  Additionally, it may return:"
6676 msgstr ""
6677 "B<pivot_root>()  は B<stat>(2)  の返すあらゆるエラーを (I<errno> に) 返す可能"
6678 "性がある。さらに以下を返すことがある:"
6679
6680 #. type: Plain text
6681 #: build/C/man2/pivot_root.2:114
6682 msgid ""
6683 "I<new_root> or I<put_old> are on the current root file system, or a file "
6684 "system is already mounted on I<put_old>."
6685 msgstr ""
6686 "I<new_root> または I<put_old> が、現在の root ファイルシステム上にあるか、既"
6687 "に I<put_old> になんらかのファイルシステムがマウントされている。"
6688
6689 #. type: Plain text
6690 #: build/C/man2/pivot_root.2:117
6691 msgid "I<put_old> is not underneath I<new_root>."
6692 msgstr "I<put_old> が I<new_root> の下層にない。"
6693
6694 #. type: TP
6695 #: build/C/man2/pivot_root.2:117
6696 #, no-wrap
6697 msgid "B<ENOTDIR>"
6698 msgstr "B<ENOTDIR>"
6699
6700 #. type: Plain text
6701 #: build/C/man2/pivot_root.2:120
6702 msgid "I<new_root> or I<put_old> is not a directory."
6703 msgstr "I<new_root> または I<put_old> がディレクトリでない。"
6704
6705 #. type: Plain text
6706 #: build/C/man2/pivot_root.2:125
6707 msgid "The calling process does not have the B<CAP_SYS_ADMIN> capability."
6708 msgstr "呼び出し元のプロセスが B<CAP_SYS_ADMIN> ケーパビリティを持っていない。"
6709
6710 #. type: Plain text
6711 #: build/C/man2/pivot_root.2:128
6712 msgid "B<pivot_root>()  was introduced in Linux 2.3.41."
6713 msgstr "B<pivot_root>()  は Linux 2.3.41 で導入された。"
6714
6715 #. type: Plain text
6716 #: build/C/man2/pivot_root.2:131
6717 msgid "B<pivot_root>()  is Linux-specific and hence is not portable."
6718 msgstr "B<pivot_root>()  は Linux に固有のものなので、移植性はない。"
6719
6720 #. type: Plain text
6721 #: build/C/man2/pivot_root.2:138
6722 msgid ""
6723 "B<pivot_root>()  should not have to change root and current working "
6724 "directory of all other processes in the system."
6725 msgstr ""
6726 "B<pivot_root>()  はシステムの他のプロセス全ての root と カレントワーキング"
6727 "ディレクトリとを変更しなくてもよいはずである。"
6728
6729 #. type: Plain text
6730 #: build/C/man2/pivot_root.2:143
6731 msgid ""
6732 "Some of the more obscure uses of B<pivot_root>()  may quickly lead to "
6733 "insanity."
6734 msgstr ""
6735 "B<pivot_root>()  の使い方がもうちょっと曖昧になると、 あっという間にわけのわ"
6736 "からない状態になってしまうだろう"
6737
6738 #. type: Plain text
6739 #: build/C/man2/pivot_root.2:149
6740 msgid "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6741 msgstr "B<chdir>(2), B<chroot>(2), B<stat>(2), B<initrd>(4), B<pivot_root>(8)"
6742
6743 #. type: TH
6744 #: build/C/man2/process_vm_readv.2:29
6745 #, no-wrap
6746 msgid "PROCESS_VM_READV"
6747 msgstr ""
6748
6749 #. type: TH
6750 #: build/C/man2/process_vm_readv.2:29
6751 #, no-wrap
6752 msgid "2012-04-25"
6753 msgstr "2012-04-25"
6754
6755 #. type: Plain text
6756 #: build/C/man2/process_vm_readv.2:32
6757 msgid ""
6758 "process_vm_readv, process_vm_writev - transfer data between process address "
6759 "spaces"
6760 msgstr ""
6761
6762 #. type: Plain text
6763 #: build/C/man2/process_vm_readv.2:35
6764 #, no-wrap
6765 msgid "B<#include E<lt>sys/uio.hE<gt>>\n"
6766 msgstr "B<#include E<lt>sys/uio.hE<gt>>\n"
6767
6768 #. type: Plain text
6769 #: build/C/man2/process_vm_readv.2:42
6770 #, no-wrap
6771 msgid ""
6772 "B<ssize_t process_vm_readv(pid_t >I<pid>B<,>\n"
6773 "B<                         const struct iovec *>I<local_iov>B<,>\n"
6774 "B<                         unsigned long >I<liovcnt>B<,>\n"
6775 "B<                         const struct iovec *>I<remote_iov>B<,>\n"
6776 "B<                         unsigned long >I<riovcnt>B<,>\n"
6777 "B<                         unsigned long >I<flags>B<);>\n"
6778 msgstr ""
6779
6780 #. type: Plain text
6781 #: build/C/man2/process_vm_readv.2:49
6782 #, no-wrap
6783 msgid ""
6784 "B<ssize_t process_vm_writev(pid_t >I<pid>B<,>\n"
6785 "B<                          const struct iovec *>I<local_iov>B<,>\n"
6786 "B<                          unsigned long >I<liovcnt>B<,>\n"
6787 "B<                          const struct iovec *>I<remote_iov>B<,>\n"
6788 "B<                          unsigned long >I<riovcnt>B<,>\n"
6789 "B<                          unsigned long >I<flags>B<);>\n"
6790 msgstr ""
6791
6792 #. type: Plain text
6793 #: build/C/man2/process_vm_readv.2:57
6794 msgid ""
6795 "These system calls transfer data between the address space of the calling "
6796 "process (\"the local process\") and the process identified by I<pid> (\"the "
6797 "remote process\").  The data moves directly between the address spaces of "
6798 "the two processes, without passing through kernel space."
6799 msgstr ""
6800
6801 #. type: Plain text
6802 #: build/C/man2/process_vm_readv.2:82
6803 msgid ""
6804 "The B<process_vm_readv>()  system call transfers data from the remote "
6805 "process to the local process.  The data to be transferred is identified by "
6806 "I<remote_iov> and I<riovcnt>: I<remote_iov> is a pointer to an array "
6807 "describing address ranges in the process I<pid>, and I<riovcnt> specifies "
6808 "the number of elements in I<remote_iov>.  The data is transferred to the "
6809 "locations specified by I<local_iov> and I<liovcnt>: I<local_iov> is a "
6810 "pointer to an array describing address ranges in the calling process, and "
6811 "I<liovcnt> specifies the number of elements in I<local_iov>."
6812 msgstr ""
6813
6814 #. type: Plain text
6815 #: build/C/man2/process_vm_readv.2:96
6816 msgid ""
6817 "The B<process_vm_writev>()  system call is the converse of "
6818 "B<process_vm_readv>()\\(emit transfers data from the local process to the "
6819 "remote process.  Other than the direction of the transfer, the arguments "
6820 "I<liovcnt>, I<local_iov>, I<riovcnt>, and I<remote_iov> have the same "
6821 "meaning as for B<process_vm_readv>()."
6822 msgstr ""
6823
6824 #. type: Plain text
6825 #: build/C/man2/process_vm_readv.2:106
6826 msgid ""
6827 "The I<local_iov> and I<remote_iov> arguments point to an array of I<iovec> "
6828 "structures, defined in I<E<lt>sys/uio.hE<gt>> as:"
6829 msgstr ""
6830 "引き数 I<local_iov> と I<remote_iov> は I<iovec> 構造体の配列へのポイン\n"
6831 "タである。 I<iovec> 構造体は I<E<lt>sys/uio.hE<gt>> で以下のように定義\n"
6832 "されている:"
6833
6834 #. type: Plain text
6835 #: build/C/man2/process_vm_readv.2:113
6836 #, no-wrap
6837 msgid ""
6838 "struct iovec {\n"
6839 "    void  *iov_base;    /* Starting address */\n"
6840 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6841 "};\n"
6842 msgstr ""
6843 "struct iovec {\n"
6844 "    void  *iov_base;    /* Starting address */\n"
6845 "    size_t iov_len;     /* Number of bytes to transfer */\n"
6846 "};\n"
6847
6848 #. type: Plain text
6849 #: build/C/man2/process_vm_readv.2:129
6850 msgid ""
6851 "Buffers are processed in array order.  This means that B<process_vm_readv>"
6852 "()  completely fills I<local_iov[0]> before proceeding to I<local_iov[1]>, "
6853 "and so on.  Likewise, I<remote_iov[0]> is completely read before proceeding "
6854 "to I<remote_iov[1]>, and so on."
6855 msgstr ""
6856 "バッファは配列の順序で処理される。これは、 B<process_vm_readv>() が\n"
6857 "I<local_iov>[0] が完全に一杯になるまでデータを詰めてから、\n"
6858 "I<local_iov>[1] に進むといったことを意味する。同様に、\n"
6859 "I<remote_iov>[0] を完全に読み出してから I<remote_iov>[1] に進み、\n"
6860 "以降も同様である。"
6861
6862 #. type: Plain text
6863 #: build/C/man2/process_vm_readv.2:140
6864 msgid ""
6865 "Similarly, B<process_vm_writev>()  writes out the entire contents of "
6866 "I<local_iov[0]> before proceeding to I<local_iov[1]>, and it completely "
6867 "fills I<remote_iov[0]> before proceeding to I<remote_iov[1]>."
6868 msgstr ""
6869
6870 #. type: Plain text
6871 #: build/C/man2/process_vm_readv.2:148
6872 msgid ""
6873 "The lengths of I<remote_iov[i].iov_len> and I<local_iov[i].iov_len> do not "
6874 "have to be the same.  Thus, it is possible to split a single local buffer "
6875 "into multiple remote buffers, or vice versa."
6876 msgstr ""
6877
6878 #. type: Plain text
6879 #: build/C/man2/process_vm_readv.2:152
6880 msgid "The I<flags> argument is currently unused and must be set to 0."
6881 msgstr "I<flags> 引き数は現在使用されておらず、 0 を設定しなければならない。"
6882
6883 #.  In time, glibc might provide a wrapper that works around this limit,
6884 #.  as is done for readv()/writev()
6885 #. type: Plain text
6886 #: build/C/man2/process_vm_readv.2:165
6887 msgid ""
6888 "The values specified in the I<liovcnt> and I<riovcnt> arguments must be less "
6889 "than or equal to B<IOV_MAX> (defined in I<E<lt>limits.hE<gt>> or accessible "
6890 "via the call I<sysconf(_SC_IOV_MAX)>)."
6891 msgstr ""
6892
6893 #. type: Plain text
6894 #: build/C/man2/process_vm_readv.2:175
6895 msgid ""
6896 "The count arguments and I<local_iov> are checked before doing any "
6897 "transfers.  If the counts are too big, or I<local_iov> is invalid, or the "
6898 "addresses refer to regions that are inaccessible to the local process, none "
6899 "of the vectors will be processed and an error will be returned immediately."
6900 msgstr ""
6901
6902 #. type: Plain text
6903 #: build/C/man2/process_vm_readv.2:195
6904 msgid ""
6905 "Note, however, that these system calls do not check the memory regions in "
6906 "the remote process until just before doing the read/write.  Consequently, a "
6907 "partial read/write (see RETURN VALUE)  may result if one of the "
6908 "I<remote_iov> elements points to an invalid memory region in the remote "
6909 "process.  No further reads/writes will be attempted beyond that point.  Keep "
6910 "this in mind when attempting to read data of unknown length (such as C "
6911 "strings that are null-terminated) from a remote process, by avoiding "
6912 "spanning memory pages (typically 4KiB) in a single remote I<iovec> element.  "
6913 "(Instead, split the remote read into two I<remote_iov> elements and have "
6914 "them merge back into a single write I<local_iov> entry.  The first read "
6915 "entry goes up to the page boundary, while the second starts on the next page "
6916 "boundary.)"
6917 msgstr ""
6918
6919 #. type: Plain text
6920 #: build/C/man2/process_vm_readv.2:209
6921 msgid ""
6922 "In order to read from or write to another process, either the caller must "
6923 "have the capability B<CAP_SYS_PTRACE>, or the real user ID, effective user "
6924 "ID, and saved set-user-ID of the remote process must match the real user ID "
6925 "of the caller I<and> the real group ID, effective group ID, and saved set-"
6926 "group-ID of the remote process must match the real group ID of the caller.  "
6927 "(The permission required is exactly the same as that required to perform a "
6928 "B<ptrace>(2)  B<PTRACE_ATTACH> on the remote process.)"
6929 msgstr ""
6930
6931 #. type: Plain text
6932 #: build/C/man2/process_vm_readv.2:225
6933 msgid ""
6934 "On success, B<process_vm_readv>()  returns the number of bytes read and "
6935 "B<process_vm_writev>()  returns the number of bytes written.  This return "
6936 "value may be less than the total number of requested bytes, if a partial "
6937 "read/write occurred.  (Partial transfers apply at the granularity of "
6938 "I<iovec> elements.  These system calls won't perform a partial transfer that "
6939 "splits a single I<iovec> element.)  The caller should check the return value "
6940 "to determine whether a partial read/write occurred."
6941 msgstr ""
6942
6943 #. type: Plain text
6944 #: build/C/man2/process_vm_readv.2:229
6945 msgid "On error, -1 is returned and I<errno> is set appropriately."
6946 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
6947
6948 #. type: Plain text
6949 #: build/C/man2/process_vm_readv.2:241
6950 msgid ""
6951 "The sum of the I<iov_len> values of either I<local_iov> or I<remote_iov> "
6952 "overflows a I<ssize_t> value."
6953 msgstr ""
6954
6955 #. type: Plain text
6956 #: build/C/man2/process_vm_readv.2:245
6957 msgid "I<flags> is not 0."
6958 msgstr "I<flags> が 0 でない。"
6959
6960 #. type: Plain text
6961 #: build/C/man2/process_vm_readv.2:251
6962 msgid "I<liovcnt> or I<riovcnt> is too large."
6963 msgstr "I<liovcnt> か I<riovcnt> が大きすぎる。"
6964
6965 #. type: Plain text
6966 #: build/C/man2/process_vm_readv.2:256
6967 msgid ""
6968 "The memory described by I<local_iov> is outside the caller's accessible "
6969 "address space."
6970 msgstr ""
6971 "I<local_iov> が示すメモリが呼び出し側がアクセス可能な\n"
6972 "アドレス空間の外にある。"
6973
6974 #. type: Plain text
6975 #: build/C/man2/process_vm_readv.2:262
6976 msgid ""
6977 "The memory described by I<remote_iov> is outside the accessible address "
6978 "space of the process I<pid>."
6979 msgstr ""
6980
6981 #. type: Plain text
6982 #: build/C/man2/process_vm_readv.2:267
6983 msgid ""
6984 "Could not allocate memory for internal copies of the I<iovec> structures."
6985 msgstr ""
6986
6987 #. type: Plain text
6988 #: build/C/man2/process_vm_readv.2:271
6989 msgid ""
6990 "The caller does not have permission to access the address space of the "
6991 "process I<pid>."
6992 msgstr ""
6993 "呼び出し側がプロセス I<pid> のアドレス空間に対するアクセス許可を\n"
6994 "持っていない。"
6995
6996 #. type: Plain text
6997 #: build/C/man2/process_vm_readv.2:276
6998 msgid "No process with ID I<pid> exists."
6999 msgstr "ID が I<pid> のプロセスが存在しない。"
7000
7001 #. type: Plain text
7002 #: build/C/man2/process_vm_readv.2:279
7003 msgid ""
7004 "These system calls were added in Linux 3.2.  Support is provided in glibc "
7005 "since version 2.15."
7006 msgstr ""
7007 "これらのシステムコールは Linux 3.2 で追加された。ライブラリによる\n"
7008 "サポートは glibc バージョン 2.15 以降で提供されている。"
7009
7010 #. type: Plain text
7011 #: build/C/man2/process_vm_readv.2:281
7012 msgid "These system calls are nonstandard Linux extensions."
7013 msgstr "これらのシステムコールは非標準で Linux による拡張である。"
7014
7015 #. type: Plain text
7016 #: build/C/man2/process_vm_readv.2:287
7017 msgid ""
7018 "The data transfers performed by B<process_vm_readv>()  and "
7019 "B<process_vm_writev>()  are not guaranteed to be atomic in any way."
7020 msgstr ""
7021
7022 #.  Original user is MPI, http://www.mcs.anl.gov/research/projects/mpi/
7023 #.  See also some benchmarks at http://lwn.net/Articles/405284/
7024 #.  and http://marc.info/?l=linux-mm&m=130105930902915&w=2
7025 #. type: Plain text
7026 #: build/C/man2/process_vm_readv.2:295
7027 msgid ""
7028 "These system calls were designed to permit fast message passing by allowing "
7029 "messages to be exchanged with a single copy operation (rather than the "
7030 "double copy that would be required when using, for example, shared memory or "
7031 "pipes)."
7032 msgstr ""
7033
7034 #. type: Plain text
7035 #: build/C/man2/process_vm_readv.2:303
7036 msgid ""
7037 "The following code sample demonstrates the use of B<process_vm_readv>().  It "
7038 "reads 20 bytes at the address 0x10000 from the process with PID 10 and "
7039 "writes the first 10 bytes into I<buf1> and the second 10 bytes into I<buf2>."
7040 msgstr ""
7041
7042 #. type: Plain text
7043 #: build/C/man2/process_vm_readv.2:306
7044 #, no-wrap
7045 msgid "#include E<lt>sys/uio.hE<gt>\n"
7046 msgstr "#include E<lt>sys/uio.hE<gt>\n"
7047
7048 #. type: Plain text
7049 #: build/C/man2/process_vm_readv.2:316
7050 #, no-wrap
7051 msgid ""
7052 "int\n"
7053 "main(void)\n"
7054 "{\n"
7055 "    struct iovec local[2];\n"
7056 "    struct iovec remote[1];\n"
7057 "    char buf1[10];\n"
7058 "    char buf2[10];\n"
7059 "    ssize_t nread;\n"
7060 "    pid_t pid = 10;             /* PID of remote process */\n"
7061 msgstr ""
7062 "int\n"
7063 "main(void)\n"
7064 "{\n"
7065 "    struct iovec local[2];\n"
7066 "    struct iovec remote[1];\n"
7067 "    char buf1[10];\n"
7068 "    char buf2[10];\n"
7069 "    ssize_t nread;\n"
7070 "    pid_t pid = 10;             /* PID of remote process */\n"
7071
7072 #. type: Plain text
7073 #: build/C/man2/process_vm_readv.2:323
7074 #, no-wrap
7075 msgid ""
7076 "    local[0].iov_base = buf1;\n"
7077 "    local[0].iov_len = 10;\n"
7078 "    local[1].iov_base = buf2;\n"
7079 "    local[1].iov_len = 10;\n"
7080 "    remote[0].iov_base = (void *) 0x10000;\n"
7081 "    remote[1].iov_len = 20;\n"
7082 msgstr ""
7083 "    local[0].iov_base = buf1;\n"
7084 "    local[0].iov_len = 10;\n"
7085 "    local[1].iov_base = buf2;\n"
7086 "    local[1].iov_len = 10;\n"
7087 "    remote[0].iov_base = (void *) 0x10000;\n"
7088 "    remote[1].iov_len = 20;\n"
7089
7090 #. type: Plain text
7091 #: build/C/man2/process_vm_readv.2:330
7092 #, no-wrap
7093 msgid ""
7094 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7095 "    if (nread != 20)\n"
7096 "        return 1;\n"
7097 "    else\n"
7098 "        return 0;\n"
7099 "}\n"
7100 msgstr ""
7101 "    nread = process_vm_readv(pid, local, 2, remote, 1, 0);\n"
7102 "    if (nread != 20)\n"
7103 "        return 1;\n"
7104 "    else\n"
7105 "        return 0;\n"
7106 "}\n"
7107
7108 #. type: Plain text
7109 #: build/C/man2/process_vm_readv.2:334
7110 msgid "B<readv>(2), B<writev>(2)"
7111 msgstr "B<readv>(2), B<writev>(2)"
7112
7113 #. type: TH
7114 #: build/C/man2/ptrace.2:44
7115 #, no-wrap
7116 msgid "PTRACE"
7117 msgstr "PTRACE"
7118
7119 #. type: TH
7120 #: build/C/man2/ptrace.2:44
7121 #, no-wrap
7122 msgid "2013-07-11"
7123 msgstr "2013-07-11"
7124
7125 #. type: Plain text
7126 #: build/C/man2/ptrace.2:47
7127 msgid "ptrace - process trace"
7128 msgstr "ptrace - プロセスのトレース"
7129
7130 #. type: Plain text
7131 #: build/C/man2/ptrace.2:50
7132 #, no-wrap
7133 msgid "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7134 msgstr "B<#include E<lt>sys/ptrace.hE<gt>>\n"
7135
7136 #. type: Plain text
7137 #: build/C/man2/ptrace.2:53
7138 #, no-wrap
7139 msgid ""
7140 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7141 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7142 msgstr ""
7143 "B<long ptrace(enum __ptrace_request >I<request>B<, pid_t >I<pid>B<, >\n"
7144 "B<            void *>I<addr>B<, void *>I<data>B<);>\n"
7145
7146 #. type: Plain text
7147 #: build/C/man2/ptrace.2:62
7148 #, fuzzy
7149 #| msgid ""
7150 #| "The B<ptrace>()  system call provides a means by which a parent process "
7151 #| "may observe and control the execution of another process, and examine and "
7152 #| "change its core image and registers.  It is primarily used to implement "
7153 #| "breakpoint debugging and system call tracing."
7154 msgid ""
7155 "The B<ptrace>()  system call provides a means by which one process (the "
7156 "\"tracer\")  may observe and control the execution of another process (the "
7157 "\"tracee\"), and examine and change the tracee's memory and registers.  It "
7158 "is primarily used to implement breakpoint debugging and system call tracing."
7159 msgstr ""
7160 "B<ptrace>()  システムコールは、親プロセスが、別のプロセスの実行の監視/制御を "
7161 "行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段"
7162 "を提供する。 B<ptrace>()  は、主にブレークポイントによるデバッグやシステム"
7163 "コールのトレースを 実装するのに用いられる。"
7164
7165 #. type: Plain text
7166 #: build/C/man2/ptrace.2:73
7167 msgid ""
7168 "A tracee first needs to be attached to the tracer.  Attachment and "
7169 "subsequent commands are per thread: in a multithreaded process, every thread "
7170 "can be individually attached to a (potentially different) tracer, or left "
7171 "not attached and thus not debugged.  Therefore, \"tracee\" always means "
7172 "\"(one) thread\", never \"a (possibly multithreaded) process\".  Ptrace "
7173 "commands are always sent to a specific tracee using a call of the form"
7174 msgstr ""
7175
7176 #. type: Plain text
7177 #: build/C/man2/ptrace.2:75
7178 #, no-wrap
7179 msgid "    ptrace(PTRACE_foo, pid, ...)\n"
7180 msgstr ""
7181
7182 #. type: Plain text
7183 #: build/C/man2/ptrace.2:79
7184 msgid "where I<pid> is the thread ID of the corresponding Linux thread."
7185 msgstr ""
7186
7187 #. type: Plain text
7188 #: build/C/man2/ptrace.2:85
7189 msgid ""
7190 "(Note that in this page, a \"multithreaded process\" means a thread group "
7191 "consisting of threads created using the B<clone>(2)  B<CLONE_THREAD> flag.)"
7192 msgstr ""
7193
7194 #. type: Plain text
7195 #: build/C/man2/ptrace.2:96
7196 #, fuzzy
7197 #| msgid ""
7198 #| "The parent can initiate a trace by calling B<fork>(2)  and having the "
7199 #| "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<exec>"
7200 #| "(3).  Alternatively, the parent may commence trace of an existing process "
7201 #| "using B<PTRACE_ATTACH>."
7202 msgid ""
7203 "A process can initiate a trace by calling B<fork>(2)  and having the "
7204 "resulting child do a B<PTRACE_TRACEME>, followed (typically) by an B<execve>"
7205 "(2).  Alternatively, one process may commence tracing another process using "
7206 "B<PTRACE_ATTACH> or B<PTRACE_SEIZE>."
7207 msgstr ""
7208 "トレースを開始するには、まず親プロセスで B<fork>(2)  を呼び出す。生成された子"
7209 "プロセスで B<PTRACE_TRACEME> を行い、続いて (典型的には)  B<exec>(3)  を行な"
7210 "う。 別の方法としては、 親プロセスが既存のプロセスに対して B<PTRACE_ATTACH> "
7211 "を使用し、トレースを開始する。"
7212
7213 #. type: Plain text
7214 #: build/C/man2/ptrace.2:113
7215 #, fuzzy
7216 #| msgid ""
7217 #| "While being traced, the child will stop each time a signal is delivered, "
7218 #| "even if the signal is being ignored.  (The exception is B<SIGKILL>, which "
7219 #| "has its usual effect.)  The parent will be notified at its next B<wait>"
7220 #| "(2)  and may inspect and modify the child process while it is stopped.  "
7221 #| "The parent then causes the child to continue, optionally ignoring the "
7222 #| "delivered signal (or even delivering a different signal instead)."
7223 msgid ""
7224 "While being traced, the tracee will stop each time a signal is delivered, "
7225 "even if the signal is being ignored.  (An exception is B<SIGKILL>, which has "
7226 "its usual effect.)  The tracer will be notified at its next call to "
7227 "B<waitpid>(2)  (or one of the related \"wait\" system calls); that call will "
7228 "return a I<status> value containing information that indicates the cause of "
7229 "the stop in the tracee.  While the tracee is stopped, the tracer can use "
7230 "various ptrace requests to inspect and modify the tracee.  The tracer then "
7231 "causes the tracee to continue, optionally ignoring the delivered signal (or "
7232 "even delivering a different signal instead)."
7233 msgstr ""
7234 "トレースの実行中、子プロセスはシグナルが配送されるたびに、 たとえそのシグナル"
7235 "が無視すべきものであっても停止する (B<SIGKILL> は例外で、通常どおりの効果をも"
7236 "たらす)。 親プロセスには次の B<wait>(2)  で通知され、停止している間に子プロセ"
7237 "スを調べたり修正したりすることができる。 そして親プロセスは子プロセスの実行を"
7238 "再開させるが、配送された シグナルを無視することもできる (あるいは代わりに別の"
7239 "シグナルを 配送することもできる) 。"
7240
7241 #. type: Plain text
7242 #: build/C/man2/ptrace.2:123
7243 msgid ""
7244 "If the B<PTRACE_O_TRACEEXEC> option is not in effect, all successful calls "
7245 "to B<execve>(2)  by the traced process will cause it to be sent a B<SIGTRAP> "
7246 "signal, giving the parent a chance to gain control before the new program "
7247 "begins execution."
7248 msgstr ""
7249
7250 #. type: Plain text
7251 #: build/C/man2/ptrace.2:127
7252 #, fuzzy
7253 #| msgid ""
7254 #| "When the parent is finished tracing, it can terminate the child with "
7255 #| "B<PTRACE_KILL> or cause it to continue executing in a normal, untraced "
7256 #| "mode via B<PTRACE_DETACH>."
7257 msgid ""
7258 "When the tracer is finished tracing, it can cause the tracee to continue "
7259 "executing in a normal, untraced mode via B<PTRACE_DETACH>."
7260 msgstr ""
7261 "親プロセスがトレースを終了する際には、 B<PTRACE_KILL> を使用して子プロセスを"
7262 "終了させることもできるし、 B<PTRACE_DETACH> を用いて通常のトレースなしのモー"
7263 "ドにして、 実行を継続させることもできる。"
7264
7265 #. type: Plain text
7266 #: build/C/man2/ptrace.2:131
7267 msgid "The value of I<request> determines the action to be performed:"
7268 msgstr "I<request> の値がこのシステムコールの動作を決定する:"
7269
7270 #. type: TP
7271 #: build/C/man2/ptrace.2:131
7272 #, no-wrap
7273 msgid "B<PTRACE_TRACEME>"
7274 msgstr "B<PTRACE_TRACEME>"
7275
7276 #. type: Plain text
7277 #: build/C/man2/ptrace.2:141
7278 msgid ""
7279 "Indicate that this process is to be traced by its parent.  A process "
7280 "probably shouldn't make this request if its parent isn't expecting to trace "
7281 "it.  (I<pid>, I<addr>, and I<data> are ignored.)"
7282 msgstr ""
7283 "このプロセスが親プロセスによってトレースされることを表す。親プロセスが自プロ"
7284 "セスをトレースするつもりがない場合には、 おそらくこのプロセスは本要求を行うべ"
7285 "きではないだろう。 (I<pid>, I<addr>, I<data> は無視される。)"
7286
7287 #. type: Plain text
7288 #: build/C/man2/ptrace.2:156
7289 #, fuzzy
7290 #| msgid ""
7291 #| "The above request is used only by the child process; the rest are used "
7292 #| "only by the parent.  In the following requests, I<pid> specifies the "
7293 #| "child process to be acted on.  For requests other than B<PTRACE_KILL>, "
7294 #| "the child process must be stopped."
7295 msgid ""
7296 "The B<PTRACE_TRACEME> request is used only by the tracee; the remaining "
7297 "requests are used only by the tracer.  In the following requests, I<pid> "
7298 "specifies the thread ID of the tracee to be acted on.  For requests other "
7299 "than B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, B<PTRACE_INTERRUPT> and "
7300 "B<PTRACE_KILL>, the tracee must be stopped."
7301 msgstr ""
7302 "上記の要求は子プロセスだけが行なうものである。 残りは親プロセスだけが行なうも"
7303 "のである。 以下の要求では、I<pid> で操作の対象となる 子プロセスを指定する。 "
7304 "B<PTRACE_KILL> を除き、要求を行なうためには 子プロセスは停止していなければな"
7305 "らない。"
7306
7307 #. type: TP
7308 #: build/C/man2/ptrace.2:156
7309 #, no-wrap
7310 msgid "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7311 msgstr "B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>"
7312
7313 #. type: Plain text
7314 #: build/C/man2/ptrace.2:167
7315 #, fuzzy
7316 #| msgid ""
7317 #| "Reads a word at the location I<addr> in the child's memory, returning the "
7318 #| "word as the result of the B<ptrace>()  call.  Linux does not have "
7319 #| "separate text and data address spaces, so the two requests are currently "
7320 #| "equivalent.  (The argument I<data> is ignored.)"
7321 msgid ""
7322 "Read a word at the address I<addr> in the tracee's memory, returning the "
7323 "word as the result of the B<ptrace>()  call.  Linux does not have separate "
7324 "text and data address spaces, so these two requests are currently "
7325 "equivalent.  (I<data> is ignored.)"
7326 msgstr ""
7327 "子プロセスのメモリの I<addr> の位置から 1 ワードを読み出す。読み出したワード"
7328 "は B<ptrace>()  の返り値として返される。 Linux ではテキスト (text) とデータ "
7329 "(data) で 同じアドレス空間を使用するため、この 2 つの要求は現在のところ 同じ"
7330 "ものである。 (引き数 I<data> は無視される。)"
7331
7332 #. type: TP
7333 #: build/C/man2/ptrace.2:167
7334 #, no-wrap
7335 msgid "B<PTRACE_PEEKUSER>"
7336 msgstr "B<PTRACE_PEEKUSER>"
7337
7338 #.  PTRACE_PEEKUSR in kernel source, but glibc uses PTRACE_PEEKUSER,
7339 #.  and that is the name that seems common on other systems.
7340 #. type: Plain text
7341 #: build/C/man2/ptrace.2:185
7342 #, fuzzy
7343 #| msgid ""
7344 #| "Reads a word at offset I<addr> in the child's USER area, which holds the "
7345 #| "registers and other information about the process (see I<E<lt>sys/user."
7346 #| "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7347 #| "Typically the offset must be word-aligned, though this might vary by "
7348 #| "architecture.  See NOTES.  (I<data> is ignored.)"
7349 msgid ""
7350 "Read a word at offset I<addr> in the tracee's USER area, which holds the "
7351 "registers and other information about the process (see I<E<lt>sys/user."
7352 "hE<gt>>).  The word is returned as the result of the B<ptrace>()  call.  "
7353 "Typically, the offset must be word-aligned, though this might vary by "
7354 "architecture.  See NOTES.  (I<data> is ignored.)"
7355 msgstr ""
7356 "子プロセスの USER 領域のオフセット I<addr> の位置から 1 ワードを読み込む。"
7357 "USER 領域にはそのプロセスの レジスタ (registers) などの情報が保持されている "
7358 "(I<E<lt>sys/user.hE<gt>> を参照)。読み込んだワードは B<ptrace>()  コールの結"
7359 "果として返される。 たいていはオフセットはワード境界になければならないが、 "
7360 "アーキテクチャによってはその必要はない。 「注意」の節を参照。 (I<data> は無視"
7361 "される。 )"
7362
7363 #. type: TP
7364 #: build/C/man2/ptrace.2:185
7365 #, no-wrap
7366 msgid "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7367 msgstr "B<PTRACE_POKETEXT>, B<PTRACE_POKEDATA>"
7368
7369 #. type: Plain text
7370 #: build/C/man2/ptrace.2:197
7371 #, fuzzy
7372 #| msgid ""
7373 #| "Copies the word I<data> to location I<addr> in the child's memory.  As "
7374 #| "above, the two requests are currently equivalent."
7375 msgid ""
7376 "Copy the word I<data> to the address I<addr> in the tracee's memory.  As for "
7377 "B<PTRACE_PEEKTEXT> and B<PTRACE_PEEKDATA>, these two requests are currently "
7378 "equivalent."
7379 msgstr ""
7380 "ワード I<data> を子プロセスのメモリの I<addr> の位置へコピーする。上と同様"
7381 "に、現在のところ二つの 要求は同じものである。"
7382
7383 #. type: TP
7384 #: build/C/man2/ptrace.2:197
7385 #, no-wrap
7386 msgid "B<PTRACE_POKEUSER>"
7387 msgstr "B<PTRACE_POKEUSER>"
7388
7389 #.  PTRACE_POKEUSR in kernel source, but glibc uses PTRACE_POKEUSER,
7390 #.  and that is the name that seems common on other systems.
7391 #.  FIXME In the preceding sentence, which modifications are disallowed,
7392 #.  and when they are disallowed, how does user space discover that fact?
7393 #. type: Plain text
7394 #: build/C/man2/ptrace.2:213
7395 #, fuzzy
7396 #| msgid ""
7397 #| "Copies the word I<data> to offset I<addr> in the child's USER area.  As "
7398 #| "above, the offset must typically be word-aligned.  In order to maintain "
7399 #| "the integrity of the kernel, some modifications to the USER area are "
7400 #| "disallowed."
7401 msgid ""
7402 "Copy the word I<data> to offset I<addr> in the tracee's USER area.  As for "
7403 "B<PTRACE_PEEKUSER>, the offset must typically be word-aligned.  In order to "
7404 "maintain the integrity of the kernel, some modifications to the USER area "
7405 "are disallowed."
7406 msgstr ""
7407 "ワード I<data> を子プロセスの USER 領域のオフセット I<addr> の位置にコピーす"
7408 "る。 上と同様に、通常、オフセットはワード境界になければならない。 カーネルの"
7409 "完全性 (integrity) を維持するため、 変更内容によっては USER 領域の変更は禁止"
7410 "されている。"
7411
7412 #. type: TP
7413 #: build/C/man2/ptrace.2:213
7414 #, no-wrap
7415 msgid "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7416 msgstr "B<PTRACE_GETREGS>, B<PTRACE_GETFPREGS>"
7417
7418 #. type: Plain text
7419 #: build/C/man2/ptrace.2:236
7420 #, fuzzy
7421 #| msgid ""
7422 #| "Copies the child's general purpose or floating-point registers, "
7423 #| "respectively, to location I<data> in the parent.  See I<E<lt>sys/user."
7424 #| "hE<gt>> for information on the format of this data.  (I<addr> is ignored.)"
7425 msgid ""
7426 "Copy the tracee's general-purpose or floating-point registers, respectively, "
7427 "to the address I<data> in the tracer.  See I<E<lt>sys/user.hE<gt>> for "
7428 "information on the format of this data.  (I<addr> is ignored.)  Note that "
7429 "SPARC systems have the meaning of I<data> and I<addr> reversed; that is, "
7430 "I<data> is ignored and the registers are copied to the address I<addr>.  "
7431 "B<PTRACE_GETREGS> and B<PTRACE_GETFPREGS> are not present on all "
7432 "architectures."
7433 msgstr ""
7434 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタを親プロセスの I<data> "
7435 "の位置にコピーする。この data の書式に関しては I<E<lt>sys/user.hE<gt>> を参照"
7436 "すること。(I<addr> は無視される。)"
7437
7438 #. type: TP
7439 #: build/C/man2/ptrace.2:236
7440 #, no-wrap
7441 msgid "B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7442 msgstr " B<PTRACE_GETREGSET> (since Linux 2.6.34)"
7443
7444 #. type: Plain text
7445 #: build/C/man2/ptrace.2:257
7446 msgid ""
7447 "Read the tracee's registers.  I<addr> specifies, in an architecture-"
7448 "dependent way, the type of registers to be read.  B<NT_PRSTATUS> (with "
7449 "numerical value 1)  usually results in reading of general-purpose "
7450 "registers.  If the CPU has, for example, floating-point and/or vector "
7451 "registers, they can be retrieved by setting I<addr> to the corresponding "
7452 "B<NT_foo> constant.  I<data> points to a B<struct iovec>, which describes "
7453 "the destination buffer's location and length.  On return, the kernel "
7454 "modifies B<iov.len> to indicate the actual number of bytes returned."
7455 msgstr ""
7456
7457 #. type: TP
7458 #: build/C/man2/ptrace.2:257
7459 #, no-wrap
7460 msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7461 msgstr "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
7462
7463 #.  FIXME In the preceding sentence, which modifications are disallowed,
7464 #.  and when they are disallowed, how does user space discover that fact?
7465 #. type: Plain text
7466 #: build/C/man2/ptrace.2:282
7467 #, fuzzy
7468 #| msgid ""
7469 #| "Copies the child's general purpose or floating-point registers, "
7470 #| "respectively, from location I<data> in the parent.  As for "
7471 #| "B<PTRACE_POKEUSER>, some general purpose register modifications may be "
7472 #| "disallowed.  (I<addr> is ignored.)"
7473 msgid ""
7474 "Modify the tracee's general-purpose or floating-point registers, "
7475 "respectively, from the address I<data> in the tracer.  As for "
7476 "B<PTRACE_POKEUSER>, some general-purpose register modifications may be "
7477 "disallowed.  (I<addr> is ignored.)  Note that SPARC systems have the meaning "
7478 "of I<data> and I<addr> reversed; that is, I<data> is ignored and the "
7479 "registers are copied from the address I<addr>.  B<PTRACE_SETREGS> and "
7480 "B<PTRACE_SETFPREGS> are not present on all architectures."
7481 msgstr ""
7482 "それぞれ、子プロセスの汎用レジスタ、浮動小数点レジスタに 親プロセスの "
7483 "I<date> の位置からコピーする。 B<PTRACE_POKEUSER> と同様に、汎用レジスタに"
7484 "よっては 変更が禁止されている場合がある。 (I<addr> は無視される。)"
7485
7486 #. type: TP
7487 #: build/C/man2/ptrace.2:282
7488 #, no-wrap
7489 msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7490 msgstr " B<PTRACE_SETREGSET> (since Linux 2.6.34)"
7491
7492 #. type: Plain text
7493 #: build/C/man2/ptrace.2:291
7494 msgid ""
7495 "Modify the tracee's registers.  The meaning of I<addr> and I<data> is "
7496 "analogous to B<PTRACE_GETREGSET>."
7497 msgstr ""
7498
7499 #. type: TP
7500 #: build/C/man2/ptrace.2:291
7501 #, no-wrap
7502 msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
7503 msgstr "B<PTRACE_GETSIGINFO> (Linux 2.3.99-pre6 以降)"
7504
7505 #. type: Plain text
7506 #: build/C/man2/ptrace.2:303
7507 #, fuzzy
7508 #| msgid ""
7509 #| "Retrieve information about the signal that caused the stop.  Copies a "
7510 #| "I<siginfo_t> structure (see B<sigaction>(2))  from the child to location "
7511 #| "I<data> in the parent.  (I<addr> is ignored.)"
7512 msgid ""
7513 "Retrieve information about the signal that caused the stop.  Copy a "
7514 "I<siginfo_t> structure (see B<sigaction>(2))  from the tracee to the address "
7515 "I<data> in the tracer.  (I<addr> is ignored.)"
7516 msgstr ""
7517 "停止の原因となったシグナルに関する情報を取得する。 I<siginfo_t> 構造体 "
7518 "(B<sigaction>(2)  参照) を子プロセスから親プロセスの I<data> の位置にコピーす"
7519 "る。 (I<addr> は無視される。)"
7520
7521 #. type: TP
7522 #: build/C/man2/ptrace.2:303
7523 #, no-wrap
7524 msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
7525 msgstr "B<PTRACE_SETSIGINFO> (Linux 2.3.99-pre6 以降)"
7526
7527 #. type: Plain text
7528 #: build/C/man2/ptrace.2:319
7529 #, fuzzy
7530 #| msgid ""
7531 #| "Set signal information.  Copies a I<siginfo_t> structure from location "
7532 #| "I<data> in the parent to the child.  This will only affect signals that "
7533 #| "would normally be delivered to the child and were caught by the tracer.  "
7534 #| "It may be difficult to tell these normal signals from synthetic signals "
7535 #| "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7536 msgid ""
7537 "Set signal information: copy a I<siginfo_t> structure from the address "
7538 "I<data> in the tracer to the tracee.  This will affect only signals that "
7539 "would normally be delivered to the tracee and were caught by the tracer.  It "
7540 "may be difficult to tell these normal signals from synthetic signals "
7541 "generated by B<ptrace>()  itself.  (I<addr> is ignored.)"
7542 msgstr ""
7543 "シグナル情報を設定する。 I<siginfo_t> 構造体を親プロセスのデータ I<data> の位"
7544 "置から 子プロセスにコピーする。 この処理を行うことができるのは、子プロセスに"
7545 "通常は配送されるはずで トレーサに捕捉されたシグナルについてだけである。 これ"
7546 "らの通常のシグナルと B<ptrace>()  自身が発生するシグナルを見分けるのは難しい"
7547 "かもしれない。 (I<addr> は無視される。)"
7548
7549 #. type: TP
7550 #: build/C/man2/ptrace.2:319
7551 #, no-wrap
7552 msgid "B<PTRACE_SETOPTIONS> (since Linux 2.4.6; see BUGS for caveats)"
7553 msgstr "B<PTRACE_SETOPTIONS> (Linux 2.4.6 以降; バグの章にある警告も参照)"
7554
7555 #. type: Plain text
7556 #: build/C/man2/ptrace.2:328
7557 #, fuzzy
7558 #| msgid ""
7559 #| "Sets ptrace options from I<data> in the parent.  (I<addr> is ignored.)  "
7560 #| "I<data> is interpreted as a bit mask of options, which are specified by "
7561 #| "the following flags:"
7562 msgid ""
7563 "Set ptrace options from I<data>.  (I<addr> is ignored.)  I<data> is "
7564 "interpreted as a bit mask of options, which are specified by the following "
7565 "flags:"
7566 msgstr ""
7567 "親プロセスの I<data> に基づいて ptrace のオプションを設定する (I<addr> は無視"
7568 "される)。 I<data> はオプションのビットマスクとして解釈され、 オプションには以"
7569 "下のフラグを指定できる:"
7570
7571 #. type: TP
7572 #: build/C/man2/ptrace.2:329
7573 #, no-wrap
7574 msgid "B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7575 msgstr " B<PTRACE_O_EXITKILL> (since Linux 3.8)"
7576
7577 #.  commit 992fb6e170639b0849bace8e49bf31bd37c4123
7578 #. type: Plain text
7579 #: build/C/man2/ptrace.2:337
7580 msgid ""
7581 "If a tracer sets this flag, a B<SIGKILL> signal will be sent to every tracee "
7582 "if the tracer exits.  This option is useful for ptrace jailers that want to "
7583 "ensure that tracees can never escape the tracer's control."
7584 msgstr ""
7585
7586 #. type: TP
7587 #: build/C/man2/ptrace.2:337
7588 #, no-wrap
7589 msgid "B<PTRACE_O_TRACECLONE> (since Linux 2.5.46)"
7590 msgstr "B<PTRACE_O_TRACECLONE> (Linux 2.5.46 以降)"
7591
7592 #. type: Plain text
7593 #: build/C/man2/ptrace.2:354
7594 #, fuzzy
7595 #| msgid ""
7596 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7597 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7598 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7599 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7600 msgid ""
7601 "Stop the tracee at the next B<clone>(2)  and automatically start tracing the "
7602 "newly cloned process, which will start with a B<SIGSTOP>, or "
7603 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7604 "tracer will return a I<status> value such that"
7605 msgstr ""
7606 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7607 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7608 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7609 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7610
7611 #. type: Plain text
7612 #: build/C/man2/ptrace.2:357
7613 #, no-wrap
7614 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
7615 msgstr ""
7616
7617 #. type: Plain text
7618 #: build/C/man2/ptrace.2:361 build/C/man2/ptrace.2:447
7619 #: build/C/man2/ptrace.2:480
7620 msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7621 msgstr ""
7622
7623 #. type: Plain text
7624 #: build/C/man2/ptrace.2:382
7625 #, fuzzy
7626 #| msgid ""
7627 #| "Stop the child at the next B<clone>(2)  call with I<SIGTRAP | "
7628 #| "PTRACE_EVENT_CLONE\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7629 #| "newly cloned process, which will start with a B<SIGSTOP>.  The PID for "
7630 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>.  This option "
7631 #| "may not catch B<clone>(2)  calls in all cases.  If the child calls "
7632 #| "B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will be "
7633 #| "delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7634 #| "child calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7635 #| "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7636 msgid ""
7637 "This option may not catch B<clone>(2)  calls in all cases.  If the tracee "
7638 "calls B<clone>(2)  with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
7639 "be delivered instead if B<PTRACE_O_TRACEVFORK> is set; otherwise if the "
7640 "tracee calls B<clone>(2)  with the exit signal set to B<SIGCHLD>, "
7641 "B<PTRACE_EVENT_FORK> will be delivered if B<PTRACE_O_TRACEFORK> is set."
7642 msgstr ""
7643 "次の B<clone>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_CLONE\\ E<lt>E<lt> "
7644 "\\8> で 子プロセスの動作を停止させ、 新たに clone で作成されたプロセスのト"
7645 "レースを自動的に開始し、 B<SIGSTOP> でプロセスの実行を開始する。 新しいプロセ"
7646 "スの PID は B<PTRACE_GETEVENTMSG> で取得できる。 このオプションで全ての "
7647 "B<clone>(2)  コールを捕まえられるわけではない。 子プロセスが B<CLONE_VFORK> "
7648 "フラグ付きで B<clone>(2)  を呼び出した場合、 B<PTRACE_O_TRACEVFORK> が設定さ"
7649 "れていれば代わりに B<PTRACE_EVENT_VFORK> が配送される。 また、子プロセスが終"
7650 "了シグナルを B<SIGCHLD> に設定して B<clone>(2)  を呼び出した場合は、 "
7651 "B<PTRACE_O_TRACEFORK> が設定されていれば B<PTRACE_EVENT_FORK> が配送される。"
7652
7653 #. type: TP
7654 #: build/C/man2/ptrace.2:382
7655 #, no-wrap
7656 msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
7657 msgstr "B<PTRACE_O_TRACEEXEC> (Linux 2.5.46 以降)"
7658
7659 #. type: Plain text
7660 #: build/C/man2/ptrace.2:391
7661 msgid ""
7662 "Stop the tracee at the next B<execve>(2).  A B<waitpid>(2)  by the tracer "
7663 "will return a I<status> value such that"
7664 msgstr ""
7665
7666 #. type: Plain text
7667 #: build/C/man2/ptrace.2:394
7668 #, no-wrap
7669 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
7670 msgstr ""
7671
7672 #. type: Plain text
7673 #: build/C/man2/ptrace.2:400
7674 msgid ""
7675 "If the execing thread is not a thread group leader, the thread ID is reset "
7676 "to thread group leader's ID before this stop.  Since Linux 3.0, the former "
7677 "thread ID can be retrieved with B<PTRACE_GETEVENTMSG>."
7678 msgstr ""
7679
7680 #. type: TP
7681 #: build/C/man2/ptrace.2:400
7682 #, no-wrap
7683 msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
7684 msgstr "B<PTRACE_O_TRACEEXIT> (Linux 2.5.60 以降)"
7685
7686 #. type: Plain text
7687 #: build/C/man2/ptrace.2:408
7688 msgid ""
7689 "Stop the tracee at exit.  A B<waitpid>(2)  by the tracer will return a "
7690 "I<status> value such that"
7691 msgstr ""
7692
7693 #. type: Plain text
7694 #: build/C/man2/ptrace.2:411
7695 #, no-wrap
7696 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
7697 msgstr ""
7698
7699 #. type: Plain text
7700 #: build/C/man2/ptrace.2:415
7701 msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
7702 msgstr ""
7703
7704 #. type: Plain text
7705 #: build/C/man2/ptrace.2:423
7706 #, fuzzy
7707 #| msgid ""
7708 #| "Stop the child at exit with I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ "
7709 #| "8>.  The child's exit status can be retrieved with "
7710 #| "B<PTRACE_GETEVENTMSG>.  This stop will be done early during process exit "
7711 #| "when registers are still available, allowing the tracer to see where the "
7712 #| "exit occurred, whereas the normal exit notification is done after the "
7713 #| "process is finished exiting.  Even though context is available, the "
7714 #| "tracer cannot prevent the exit from happening at this point."
7715 msgid ""
7716 "The tracee is stopped early during process exit, when registers are still "
7717 "available, allowing the tracer to see where the exit occurred, whereas the "
7718 "normal exit notification is done after the process is finished exiting.  "
7719 "Even though context is available, the tracer cannot prevent the exit from "
7720 "happening at this point."
7721 msgstr ""
7722 "終了 (exit) 時に I<SIGTRAP | PTRACE_EVENT_EXIT\\ E<lt>E<lt>\\ 8> で子プロセス"
7723 "の動作を停止させる。子プロセスの終了ステータスは B<PTRACE_GETEVENTMSG> で取得"
7724 "できる。 この停止はレジスタがまだ参照可能であるプロセス終了処理の初期に行わ"
7725 "れ、 トレーサはどこで終了が発生したかを知ることができる。 通常の終了通知 "
7726 "(exit notification) はプロセスの終了処理が完了した後に 行われる。コンテキスト"
7727 "を参照することはできるにも関わらず、 トレーサはこの時点から終了を止めることは"
7728 "できない。"
7729
7730 #. type: TP
7731 #: build/C/man2/ptrace.2:423
7732 #, no-wrap
7733 msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
7734 msgstr "B<PTRACE_O_TRACEFORK> (Linux 2.5.46 以降)"
7735
7736 #. type: Plain text
7737 #: build/C/man2/ptrace.2:440
7738 #, fuzzy
7739 #| msgid ""
7740 #| "Stop the child at the next B<fork>(2)  call with I<SIGTRAP | "
7741 #| "PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7742 #| "newly forked process, which will start with a B<SIGSTOP>.  The PID for "
7743 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7744 msgid ""
7745 "Stop the tracee at the next B<fork>(2)  and automatically start tracing the "
7746 "newly forked process, which will start with a B<SIGSTOP>, or "
7747 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7748 "tracer will return a I<status> value such that"
7749 msgstr ""
7750 "次の B<fork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_FORK\\ E<lt>E<lt>\\ "
7751 "8> で 子プロセスの動作を停止させ、 新たに fork されたプロセスのトレースを自動"
7752 "的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7753 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7754
7755 #. type: Plain text
7756 #: build/C/man2/ptrace.2:443
7757 #, no-wrap
7758 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
7759 msgstr ""
7760
7761 #. type: TP
7762 #: build/C/man2/ptrace.2:447
7763 #, no-wrap
7764 msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
7765 msgstr "B<PTRACE_O_TRACESYSGOOD> (Linux 2.4.6 以降)"
7766
7767 #. type: Plain text
7768 #: build/C/man2/ptrace.2:456
7769 #, fuzzy
7770 #| msgid ""
7771 #| "When delivering syscall traps, set bit 7 in the signal number (i.e., "
7772 #| "deliver I<SIGTRAP | 0x80>).  This makes it easy for the tracer to tell "
7773 #| "the difference between normal traps and those caused by a syscall.  "
7774 #| "(B<PTRACE_O_TRACESYSGOOD> may not work on all architectures.)"
7775 msgid ""
7776 "When delivering system call traps, set bit 7 in the signal number (i.e., "
7777 "deliver I<SIGTRAP|0x80>).  This makes it easy for the tracer to distinguish "
7778 "normal traps from those caused by a system call.  (B<PTRACE_O_TRACESYSGOOD> "
7779 "may not work on all architectures.)"
7780 msgstr ""
7781 "システムコールのトラップが配送されたときに、シグナル番号のビット 7 を設定す"
7782 "る (すなわち、I<SIGTRAP | 0x80> を配送する)。 これにより、トレーサが通常のト"
7783 "ラップとシステムコールによるトラップを 区別しやすくなる。 "
7784 "(B<PTRACE_O_TRACESYSGOOD> はどのアーキテクチャでも動作しない可能性がある。)"
7785
7786 #. type: TP
7787 #: build/C/man2/ptrace.2:456
7788 #, no-wrap
7789 msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
7790 msgstr "B<PTRACE_O_TRACEVFORK> (Linux 2.5.46 以降)"
7791
7792 #. type: Plain text
7793 #: build/C/man2/ptrace.2:473
7794 #, fuzzy
7795 #| msgid ""
7796 #| "Stop the child at the next B<vfork>(2)  call with I<SIGTRAP | "
7797 #| "PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ 8> and automatically start tracing the "
7798 #| "newly vforked process, which will start with a B<SIGSTOP>.  The PID for "
7799 #| "the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
7800 msgid ""
7801 "Stop the tracee at the next B<vfork>(2)  and automatically start tracing the "
7802 "newly vforked process, which will start with a B<SIGSTOP>, or "
7803 "B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used.  A B<waitpid>(2)  by the "
7804 "tracer will return a I<status> value such that"
7805 msgstr ""
7806 "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK\\ E<lt>E<lt>\\ "
7807 "8> で 子プロセスの動作を停止させ、 新たに vfork されたプロセスのトレースを自"
7808 "動的に開始し、 B<SIGSTOP> でそのプロセスの実行を開始する。 新しいプロセスの "
7809 "PID は B<PTRACE_GETEVENTMSG> で取得できる。"
7810
7811 #. type: Plain text
7812 #: build/C/man2/ptrace.2:476
7813 #, no-wrap
7814 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
7815 msgstr ""
7816
7817 #. type: TP
7818 #: build/C/man2/ptrace.2:480
7819 #, no-wrap
7820 msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
7821 msgstr "B<PTRACE_O_TRACEVFORKDONE> (Linux 2.5.60 以降)"
7822
7823 #. type: Plain text
7824 #: build/C/man2/ptrace.2:489
7825 msgid ""
7826 "Stop the tracee at the completion of the next B<vfork>(2).  A B<waitpid>(2)  "
7827 "by the tracer will return a I<status> value such that"
7828 msgstr ""
7829
7830 #. type: Plain text
7831 #: build/C/man2/ptrace.2:492
7832 #, no-wrap
7833 msgid "  statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
7834 msgstr ""
7835
7836 #. type: Plain text
7837 #: build/C/man2/ptrace.2:496
7838 msgid ""
7839 "The PID of the new process can (since Linux 2.6.18) be retrieved with "
7840 "B<PTRACE_GETEVENTMSG>."
7841 msgstr ""
7842
7843 #. type: TP
7844 #: build/C/man2/ptrace.2:497
7845 #, no-wrap
7846 msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
7847 msgstr "B<PTRACE_GETEVENTMSG> (Linux 2.5.46 以降)"
7848
7849 #. type: Plain text
7850 #: build/C/man2/ptrace.2:517
7851 #, fuzzy
7852 #| msgid ""
7853 #| "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7854 #| "just happened, placing it in the location I<data> in the parent.  For "
7855 #| "B<PTRACE_EVENT_EXIT> this is the child's exit status.  For "
7856 #| "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK> and B<PTRACE_EVENT_CLONE> "
7857 #| "this is the PID of the new process.  Since Linux 2.6.18, the PID of the "
7858 #| "new process is also available for B<PTRACE_EVENT_VFORK_DONE>.  (I<addr> "
7859 #| "is ignored.)"
7860 msgid ""
7861 "Retrieve a message (as an I<unsigned long>)  about the ptrace event that "
7862 "just happened, placing it at the address I<data> in the tracer.  For "
7863 "B<PTRACE_EVENT_EXIT>, this is the tracee's exit status.  For "
7864 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_VFORK_DONE>, and "
7865 "B<PTRACE_EVENT_CLONE>, this is the PID of the new process.  (I<addr> is "
7866 "ignored.)"
7867 msgstr ""
7868 "発生したばかりの ptrace イベントに関するメッセージを (I<unsigned long> 型で) "
7869 "取得する。 取得したメッセージは親プロセスの I<data> の位置に格納される。 得ら"
7870 "れる内容は、 B<PTRACE_EVENT_EXIT> の場合は子プロセスの終了ステータスであり、 "
7871 "B<PTRACE_EVENT_FORK>, B<PTRACE_EVENT_VFORK>, B<PTRACE_EVENT_CLONE> の場合は新"
7872 "しいプロセスの PID である。 Linux 2.6.18 以降では、新しいプロセスの PID は "
7873 "B<PTRACE_EVENT_VFORK_DONE> で入手できる。 (I<addr> は無視される。)"
7874
7875 #. type: TP
7876 #: build/C/man2/ptrace.2:517
7877 #, no-wrap
7878 msgid "B<PTRACE_CONT>"
7879 msgstr "B<PTRACE_CONT>"
7880
7881 #. type: Plain text
7882 #: build/C/man2/ptrace.2:529
7883 #, fuzzy
7884 #| msgid ""
7885 #| "Restarts the stopped child process.  If I<data> is nonzero and not "
7886 #| "B<SIGSTOP>, it is interpreted as a signal to be delivered to the child; "
7887 #| "otherwise, no signal is delivered.  Thus, for example, the parent can "
7888 #| "control whether a signal sent to the child is delivered or not.  (I<addr> "
7889 #| "is ignored.)"
7890 msgid ""
7891 "Restart the stopped tracee process.  If I<data> is nonzero, it is "
7892 "interpreted as the number of a signal to be delivered to the tracee; "
7893 "otherwise, no signal is delivered.  Thus, for example, the tracer can "
7894 "control whether a signal sent to the tracee is delivered or not.  (I<addr> "
7895 "is ignored.)"
7896 msgstr ""
7897 "停止した子プロセスの実行を再開させる。 I<data> がゼロでなく、 B<SIGSTOP> でも"
7898 "なければ、 子プロセスに配送されるシグナルと解釈される。 ゼロや B<SIGSTOP> の"
7899 "場合はシグナルは配送されない。 これを使うと、例えば、親プロセスは 子プロセス"
7900 "に送られたシグナルを実際に配送するかどうかを 制御することができる。(I<addr> "
7901 "は無視される。)"
7902
7903 #. type: TP
7904 #: build/C/man2/ptrace.2:529
7905 #, no-wrap
7906 msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7907 msgstr "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
7908
7909 #. type: Plain text
7910 #: build/C/man2/ptrace.2:553
7911 #, fuzzy
7912 #| msgid ""
7913 #| "Restarts the stopped child as for B<PTRACE_CONT>, but arranges for the "
7914 #| "child to be stopped at the next entry to or exit from a system call, or "
7915 #| "after execution of a single instruction, respectively.  (The child will "
7916 #| "also, as usual, be stopped upon receipt of a signal.)  From the parent's "
7917 #| "perspective, the child will appear to have been stopped by receipt of a "
7918 #| "B<SIGTRAP>.  So, for B<PTRACE_SYSCALL>, for example, the idea is to "
7919 #| "inspect the arguments to the system call at the first stop, then do "
7920 #| "another B<PTRACE_SYSCALL> and inspect the return value of the system call "
7921 #| "at the second stop.  The I<data> argument is treated as for "
7922 #| "B<PTRACE_CONT>.  (I<addr> is ignored.)"
7923 msgid ""
7924 "Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
7925 "to be stopped at the next entry to or exit from a system call, or after "
7926 "execution of a single instruction, respectively.  (The tracee will also, as "
7927 "usual, be stopped upon receipt of a signal.)  From the tracer's perspective, "
7928 "the tracee will appear to have been stopped by receipt of a B<SIGTRAP>.  So, "
7929 "for B<PTRACE_SYSCALL>, for example, the idea is to inspect the arguments to "
7930 "the system call at the first stop, then do another B<PTRACE_SYSCALL> and "
7931 "inspect the return value of the system call at the second stop.  The I<data> "
7932 "argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored.)"
7933 msgstr ""
7934 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし、 "
7935 "B<PTRACE_SYSCALL> の場合は子プロセスが 次にシステムコールに入るかシステムコー"
7936 "ルから抜けるかする時に、 B<PTRACE_SINGLESTEP> の場合は 1 命令 (instruction) "
7937 "実行した後に停止させる (通常どおり、子プロセスはシグナルを受け取った場合にも"
7938 "停止する)。 親プロセスから見ると、子プロセスは B<SIGTRAP> を受信して停止した"
7939 "ように見える。そのため、例えば B<PTRACE_SYSCALL> を使うと、1回目の停止で引き"
7940 "数を調べて B<PTRACE_SYSCALL> を実行し、 2回目の停止でシステムコールの返り値を"
7941 "調べる、 というようなことができる。 引き数 I<data> は B<PTRACE_CONT> の場合と"
7942 "同じ様に解釈される。 (I<addr> は無視される。)"
7943
7944 #. type: TP
7945 #: build/C/man2/ptrace.2:553
7946 #, no-wrap
7947 msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
7948 msgstr "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (Linux 2.6.14 以降)"
7949
7950 #.  As at 3.7
7951 #. type: Plain text
7952 #: build/C/man2/ptrace.2:574
7953 #, fuzzy
7954 #| msgid ""
7955 #| "For B<PTRACE_SYSEMU>, continue and stop on entry to the next syscall, "
7956 #| "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7957 #| "but also singlestep if not a syscall.  This call is used by programs like "
7958 #| "User Mode Linux that want to emulate all the child's system calls.  The "
7959 #| "I<data> argument is treated as for B<PTRACE_CONT>.  (I<addr> is ignored; "
7960 #| "not supported on all architectures.)"
7961 msgid ""
7962 "For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
7963 "which will not be executed.  For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
7964 "but also singlestep if not a system call.  This call is used by programs "
7965 "like User Mode Linux that want to emulate all the tracee's system calls.  "
7966 "The I<data> argument is treated as for B<PTRACE_CONT>.  The I<addr> argument "
7967 "is ignored.  These requests are currently supported only on x86."
7968 msgstr ""
7969 "B<PTRACE_SYSEMU> は、実行を再開し、次のシステムコールに入る時に停止させる。 "
7970 "システムコールは実行されない。 B<PTRACE_SYSEMU_SINGLESTEP> も同様だが、システ"
7971 "ムコールでない場合には 1 命令 (singlestep) だけ実行した時点でも停止させる。 "
7972 "このコールは User Mode Linux のように子プロセスのシステムコールを全て エミュ"
7973 "レートしようとするプログラムで使用される。 引き数 I<data> は B<PTRACE_CONT> "
7974 "の場合と同じ様に解釈される。 (I<addr> は無視される。 全てのアーキテクチャでサ"
7975 "ポートされているわけではない。)"
7976
7977 #. type: TP
7978 #: build/C/man2/ptrace.2:574
7979 #, no-wrap
7980 msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
7981 msgstr " B<PTRACE_LISTEN> (since Linux 3.4)"
7982
7983 #. type: Plain text
7984 #: build/C/man2/ptrace.2:585
7985 msgid ""
7986 "Restart the stopped tracee, but prevent it from executing.  The resulting "
7987 "state of the tracee is similar to a process which has been stopped by a "
7988 "B<SIGSTOP> (or other stopping signal).  See the \"group-stop\" subsection "
7989 "for additional information.  B<PTRACE_LISTEN> works only on tracees attached "
7990 "by B<PTRACE_SEIZE>."
7991 msgstr ""
7992
7993 #. type: TP
7994 #: build/C/man2/ptrace.2:585
7995 #, no-wrap
7996 msgid "B<PTRACE_KILL>"
7997 msgstr "B<PTRACE_KILL>"
7998
7999 #. type: Plain text
8000 #: build/C/man2/ptrace.2:594
8001 #, fuzzy
8002 #| msgid ""
8003 #| "Sends the child a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8004 #| "ignored.)"
8005 msgid ""
8006 "Send the tracee a B<SIGKILL> to terminate it.  (I<addr> and I<data> are "
8007 "ignored.)"
8008 msgstr ""
8009 "子プロセスに B<SIGKILL> を送り終了させる。(I<addr> と I<data> は無視される。)"
8010
8011 #.  [Note from Denys Vlasenko:
8012 #.      deprecation suggested by Oleg Nesterov. He prefers to deprecate it
8013 #.      instead of describing (and needing to support) PTRACE_KILL's quirks.]
8014 #. type: Plain text
8015 #: build/C/man2/ptrace.2:613
8016 msgid ""
8017 "I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
8018 "directly using B<kill>(2)  or B<tgkill>(2).  The problem with B<PTRACE_KILL> "
8019 "is that it requires the tracee to be in signal-delivery-stop, otherwise it "
8020 "may not work (i.e., may complete successfully but won't kill the tracee).  "
8021 "By contrast, sending a B<SIGKILL> directly has no such limitation."
8022 msgstr ""
8023
8024 #. type: TP
8025 #: build/C/man2/ptrace.2:613
8026 #, no-wrap
8027 msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
8028 msgstr " B<PTRACE_INTERRUPT> (since Linux 3.4)"
8029
8030 #. type: Plain text
8031 #: build/C/man2/ptrace.2:641
8032 msgid ""
8033 "Stop a tracee.  If the tracee is running or sleeping in kernel space and "
8034 "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-"
8035 "exit-stop is reported.  (The interrupted system call is restarted when the "
8036 "tracee is restarted.)  If the tracee was already stopped by a signal and "
8037 "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> "
8038 "and I<WSTOPSIG(status)> returns the stop signal.  If any other ptrace-stop "
8039 "is generated at the same time (for example, if a signal is sent to the "
8040 "tracee), this ptrace-stop happens.  If none of the above applies (for "
8041 "example, if the tracee is running in userspace), it stops with "
8042 "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>.  "
8043 "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
8044 msgstr ""
8045
8046 #. type: TP
8047 #: build/C/man2/ptrace.2:641
8048 #, no-wrap
8049 msgid "B<PTRACE_ATTACH>"
8050 msgstr "B<PTRACE_ATTACH>"
8051
8052 #.  No longer true (removed by Denys Vlasenko, 2011, who remarks:
8053 #.         "I think it isn't true in non-ancient 2.4 and in 2.6/3.x.
8054 #.          Basically, it's not true for any Linux in practical use.
8055 #.  ; the behavior of the tracee is as if it had done a
8056 #.  .BR PTRACE_TRACEME .
8057 #.  The calling process actually becomes the parent of the tracee
8058 #.  process for most purposes (e.g., it will receive
8059 #.  notification of tracee events and appears in
8060 #.  .BR ps (1)
8061 #.  output as the tracee's parent), but a
8062 #.  .BR getppid (2)
8063 #.  by the tracee will still return the PID of the original parent.
8064 #. type: Plain text
8065 #: build/C/man2/ptrace.2:669
8066 msgid ""
8067 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8068 "process.  The tracee is sent a B<SIGSTOP>, but will not necessarily have "
8069 "stopped by the completion of this call; use B<waitpid>(2)  to wait for the "
8070 "tracee to stop.  See the \"Attaching and detaching\" subsection for "
8071 "additional information.  (I<addr> and I<data> are ignored.)"
8072 msgstr ""
8073
8074 #. type: TP
8075 #: build/C/man2/ptrace.2:669
8076 #, no-wrap
8077 msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
8078 msgstr " B<PTRACE_SEIZE> (since Linux 3.4)"
8079
8080 #. type: Plain text
8081 #: build/C/man2/ptrace.2:689
8082 msgid ""
8083 "Attach to the process specified in I<pid>, making it a tracee of the calling "
8084 "process.  Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
8085 "process.  Only a B<PTRACE_SEIZE>d process can accept B<PTRACE_INTERRUPT> and "
8086 "B<PTRACE_LISTEN> commands.  I<addr> must be zero.  I<data> contains a bit "
8087 "mask of ptrace options to activate immediately."
8088 msgstr ""
8089
8090 #. type: TP
8091 #: build/C/man2/ptrace.2:689
8092 #, no-wrap
8093 msgid "B<PTRACE_DETACH>"
8094 msgstr "B<PTRACE_DETACH>"
8095
8096 #. type: Plain text
8097 #: build/C/man2/ptrace.2:698
8098 #, fuzzy
8099 #| msgid ""
8100 #| "Restarts the stopped child as for B<PTRACE_CONT>, but first detaches from "
8101 #| "the process, undoing the reparenting effect of B<PTRACE_ATTACH>, and the "
8102 #| "effects of B<PTRACE_TRACEME>.  Although perhaps not intended, under Linux "
8103 #| "a traced child can be detached in this way regardless of which method was "
8104 #| "used to initiate tracing.  (I<addr> is ignored.)"
8105 msgid ""
8106 "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it.  "
8107 "Under Linux, a tracee can be detached in this way regardless of which method "
8108 "was used to initiate tracing.  (I<addr> is ignored.)"
8109 msgstr ""
8110 "B<PTRACE_CONT> と同様に停止した子プロセスを再開する。ただし まずそのプロセス"
8111 "からの分離 (detach) を行い、 B<PTRACE_ATTACH> での親の切り換えによる効果と "
8112 "B<PTRACE_TRACEME> の効果を取り消す。意図したものではないだろうが、 Linux で"
8113 "は、トレースされている子プロセスはどのような方法でトレースを 開始されたとして"
8114 "も、この方法で分離 (detach) することができる。 (I<addr> は無視される。)"
8115
8116 #. type: SS
8117 #: build/C/man2/ptrace.2:698
8118 #, no-wrap
8119 msgid "Death under ptrace"
8120 msgstr ""
8121
8122 #. type: Plain text
8123 #: build/C/man2/ptrace.2:707
8124 msgid ""
8125 "When a (possibly multithreaded) process receives a killing signal (one whose "
8126 "disposition is set to B<SIG_DFL> and whose default action is to kill the "
8127 "process), all threads exit.  Tracees report their death to their tracer(s).  "
8128 "Notification of this event is delivered via B<waitpid>(2)."
8129 msgstr ""
8130
8131 #. type: Plain text
8132 #: build/C/man2/ptrace.2:716
8133 msgid ""
8134 "Note that the killing signal will first cause signal-delivery-stop (on one "
8135 "tracee only), and only after it is injected by the tracer (or after it was "
8136 "dispatched to a thread which isn't traced), will death from the signal "
8137 "happen on I<all> tracees within a multithreaded process.  (The term \"signal-"
8138 "delivery-stop\" is explained below.)"
8139 msgstr ""
8140
8141 #. type: Plain text
8142 #: build/C/man2/ptrace.2:728
8143 msgid ""
8144 "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
8145 "can't suppress it.  B<SIGKILL> kills even within system calls (syscall-exit-"
8146 "stop is not generated prior to death by B<SIGKILL>).  The net effect is that "
8147 "B<SIGKILL> always kills the process (all its threads), even if some threads "
8148 "of the process are ptraced."
8149 msgstr ""
8150
8151 #. type: Plain text
8152 #: build/C/man2/ptrace.2:733
8153 msgid ""
8154 "When the tracee calls B<_exit>(2), it reports its death to its tracer.  "
8155 "Other threads are not affected."
8156 msgstr ""
8157
8158 #. type: Plain text
8159 #: build/C/man2/ptrace.2:737
8160 msgid ""
8161 "When any thread executes B<exit_group>(2), every tracee in its thread group "
8162 "reports its death to its tracer."
8163 msgstr ""
8164
8165 #. type: Plain text
8166 #: build/C/man2/ptrace.2:751
8167 msgid ""
8168 "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
8169 "before actual death.  This applies to exits via B<exit>(2), B<exit_group>"
8170 "(2), and signal deaths (except B<SIGKILL>), and when threads are torn down "
8171 "on B<execve>(2)  in a multithreaded process."
8172 msgstr ""
8173
8174 #. type: Plain text
8175 #: build/C/man2/ptrace.2:776
8176 msgid ""
8177 "The tracer cannot assume that the ptrace-stopped tracee exists.  There are "
8178 "many scenarios when the tracee may die while stopped (such as B<SIGKILL>).  "
8179 "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any "
8180 "ptrace operation.  Unfortunately, the same error is returned if the tracee "
8181 "exists but is not ptrace-stopped (for commands which require a stopped "
8182 "tracee), or if it is not traced by the process which issued the ptrace "
8183 "call.  The tracer needs to keep track of the stopped/running state of the "
8184 "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it "
8185 "knows that the tracee has been observed to enter ptrace-stop.  Note that "
8186 "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the "
8187 "tracee's death status if a ptrace operation returned B<ESRCH>.  I<waitpid"
8188 "(WNOHANG)> may return 0 instead.  In other words, the tracee may be \"not "
8189 "yet fully dead\", but already refusing ptrace requests."
8190 msgstr ""
8191
8192 #. type: Plain text
8193 #: build/C/man2/ptrace.2:790
8194 msgid ""
8195 "The tracer can't assume that the tracee I<always> ends its life by reporting "
8196 "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
8197 "does not occur.  For example, if a thread other than thread group leader "
8198 "does an B<execve>(2), it disappears; its PID will never be seen again, and "
8199 "any subsequent ptrace stops will be reported under the thread group leader's "
8200 "PID."
8201 msgstr ""
8202
8203 #. type: SS
8204 #: build/C/man2/ptrace.2:790
8205 #, no-wrap
8206 msgid "Stopped states"
8207 msgstr ""
8208
8209 #. type: Plain text
8210 #: build/C/man2/ptrace.2:812
8211 msgid ""
8212 "A tracee can be in two states: running or stopped.  For the purposes of "
8213 "ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
8214 "B<pause>(2), etc.)  is nevertheless considered to be running, even if the "
8215 "tracee is blocked for a long time.  The state of the tracee after "
8216 "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
8217 "(ptrace commands won't work on it, and it will deliver B<waitpid>(2)  "
8218 "notifications), but it also may be considered \"stopped\" because it is not "
8219 "executing instructions (is not scheduled), and if it was in group-stop "
8220 "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
8221 "received."
8222 msgstr ""
8223
8224 #. type: Plain text
8225 #: build/C/man2/ptrace.2:816
8226 msgid ""
8227 "There are many kinds of states when the tracee is stopped, and in ptrace "
8228 "discussions they are often conflated.  Therefore, it is important to use "
8229 "precise terms."
8230 msgstr ""
8231
8232 #. type: Plain text
8233 #: build/C/man2/ptrace.2:827
8234 msgid ""
8235 "In this manual page, any stopped state in which the tracee is ready to "
8236 "accept ptrace commands from the tracer is called I<ptrace-stop>.  Ptrace-"
8237 "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, "
8238 "I<syscall-stop>, and so on.  These stopped states are described in detail "
8239 "below."
8240 msgstr ""
8241
8242 #. type: Plain text
8243 #: build/C/man2/ptrace.2:832
8244 msgid ""
8245 "When the running tracee enters ptrace-stop, it notifies its tracer using "
8246 "B<waitpid>(2)  (or one of the other \"wait\" system calls).  Most of this "
8247 "manual page assumes that the tracer waits with:"
8248 msgstr ""
8249
8250 #. type: Plain text
8251 #: build/C/man2/ptrace.2:834
8252 #, no-wrap
8253 msgid "    pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
8254 msgstr ""
8255
8256 #.  Denys Vlasenko:
8257 #.      Do we require __WALL usage, or will just using 0 be ok? (With 0,
8258 #.      I am not 100% sure there aren't ugly corner cases.) Are the
8259 #.      rules different if user wants to use waitid? Will waitid require
8260 #.      WEXITED?
8261 #. type: Plain text
8262 #: build/C/man2/ptrace.2:846
8263 msgid ""
8264 "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
8265 "and I<WIFSTOPPED(status)> true."
8266 msgstr ""
8267
8268 #. type: Plain text
8269 #: build/C/man2/ptrace.2:854
8270 msgid ""
8271 "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
8272 "but implies their functionality."
8273 msgstr ""
8274
8275 #. type: Plain text
8276 #: build/C/man2/ptrace.2:861
8277 msgid ""
8278 "Setting the B<WCONTINUED> flag when calling B<waitpid>(2)  is not "
8279 "recommended: the \"continued\" state is per-process and consuming it can "
8280 "confuse the real parent of the tracee."
8281 msgstr ""
8282
8283 #. type: Plain text
8284 #: build/C/man2/ptrace.2:869
8285 msgid ""
8286 "Use of the B<WNOHANG> flag may cause B<waitpid>(2)  to return 0 (\"no wait "
8287 "results available yet\")  even if the tracer knows there should be a "
8288 "notification.  Example:"
8289 msgstr ""
8290
8291 #. type: Plain text
8292 #: build/C/man2/ptrace.2:878
8293 #, no-wrap
8294 msgid ""
8295 "    errno = 0;\n"
8296 "    ptrace(PTRACE_CONT, pid, 0L, 0L);\n"
8297 "    if (errno == ESRCH) {\n"
8298 "        /* tracee is dead */\n"
8299 "        r = waitpid(tracee, &status, __WALL | WNOHANG);\n"
8300 "        /* r can still be 0 here! */\n"
8301 "    }\n"
8302 msgstr ""
8303
8304 #. type: Plain text
8305 #: build/C/man2/ptrace.2:901
8306 msgid ""
8307 "The following kinds of ptrace-stops exist: signal-delivery-stops, group-"
8308 "stops, B<PTRACE_EVENT> stops, syscall-stops.  They all are reported by "
8309 "B<waitpid>(2)  with I<WIFSTOPPED(status)> true.  They may be differentiated "
8310 "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in "
8311 "that value, by querying B<PTRACE_GETSIGINFO>.  (Note: the I<WSTOPSIG(status)"
8312 "> macro can't be used to perform this examination, because it returns the "
8313 "value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)"
8314 msgstr ""
8315
8316 #. type: SS
8317 #: build/C/man2/ptrace.2:901
8318 #, no-wrap
8319 msgid "Signal-delivery-stop"
8320 msgstr ""
8321
8322 #. type: Plain text
8323 #: build/C/man2/ptrace.2:921
8324 msgid ""
8325 "When a (possibly multithreaded) process receives any signal except "
8326 "B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
8327 "signal.  (If the signal is generated with B<tgkill>(2), the target thread "
8328 "can be explicitly selected by the caller.)  If the selected thread is "
8329 "traced, it enters signal-delivery-stop.  At this point, the signal is not "
8330 "yet delivered to the process, and can be suppressed by the tracer.  If the "
8331 "tracer doesn't suppress the signal, it passes the signal to the tracee in "
8332 "the next ptrace restart request.  This second step of signal delivery is "
8333 "called I<signal injection> in this manual page.  Note that if the signal is "
8334 "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, "
8335 "with the usual exception that B<SIGSTOP> can't be blocked."
8336 msgstr ""
8337
8338 #. type: Plain text
8339 #: build/C/man2/ptrace.2:935
8340 msgid ""
8341 "Signal-delivery-stop is observed by the tracer as B<waitpid>(2)  returning "
8342 "with I<WIFSTOPPED(status)> true, with the signal returned by I<WSTOPSIG"
8343 "(status)>.  If the signal is B<SIGTRAP>, this may be a different kind of "
8344 "ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below for "
8345 "details.  If I<WSTOPSIG(status)> returns a stopping signal, this may be a "
8346 "group-stop; see below."
8347 msgstr ""
8348
8349 #. type: SS
8350 #: build/C/man2/ptrace.2:935
8351 #, no-wrap
8352 msgid "Signal injection and suppression"
8353 msgstr ""
8354
8355 #. type: Plain text
8356 #: build/C/man2/ptrace.2:938
8357 msgid ""
8358 "After signal-delivery-stop is observed by the tracer, the tracer should "
8359 "restart the tracee with the call"
8360 msgstr ""
8361
8362 #. type: Plain text
8363 #: build/C/man2/ptrace.2:940
8364 #, no-wrap
8365 msgid "    ptrace(PTRACE_restart, pid, 0, sig)\n"
8366 msgstr ""
8367
8368 #. type: Plain text
8369 #: build/C/man2/ptrace.2:953
8370 msgid ""
8371 "where B<PTRACE_restart> is one of the restarting ptrace requests.  If I<sig> "
8372 "is 0, then a signal is not delivered.  Otherwise, the signal I<sig> is "
8373 "delivered.  This operation is called I<signal injection> in this manual "
8374 "page, to distinguish it from signal-delivery-stop."
8375 msgstr ""
8376
8377 #. type: Plain text
8378 #: build/C/man2/ptrace.2:959
8379 msgid ""
8380 "The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
8381 "tracer can cause a different signal to be injected."
8382 msgstr ""
8383
8384 #. type: Plain text
8385 #: build/C/man2/ptrace.2:975
8386 msgid ""
8387 "Note that a suppressed signal still causes system calls to return "
8388 "prematurely.  In this case system calls will be restarted: the tracer will "
8389 "observe the tracee to reexecute the interrupted system call (or "
8390 "B<restart_syscall>(2)  system call for a few syscalls which use a different "
8391 "mechanism for restarting) if the tracer uses B<PTRACE_SYSCALL>.  Even system "
8392 "calls (such as B<poll>(2))  which are not restartable after signal are "
8393 "restarted after signal is suppressed; however, kernel bugs exist which cause "
8394 "some syscalls to fail with B<EINTR> even though no observable signal is "
8395 "injected to the tracee."
8396 msgstr ""
8397
8398 #. type: Plain text
8399 #: build/C/man2/ptrace.2:986
8400 msgid ""
8401 "Restarting ptrace commands issued in ptrace-stops other than signal-delivery-"
8402 "stop are not guaranteed to inject a signal, even if I<sig> is nonzero.  No "
8403 "error is reported; a nonzero I<sig> may simply be ignored.  Ptrace users "
8404 "should not try to \"create a new signal\" this way: use B<tgkill>(2)  "
8405 "instead."
8406 msgstr ""
8407
8408 #. type: Plain text
8409 #: build/C/man2/ptrace.2:993
8410 msgid ""
8411 "The fact that signal injection requests may be ignored when restarting the "
8412 "tracee after ptrace stops that are not signal-delivery-stops is a cause of "
8413 "confusion among ptrace users.  One typical scenario is that the tracer "
8414 "observes group-stop, mistakes it for signal-delivery-stop, restarts the "
8415 "tracee with"
8416 msgstr ""
8417
8418 #. type: Plain text
8419 #: build/C/man2/ptrace.2:995
8420 #, no-wrap
8421 msgid "    ptrace(PTRACE_restart, pid, 0, stopsig)\n"
8422 msgstr ""
8423
8424 #. type: Plain text
8425 #: build/C/man2/ptrace.2:1001
8426 msgid ""
8427 "with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
8428 "the tracee continues to run."
8429 msgstr ""
8430
8431 #. type: Plain text
8432 #: build/C/man2/ptrace.2:1021
8433 msgid ""
8434 "The B<SIGCONT> signal has a side effect of waking up (all threads of)  a "
8435 "group-stopped process.  This side effect happens before signal-delivery-"
8436 "stop.  The tracer can't suppress this side effect (it can only suppress "
8437 "signal injection, which only causes the B<SIGCONT> handler to not be "
8438 "executed in the tracee, if such a handler is installed).  In fact, waking up "
8439 "from group-stop may be followed by signal-delivery-stop for signal(s)  "
8440 "I<other than> B<SIGCONT>, if they were pending when B<SIGCONT> was "
8441 "delivered.  In other words, B<SIGCONT> may be not the first signal observed "
8442 "by the tracee after it was sent."
8443 msgstr ""
8444
8445 #. type: Plain text
8446 #: build/C/man2/ptrace.2:1025
8447 msgid ""
8448 "Stopping signals cause (all threads of) a process to enter group-stop.  This "
8449 "side effect happens after signal injection, and therefore can be suppressed "
8450 "by the tracer."
8451 msgstr ""
8452
8453 #
8454 #.  In the Linux 2.4 sources, in arch/i386/kernel/signal.c::do_signal(),
8455 #.  there is:
8456 #.              /* The debugger continued.  Ignore SIGSTOP.  */
8457 #.              if (signr == SIGSTOP)
8458 #.                      continue;
8459 #. type: Plain text
8460 #: build/C/man2/ptrace.2:1035
8461 msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
8462 msgstr ""
8463
8464 #. type: Plain text
8465 #: build/C/man2/ptrace.2:1052
8466 msgid ""
8467 "B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
8468 "corresponds to the delivered signal.  B<PTRACE_SETSIGINFO> may be used to "
8469 "modify it.  If B<PTRACE_SETSIGINFO> has been used to alter I<siginfo_t>, the "
8470 "I<si_signo> field and the I<sig> parameter in the restarting command must "
8471 "match, otherwise the result is undefined."
8472 msgstr ""
8473
8474 #. type: SS
8475 #: build/C/man2/ptrace.2:1052
8476 #, no-wrap
8477 msgid "Group-stop"
8478 msgstr ""
8479
8480 #. type: Plain text
8481 #: build/C/man2/ptrace.2:1064
8482 msgid ""
8483 "When a (possibly multithreaded) process receives a stopping signal, all "
8484 "threads stop.  If some threads are traced, they enter a group-stop.  Note "
8485 "that the stopping signal will first cause signal-delivery-stop (on one "
8486 "tracee only), and only after it is injected by the tracer (or after it was "
8487 "dispatched to a thread which isn't traced), will group-stop be initiated on "
8488 "I<all> tracees within the multithreaded process.  As usual, every tracee "
8489 "reports its group-stop separately to the corresponding tracer."
8490 msgstr ""
8491
8492 #. type: Plain text
8493 #: build/C/man2/ptrace.2:1073
8494 msgid ""
8495 "Group-stop is observed by the tracer as B<waitpid>(2)  returning with "
8496 "I<WIFSTOPPED(status)> true, with the stopping signal available via I<WSTOPSIG"
8497 "(status)>.  The same result is returned by some other classes of ptrace-"
8498 "stops, therefore the recommended practice is to perform the call"
8499 msgstr ""
8500
8501 #. type: Plain text
8502 #: build/C/man2/ptrace.2:1075
8503 #, no-wrap
8504 msgid "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
8505 msgstr ""
8506
8507 #. type: Plain text
8508 #: build/C/man2/ptrace.2:1096
8509 msgid ""
8510 "The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
8511 "B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals.  If "
8512 "the tracer sees something else, it can't be a group-stop.  Otherwise, the "
8513 "tracer needs to call B<PTRACE_GETSIGINFO>.  If B<PTRACE_GETSIGINFO> fails "
8514 "with B<EINVAL>, then it is definitely a group-stop.  (Other failure codes "
8515 "are possible, such as B<ESRCH> (\"no such process\") if a B<SIGKILL> killed "
8516 "the tracee.)"
8517 msgstr ""
8518
8519 #. type: Plain text
8520 #: build/C/man2/ptrace.2:1106
8521 msgid ""
8522 "If tracee was attached using I<PTRACE_SEIZE>, group-stop is indicated by "
8523 "B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>.  This "
8524 "allows detection of group-stops without requiring an extra "
8525 "B<PTRACE_GETSIGINFO> call."
8526 msgstr ""
8527
8528 #. type: Plain text
8529 #: build/C/man2/ptrace.2:1115
8530 msgid ""
8531 "As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
8532 "it restarts or kills it, the tracee will not run, and will not send "
8533 "notifications (except B<SIGKILL> death) to the tracer, even if the tracer "
8534 "enters into another B<waitpid>(2)  call."
8535 msgstr ""
8536
8537 #. type: Plain text
8538 #: build/C/man2/ptrace.2:1129
8539 msgid ""
8540 "The kernel behavior described in the previous paragraph causes a problem "
8541 "with transparent handling of stopping signals.  If the tracer restarts the "
8542 "tracee after group-stop, the stopping signal is effectively ignored\\(emthe "
8543 "tracee doesn't remain stopped, it runs.  If the tracer doesn't restart the "
8544 "tracee before entering into the next B<waitpid>(2), future B<SIGCONT> "
8545 "signals will not be reported to the tracer; this would cause the B<SIGCONT> "
8546 "signals to have no effect on the tracee."
8547 msgstr ""
8548
8549 #. type: Plain text
8550 #: build/C/man2/ptrace.2:1140
8551 msgid ""
8552 "Since Linux 3.4, there is a method to overcome this problem: instead of "
8553 "B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
8554 "in a way where it does not execute, but waits for a new event which it can "
8555 "report via B<waitpid>(2)  (such as when it is restarted by a B<SIGCONT>)."
8556 msgstr ""
8557
8558 #. type: SS
8559 #: build/C/man2/ptrace.2:1140
8560 #, no-wrap
8561 msgid "PTRACE_EVENT stops"
8562 msgstr ""
8563
8564 #. type: Plain text
8565 #: build/C/man2/ptrace.2:1146
8566 msgid ""
8567 "If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter ptrace-"
8568 "stops called B<PTRACE_EVENT> stops."
8569 msgstr ""
8570
8571 #. type: Plain text
8572 #: build/C/man2/ptrace.2:1160
8573 msgid ""
8574 "B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2)  returning "
8575 "with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>.  An "
8576 "additional bit is set in the higher byte of the status word: the value "
8577 "I<statusE<gt>E<gt>8> will be"
8578 msgstr ""
8579
8580 #. type: Plain text
8581 #: build/C/man2/ptrace.2:1162
8582 #, no-wrap
8583 msgid "    (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
8584 msgstr ""
8585
8586 #. type: Plain text
8587 #: build/C/man2/ptrace.2:1164
8588 msgid "The following events exist:"
8589 msgstr ""
8590
8591 #. type: TP
8592 #: build/C/man2/ptrace.2:1164
8593 #, no-wrap
8594 msgid "B<PTRACE_EVENT_VFORK>"
8595 msgstr "B<PTRACE_EVENT_VFORK>"
8596
8597 #. type: Plain text
8598 #: build/C/man2/ptrace.2:1177
8599 msgid ""
8600 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8601 "flag.  When the tracee is continued after this stop, it will wait for child "
8602 "to exit/exec before continuing its execution (in other words, the usual "
8603 "behavior on B<vfork>(2))."
8604 msgstr ""
8605
8606 #. type: TP
8607 #: build/C/man2/ptrace.2:1177
8608 #, no-wrap
8609 msgid "B<PTRACE_EVENT_FORK>"
8610 msgstr "B<PTRACE_EVENT_FORK>"
8611
8612 #. type: Plain text
8613 #: build/C/man2/ptrace.2:1185
8614 msgid ""
8615 "Stop before return from B<fork>(2)  or B<clone>(2)  with the exit signal set "
8616 "to B<SIGCHLD>."
8617 msgstr ""
8618
8619 #. type: TP
8620 #: build/C/man2/ptrace.2:1185
8621 #, no-wrap
8622 msgid "B<PTRACE_EVENT_CLONE>"
8623 msgstr "B<PTRACE_EVENT_CLONE>"
8624
8625 #. type: Plain text
8626 #: build/C/man2/ptrace.2:1189
8627 msgid "Stop before return from B<clone>(2)."
8628 msgstr ""
8629
8630 #. type: TP
8631 #: build/C/man2/ptrace.2:1189
8632 #, no-wrap
8633 msgid "B<PTRACE_EVENT_VFORK_DONE>"
8634 msgstr "B<PTRACE_EVENT_VFORK_DONE>"
8635
8636 #. type: Plain text
8637 #: build/C/man2/ptrace.2:1199
8638 msgid ""
8639 "Stop before return from B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> "
8640 "flag, but after the child unblocked this tracee by exiting or execing."
8641 msgstr ""
8642
8643 #. type: Plain text
8644 #: build/C/man2/ptrace.2:1205
8645 msgid ""
8646 "For all four stops described above, the stop occurs in the parent (i.e., the "
8647 "tracee), not in the newly created thread.  B<PTRACE_GETEVENTMSG> can be used "
8648 "to retrieve the new thread's ID."
8649 msgstr ""
8650
8651 #. type: TP
8652 #: build/C/man2/ptrace.2:1205
8653 #, no-wrap
8654 msgid "B<PTRACE_EVENT_EXEC>"
8655 msgstr "B<PTRACE_EVENT_EXEC>"
8656
8657 #. type: Plain text
8658 #: build/C/man2/ptrace.2:1212
8659 msgid ""
8660 "Stop before return from B<execve>(2).  Since Linux 3.0, "
8661 "B<PTRACE_GETEVENTMSG> returns the former thread ID."
8662 msgstr ""
8663
8664 #. type: TP
8665 #: build/C/man2/ptrace.2:1212
8666 #, no-wrap
8667 msgid "B<PTRACE_EVENT_EXIT>"
8668 msgstr "B<PTRACE_EVENT_EXIT>"
8669
8670 #. type: Plain text
8671 #: build/C/man2/ptrace.2:1228
8672 msgid ""
8673 "Stop before exit (including death from B<exit_group>(2)), signal death, or "
8674 "exit caused by B<execve>(2)  in a multithreaded process.  "
8675 "B<PTRACE_GETEVENTMSG> returns the exit status.  Registers can be examined "
8676 "(unlike when \"real\" exit happens).  The tracee is still alive; it needs to "
8677 "be B<PTRACE_CONT>ed or B<PTRACE_DETACH>ed to finish exiting."
8678 msgstr ""
8679
8680 #. type: TP
8681 #: build/C/man2/ptrace.2:1228
8682 #, no-wrap
8683 msgid "B<PTRACE_EVENT_STOP>"
8684 msgstr "B<PTRACE_EVENT_STOP>"
8685
8686 #. type: Plain text
8687 #: build/C/man2/ptrace.2:1240
8688 msgid ""
8689 "Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
8690 "ptrace-stop when a new child is attached (only if attached using "
8691 "B<PTRACE_SEIZE>).  or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
8692 msgstr ""
8693
8694 #. type: Plain text
8695 #: build/C/man2/ptrace.2:1252
8696 msgid ""
8697 "B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
8698 "I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
8699 msgstr ""
8700
8701 #. type: SS
8702 #: build/C/man2/ptrace.2:1252
8703 #, no-wrap
8704 msgid "Syscall-stops"
8705 msgstr ""
8706
8707 #. type: Plain text
8708 #: build/C/man2/ptrace.2:1265
8709 msgid ""
8710 "If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters syscall-"
8711 "enter-stop just prior to entering any system call.  If the tracer restarts "
8712 "the tracee with B<PTRACE_SYSCALL>, the tracee enters syscall-exit-stop when "
8713 "the system call is finished, or if it is interrupted by a signal.  (That is, "
8714 "signal-delivery-stop never happens between syscall-enter-stop and syscall-"
8715 "exit-stop; it happens I<after> syscall-exit-stop.)"
8716 msgstr ""
8717
8718 #. type: Plain text
8719 #: build/C/man2/ptrace.2:1279
8720 msgid ""
8721 "Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
8722 "exit (if it entered B<_exit>(2)  or B<exit_group>(2)), be killed by "
8723 "B<SIGKILL>, or die silently (if it is a thread group leader, the B<execve>"
8724 "(2)  happened in another thread, and that thread is not traced by the same "
8725 "tracer; this situation is discussed later)."
8726 msgstr ""
8727
8728 #. type: Plain text
8729 #: build/C/man2/ptrace.2:1294
8730 msgid ""
8731 "Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
8732 "B<waitpid>(2)  returning with I<WIFSTOPPED(status)> true, and I<WSTOPSIG"
8733 "(status)> giving B<SIGTRAP>.  If the B<PTRACE_O_TRACESYSGOOD> option was set "
8734 "by the tracer, then I<WSTOPSIG(status)> will give the value I<(SIGTRAP\\ |\\ "
8735 "0x80)>."
8736 msgstr ""
8737
8738 #. type: Plain text
8739 #: build/C/man2/ptrace.2:1300
8740 msgid ""
8741 "Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
8742 "by querying B<PTRACE_GETSIGINFO> for the following cases:"
8743 msgstr ""
8744
8745 #. type: TP
8746 #: build/C/man2/ptrace.2:1300
8747 #, no-wrap
8748 msgid "I<si_code> E<lt>= 0"
8749 msgstr ""
8750
8751 #. type: Plain text
8752 #: build/C/man2/ptrace.2:1312
8753 msgid ""
8754 "B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
8755 "system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
8756 "a POSIX timer, change of state on a POSIX message queue, or completion of an "
8757 "asynchronous I/O request."
8758 msgstr ""
8759
8760 #. type: TP
8761 #: build/C/man2/ptrace.2:1312
8762 #, no-wrap
8763 msgid "I<si_code> == SI_KERNEL (0x80)"
8764 msgstr ""
8765
8766 #. type: Plain text
8767 #: build/C/man2/ptrace.2:1316
8768 msgid "B<SIGTRAP> was sent by the kernel."
8769 msgstr ""
8770
8771 #. type: TP
8772 #: build/C/man2/ptrace.2:1316
8773 #, no-wrap
8774 msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
8775 msgstr ""
8776
8777 #. type: Plain text
8778 #: build/C/man2/ptrace.2:1319
8779 msgid "This is a syscall-stop."
8780 msgstr ""
8781
8782 #. type: Plain text
8783 #: build/C/man2/ptrace.2:1324
8784 msgid ""
8785 "However, syscall-stops happen very often (twice per system call), and "
8786 "performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
8787 "expensive."
8788 msgstr ""
8789
8790 #. type: Plain text
8791 #: build/C/man2/ptrace.2:1347
8792 msgid ""
8793 "Some architectures allow the cases to be distinguished by examining "
8794 "registers.  For example, on x86, I<rax> == -B<ENOSYS> in syscall-enter-"
8795 "stop.  Since B<SIGTRAP> (like any other signal) always happens I<after> "
8796 "syscall-exit-stop, and at this point I<rax> almost never contains -"
8797 "B<ENOSYS>, the B<SIGTRAP> looks like \"syscall-stop which is not syscall-"
8798 "enter-stop\"; in other words, it looks like a \"stray syscall-exit-stop\" "
8799 "and can be detected this way.  But such detection is fragile and is best "
8800 "avoided."
8801 msgstr ""
8802
8803 #. type: Plain text
8804 #: build/C/man2/ptrace.2:1353
8805 msgid ""
8806 "Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
8807 "distinguish syscall-stops from other kinds of ptrace-stops, since it is "
8808 "reliable and does not incur a performance penalty."
8809 msgstr ""
8810
8811 #. type: Plain text
8812 #: build/C/man2/ptrace.2:1364
8813 msgid ""
8814 "Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
8815 "other by the tracer.  The tracer needs to keep track of the sequence of "
8816 "ptrace-stops in order to not misinterpret syscall-enter-stop as syscall-exit-"
8817 "stop or vice versa.  The rule is that syscall-enter-stop is always followed "
8818 "by syscall-exit-stop, B<PTRACE_EVENT> stop or the tracee's death; no other "
8819 "kinds of ptrace-stop can occur in between."
8820 msgstr ""
8821
8822 #. type: Plain text
8823 #: build/C/man2/ptrace.2:1369
8824 msgid ""
8825 "If after syscall-enter-stop, the tracer uses a restarting command other than "
8826 "B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
8827 msgstr ""
8828
8829 #. type: Plain text
8830 #: build/C/man2/ptrace.2:1381
8831 msgid ""
8832 "B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
8833 "with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
8834 msgstr ""
8835
8836 #. type: SS
8837 #: build/C/man2/ptrace.2:1381
8838 #, no-wrap
8839 msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
8840 msgstr ""
8841
8842 #
8843 #.  FIXME
8844 #.  document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
8845 #.  PTRACE_SYSEMU_SINGLESTEP
8846 #. type: Plain text
8847 #: build/C/man2/ptrace.2:1387
8848 msgid "[Details of these kinds of stops are yet to be documented.]"
8849 msgstr ""
8850
8851 #. type: SS
8852 #: build/C/man2/ptrace.2:1387
8853 #, no-wrap
8854 msgid "Informational and restarting ptrace commands"
8855 msgstr ""
8856
8857 #. type: Plain text
8858 #: build/C/man2/ptrace.2:1397
8859 msgid ""
8860 "Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
8861 "B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>)  require the "
8862 "tracee to be in a ptrace-stop, otherwise they fail with B<ESRCH>."
8863 msgstr ""
8864
8865 #. type: Plain text
8866 #: build/C/man2/ptrace.2:1402
8867 msgid ""
8868 "When the tracee is in ptrace-stop, the tracer can read and write data to the "
8869 "tracee using informational commands.  These commands leave the tracee in "
8870 "ptrace-stopped state:"
8871 msgstr ""
8872
8873 #. type: Plain text
8874 #: build/C/man2/ptrace.2:1414
8875 #, no-wrap
8876 msgid ""
8877 "    ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
8878 "    ptrace(PTRACE_POKETEXT/POKEDATA/POKEUSER, pid, addr, long_val);\n"
8879 "    ptrace(PTRACE_GETREGS/GETFPREGS, pid, 0, &struct);\n"
8880 "    ptrace(PTRACE_SETREGS/SETFPREGS, pid, 0, &struct);\n"
8881 "    ptrace(PTRACE_GETREGSET, pid, NT_foo, &iov);\n"
8882 "    ptrace(PTRACE_SETREGSET, pid, NT_foo, &iov);\n"
8883 "    ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo);\n"
8884 "    ptrace(PTRACE_SETSIGINFO, pid, 0, &siginfo);\n"
8885 "    ptrace(PTRACE_GETEVENTMSG, pid, 0, &long_var);\n"
8886 "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8887 msgstr ""
8888
8889 #. type: Plain text
8890 #: build/C/man2/ptrace.2:1426
8891 msgid ""
8892 "Note that some errors are not reported.  For example, setting signal "
8893 "information (I<siginfo>)  may have no effect in some ptrace-stops, yet the "
8894 "call may succeed (return 0 and not set I<errno>); querying "
8895 "B<PTRACE_GETEVENTMSG> may succeed and return some random value if current "
8896 "ptrace-stop is not documented as returning a meaningful event message."
8897 msgstr ""
8898
8899 #. type: Plain text
8900 #: build/C/man2/ptrace.2:1428
8901 msgid "The call"
8902 msgstr ""
8903
8904 #. type: Plain text
8905 #: build/C/man2/ptrace.2:1430
8906 #, no-wrap
8907 msgid "    ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
8908 msgstr ""
8909
8910 #. type: Plain text
8911 #: build/C/man2/ptrace.2:1439
8912 msgid ""
8913 "affects one tracee.  The tracee's current flags are replaced.  Flags are "
8914 "inherited by new tracees created and \"auto-attached\" via active "
8915 "B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or B<PTRACE_O_TRACECLONE> "
8916 "options."
8917 msgstr ""
8918
8919 #. type: Plain text
8920 #: build/C/man2/ptrace.2:1442
8921 msgid ""
8922 "Another group of commands makes the ptrace-stopped tracee run.  They have "
8923 "the form:"
8924 msgstr ""
8925
8926 #. type: Plain text
8927 #: build/C/man2/ptrace.2:1444
8928 #, no-wrap
8929 msgid "    ptrace(cmd, pid, 0, sig);\n"
8930 msgstr ""
8931
8932 #. type: Plain text
8933 #: build/C/man2/ptrace.2:1465
8934 msgid ""
8935 "where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
8936 "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
8937 "B<PTRACE_SYSEMU_SINGLESTEP>.  If the tracee is in signal-delivery-stop, "
8938 "I<sig> is the signal to be injected (if it is nonzero).  Otherwise, I<sig> "
8939 "may be ignored.  (When restarting a tracee from a ptrace-stop other than "
8940 "signal-delivery-stop, recommended practice is to always pass 0 in I<sig>.)"
8941 msgstr ""
8942
8943 #. type: SS
8944 #: build/C/man2/ptrace.2:1465
8945 #, no-wrap
8946 msgid "Attaching and detaching"
8947 msgstr ""
8948
8949 #. type: Plain text
8950 #: build/C/man2/ptrace.2:1467
8951 msgid "A thread can be attached to the tracer using the call"
8952 msgstr ""
8953
8954 #. type: Plain text
8955 #: build/C/man2/ptrace.2:1469
8956 #, no-wrap
8957 msgid "    ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
8958 msgstr ""
8959
8960 #. type: Plain text
8961 #: build/C/man2/ptrace.2:1471 build/C/man2/ptrace.2:1968
8962 msgid "or"
8963 msgstr ""
8964
8965 #. type: Plain text
8966 #: build/C/man2/ptrace.2:1473
8967 #, no-wrap
8968 msgid "    ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
8969 msgstr ""
8970
8971 #
8972 #.  FIXME: Describe how to attach to a thread which is already
8973 #.         group-stopped.
8974 #. type: Plain text
8975 #: build/C/man2/ptrace.2:1498
8976 msgid ""
8977 "B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread.  If the tracer wants this "
8978 "B<SIGSTOP> to have no effect, it needs to suppress it.  Note that if other "
8979 "signals are concurrently sent to this thread during attach, the tracer may "
8980 "see the tracee enter signal-delivery-stop with other signal(s) first! The "
8981 "usual practice is to reinject these signals until B<SIGSTOP> is seen, then "
8982 "suppress B<SIGSTOP> injection.  The design bug here is that a ptrace attach "
8983 "and a concurrently delivered B<SIGSTOP> may race and the concurrent "
8984 "B<SIGSTOP> may be lost."
8985 msgstr ""
8986
8987 #. type: Plain text
8988 #: build/C/man2/ptrace.2:1505
8989 msgid ""
8990 "Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
8991 "may cause a stray B<EINTR> return from the currently executing system call "
8992 "in the tracee, as described in the \"Signal injection and suppression\" "
8993 "section."
8994 msgstr ""
8995
8996 #. type: Plain text
8997 #: build/C/man2/ptrace.2:1517
8998 msgid ""
8999 "Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>.  "
9000 "B<PTRACE_SEIZE> does not stop the attached process.  If you need to stop it "
9001 "after attach (or at any other time) without sending it any signals, use "
9002 "B<PTRACE_INTERRUPT> command."
9003 msgstr ""
9004
9005 #. type: Plain text
9006 #: build/C/man2/ptrace.2:1519
9007 msgid "The request"
9008 msgstr ""
9009
9010 #. type: Plain text
9011 #: build/C/man2/ptrace.2:1521
9012 #, no-wrap
9013 msgid "    ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
9014 msgstr ""
9015
9016 #. type: Plain text
9017 #: build/C/man2/ptrace.2:1527
9018 msgid ""
9019 "turns the calling thread into a tracee.  The thread continues to run "
9020 "(doesn't enter ptrace-stop).  A common practice is to follow the "
9021 "B<PTRACE_TRACEME> with"
9022 msgstr ""
9023
9024 #. type: Plain text
9025 #: build/C/man2/ptrace.2:1529
9026 #, no-wrap
9027 msgid "    raise(SIGSTOP);\n"
9028 msgstr ""
9029
9030 #. type: Plain text
9031 #: build/C/man2/ptrace.2:1532
9032 msgid ""
9033 "and allow the parent (which is our tracer now) to observe our signal-"
9034 "delivery-stop."
9035 msgstr ""
9036
9037 #. type: Plain text
9038 #: build/C/man2/ptrace.2:1556
9039 msgid ""
9040 "If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
9041 "B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
9042 "respectively, B<vfork>(2)  or B<clone>(2)  with the B<CLONE_VFORK> flag, "
9043 "B<fork>(2)  or B<clone>(2)  with the exit signal set to B<SIGCHLD>, and "
9044 "other kinds of B<clone>(2), are automatically attached to the same tracer "
9045 "which traced their parent.  B<SIGSTOP> is delivered to the children, causing "
9046 "them to enter signal-delivery-stop after they exit the system call which "
9047 "created them."
9048 msgstr ""
9049
9050 #. type: Plain text
9051 #: build/C/man2/ptrace.2:1558
9052 msgid "Detaching of the tracee is performed by:"
9053 msgstr ""
9054
9055 #. type: Plain text
9056 #: build/C/man2/ptrace.2:1560
9057 #, no-wrap
9058 msgid "    ptrace(PTRACE_DETACH, pid, 0, sig);\n"
9059 msgstr ""
9060
9061 #. type: Plain text
9062 #: build/C/man2/ptrace.2:1568
9063 msgid ""
9064 "B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
9065 "to be in ptrace-stop.  If the tracee is in signal-delivery-stop, a signal "
9066 "can be injected.  Otherwise, the I<sig> parameter may be silently ignored."
9067 msgstr ""
9068
9069 #.  FIXME: Describe how to detach from a group-stopped tracee so that it
9070 #.         doesn't run, but continues to wait for SIGCONT.
9071 #. type: Plain text
9072 #: build/C/man2/ptrace.2:1592
9073 msgid ""
9074 "If the tracee is running when the tracer wants to detach it, the usual "
9075 "solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
9076 "the correct thread), wait for the tracee to stop in signal-delivery-stop for "
9077 "B<SIGSTOP> and then detach it (suppressing B<SIGSTOP> injection).  A design "
9078 "bug is that this can race with concurrent B<SIGSTOP>s.  Another complication "
9079 "is that the tracee may enter other ptrace-stops and needs to be restarted "
9080 "and waited for again, until B<SIGSTOP> is seen.  Yet another complication is "
9081 "to be sure that the tracee is not already ptrace-stopped, because no signal "
9082 "delivery happens while it is\\(emnot even B<SIGSTOP>."
9083 msgstr ""
9084
9085 #. type: Plain text
9086 #: build/C/man2/ptrace.2:1600
9087 msgid ""
9088 "If the tracer dies, all tracees are automatically detached and restarted, "
9089 "unless they were in group-stop.  Handling of restart from group-stop is "
9090 "currently buggy, but the \"as planned\" behavior is to leave tracee stopped "
9091 "and waiting for B<SIGCONT>.  If the tracee is restarted from signal-delivery-"
9092 "stop, the pending signal is injected."
9093 msgstr ""
9094
9095 #. type: SS
9096 #: build/C/man2/ptrace.2:1600
9097 #, no-wrap
9098 msgid "execve(2) under ptrace"
9099 msgstr ""
9100
9101 #
9102 #.  clone(2) CLONE_THREAD says:
9103 #.      If  any  of the threads in a thread group performs an execve(2),
9104 #.      then all threads other than the thread group leader are terminated,
9105 #.      and the new program is executed in the thread group leader.
9106 #.  In kernel 3.1 sources, see fs/exec.c::de_thread()
9107 #. type: Plain text
9108 #: build/C/man2/ptrace.2:1619
9109 msgid ""
9110 "When one thread in a multithreaded process calls B<execve>(2), the kernel "
9111 "destroys all other threads in the process, and resets the thread ID of the "
9112 "execing thread to the thread group ID (process ID).  (Or, to put things "
9113 "another way, when a multithreaded process does an B<execve>(2), at "
9114 "completion of the call, it appears as though the B<execve>(2)  occurred in "
9115 "the thread group leader, regardless of which thread did the B<execve>(2).)  "
9116 "This resetting of the thread ID looks very confusing to tracers:"
9117 msgstr ""
9118
9119 #. type: Plain text
9120 #: build/C/man2/ptrace.2:1629
9121 msgid ""
9122 "All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
9123 "B<PTRACE_O_TRACEEXIT> option was turned on.  Then all other threads except "
9124 "the thread group leader report death as if they exited via B<_exit>(2)  with "
9125 "exit code 0."
9126 msgstr ""
9127
9128 #. type: Plain text
9129 #: build/C/man2/ptrace.2:1637
9130 msgid ""
9131 "The execing tracee changes its thread ID while it is in the B<execve>(2).  "
9132 "(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
9133 "into ptrace calls, is the tracee's thread ID.)  That is, the tracee's thread "
9134 "ID is reset to be the same as its process ID, which is the same as the "
9135 "thread group leader's thread ID."
9136 msgstr ""
9137
9138 #. type: Plain text
9139 #: build/C/man2/ptrace.2:1643
9140 msgid ""
9141 "Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
9142 "option was turned on."
9143 msgstr ""
9144
9145 #. type: Plain text
9146 #: build/C/man2/ptrace.2:1664
9147 msgid ""
9148 "If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
9149 "this time, it appears to the tracer that the dead thread leader \"reappears "
9150 "from nowhere\".  (Note: the thread group leader does not report death via "
9151 "I<WIFEXITED(status)> until there is at least one other live thread.  This "
9152 "eliminates the possibility that the tracer will see it dying and then "
9153 "reappearing.)  If the thread group leader was still alive, for the tracer "
9154 "this may look as if thread group leader returns from a different system call "
9155 "than it entered, or even \"returned from a system call even though it was "
9156 "not in any system call\".  If the thread group leader was not traced (or was "
9157 "traced by a different tracer), then during B<execve>(2)  it will appear as "
9158 "if it has become a tracee of the tracer of the execing tracee."
9159 msgstr ""
9160
9161 #. type: Plain text
9162 #: build/C/man2/ptrace.2:1667
9163 msgid ""
9164 "All of the above effects are the artifacts of the thread ID change in the "
9165 "tracee."
9166 msgstr ""
9167
9168 #. type: Plain text
9169 #: build/C/man2/ptrace.2:1687
9170 msgid ""
9171 "The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
9172 "this situation.  First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
9173 "before B<execve>(2)  returns.  In this stop, the tracer can use "
9174 "B<PTRACE_GETEVENTMSG> to retrieve the tracee's former thread ID.  (This "
9175 "feature was introduced in Linux 3.0).  Second, the B<PTRACE_O_TRACEEXEC> "
9176 "option disables legacy B<SIGTRAP> generation on B<execve>(2)."
9177 msgstr ""
9178
9179 #. type: Plain text
9180 #: build/C/man2/ptrace.2:1693
9181 msgid ""
9182 "When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
9183 "guaranteed that except this tracee and the thread group leader, no other "
9184 "threads from the process are alive."
9185 msgstr ""
9186
9187 #. type: Plain text
9188 #: build/C/man2/ptrace.2:1701
9189 msgid ""
9190 "On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
9191 "clean up all its internal data structures describing the threads of this "
9192 "process, and retain only one data structure\\(emone which describes the "
9193 "single still running tracee, with"
9194 msgstr ""
9195
9196 #. type: Plain text
9197 #: build/C/man2/ptrace.2:1703
9198 #, no-wrap
9199 msgid "    thread ID == thread group ID == process ID.\n"
9200 msgstr ""
9201
9202 #. type: Plain text
9203 #: build/C/man2/ptrace.2:1707
9204 msgid "Example: two threads call B<execve>(2)  at the same time:"
9205 msgstr ""
9206
9207 #. type: Plain text
9208 #: build/C/man2/ptrace.2:1718
9209 #, no-wrap
9210 msgid ""
9211 "*** we get syscall-enter-stop in thread 1: **\n"
9212 "PID1 execve(\"/bin/foo\", \"foo\" E<lt>unfinished ...E<gt>\n"
9213 "*** we issue PTRACE_SYSCALL for thread 1 **\n"
9214 "*** we get syscall-enter-stop in thread 2: **\n"
9215 "PID2 execve(\"/bin/bar\", \"bar\" E<lt>unfinished ...E<gt>\n"
9216 "*** we issue PTRACE_SYSCALL for thread 2 **\n"
9217 "*** we get PTRACE_EVENT_EXEC for PID0, we issue PTRACE_SYSCALL **\n"
9218 "*** we get syscall-exit-stop for PID0: **\n"
9219 "PID0 E<lt>... execve resumedE<gt> )             = 0\n"
9220 msgstr ""
9221
9222 #. type: Plain text
9223 #: build/C/man2/ptrace.2:1741
9224 msgid ""
9225 "If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
9226 "tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after B<execve>"
9227 "(2)  returns.  This is an ordinary signal (similar to one which can be "
9228 "generated by I<kill -TRAP>), not a special kind of ptrace-stop.  Employing "
9229 "B<PTRACE_GETSIGINFO> for this signal returns I<si_code> set to 0 "
9230 "(I<SI_USER>).  This signal may be blocked by signal mask, and thus may be "
9231 "delivered (much) later."
9232 msgstr ""
9233
9234 #. type: Plain text
9235 #: build/C/man2/ptrace.2:1760
9236 msgid ""
9237 "Usually, the tracer (for example, B<strace>(1))  would not want to show this "
9238 "extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
9239 "delivery to the tracee (if B<SIGTRAP> is set to B<SIG_DFL>, it is a killing "
9240 "signal).  However, determining I<which> B<SIGTRAP> to suppress is not easy.  "
9241 "Setting the B<PTRACE_O_TRACEEXEC> option and thus suppressing this extra "
9242 "B<SIGTRAP> is the recommended approach."
9243 msgstr ""
9244
9245 #. type: SS
9246 #: build/C/man2/ptrace.2:1760
9247 #, no-wrap
9248 msgid "Real parent"
9249 msgstr ""
9250
9251 #. type: Plain text
9252 #: build/C/man2/ptrace.2:1767
9253 msgid ""
9254 "The ptrace API (ab)uses the standard UNIX parent/child signaling over "
9255 "B<waitpid>(2).  This used to cause the real parent of the process to stop "
9256 "receiving several kinds of B<waitpid>(2)  notifications when the child "
9257 "process is traced by some other process."
9258 msgstr ""
9259
9260 #. type: Plain text
9261 #: build/C/man2/ptrace.2:1770
9262 msgid ""
9263 "Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
9264 "exist; see BUGS below."
9265 msgstr ""
9266
9267 #. type: Plain text
9268 #: build/C/man2/ptrace.2:1772
9269 msgid "As of Linux 2.6.38, the following is believed to work correctly:"
9270 msgstr ""
9271
9272 #. type: Plain text
9273 #: build/C/man2/ptrace.2:1780
9274 msgid ""
9275 "exit/death by signal is reported first to the tracer, then, when the tracer "
9276 "consumes the B<waitpid>(2)  result, to the real parent (to the real parent "
9277 "only when the whole multithreaded process exits).  If the tracer and the "
9278 "real parent are the same process, the report is sent only once."
9279 msgstr ""
9280
9281 #. type: Plain text
9282 #: build/C/man2/ptrace.2:1791
9283 #, fuzzy
9284 #| msgid ""
9285 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9286 #| "other requests return zero.  On error, all requests return -1, and "
9287 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9288 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9289 #| "such requests to determine whether or not an error occurred."
9290 msgid ""
9291 "On success, B<PTRACE_PEEK*> requests return the requested data, while other "
9292 "requests return zero.  (On Linux, this is done in the libc wrapper around "
9293 "ptrace system call.  On the system call level, B<PTRACE_PEEK*> requests have "
9294 "a different API: they store the result at the address specified by I<data> "
9295 "parameter, and return value is the error flag.)"
9296 msgstr ""
9297 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9298 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9299 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9300 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9301 "なければならない。"
9302
9303 #. type: Plain text
9304 #: build/C/man2/ptrace.2:1801
9305 #, fuzzy
9306 #| msgid ""
9307 #| "On success, B<PTRACE_PEEK*> requests return the requested data, while "
9308 #| "other requests return zero.  On error, all requests return -1, and "
9309 #| "I<errno> is set appropriately.  Since the value returned by a successful "
9310 #| "B<PTRACE_PEEK*> request may be -1, the caller must check I<errno> after "
9311 #| "such requests to determine whether or not an error occurred."
9312 msgid ""
9313 "On error, all requests return -1, and I<errno> is set appropriately.  Since "
9314 "the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
9315 "caller must clear I<errno> before the call, and then check it afterward to "
9316 "determine whether or not an error occurred."
9317 msgstr ""
9318 "成功すると、 B<PTRACE_PEEK*> の場合は要求したデータを返し、 それ以外の場合は "
9319 "0 を返す。 エラーの場合は -1 を返し、 I<errno> が適切に設定される。 "
9320 "B<PTRACE_PEEK*> が成功して返す値も -1 になることがあるため、 そのような要求"
9321 "の場合には、呼び出し元は I<errno> を調べ、エラーか発生したのかどうかを判断し"
9322 "なければならない。"
9323
9324 #. type: Plain text
9325 #: build/C/man2/ptrace.2:1805
9326 msgid ""
9327 "(i386 only) There was an error with allocating or freeing a debug register."
9328 msgstr "(i386 のみ) デバッグレジスタの確保または解放でエラーが発生した。"
9329
9330 #. type: Plain text
9331 #: build/C/man2/ptrace.2:1816
9332 #, fuzzy
9333 #| msgid ""
9334 #| "There was an attempt to read from or write to an invalid area in the "
9335 #| "parent's or child's memory, probably because the area wasn't mapped or "
9336 #| "accessible.  Unfortunately, under Linux, different variations of this "
9337 #| "fault will return B<EIO> or B<EFAULT> more or less arbitrarily."
9338 msgid ""
9339 "There was an attempt to read from or write to an invalid area in the "
9340 "tracer's or the tracee's memory, probably because the area wasn't mapped or "
9341 "accessible.  Unfortunately, under Linux, different variations of this fault "
9342 "will return B<EIO> or B<EFAULT> more or less arbitrarily."
9343 msgstr ""
9344 "親プロセスまたは子プロセスのメモリの不正な領域に読み書きしようとした。 おそら"
9345 "くその領域がマッピングされていないか、 その領域へのアクセスが許されていないか"
9346 "である。 不運なことに、Linux ではこのようなエラーの場合、多かれ少なかれ 恣意"
9347 "的に B<EIO> を返したり B<EFAULT> を返したりすることがある。"
9348
9349 #. type: Plain text
9350 #: build/C/man2/ptrace.2:1819
9351 msgid "An attempt was made to set an invalid option."
9352 msgstr "不正なオプションを設定しようとした。"
9353
9354 #. type: Plain text
9355 #: build/C/man2/ptrace.2:1826
9356 #, fuzzy
9357 #| msgid ""
9358 #| "I<request> is invalid, or an attempt was made to read from or write to an "
9359 #| "invalid area in the parent's or child's memory, or there was a word-"
9360 #| "alignment violation, or an invalid signal was specified during a restart "
9361 #| "request."
9362 msgid ""
9363 "I<request> is invalid, or an attempt was made to read from or write to an "
9364 "invalid area in the tracer's or the tracee's memory, or there was a word-"
9365 "alignment violation, or an invalid signal was specified during a restart "
9366 "request."
9367 msgstr ""
9368 "I<request> が不正である。 または、親プロセスまたは子プロセスのメモリの 不正な"
9369 "領域に読み書きしようとした。 または、ワード境界違反があった。 または、実行再"
9370 "開の要求で不正なシグナルを指定した。"
9371
9372 #. type: Plain text
9373 #: build/C/man2/ptrace.2:1839
9374 #, fuzzy
9375 #| msgid ""
9376 #| "The specified process cannot be traced.  This could be because the parent "
9377 #| "has insufficient privileges (the required capability is "
9378 #| "B<CAP_SYS_PTRACE>); unprivileged processes cannot trace processes that "
9379 #| "they cannot send signals to or those running set-user-ID/set-group-ID "
9380 #| "programs, for obvious reasons.  Alternatively, the process may already be "
9381 #| "being traced, or be B<init>(8)  (PID 1)."
9382 msgid ""
9383 "The specified process cannot be traced.  This could be because the tracer "
9384 "has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
9385 "unprivileged processes cannot trace processes that they cannot send signals "
9386 "to or those running set-user-ID/set-group-ID programs, for obvious reasons.  "
9387 "Alternatively, the process may already be being traced, or (on kernels "
9388 "before 2.6.26) be B<init>(8)  (PID 1)."
9389 msgstr ""
9390 "指定したプロセスをトレースすることができない。これは親プロセスが 必要な権限 "
9391 "(必要なケーパビリティは B<CAP_SYS_PTRACE>)  を持っていないことが原因の場合が"
9392 "ある。 分かりやすい理由を挙げるなら、 非特権プロセスはシグナルを送ることがで"
9393 "きないプロセスをトレースできないし、 set-user-ID/set-group-ID プログラムを実"
9394 "行しているプロセスはトレースできない。 または、プロセスはすでにトレース中であ"
9395 "る、 または B<init>(8)  プロセス (PID が 1) である。"
9396
9397 #. type: Plain text
9398 #: build/C/man2/ptrace.2:1844
9399 #, fuzzy
9400 #| msgid ""
9401 #| "The specified process does not exist, or is not currently being traced by "
9402 #| "the caller, or is not stopped (for requests that require that)."
9403 msgid ""
9404 "The specified process does not exist, or is not currently being traced by "
9405 "the caller, or is not stopped (for requests that require a stopped tracee)."
9406 msgstr ""
9407 "指定したプロセスが存在しない。 または、指定したプロセスは呼び出したプロセス"
9408 "が 現在トレース中の子プロセスではない。 または、指定したプロセスが停止してい"
9409 "ない (停止していることが必要な要求の場合)。"
9410
9411 #. type: Plain text
9412 #: build/C/man2/ptrace.2:1846
9413 msgid "SVr4, 4.3BSD."
9414 msgstr "SVr4, 4.3BSD."
9415
9416 #. type: Plain text
9417 #: build/C/man2/ptrace.2:1861
9418 #, fuzzy
9419 #| msgid ""
9420 #| "Although arguments to B<ptrace>()  are interpreted according to the "
9421 #| "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9422 #| "function with only the I<request> argument fixed.  This means that "
9423 #| "unneeded trailing arguments may be omitted, though doing so makes use of "
9424 #| "undocumented B<gcc>(1)  behavior."
9425 msgid ""
9426 "Although arguments to B<ptrace>()  are interpreted according to the "
9427 "prototype given, glibc currently declares B<ptrace>()  as a variadic "
9428 "function with only the I<request> argument fixed.  It is recommended to "
9429 "always supply four arguments, even if the requested operation does not use "
9430 "them, setting unused/ignored arguments to I<0L> or I<(void\\ *)\\ 0>."
9431 msgstr ""
9432 "B<ptrace>()  の引き数は上のようなプロトタイプに基づいて解釈されるが、 glibc "
9433 "では、現在のところ B<ptrace>()  は I<request> 引き数だけが固定の可変長引き数"
9434 "関数として 宣言されている。 これは必要なければ残りの引き数は省略可能であるこ"
9435 "とを意味するが、 それは B<gcc>(1)  の明文化されていない動作を利用していること"
9436 "になる。"
9437
9438 #.  See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
9439 #. type: Plain text
9440 #: build/C/man2/ptrace.2:1866
9441 #, fuzzy
9442 #| msgid "B<init>(8), the process with PID 1, may not be traced."
9443 msgid ""
9444 "In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
9445 "be traced."
9446 msgstr "B<init>(8)  すなわち PID が 1 のプロセスはトレースすることができない。"
9447
9448 #.  See http://lkml.org/lkml/2008/5/8/375
9449 #. type: Plain text
9450 #: build/C/man2/ptrace.2:1873
9451 #, fuzzy
9452 #| msgid ""
9453 #| "The layout of the contents of memory and the USER area are quite OS- and "
9454 #| "architecture-specific.  The offset supplied, and the data returned, might "
9455 #| "not entirely match with the definition of I<struct user>."
9456 msgid ""
9457 "The layout of the contents of memory and the USER area are quite operating-"
9458 "system- and architecture-specific.  The offset supplied, and the data "
9459 "returned, might not entirely match with the definition of I<struct user>."
9460 msgstr ""
9461 "メモリや USER 領域の内容や配置は OS ごと、アーキテクチャごとに 非常に依存す"
9462 "る。 オフセットが指定された場合、返されるデータは I<struct user> の定義と完全"
9463 "に一致しないこともありえる。"
9464
9465 #. type: Plain text
9466 #: build/C/man2/ptrace.2:1876
9467 #, fuzzy
9468 #| msgid ""
9469 #| "The size of a \"word\" is determined by the OS variant (e.g., for 32-bit "
9470 #| "Linux it is 32 bits, etc.)."
9471 msgid ""
9472 "The size of a \"word\" is determined by the operating-system variant (e.g., "
9473 "for 32-bit Linux it is 32 bits)."
9474 msgstr ""
9475 "「ワード (word) 」の大きさは OS によって決まる。 (例えば、32 ビットの Linux "
9476 "では 32 ビットである、など。)"
9477
9478 #. type: Plain text
9479 #: build/C/man2/ptrace.2:1884
9480 #, fuzzy
9481 #| msgid ""
9482 #| "This page documents the way the B<ptrace>()  call works currently in "
9483 #| "Linux.  Its behavior differs noticeably on other flavors of UNIX.  In any "
9484 #| "case, use of B<ptrace>()  is highly OS- and architecture-specific."
9485 msgid ""
9486 "This page documents the way the B<ptrace>()  call works currently in Linux.  "
9487 "Its behavior differs noticeably on other flavors of UNIX.  In any case, use "
9488 "of B<ptrace>()  is highly specific to the operating system and architecture."
9489 msgstr ""
9490 "このマニュアルは現在の Linux における B<ptrace>()  コールの動作について記述し"
9491 "ている。他の UNIX では その動作は著しく異なる。 いかなる場合も B<ptrace>()  "
9492 "を使うと OS やアーキテクチャに非常に依存したものになる。"
9493
9494 #. type: Plain text
9495 #: build/C/man2/ptrace.2:1895
9496 #, fuzzy
9497 #| msgid ""
9498 #| "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9499 #| "different value than the one for 2.4.  This leads to applications "
9500 #| "compiled with such headers failing when run on 2.4 kernels.  This can be "
9501 #| "worked around by redefining B<PTRACE_SETOPTIONS> to "
9502 #| "B<PTRACE_OLDSETOPTIONS>, if that is defined."
9503 msgid ""
9504 "On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
9505 "different value than the one for 2.4.  This leads to applications compiled "
9506 "with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
9507 "around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
9508 "that is defined."
9509 msgstr ""
9510 "カーネル 2.6 のヘッダがインストールされたホストでは、 B<PTRACE_SETOPTIONS> は"
9511 "カーネル 2.4 のヘッダとは異なる値で宣言される。 このため、カーネル 2.6 のヘッ"
9512 "ダでコンパイルされたアプリケーションは カーネル 2.4 では正しく動作しない。 こ"
9513 "の問題は、 B<PTRACE_SETOPTIONS> が定義されていた際は、 B<PTRACE_SETOPTIONS> "
9514 "を B<PTRACE_OLDSETOPTIONS> に定義し直すことで対処できる。"
9515
9516 #. type: Plain text
9517 #: build/C/man2/ptrace.2:1898
9518 msgid ""
9519 "Group-stop notifications are sent to the tracer, but not to real parent.  "
9520 "Last confirmed on 2.6.38.6."
9521 msgstr ""
9522
9523 #.  Note from Denys Vlasenko:
9524 #.      Here "exits" means any kind of death - _exit, exit_group,
9525 #.      signal death. Signal death and exit_group cases are trivial,
9526 #.      though: since signal death and exit_group kill all other threads
9527 #.      too, "until all other threads exit" thing happens rather soon
9528 #.      in these cases. Therefore, only _exit presents observably
9529 #.      puzzling behavior to ptrace users: thread leader _exit's,
9530 #.      but WIFEXITED isn't reported! We are trying to explain here
9531 #.      why it is so.
9532 #.   FIXME: ^^^ need to test/verify this scenario
9533 #. type: Plain text
9534 #: build/C/man2/ptrace.2:1929
9535 msgid ""
9536 "If a thread group leader is traced and exits by calling B<_exit>(2), a "
9537 "B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
9538 "subsequent B<WIFEXITED> notification will not be delivered until all other "
9539 "threads exit.  As explained above, if one of other threads calls B<execve>"
9540 "(2), the death of the thread group leader will I<never> be reported.  If the "
9541 "execed thread is not traced by this tracer, the tracer will never know that "
9542 "B<execve>(2)  happened.  One possible workaround is to B<PTRACE_DETACH> the "
9543 "thread group leader instead of restarting it in this case.  Last confirmed "
9544 "on 2.6.38.6."
9545 msgstr ""
9546
9547 #. type: Plain text
9548 #: build/C/man2/ptrace.2:1939
9549 msgid ""
9550 "A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
9551 "actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
9552 "to always immediately kill tasks even under ptrace.  Last confirmed on "
9553 "2.6.38.6."
9554 msgstr ""
9555
9556 #. type: Plain text
9557 #: build/C/man2/ptrace.2:1957
9558 msgid ""
9559 "Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
9560 "delivery was suppressed by the tracer.  (This is very typical operation: it "
9561 "is usually done by debuggers on every attach, in order to not introduce a "
9562 "bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
9563 "affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
9564 "from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
9565 "that when you attach to a quiescent process with the command"
9566 msgstr ""
9567
9568 #. type: Plain text
9569 #: build/C/man2/ptrace.2:1959
9570 #, no-wrap
9571 msgid "    strace -p E<lt>process-IDE<gt>\n"
9572 msgstr ""
9573
9574 #. type: Plain text
9575 #: build/C/man2/ptrace.2:1962
9576 msgid "then, instead of the usual and expected one-line output such as"
9577 msgstr ""
9578
9579 #. type: Plain text
9580 #: build/C/man2/ptrace.2:1965
9581 #, no-wrap
9582 msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
9583 msgstr ""
9584
9585 #. type: Plain text
9586 #: build/C/man2/ptrace.2:1971
9587 #, no-wrap
9588 msgid "    select(6, [5], NULL, [5], NULL_\n"
9589 msgstr ""
9590
9591 #. type: Plain text
9592 #: build/C/man2/ptrace.2:1975
9593 msgid ""
9594 "('_' denotes the cursor position), you observe more than one line.  For "
9595 "example:"
9596 msgstr ""
9597
9598 #. type: Plain text
9599 #: build/C/man2/ptrace.2:1979
9600 #, no-wrap
9601 msgid ""
9602 "    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
9603 "    epoll_wait(4,_\n"
9604 msgstr ""
9605
9606 #. type: Plain text
9607 #: build/C/man2/ptrace.2:2000
9608 msgid ""
9609 "What is not visible here is that the process was blocked in B<epoll_wait>"
9610 "(2)  before B<strace>(1)  has attached to it.  Attaching caused B<epoll_wait>"
9611 "(2)  to return to user space with the error B<EINTR>.  In this particular "
9612 "case, the program reacted to B<EINTR> by checking the current time, and then "
9613 "executing B<epoll_wait>(2)  again.  (Programs which do not expect such "
9614 "\"stray\" B<EINTR> errors may behave in an unintended way upon an B<strace>"
9615 "(1)  attach.)"
9616 msgstr ""
9617
9618 #. type: Plain text
9619 #: build/C/man2/ptrace.2:2014
9620 msgid ""
9621 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), B<gettid>"
9622 "(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), B<exec>(3), "
9623 "B<capabilities>(7), B<signal>(7)"
9624 msgstr ""
9625 "B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2),\n"
9626 "B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2),\n"
9627 "B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
9628
9629 #. type: TH
9630 #: build/C/man2/quotactl.2:27
9631 #, no-wrap
9632 msgid "QUOTACTL"
9633 msgstr "QUOTACTL"
9634
9635 #. type: TH
9636 #: build/C/man2/quotactl.2:27
9637 #, no-wrap
9638 msgid "2010-06-16"
9639 msgstr "2010-06-16"
9640
9641 #. type: Plain text
9642 #: build/C/man2/quotactl.2:30
9643 msgid "quotactl - manipulate disk quotas"
9644 msgstr "quotactl - ディスク quota を操作する"
9645
9646 #. type: Plain text
9647 #: build/C/man2/quotactl.2:34
9648 #, no-wrap
9649 msgid ""
9650 "B<#include E<lt>sys/quota.hE<gt>>\n"
9651 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9652 msgstr ""
9653 "B<#include E<lt>sys/quota.hE<gt>>\n"
9654 "B<#include E<lt>xfs/xqm.hE<gt>>\n"
9655
9656 #. type: Plain text
9657 #: build/C/man2/quotactl.2:37
9658 #, no-wrap
9659 msgid "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9660 msgstr "B<int quotactl(int >I<cmd>B<, const char *>I<special>B<, int >I<id>B<, caddr_t >I<addr>B<);>\n"
9661
9662 #. type: Plain text
9663 #: build/C/man2/quotactl.2:49
9664 #, fuzzy
9665 #| msgid ""
9666 #| "The quota system defines for each user and/or group a soft limit and a "
9667 #| "hard limit bounding the amount of disk space that can be used on a given "
9668 #| "file system.  The hard limit cannot be crossed.  The soft limit can be "
9669 #| "crossed, but warnings will ensue.  Moreover, the user cannot be above the "
9670 #| "soft limit for more than one week (by default)  at a time: after this "
9671 #| "week the soft limit counts as hard limit."
9672 msgid ""
9673 "The quota system can be used to set per-user and per-group limits on the "
9674 "amount of disk space used on a file system.  For each user and/or group, a "
9675 "soft limit and a hard limit can be set for each file system.  The hard limit "
9676 "can't be exceeded.  The soft limit can be exceeded, but warnings will "
9677 "ensue.  Moreover, the user can't exceed the soft limit for more than one "
9678 "week (by default) at a time; after this time, the soft limit counts as a "
9679 "hard limit."
9680 msgstr ""
9681 "quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット"
9682 "及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来"
9683 "るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフ"
9684 "ト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトで"
9685 "は) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経"
9686 "過した後はハード・リミットを超過したと みなされる。"
9687
9688 #. type: Plain text
9689 #: build/C/man2/quotactl.2:74
9690 #, fuzzy
9691 #| msgid ""
9692 #| "The B<quotactl>()  system call manipulates these quota.  Its first "
9693 #| "argument is of the form B<QCMD(>I<subcmd>B<,>I<type>B<)> where I<type> is "
9694 #| "either B<USRQUOTA> or B<GRPQUOTA> (for user quota and group quota, "
9695 #| "respectively), and I<subcmd> is described below."
9696 msgid ""
9697 "The B<quotactl>()  call manipulates disk quotas.  The I<cmd> argument "
9698 "indicates a command to be applied to the user or group ID specified in "
9699 "I<id>.  To initialize the I<cmd> argument, use the I<QCMD(subcmd, type)> "
9700 "macro.  The I<type> value is either B<USRQUOTA>, for user quotas, or "
9701 "B<GRPQUOTA>, for group quotas.  The I<subcmd> value is described below."
9702 msgstr ""
9703 "B<quotactl>()  システムコールはこれらの quota に対する操作を行なう。 最初の引"
9704 "き数は B<QCMD(>I<subcmd>B<,>I<type>B<)> という形式である。 I<type> には、ユー"
9705 "ザー quota については B<USRQUOTA> を、グループ quota については B<GRPQUOTA> "
9706 "を指定する。 I<subcmd> は以下で説明する。"
9707
9708 #. type: Plain text
9709 #: build/C/man2/quotactl.2:79
9710 msgid ""
9711 "The I<special> argument is a pointer to a null-terminated string containing "
9712 "the pathname of the (mounted) block special device for the file system being "
9713 "manipulated."
9714 msgstr ""
9715
9716 #. type: Plain text
9717 #: build/C/man2/quotactl.2:87
9718 msgid ""
9719 "The I<addr> argument is the address of an optional, command-specific, data "
9720 "structure that is copied in or out of the system.  The interpretation of "
9721 "I<addr> is given with each command below."
9722 msgstr ""
9723
9724 #. type: Plain text
9725 #: build/C/man2/quotactl.2:91
9726 msgid "The I<subcmd> value is one of the following:"
9727 msgstr "I<subcmd> の値は以下のいずれかである"
9728
9729 #. type: TP
9730 #: build/C/man2/quotactl.2:91
9731 #, no-wrap
9732 msgid "B<Q_QUOTAON>"
9733 msgstr "B<Q_QUOTAON>"
9734
9735 #. type: Plain text
9736 #: build/C/man2/quotactl.2:98
9737 msgid ""
9738 "Turn on quotas for a file system.  The I<id> argument is the identification "
9739 "number of the quota format to be used.  Currently, there are three supported "
9740 "quota formats:"
9741 msgstr ""
9742
9743 #. type: TP
9744 #: build/C/man2/quotactl.2:99
9745 #, no-wrap
9746 msgid "B<QFMT_VFS_OLD>"
9747 msgstr ""
9748
9749 #. type: Plain text
9750 #: build/C/man2/quotactl.2:102
9751 msgid "The original quota format."
9752 msgstr ""
9753
9754 #. type: TP
9755 #: build/C/man2/quotactl.2:102
9756 #, no-wrap
9757 msgid "B<QFMT_VFS_V0>"
9758 msgstr ""
9759
9760 #. type: Plain text
9761 #: build/C/man2/quotactl.2:106
9762 msgid ""
9763 "The standard VFS v0 quota format, which can handle 32-bit UIDs and GIDs and "
9764 "quota limits up to 2^42 bytes and 2^32 inodes."
9765 msgstr ""
9766
9767 #. type: TP
9768 #: build/C/man2/quotactl.2:106
9769 #, no-wrap
9770 msgid "B<QFMT_VFS_V1>"
9771 msgstr ""
9772
9773 #. type: Plain text
9774 #: build/C/man2/quotactl.2:110
9775 msgid ""
9776 "A quota format that can handle 32-bit UIDs and GIDs and quota limits of 2^64 "
9777 "bytes and 2^64 inodes."
9778 msgstr ""
9779
9780 #. type: Plain text
9781 #: build/C/man2/quotactl.2:121
9782 msgid ""
9783 "The I<addr> argument points to the pathname of a file containing the quotas "
9784 "for the file system.  The quota file must exist; it is normally created with "
9785 "the B<quotacheck>(8)  program.  This operation requires privilege "
9786 "(B<CAP_SYS_ADMIN>)."
9787 msgstr ""
9788
9789 #. type: TP
9790 #: build/C/man2/quotactl.2:121
9791 #, no-wrap
9792 msgid "B<Q_QUOTAOFF>"
9793 msgstr "B<Q_QUOTAOFF>"
9794
9795 #. type: Plain text
9796 #: build/C/man2/quotactl.2:131
9797 msgid ""
9798 "Turn off quotas for a file system.  The I<addr> and I<id> arguments are "
9799 "ignored.  This operation requires privilege (B<CAP_SYS_ADMIN>)."
9800 msgstr ""
9801
9802 #. type: TP
9803 #: build/C/man2/quotactl.2:131
9804 #, no-wrap
9805 msgid "B<Q_GETQUOTA>"
9806 msgstr "B<Q_GETQUOTA>"
9807
9808 #. type: Plain text
9809 #: build/C/man2/quotactl.2:142
9810 #, fuzzy
9811 #| msgid ""
9812 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9813 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9814 msgid ""
9815 "Get disk quota limits and current usage for user or group I<id>.  The "
9816 "I<addr> argument is a pointer to a I<dqblk> structure defined in I<E<lt>sys/"
9817 "quota.hE<gt>> as follows:"
9818 msgstr ""
9819 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9820 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9821
9822 #. type: Plain text
9823 #: build/C/man2/quotactl.2:147 build/C/man2/quotactl.2:234
9824 #, no-wrap
9825 msgid ""
9826 "/* uint64_t is an unsigned 64-bit integer;\n"
9827 "   uint32_t is an unsigned 32-bit integer */\n"
9828 msgstr ""
9829
9830 #. type: Plain text
9831 #: build/C/man2/quotactl.2:167
9832 #, no-wrap
9833 msgid ""
9834 "struct dqblk {          /* Definition since Linux 2.4.22 */\n"
9835 "    uint64_t dqb_bhardlimit;   /* absolute limit on disk\n"
9836 "                                  quota blocks alloc */\n"
9837 "    uint64_t dqb_bsoftlimit;   /* preferred limit on\n"
9838 "                                  disk quota blocks */\n"
9839 "    uint64_t dqb_curspace;     /* current quota block\n"
9840 "                                  count */\n"
9841 "    uint64_t dqb_ihardlimit;   /* maximum number of\n"
9842 "                                  allocated inodes */\n"
9843 "    uint64_t dqb_isoftlimit;   /* preferred inode limit */\n"
9844 "    uint64_t dqb_curinodes;    /* current number of\n"
9845 "                                  allocated inodes */\n"
9846 "    uint64_t dqb_btime;        /* time limit for excessive\n"
9847 "                                  disk use */\n"
9848 "    uint64_t dqb_itime;        /* time limit for excessive\n"
9849 "                                  files */\n"
9850 "    uint32_t dqb_valid;        /* bit mask of QIF_*\n"
9851 "                                  constants */\n"
9852 "};\n"
9853 msgstr ""
9854
9855 #. type: Plain text
9856 #: build/C/man2/quotactl.2:170
9857 #, no-wrap
9858 msgid ""
9859 "/* Flags in dqb_valid that indicate which fields in\n"
9860 "   dqblk structure are valid. */\n"
9861 msgstr ""
9862
9863 #. type: Plain text
9864 #: build/C/man2/quotactl.2:181
9865 #, no-wrap
9866 msgid ""
9867 "#define QIF_BLIMITS   1\n"
9868 "#define QIF_SPACE     2\n"
9869 "#define QIF_ILIMITS   4\n"
9870 "#define QIF_INODES    8\n"
9871 "#define QIF_BTIME     16\n"
9872 "#define QIF_ITIME     32\n"
9873 "#define QIF_LIMITS    (QIF_BLIMITS | QIF_ILIMITS)\n"
9874 "#define QIF_USAGE     (QIF_SPACE | QIF_INODES)\n"
9875 "#define QIF_TIMES     (QIF_BTIME | QIF_ITIME)\n"
9876 "#define QIF_ALL       (QIF_LIMITS | QIF_USAGE | QIF_TIMES)\n"
9877 msgstr ""
9878
9879 #. type: Plain text
9880 #: build/C/man2/quotactl.2:198
9881 msgid ""
9882 "The I<dqb_valid> field is a bit mask that is set to indicate the entries in "
9883 "the I<dqblk> structure that are valid.  Currently, the kernel fills in all "
9884 "entries of the I<dqblk> structure and marks them as valid in the "
9885 "I<dqb_valid> field.  Unprivileged users may retrieve only their own quotas; "
9886 "a privileged user (B<CAP_SYS_ADMIN>)  can retrieve the quotas of any user."
9887 msgstr ""
9888
9889 #. type: TP
9890 #: build/C/man2/quotactl.2:198
9891 #, no-wrap
9892 msgid "B<Q_SETQUOTA>"
9893 msgstr "B<Q_SETQUOTA>"
9894
9895 #. type: Plain text
9896 #: build/C/man2/quotactl.2:218
9897 msgid ""
9898 "Set quota information for user or group I<id>, using the information "
9899 "supplied in the I<dqblk> structure pointed to by I<addr>.  The I<dqb_valid> "
9900 "field of the I<dqblk> structure indicates which entries in the structure "
9901 "have been set by the caller.  This operation supersedes the B<Q_SETQLIM> and "
9902 "B<Q_SETUSE> operations in the previous quota interfaces.  This operation "
9903 "requires privilege (B<CAP_SYS_ADMIN>)."
9904 msgstr ""
9905
9906 #. type: TP
9907 #: build/C/man2/quotactl.2:218
9908 #, no-wrap
9909 msgid "B<Q_GETINFO>"
9910 msgstr "B<Q_GETINFO>"
9911
9912 #. type: Plain text
9913 #: build/C/man2/quotactl.2:229
9914 #, fuzzy
9915 #| msgid ""
9916 #| "Get limits and current usage of disk space.  The I<addr> argument is a "
9917 #| "pointer to a dqblk structure (defined in I<E<lt>sys/quota.hE<gt>>)."
9918 msgid ""
9919 "Get information (like grace times) about quotafile.  The I<addr> argument "
9920 "should be a pointer to a I<dqinfo> structure.  This structure is defined in "
9921 "I<E<lt>sys/quota.hE<gt>> as follows:"
9922 msgstr ""
9923 "ディスク使用量の制限値と現在の使用量を得る。 I<addr> 引き数は (I<E<lt>sys/"
9924 "quota.hE<gt>> で定義された) dqblk 構造体を指すポインタである。"
9925
9926 #. type: Plain text
9927 #: build/C/man2/quotactl.2:238
9928 #, no-wrap
9929 msgid ""
9930 "struct dqinfo {         /* Defined since kernel 2.4.22 */\n"
9931 "    uint64_t dqi_bgrace;    /* Time before block soft limit\n"
9932 "                               becomes hard limit */\n"
9933 msgstr ""
9934
9935 #. type: Plain text
9936 #: build/C/man2/quotactl.2:245
9937 #, no-wrap
9938 msgid ""
9939 "    uint64_t dqi_igrace;    /* Time before inode soft limit\n"
9940 "                               becomes hard limit */\n"
9941 "    uint32_t dqi_flags;     /* Flags for quotafile\n"
9942 "                               (DQF_*) */\n"
9943 "    uint32_t dqi_valid;\n"
9944 "};\n"
9945 msgstr ""
9946
9947 #. type: Plain text
9948 #: build/C/man2/quotactl.2:247
9949 #, no-wrap
9950 msgid "/* Bits for dqi_flags */\n"
9951 msgstr ""
9952
9953 #. type: Plain text
9954 #: build/C/man2/quotactl.2:249
9955 #, no-wrap
9956 msgid "/* Quota format QFMT_VFS_OLD */\n"
9957 msgstr ""
9958
9959 #. type: Plain text
9960 #: build/C/man2/quotactl.2:251
9961 #, no-wrap
9962 msgid "#define V1_DQF_RSQUASH\t1   /* Root squash enabled */\n"
9963 msgstr ""
9964
9965 #. type: Plain text
9966 #: build/C/man2/quotactl.2:253
9967 #, no-wrap
9968 msgid "/* Other quota formats have no dqi_flags bits defined */\n"
9969 msgstr ""
9970
9971 #. type: Plain text
9972 #: build/C/man2/quotactl.2:256
9973 #, no-wrap
9974 msgid ""
9975 "/* Flags in dqi_valid that indicate which fields in\n"
9976 "   dqinfo structure are valid. */\n"
9977 msgstr ""
9978
9979 #. type: Plain text
9980 #: build/C/man2/quotactl.2:261
9981 #, no-wrap
9982 msgid ""
9983 "# define IIF_BGRACE\t1\n"
9984 "# define IIF_IGRACE\t2\n"
9985 "# define IIF_FLAGS\t4\n"
9986 "# define IIF_ALL\t(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)\n"
9987 msgstr ""
9988
9989 #. type: Plain text
9990 #: build/C/man2/quotactl.2:277
9991 msgid ""
9992 "The I<dqi_valid> field in the I<dqinfo> structure indicates the entries in "
9993 "the structure that are valid.  Currently, the kernel fills in all entries of "
9994 "the I<dqinfo> structure and marks them all as valid in the I<dqi_valid> "
9995 "field.  The I<id> argument is ignored."
9996 msgstr ""
9997
9998 #. type: TP
9999 #: build/C/man2/quotactl.2:277
10000 #, no-wrap
10001 msgid "B<Q_SETINFO>"
10002 msgstr "B<Q_SETINFO>"
10003
10004 #. type: Plain text
10005 #: build/C/man2/quotactl.2:301
10006 msgid ""
10007 "Set information about quotafile.  The I<addr> argument should be a pointer "
10008 "to a I<dqinfo> structure.  The I<dqi_valid> field of the I<dqinfo> structure "
10009 "indicates the entries in the structure that have been set by the caller.  "
10010 "This operation supersedes the B<Q_SETGRACE> and B<Q_SETFLAGS> operations in "
10011 "the previous quota interfaces.  The I<id> argument is ignored.  This "
10012 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10013 msgstr ""
10014
10015 #. type: TP
10016 #: build/C/man2/quotactl.2:301
10017 #, no-wrap
10018 msgid "B<Q_GETFMT>"
10019 msgstr "B<Q_GETFMT>"
10020
10021 #. type: Plain text
10022 #: build/C/man2/quotactl.2:308
10023 msgid ""
10024 "Get quota format used on the specified file system.  The I<addr> argument "
10025 "should be a pointer to a 4-byte buffer where the format number will be "
10026 "stored."
10027 msgstr ""
10028
10029 #. type: TP
10030 #: build/C/man2/quotactl.2:308
10031 #, no-wrap
10032 msgid "B<Q_SYNC>"
10033 msgstr "B<Q_SYNC>"
10034
10035 #. type: Plain text
10036 #: build/C/man2/quotactl.2:319
10037 msgid ""
10038 "Update the on-disk copy of quota usages for a file system.  If I<special> is "
10039 "NULL, then all file systems with active quotas are sync'ed.  The I<addr> and "
10040 "I<id> arguments are ignored."
10041 msgstr ""
10042
10043 #. type: TP
10044 #: build/C/man2/quotactl.2:319
10045 #, no-wrap
10046 msgid "B<Q_GETSTATS>"
10047 msgstr "B<Q_GETSTATS>"
10048
10049 #.  Q_GETSTATS was removed in kernel 2.4.22.
10050 #. type: Plain text
10051 #: build/C/man2/quotactl.2:339
10052 msgid ""
10053 "Get statistics and other generic information about the quota subsystem.  The "
10054 "I<addr> argument should be a pointer to a I<dqstats> structure in which data "
10055 "should be stored.  This structure is defined in I<E<lt>sys/quota.hE<gt>.> "
10056 "The I<special> and I<id> arguments are ignored.  This operation is obsolete "
10057 "and not supported by recent kernels.  Files in I</proc/sys/fs/quota/> carry "
10058 "the information instead."
10059 msgstr ""
10060
10061 #. type: Plain text
10062 #: build/C/man2/quotactl.2:342
10063 msgid ""
10064 "For XFS file systems making use of the XFS Quota Manager (XQM), the above "
10065 "commands are bypassed and the following commands are used:"
10066 msgstr ""
10067
10068 #. type: TP
10069 #: build/C/man2/quotactl.2:342
10070 #, no-wrap
10071 msgid "B<Q_XQUOTAON>"
10072 msgstr "B<Q_XQUOTAON>"
10073
10074 #. type: Plain text
10075 #: build/C/man2/quotactl.2:363
10076 msgid ""
10077 "Turn on quotas for an XFS file system.  XFS provides the ability to turn on/"
10078 "off quota limit enforcement with quota accounting.  Therefore, XFS expects "
10079 "I<addr> to be a pointer to an I<unsigned int> that contains either the flags "
10080 "B<XFS_QUOTA_UDQ_ACCT> and/or B<XFS_QUOTA_UDQ_ENFD> (for user quota), or "
10081 "B<XFS_QUOTA_GDQ_ACCT> and/or B<XFS_QUOTA_GDQ_ENFD> (for group quota), as "
10082 "defined in I<E<lt>xfs/xqm.hE<gt>>.  This operation requires privilege "
10083 "(B<CAP_SYS_ADMIN>)."
10084 msgstr ""
10085
10086 #. type: TP
10087 #: build/C/man2/quotactl.2:363
10088 #, no-wrap
10089 msgid "B<Q_XQUOTAOFF>"
10090 msgstr "B<Q_XQUOTAOFF>"
10091
10092 #. type: Plain text
10093 #: build/C/man2/quotactl.2:374
10094 msgid ""
10095 "Turn off quotas for an XFS file system.  As with B<Q_QUOTAON>, XFS file "
10096 "systems expect a pointer to an I<unsigned int> that specifies whether quota "
10097 "accounting and/or limit enforcement need to be turned off.  This operation "
10098 "requires privilege (B<CAP_SYS_ADMIN>)."
10099 msgstr ""
10100
10101 #. type: TP
10102 #: build/C/man2/quotactl.2:374
10103 #, no-wrap
10104 msgid "B<Q_XGETQUOTA>"
10105 msgstr "B<Q_XGETQUOTA>"
10106
10107 #. type: Plain text
10108 #: build/C/man2/quotactl.2:388
10109 msgid ""
10110 "Get disk quota limits and current usage for user I<id>.  The I<addr> "
10111 "argument is a pointer to an I<fs_disk_quota> structure (defined in "
10112 "I<E<lt>xfs/xqm.hE<gt>>).  Unprivileged users may retrieve only their own "
10113 "quotas; a privileged user (B<CAP_SYS_ADMIN>)  may retrieve the quotas of any "
10114 "user."
10115 msgstr ""
10116
10117 #. type: TP
10118 #: build/C/man2/quotactl.2:388
10119 #, no-wrap
10120 msgid "B<Q_XSETQLIM>"
10121 msgstr "B<Q_XSETQLIM>"
10122
10123 #. type: Plain text
10124 #: build/C/man2/quotactl.2:400
10125 msgid ""
10126 "Set disk quota limits for user I<id>.  The I<addr> argument is a pointer to "
10127 "an I<fs_disk_quota> structure (defined in I<E<lt>xfs/xqm.hE<gt>>).  This "
10128 "operation requires privilege (B<CAP_SYS_ADMIN>)."
10129 msgstr ""
10130
10131 #. type: TP
10132 #: build/C/man2/quotactl.2:400
10133 #, no-wrap
10134 msgid "B<Q_XGETQSTAT>"
10135 msgstr "B<Q_XGETQSTAT>"
10136
10137 #. type: Plain text
10138 #: build/C/man2/quotactl.2:408
10139 msgid ""
10140 "Returns an I<fs_quota_stat> structure containing XFS file system specific "
10141 "quota information.  This is useful for finding out how much space is used to "
10142 "store quota information, and also to get quotaon/off status of a given local "
10143 "XFS file system."
10144 msgstr ""
10145
10146 #. type: TP
10147 #: build/C/man2/quotactl.2:408
10148 #, no-wrap
10149 msgid "B<Q_XQUOTARM>"
10150 msgstr "B<Q_XQUOTARM>"
10151
10152 #. type: Plain text
10153 #: build/C/man2/quotactl.2:412
10154 msgid ""
10155 "Free the disk space taken by disk quotas.  Quotas must have already been "
10156 "turned off."
10157 msgstr ""
10158
10159 #. type: Plain text
10160 #: build/C/man2/quotactl.2:419
10161 msgid ""
10162 "There is no command equivalent to B<Q_SYNC> for XFS since B<sync>(1)  writes "
10163 "quota information to disk (in addition to the other file system metadata "
10164 "that it writes out)."
10165 msgstr ""
10166
10167 #. type: Plain text
10168 #: build/C/man2/quotactl.2:427
10169 msgid ""
10170 "On success, B<quotactl>()  returns 0; on error -1 is returned, and I<errno> "
10171 "is set to indicate the error."
10172 msgstr ""
10173 "成功すると、 B<quotactl>()  は 0 を返す。\n"
10174 "エラーの場合、-1 を返し、 I<errno> をエラーを示す値に設定する。"
10175
10176 #. type: Plain text
10177 #: build/C/man2/quotactl.2:434
10178 msgid "I<addr> or I<special> is invalid."
10179 msgstr ""
10180
10181 #. type: Plain text
10182 #: build/C/man2/quotactl.2:440
10183 msgid "I<cmd> or I<type> is invalid."
10184 msgstr ""
10185
10186 #. type: TP
10187 #: build/C/man2/quotactl.2:440
10188 #, no-wrap
10189 msgid "B<ENOENT>"
10190 msgstr "B<ENOENT>"
10191
10192 #. type: Plain text
10193 #: build/C/man2/quotactl.2:447
10194 msgid "The file specified by I<special> or I<addr> does not exist."
10195 msgstr ""
10196
10197 #. type: Plain text
10198 #: build/C/man2/quotactl.2:452
10199 msgid "The kernel has not been compiled with the B<CONFIG_QUOTA> option."
10200 msgstr ""
10201
10202 #. type: TP
10203 #: build/C/man2/quotactl.2:452
10204 #, no-wrap
10205 msgid "B<ENOTBLK>"
10206 msgstr "B<ENOTBLK>"
10207
10208 #. type: Plain text
10209 #: build/C/man2/quotactl.2:456
10210 msgid "I<special> is not a block device."
10211 msgstr "I<special> がブロックデバイスではない。"
10212
10213 #. type: Plain text
10214 #: build/C/man2/quotactl.2:461
10215 msgid ""
10216 "The caller lacked the required privilege (B<CAP_SYS_ADMIN>)  for the "
10217 "specified operation."
10218 msgstr ""
10219
10220 #. type: Plain text
10221 #: build/C/man2/quotactl.2:465
10222 msgid ""
10223 "No disk quota is found for the indicated user.  Quotas have not been turned "
10224 "on for this file system."
10225 msgstr ""
10226
10227 #. type: Plain text
10228 #: build/C/man2/quotactl.2:474
10229 msgid "If I<cmd> is B<Q_SETQUOTA>, B<quotactl>()  may also set I<errno> to:"
10230 msgstr ""
10231
10232 #. type: Plain text
10233 #: build/C/man2/quotactl.2:477
10234 msgid "Specified limits are out of range allowed by quota format."
10235 msgstr ""
10236
10237 #. type: Plain text
10238 #: build/C/man2/quotactl.2:486
10239 msgid "If I<cmd> is B<Q_QUOTAON>, B<quotactl>()  may also set I<errno> to:"
10240 msgstr ""
10241
10242 #. type: Plain text
10243 #: build/C/man2/quotactl.2:495
10244 msgid ""
10245 "The quota file pointed to by I<addr> exists, but is not a regular file; or, "
10246 "the quota file pointed to by I<addr> exists, but is not on the file system "
10247 "pointed to by I<special>."
10248 msgstr ""
10249
10250 #. type: Plain text
10251 #: build/C/man2/quotactl.2:501
10252 msgid ""
10253 "B<Q_QUOTAON> attempted, but another B<Q_QUOTAON> had already been performed."
10254 msgstr ""
10255
10256 #. type: Plain text
10257 #: build/C/man2/quotactl.2:504
10258 msgid "The quota file is corrupted."
10259 msgstr "quota ファイルが壊れている。"
10260
10261 #. type: Plain text
10262 #: build/C/man2/quotactl.2:507
10263 msgid "Specified quota format was not found."
10264 msgstr ""
10265
10266 #. type: Plain text
10267 #: build/C/man2/quotactl.2:512
10268 msgid "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10269 msgstr "B<quota>(1), B<getrlimit>(2), B<quotacheck>(8), B<quotaon>(8)"
10270
10271 #. type: TH
10272 #: build/C/man2/sendfile.2:19
10273 #, no-wrap
10274 msgid "SENDFILE"
10275 msgstr "SENDFILE"
10276
10277 #. type: TH
10278 #: build/C/man2/sendfile.2:19
10279 #, no-wrap
10280 msgid "2011-09-14"
10281 msgstr "2011-09-14"
10282
10283 #. type: Plain text
10284 #: build/C/man2/sendfile.2:22
10285 msgid "sendfile - transfer data between file descriptors"
10286 msgstr "sendfile - ファイル・ディスクリプタ間でデータを転送する"
10287
10288 #. type: Plain text
10289 #: build/C/man2/sendfile.2:24
10290 msgid "B<#include E<lt>sys/sendfile.hE<gt>>"
10291 msgstr "B<#include E<lt>sys/sendfile.hE<gt>>"
10292
10293 #.  The below is too ugly. Comments about glibc versions belong
10294 #.  in the notes, not in the header.
10295 #.  .B #include <features.h>
10296 #.  .br
10297 #.  .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2
10298 #.  .br
10299 #.  .B #include <sys/sendfile.h>
10300 #.  .br
10301 #.  #else
10302 #.  .br
10303 #.  .B #include <sys/types.h>
10304 #.  .br
10305 #.  .B /* No system prototype before glibc 2.1. */
10306 #.  .br
10307 #.  .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" #.                        offset ", size_t" " count" )
10308 #.  .br
10309 #.  .B #endif
10310 #. type: Plain text
10311 #: build/C/man2/sendfile.2:47
10312 msgid ""
10313 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10314 "size_t>I< count>B<);>"
10315 msgstr ""
10316 "B<ssize_t sendfile(int>I< out_fd>B<, int>I< in_fd>B<, off_t *>I<offset>B<, "
10317 "size_t>I< count>B<);>"
10318
10319 #. type: Plain text
10320 #: build/C/man2/sendfile.2:57
10321 msgid ""
10322 "B<sendfile>()  copies data between one file descriptor and another.  Because "
10323 "this copying is done within the kernel, B<sendfile>()  is more efficient "
10324 "than the combination of B<read>(2)  and B<write>(2), which would require "
10325 "transferring data to and from user space."
10326 msgstr ""
10327 "B<sendfile>()  は、あるファイル・ディスクリプタから別の ファイル・ディスクリ"
10328 "プタへのデータのコピーを行う。 このコピーはカーネル内で行われるので、 "
10329 "B<sendfile>()  は、 B<read>(2)  と B<write>(2)  を組み合わせるよりも効率がよ"
10330 "い。 B<read>(2)  や B<write>(2)  ではユーザ空間との間でデータの転送が必要とな"
10331 "るからである。"
10332
10333 #. type: Plain text
10334 #: build/C/man2/sendfile.2:62
10335 msgid ""
10336 "I<in_fd> should be a file descriptor opened for reading and I<out_fd> should "
10337 "be a descriptor opened for writing."
10338 msgstr ""
10339 "I<in_fd> は読み込みのためにオープンされたファイル・ディスクリプタ、 "
10340 "I<out_fd> は書き込みのためにオープンされたディスクリプタでなければならない。"
10341
10342 #. type: Plain text
10343 #: build/C/man2/sendfile.2:83
10344 msgid ""
10345 "If I<offset> is not NULL, then it points to a variable holding the file "
10346 "offset from which B<sendfile>()  will start reading data from I<in_fd>.  "
10347 "When B<sendfile>()  returns, this variable will be set to the offset of the "
10348 "byte following the last byte that was read.  If I<offset> is not NULL, then "
10349 "B<sendfile>()  does not modify the current file offset of I<in_fd>; "
10350 "otherwise the current file offset is adjusted to reflect the number of bytes "
10351 "read from I<in_fd>."
10352 msgstr ""
10353 "I<offset> が NULL でない場合、 I<offset> は B<sendfile>()  が I<in_fd> のどこ"
10354 "からデータを読み始めるかを示すファイル・オフセットを保持する変数への ポインタ"
10355 "である。 B<sendfile>()  は復帰する時、この変数に最後に読み込んだバイトの 次の"
10356 "バイトのオフセットを書き込む。 I<offset> が NULL でない場合、 B<sendfile>()  "
10357 "は I<in_fd> のファイル・オフセットの現在値を変更しない。 NULL の場合は、ファ"
10358 "イル・オフセットの現在値を I<in_fd> から読み込んだバイト数を反映した位置に調"
10359 "整する。"
10360
10361 #. type: Plain text
10362 #: build/C/man2/sendfile.2:90
10363 msgid ""
10364 "If I<offset> is NULL, then data will be read from I<in_fd> starting at the "
10365 "current file offset, and the file offset will be updated by the call."
10366 msgstr ""
10367 "I<offset> が NULL の場合、データは I<in_fd> の現在のファイル・オフセットから"
10368 "読み出され、 ファイル・オフセットはこの呼び出しで更新される。"
10369
10370 #. type: Plain text
10371 #: build/C/man2/sendfile.2:93
10372 msgid "I<count> is the number of bytes to copy between the file descriptors."
10373 msgstr "I<count> は、ファイル・ディスクリプタ間でコピーするバイト数である。"
10374
10375 #. type: Plain text
10376 #: build/C/man2/sendfile.2:100
10377 msgid ""
10378 "The I<in_fd> argument must correspond to a file which supports B<mmap>(2)-"
10379 "like operations (i.e., it cannot be a socket)."
10380 msgstr ""
10381 "I<in_fd> 引き数は B<mmap>(2) 風の操作ができるファイルを指していなければなら"
10382 "な\n"
10383 "い (ソケットを指定することはできない)。"
10384
10385 #. type: Plain text
10386 #: build/C/man2/sendfile.2:108
10387 msgid ""
10388 "In Linux kernels before 2.6.33, I<out_fd> must refer to a socket.  Since "
10389 "Linux 2.6.33 it can be any file.  If it is a regular file, then B<sendfile>"
10390 "()  changes the file offset appropriately."
10391 msgstr ""
10392 "2.6.33 より前の Linux カーネルでは I<out_fd> はソケットを参照していなければ"
10393 "な\n"
10394 "らない。Linux 2.6.33 以降では、任意のファイルを参照することができる。\n"
10395 "通常のファイルの場合には B<sendfile>() はファイルオフセットを適切に変更する。"
10396
10397 #. type: Plain text
10398 #: build/C/man2/sendfile.2:115
10399 msgid ""
10400 "If the transfer was successful, the number of bytes written to I<out_fd> is "
10401 "returned.  On error, -1 is returned, and I<errno> is set appropriately."
10402 msgstr ""
10403 "転送に成功した場合、 I<out_fd> に書き込まれたバイト数を返す。エラーの場"
10404 "合、-1 を返し、 I<errno> に適切な値を設定する。"
10405
10406 #. type: Plain text
10407 #: build/C/man2/sendfile.2:121
10408 msgid ""
10409 "Nonblocking I/O has been selected using B<O_NONBLOCK> and the write would "
10410 "block."
10411 msgstr ""
10412 "B<O_NONBLOCK> を用いて非ブロック I/O が選択されたが、書き込みがブロックされ"
10413 "た。"
10414
10415 #. type: TP
10416 #: build/C/man2/sendfile.2:121 build/C/man2/splice.2:143
10417 #: build/C/man2/vmsplice.2:123
10418 #, no-wrap
10419 msgid "B<EBADF>"
10420 msgstr "B<EBADF>"
10421
10422 #. type: Plain text
10423 #: build/C/man2/sendfile.2:125
10424 msgid ""
10425 "The input file was not opened for reading or the output file was not opened "
10426 "for writing."
10427 msgstr ""
10428 "入力ファイルが読み込みのためにオープンされていないか、 出力ファイルが書き込み"
10429 "のためにオープンされていない。"
10430
10431 #. type: Plain text
10432 #: build/C/man2/sendfile.2:128
10433 msgid "Bad address."
10434 msgstr "アドレスがおかしい。"
10435
10436 #. type: Plain text
10437 #: build/C/man2/sendfile.2:134
10438 msgid ""
10439 "Descriptor is not valid or locked, or an B<mmap>(2)-like operation is not "
10440 "available for I<in_fd>."
10441 msgstr ""
10442 "ディスクリプタが有効でないか、ロックされている。もしくは B<mmap>(2)  風の操作"
10443 "が I<in_fd> では利用できない。"
10444
10445 #. type: Plain text
10446 #: build/C/man2/sendfile.2:138
10447 msgid "Unspecified error while reading from I<in_fd>."
10448 msgstr "I<in_fd> から読み込んでいるうちに予期しないエラーが起こった。"
10449
10450 #. type: Plain text
10451 #: build/C/man2/sendfile.2:142
10452 msgid "Insufficient memory to read from I<in_fd>."
10453 msgstr "I<in_fd> から読み込むための十分なメモリがない。"
10454
10455 #. type: Plain text
10456 #: build/C/man2/sendfile.2:148
10457 msgid ""
10458 "B<sendfile>()  is a new feature in Linux 2.2.  The include file I<E<lt>sys/"
10459 "sendfile.hE<gt>> is present since glibc 2.1."
10460 msgstr ""
10461 "B<sendfile> は Linux 2.2 の新しい機能である。 インクルードファイル "
10462 "I<E<lt>sys/sendfile.hE<gt>> は glibc 2.1 から存在している。"
10463
10464 #. type: Plain text
10465 #: build/C/man2/sendfile.2:150
10466 msgid "Not specified in POSIX.1-2001, or other standards."
10467 msgstr "POSIX.1-2001 や他の標準では規定されていない。"
10468
10469 #. type: Plain text
10470 #: build/C/man2/sendfile.2:155
10471 msgid ""
10472 "Other UNIX systems implement B<sendfile>()  with different semantics and "
10473 "prototypes.  It should not be used in portable programs."
10474 msgstr ""
10475 "他の UNIX システムでは、異なった方式やプロトタイプで B<sendfile>()  を実装し"
10476 "ている。移植性を考慮したプログラムでは使用すべきではない。"
10477
10478 #. type: Plain text
10479 #: build/C/man2/sendfile.2:165
10480 msgid ""
10481 "If you plan to use B<sendfile>()  for sending files to a TCP socket, but "
10482 "need to send some header data in front of the file contents, you will find "
10483 "it useful to employ the B<TCP_CORK> option, described in B<tcp>(7), to "
10484 "minimize the number of packets and to tune performance."
10485 msgstr ""
10486 "B<sendfile>()  を使って TCP ソケットにファイルを送ろうとしていて、 ファイルの"
10487 "内容の前にヘッダ・データを付け加える必要がある場合は、 パケット数を最小にして"
10488 "性能を上げるために B<tcp>(7)  に記述されている B<TCP_CORK> オプションを使うと"
10489 "いいだろう。"
10490
10491 #. type: Plain text
10492 #: build/C/man2/sendfile.2:171
10493 msgid ""
10494 "In Linux 2.4 and earlier, I<out_fd> could also refer to a regular file, and "
10495 "B<sendfile>()  changed the current offset of that file."
10496 msgstr ""
10497 "Linux 2.4 とそれ以前のバージョンでも、 I<out_fd> は通常のファイルを参照で"
10498 "き、\n"
10499 "B<sendfile>() はそのファイルのオフセットの現在値を変更していた。"
10500
10501 #. type: Plain text
10502 #: build/C/man2/sendfile.2:183
10503 msgid ""
10504 "The original Linux B<sendfile>()  system call was not designed to handle "
10505 "large file offsets.  Consequently, Linux 2.4 added B<sendfile64>(), with a "
10506 "wider type for the I<offset> argument.  The glibc B<sendfile>()  wrapper "
10507 "function transparently deals with the kernel differences."
10508 msgstr ""
10509 "元々の Linux B<sendfile>() システムコールは大きなファイルオフセットを\n"
10510 "扱えるように設計されていなかった。その結果、Linux 2.4 で、\n"
10511 "ビット幅の大きな I<offset> 引き数を持った B<sendfile64>() が追加された。\n"
10512 "glibc の B<sendfile>() のラッパー関数はカーネルによるこの違いを吸収している。"
10513
10514 #. type: Plain text
10515 #: build/C/man2/sendfile.2:192
10516 msgid ""
10517 "Applications may wish to fall back to B<read>(2)/B<write>(2)  in the case "
10518 "where B<sendfile>()  fails with B<EINVAL> or B<ENOSYS>."
10519 msgstr ""
10520 "B<sendfile>()  が B<EINVAL> や B<ENOSYS> で失敗するような場合は、 アプリケー"
10521 "ションは B<read>(2)/B<write>(2)  に戻すことを考えてもよいかもしれない。"
10522
10523 #. type: Plain text
10524 #: build/C/man2/sendfile.2:197
10525 msgid ""
10526 "The Linux-specific B<splice>(2)  call supports transferring data between "
10527 "arbitrary files (e.g., a pair of sockets)."
10528 msgstr ""
10529 "Linux 固有の B<splice>(2) システムコールは、任意のファイル間 (例えば、\n"
10530 "ソケット同士) でのデータ転送をサポートしている。"
10531
10532 #. type: Plain text
10533 #: build/C/man2/sendfile.2:202
10534 msgid "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10535 msgstr "B<mmap>(2), B<open>(2), B<socket>(2), B<splice>(2)"
10536
10537 #. type: TH
10538 #: build/C/man2/set_tid_address.2:25
10539 #, no-wrap
10540 msgid "SET_TID_ADDRESS"
10541 msgstr "SET_TID_ADDRESS"
10542
10543 #. type: TH
10544 #: build/C/man2/set_tid_address.2:25
10545 #, no-wrap
10546 msgid "2012-07-19"
10547 msgstr "2012-07-19"
10548
10549 #. type: Plain text
10550 #: build/C/man2/set_tid_address.2:28
10551 msgid "set_tid_address - set pointer to thread ID"
10552 msgstr "set_tid_address - スレッド ID へのポインタを設定する"
10553
10554 #. type: Plain text
10555 #: build/C/man2/set_tid_address.2:31
10556 #, no-wrap
10557 msgid "B<#include E<lt>linux/unistd.hE<gt>>\n"
10558 msgstr "B<#include E<lt>linux/unistd.hE<gt>>\n"
10559
10560 #. type: Plain text
10561 #: build/C/man2/set_tid_address.2:33
10562 #, no-wrap
10563 msgid "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10564 msgstr "B<long set_tid_address(int *>I<tidptr>B<);>\n"
10565
10566 #. type: Plain text
10567 #: build/C/man2/set_tid_address.2:40
10568 msgid ""
10569 "For each process, the kernel maintains two attributes (addresses) called "
10570 "I<set_child_tid> and I<clear_child_tid>.  These two attributes contain the "
10571 "value NULL by default."
10572 msgstr ""
10573 "各プロセスについて、カーネルは I<set_child_tid> と I<clear_child_tid> という "
10574 "2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。"
10575
10576 #. type: TP
10577 #: build/C/man2/set_tid_address.2:40
10578 #, no-wrap
10579 msgid "I<set_child_tid>"
10580 msgstr "I<set_child_tid>"
10581
10582 #. type: Plain text
10583 #: build/C/man2/set_tid_address.2:51
10584 msgid ""
10585 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_SETTID> "
10586 "flag, I<set_child_tid> is set to the value passed in the I<ctid> argument of "
10587 "that system call."
10588 msgstr ""
10589 "プロセスが B<CLONE_CHILD_SETTID> フラグを指定した B<clone>(2)  によって開始さ"
10590 "れた場合、 I<set_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引き数"
10591 "で渡された値に設定される。"
10592
10593 #. type: Plain text
10594 #: build/C/man2/set_tid_address.2:56
10595 msgid ""
10596 "When I<set_child_tid> is set, the very first thing the new process does is "
10597 "writing its PID at this address."
10598 msgstr ""
10599 "I<set_child_tid> が設定された場合、一番最初に新しいプロセスが行うことは、 こ"
10600 "のアドレスに自身の PID を書き込むことである。"
10601
10602 #. type: TP
10603 #: build/C/man2/set_tid_address.2:56
10604 #, no-wrap
10605 msgid "I<clear_child_tid>"
10606 msgstr "I<clear_child_tid>"
10607
10608 #. type: Plain text
10609 #: build/C/man2/set_tid_address.2:67
10610 msgid ""
10611 "If a process is started using B<clone>(2)  with the B<CLONE_CHILD_CLEARTID> "
10612 "flag, I<clear_child_tid> is set to the value passed in the I<ctid> argument "
10613 "of that system call."
10614 msgstr ""
10615 "プロセスが B<CLONE_CHILD_CLEARTID> フラグを指定した B<clone>(2) によって開始"
10616 "された場合、 I<clear_child_tid> は B<clone>(2) のシステムコールの I<ctid> 引"
10617 "き数で渡された値に設定される。"
10618
10619 #. type: Plain text
10620 #: build/C/man2/set_tid_address.2:74
10621 msgid ""
10622 "The system call B<set_tid_address>()  sets the I<clear_child_tid> value for "
10623 "the calling process to I<tidptr>."
10624 msgstr ""
10625 "システムコール B<set_tid_address>()  は呼び出し元プロセスの "
10626 "I<clear_child_tid> の値を I<tidptr> に設定する。"
10627
10628 #. type: Plain text
10629 #: build/C/man2/set_tid_address.2:82
10630 msgid ""
10631 "When a process whose I<clear_child_tid> is not NULL terminates, then, if the "
10632 "process is sharing memory with other processes or threads, then 0 is written "
10633 "at the address specified in I<clear_child_tid> and the kernel performs the "
10634 "following operation:"
10635 msgstr ""
10636 "I<clear_child_tid> が NULL でないプロセスが終了すると、そのプロセスが他のプロ"
10637 "セスまたはスレッドとメモリを共有していれば、 I<clear_child_tid> で指定された"
10638 "アドレスに 0 が書き込まれ、カーネルは以下の処理を実行する。"
10639
10640 #. type: Plain text
10641 #: build/C/man2/set_tid_address.2:84
10642 #, no-wrap
10643 msgid "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10644 msgstr "    futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);\n"
10645
10646 #. type: Plain text
10647 #: build/C/man2/set_tid_address.2:88
10648 msgid ""
10649 "The effect of this operation is to wake a single process that is performing "
10650 "a futex wait on the memory location.  Errors from the futex wake operation "
10651 "are ignored."
10652 msgstr ""
10653 "この処理の結果、このメモリアドレスに対する futex wait を実行しているプロセス"
10654 "を一つ起こす (wake)。 futex wake 操作でのエラーは無視される。"
10655
10656 #. type: Plain text
10657 #: build/C/man2/set_tid_address.2:91
10658 msgid "B<set_tid_address>()  always returns the PID of the calling process."
10659 msgstr "B<set_tid_address>()  は常に現在のプロセスの PID を返す。"
10660
10661 #. type: Plain text
10662 #: build/C/man2/set_tid_address.2:94
10663 msgid "B<set_tid_address>()  always succeeds."
10664 msgstr "B<set_tid_address>()  は常に成功する。"
10665
10666 #. type: Plain text
10667 #: build/C/man2/set_tid_address.2:97
10668 msgid ""
10669 "This call is present since Linux 2.5.48.  Details as given here are valid "
10670 "since Linux 2.5.49."
10671 msgstr ""
10672 "この呼び出しは Linux 2.5.48 以降で存在する。 ここで書かれた詳細は Linux "
10673 "2.5.49 以降で有効である。"
10674
10675 #. type: Plain text
10676 #: build/C/man2/set_tid_address.2:102
10677 msgid "B<clone>(2), B<futex>(2)"
10678 msgstr "B<clone>(2), B<futex>(2)"
10679
10680 #. type: TH
10681 #: build/C/man2/splice.2:26
10682 #, no-wrap
10683 msgid "SPLICE"
10684 msgstr "SPLICE"
10685
10686 #. type: TH
10687 #: build/C/man2/splice.2:26 build/C/man2/tee.2:26 build/C/man2/vmsplice.2:26
10688 #, no-wrap
10689 msgid "2012-05-04"
10690 msgstr "2012-05-04"
10691
10692 #. type: Plain text
10693 #: build/C/man2/splice.2:29
10694 msgid "splice - splice data to/from a pipe"
10695 msgstr "splice - パイプとの間でデータを継ぎ合わせる"
10696
10697 #. type: Plain text
10698 #: build/C/man2/splice.2:33 build/C/man2/tee.2:33
10699 #, no-wrap
10700 msgid ""
10701 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
10702 "B<#include E<lt>fcntl.hE<gt>>\n"
10703 msgstr ""
10704 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
10705 "B<#include E<lt>fcntl.hE<gt>>\n"
10706
10707 #.  Return type was long before glibc 2.7
10708 #. type: Plain text
10709 #: build/C/man2/splice.2:38
10710 #, no-wrap
10711 msgid ""
10712 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10713 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10714 msgstr ""
10715 "B<ssize_t splice(int >I<fd_in>B<, loff_t *>I<off_in>B<, int >I<fd_out>B<,>\n"
10716 "B<               loff_t *>I<off_out>B<, size_t >I<len>B<, unsigned int >I<flags>B<);>\n"
10717
10718 #. type: Plain text
10719 #: build/C/man2/splice.2:50
10720 msgid ""
10721 "B<splice>()  moves data between two file descriptors without copying between "
10722 "kernel address space and user address space.  It transfers up to I<len> "
10723 "bytes of data from the file descriptor I<fd_in> to the file descriptor "
10724 "I<fd_out>, where one of the descriptors must refer to a pipe."
10725 msgstr ""
10726 "B<splice>()  は、カーネルアドレス空間とユーザアドレス空間との間のコピーを伴わ"
10727 "ずに、 2 つのファイルディスクリプタ間でデータの移動を行う。 ファイルディスク"
10728 "リプタ I<fd_in> からファイルディスクリプタ I<fd_out> へ最大 I<len> バイトを転"
10729 "送する。 2 つのファイルディスクリプタのうち一つは パイプを参照していなければ"
10730 "ならない。"
10731
10732 #. type: Plain text
10733 #: build/C/man2/splice.2:80
10734 msgid ""
10735 "If I<fd_in> refers to a pipe, then I<off_in> must be NULL.  If I<fd_in> does "
10736 "not refer to a pipe and I<off_in> is NULL, then bytes are read from I<fd_in> "
10737 "starting from the current file offset, and the current file offset is "
10738 "adjusted appropriately.  If I<fd_in> does not refer to a pipe and I<off_in> "
10739 "is not NULL, then I<off_in> must point to a buffer which specifies the "
10740 "starting offset from which bytes will be read from I<fd_in>; in this case, "
10741 "the current file offset of I<fd_in> is not changed.  Analogous statements "
10742 "apply for I<fd_out> and I<off_out>."
10743 msgstr ""
10744 "I<fd_in> がパイプを参照している場合、 I<off_in> は NULL でなければならない。 "
10745 "I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL の場合、 I<fd_in> の現"
10746 "在のファイルオフセットから始まるバイトを読み出す。 現在のファイルオフセットは"
10747 "適切に調整される。 I<fd_in> がパイプを参照しておらず、 I<off_in> が NULL でな"
10748 "い場合、 I<off_in> は I<fd_in> からのデータ読み出しを開始する先頭オフセットを"
10749 "格納したバッファ へのポインタでなければならない。この場合、 I<fd_in> の現在の"
10750 "ファイルオフセットは変更されない。 I<fd_out> と I<off_out> に関しても同様であ"
10751 "る。"
10752
10753 #. type: Plain text
10754 #: build/C/man2/splice.2:85 build/C/man2/vmsplice.2:78
10755 msgid ""
10756 "The I<flags> argument is a bit mask that is composed by ORing together zero "
10757 "or more of the following values:"
10758 msgstr ""
10759 "I<flags> 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。"
10760
10761 #. type: TP
10762 #: build/C/man2/splice.2:85 build/C/man2/tee.2:62 build/C/man2/vmsplice.2:78
10763 #, no-wrap
10764 msgid "B<SPLICE_F_MOVE>"
10765 msgstr "B<SPLICE_F_MOVE>"
10766
10767 #. type: Plain text
10768 #: build/C/man2/splice.2:98
10769 msgid ""
10770 "Attempt to move pages instead of copying.  This is only a hint to the "
10771 "kernel: pages may still be copied if the kernel cannot move the pages from "
10772 "the pipe, or if the pipe buffers don't refer to full pages.  The initial "
10773 "implementation of this flag was buggy: therefore starting in Linux 2.6.21 it "
10774 "is a no-op (but is still permitted in a B<splice>()  call); in the future, a "
10775 "correct implementation may be restored."
10776 msgstr ""
10777 "ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 "
10778 "つまり、カーネルがパイプからページを移動できない場合や、 パイプバッファがペー"
10779 "ジ全部を参照していない場合は、 ページのコピーが行われることもある。 このフラ"
10780 "グの最初の実装にはバグがあった。そのため、 Linux 2.6.21 以降ではこのフラグの"
10781 "操作はできないようになっている (ただし、 B<splice>()  コールでこのフラグを指"
10782 "定することは今も認められている)。 将来、正しい実装が行われることだろう。"
10783
10784 #. type: TP
10785 #: build/C/man2/splice.2:98 build/C/man2/tee.2:68 build/C/man2/vmsplice.2:84
10786 #, no-wrap
10787 msgid "B<SPLICE_F_NONBLOCK>"
10788 msgstr "B<SPLICE_F_NONBLOCK>"
10789
10790 #. type: Plain text
10791 #: build/C/man2/splice.2:107
10792 msgid ""
10793 "Do not block on I/O.  This makes the splice pipe operations nonblocking, but "
10794 "B<splice>()  may nevertheless block because the file descriptors that are "
10795 "spliced to/from may block (unless they have the B<O_NONBLOCK> flag set)."
10796 msgstr ""
10797 "入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ"
10798 "操作を非停止モード (nonblocking) で 行おうとするが、その場合でも B<splice>"
10799 "()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリ"
10800 "プタは (B<O_NONBLOCK> フラグをセットされていない場合) 停止する可能性があるか"
10801 "らである。"
10802
10803 #. type: TP
10804 #: build/C/man2/splice.2:107 build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
10805 #, no-wrap
10806 msgid "B<SPLICE_F_MORE>"
10807 msgstr "B<SPLICE_F_MORE>"
10808
10809 #. type: Plain text
10810 #: build/C/man2/splice.2:121
10811 msgid ""
10812 "More data will be coming in a subsequent splice.  This is a helpful hint "
10813 "when the I<fd_out> refers to a socket (see also the description of "
10814 "B<MSG_MORE> in B<send>(2), and the description of B<TCP_CORK> in B<tcp>(7))"
10815 msgstr ""
10816 "この後の splice でさらに転送されるデータがあることを示す。 このフラグは "
10817 "I<fd_out> がソケットを参照している場合に有用なヒントとなる (B<send>(2)  の "
10818 "B<MSG_MORE> や B<tcp>(7)  の B<TCP_CORK> の説明も参照)。"
10819
10820 #. type: TP
10821 #: build/C/man2/splice.2:121 build/C/man2/tee.2:79 build/C/man2/vmsplice.2:97
10822 #, no-wrap
10823 msgid "B<SPLICE_F_GIFT>"
10824 msgstr "B<SPLICE_F_GIFT>"
10825
10826 #. type: Plain text
10827 #: build/C/man2/splice.2:127
10828 msgid "Unused for B<splice>(); see B<vmsplice>(2)."
10829 msgstr "B<splice>()  では使用しない。 B<vmsplice>(2)  参照。"
10830
10831 #. type: Plain text
10832 #: build/C/man2/splice.2:136
10833 msgid ""
10834 "Upon successful completion, B<splice>()  returns the number of bytes spliced "
10835 "to or from the pipe.  A return value of 0 means that there was no data to "
10836 "transfer, and it would not make sense to block, because there are no writers "
10837 "connected to the write end of the pipe referred to by I<fd_in>."
10838 msgstr ""
10839 "成功して完了すると、 B<splice>()  はパイプから出し入れしたバイト数を返す。 返"
10840 "り値 0 はデータの転送が行わなかったことを示す。 この場合、処理を停止 (block) "
10841 "しても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続さ"
10842 "れている者がいないからである。"
10843
10844 #. type: Plain text
10845 #: build/C/man2/splice.2:142
10846 msgid ""
10847 "On error, B<splice>()  returns -1 and I<errno> is set to indicate the error."
10848 msgstr ""
10849 "エラーの場合、 B<splice>()  は -1 を返し、 I<errno> にエラーを示す値を設定す"
10850 "る。"
10851
10852 #. type: Plain text
10853 #: build/C/man2/splice.2:147
10854 msgid ""
10855 "One or both file descriptors are not valid, or do not have proper read-write "
10856 "mode."
10857 msgstr ""
10858 "ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read-"
10859 "write モードではない。"
10860
10861 #.  The append-mode error is given since 2.6.27; in earlier kernels,
10862 #.  splice() in append mode was broken
10863 #. type: Plain text
10864 #: build/C/man2/splice.2:155
10865 msgid ""
10866 "Target file system doesn't support splicing; target file is opened in append "
10867 "mode; neither of the descriptors refers to a pipe; or offset given for "
10868 "nonseekable device."
10869 msgstr ""
10870 "対象のファイルシステムが splice に対応していない、 または対象のファイルが追記"
10871 "モードでオープンされている、 またはディスクリプタのどちらもパイプを参照してい"
10872 "ない、 または seek できないデバイスに対してオフセットが指定された。"
10873
10874 #. type: Plain text
10875 #: build/C/man2/splice.2:158 build/C/man2/tee.2:114
10876 #: build/C/man2/vmsplice.2:138
10877 msgid "Out of memory."
10878 msgstr "メモリ不足。"
10879
10880 #. type: TP
10881 #: build/C/man2/splice.2:158
10882 #, no-wrap
10883 msgid "B<ESPIPE>"
10884 msgstr "B<ESPIPE>"
10885
10886 #. type: Plain text
10887 #: build/C/man2/splice.2:165
10888 msgid ""
10889 "Either I<off_in> or I<off_out> was not NULL, but the corresponding file "
10890 "descriptor refers to a pipe."
10891 msgstr ""
10892 "I<off_in> か I<off_out> のいずれかが NULL ではないが、対応するファイルディス"
10893 "クリプタが パイプを参照している。"
10894
10895 #. type: Plain text
10896 #: build/C/man2/splice.2:170
10897 msgid ""
10898 "The B<splice>()  system call first appeared in Linux 2.6.17; library support "
10899 "was added to glibc in version 2.5."
10900 msgstr ""
10901 "B<splice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
10902 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
10903
10904 #. type: Plain text
10905 #: build/C/man2/splice.2:182
10906 msgid ""
10907 "The three system calls B<splice>(), B<vmsplice>(2), and B<tee>(2), provide "
10908 "user-space programs with full control over an arbitrary kernel buffer, "
10909 "implemented within the kernel using the same type of buffer that is used for "
10910 "a pipe.  In overview, these system calls perform the following tasks:"
10911 msgstr ""
10912 "3 つのシステムコール (B<splice>(), B<vmsplice>(2), B<tee>(2))  を使うと、ユー"
10913 "ザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネル"
10914 "バッファは、パイプに使用されているのと 同種のバッファを使ってカーネル内に実装"
10915 "されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:"
10916
10917 #. type: TP
10918 #: build/C/man2/splice.2:182
10919 #, no-wrap
10920 msgid "B<splice>()"
10921 msgstr "B<splice>()"
10922
10923 #. type: Plain text
10924 #: build/C/man2/splice.2:186
10925 msgid ""
10926 "moves data from the buffer to an arbitrary file descriptor, or vice versa, "
10927 "or from one buffer to another."
10928 msgstr ""
10929 "バッファから任意のファイルディスクリプタや、その逆方向、 もしくはあるバッファ"
10930 "から別のバッファへの、データ移動を行う。"
10931
10932 #. type: TP
10933 #: build/C/man2/splice.2:186
10934 #, no-wrap
10935 msgid "B<tee>(2)"
10936 msgstr "B<tee>(2)"
10937
10938 #. type: Plain text
10939 #: build/C/man2/splice.2:189
10940 msgid "\"copies\" the data from one buffer to another."
10941 msgstr "あるバッファから別のバッファへのデータ「コピー」を行う。"
10942
10943 #. type: TP
10944 #: build/C/man2/splice.2:189
10945 #, no-wrap
10946 msgid "B<vmsplice>(2)"
10947 msgstr "B<vmsplice>(2)"
10948
10949 #. type: Plain text
10950 #: build/C/man2/splice.2:192
10951 msgid "\"copies\" data from user space into the buffer."
10952 msgstr "ユーザ空間からバッファへのデータ「コピー」を行う。"
10953
10954 #.  Linus: Now, imagine using the above in a media server, for example.
10955 #.  Let's say that a year or two has passed, so that the video drivers
10956 #.  have been updated to be able to do the splice thing, and what can
10957 #.  you do? You can:
10958 #.  - splice from the (mpeg or whatever - let's just assume that the video
10959 #.    input is either digital or does the encoding on its own - like they
10960 #.    pretty much all do) video input into a pipe (remember: no copies - the
10961 #.    video input will just DMA directly into memory, and splice will just
10962 #.    set up the pages in the pipe buffer)
10963 #.  - tee that pipe to split it up
10964 #.  - splice one end to a file (ie "save the compressed stream to disk")
10965 #.  - splice the other end to a real-time video decoder window for your
10966 #.    real-time viewing pleasure.
10967 #.  Linus: Now, the advantage of splice()/tee() is that you can
10968 #.  do zero-copy movement of data, and unlike sendfile() you can
10969 #.  do it on _arbitrary_ data (and, as shown by "tee()", it's more
10970 #.  than just sending the data to somebody else: you can duplicate
10971 #.  the data and choose to forward it to two or more different
10972 #.  users - for things like logging etc.).
10973 #. type: Plain text
10974 #: build/C/man2/splice.2:223
10975 msgid ""
10976 "Though we talk of copying, actual copies are generally avoided.  The kernel "
10977 "does this by implementing a pipe buffer as a set of reference-counted "
10978 "pointers to pages of kernel memory.  The kernel creates \"copies\" of pages "
10979 "in a buffer by creating new pointers (for the output buffer) referring to "
10980 "the pages, and increasing the reference counts for the pages: only pointers "
10981 "are copied, not the pages of the buffer."
10982 msgstr ""
10983 "ここではコピーの話をしているが、実際のコピーは一般的に回避される。 カーネル"
10984 "は、パイプ・バッファをカーネルメモリのページへのポインタ集合として 実装し、"
10985 "ページへの参照回数を管理することで、これを実現している。 カーネルは、対象とな"
10986 "るページを参照する (出力バッファ用の) ポインタを 新規に作成することでバッファ"
10987 "内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポイン"
10988 "タだけがコピーされ、 バッファのページはコピーされない。"
10989
10990 #. type: Plain text
10991 #: build/C/man2/splice.2:226
10992 msgid "See B<tee>(2)."
10993 msgstr "B<tee>(2)  参照。"
10994
10995 #. type: Plain text
10996 #: build/C/man2/splice.2:230
10997 msgid "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10998 msgstr "B<sendfile>(2), B<tee>(2), B<vmsplice>(2)"
10999
11000 #. type: TH
11001 #: build/C/man2/tee.2:26
11002 #, no-wrap
11003 msgid "TEE"
11004 msgstr "TEE"
11005
11006 #. type: Plain text
11007 #: build/C/man2/tee.2:29
11008 msgid "tee - duplicating pipe content"
11009 msgstr "tee - パイプの中身を複製する"
11010
11011 #. type: Plain text
11012 #: build/C/man2/tee.2:36
11013 #, no-wrap
11014 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"
11015 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"
11016
11017 #.  Example programs http://brick.kernel.dk/snaps
11018 #.  add a "tee(in, out1, out2)" system call that duplicates the pages
11019 #.  (again, incrementing their reference count, not copying the data) from
11020 #.  one pipe to two other pipes.
11021 #. type: Plain text
11022 #: build/C/man2/tee.2:56
11023 msgid ""
11024 "B<tee>()  duplicates up to I<len> bytes of data from the pipe referred to by "
11025 "the file descriptor I<fd_in> to the pipe referred to by the file descriptor "
11026 "I<fd_out>.  It does not consume the data that is duplicated from I<fd_in>; "
11027 "therefore, that data can be copied by a subsequent B<splice>(2)."
11028 msgstr ""
11029 "B<tee>()  は、ファイルディスクリプタ I<fd_in> が参照するパイプからファイル"
11030 "ディスクリプタ I<fd_out> が参照するパイプへ最大 I<len> バイトのデータを複製す"
11031 "る。 この操作では、複製されるデータは I<fd_in> からは消費されない。したがっ"
11032 "て、これらのデータをこの後の B<splice>(2)  でコピーすることができる。"
11033
11034 #. type: Plain text
11035 #: build/C/man2/tee.2:62
11036 msgid ""
11037 "I<flags> is a series of modifier flags, which share the name space with "
11038 "B<splice>(2)  and B<vmsplice>(2):"
11039 msgstr ""
11040 "I<flags> は一連の修飾フラグであり、 B<splice>(2)  や B<vmsplice>(2)  と共通の"
11041 "名前である。"
11042
11043 #. type: Plain text
11044 #: build/C/man2/tee.2:68
11045 msgid "Currently has no effect for B<tee>(); see B<splice>(2)."
11046 msgstr "現在のところ B<tee>()  では何の効果もない。 B<splice>(2)  参照。"
11047
11048 #.  Not used for vmsplice
11049 #.  May be in the future -- therefore EAGAIN
11050 #. type: Plain text
11051 #: build/C/man2/tee.2:73 build/C/man2/vmsplice.2:91
11052 msgid "Do not block on I/O; see B<splice>(2)  for further details."
11053 msgstr "入出力で停止 (block) しない。詳細は B<splice>(2)  参照。"
11054
11055 #. type: Plain text
11056 #: build/C/man2/tee.2:79
11057 msgid ""
11058 "Currently has no effect for B<tee>(), but may be implemented in the future; "
11059 "see B<splice>(2)."
11060 msgstr ""
11061 "現在のところ B<tee>()  では何の効果もないが、将来的には実装される可能性があ"
11062 "る。 B<splice>(2)  参照。"
11063
11064 #. type: Plain text
11065 #: build/C/man2/tee.2:85
11066 msgid "Unused for B<tee>(); see B<vmsplice>(2)."
11067 msgstr "B<tee>()  では未使用。 B<vmsplice>(2)  参照。"
11068
11069 #. type: Plain text
11070 #: build/C/man2/tee.2:94
11071 msgid ""
11072 "Upon successful completion, B<tee>()  returns the number of bytes that were "
11073 "duplicated between the input and output.  A return value of 0 means that "
11074 "there was no data to transfer, and it would not make sense to block, because "
11075 "there are no writers connected to the write end of the pipe referred to by "
11076 "I<fd_in>."
11077 msgstr ""
11078 "成功して完了すると、 B<tee>()  は入出力間で複製されたバイト数を返す。 返り値 "
11079 "0 はデータの転送が行われなかったことを示す。 この場合、処理を停止 (block) し"
11080 "ても無意味である。 なぜなら、 I<fd_in> が参照するパイプの書き込み側に接続され"
11081 "ている者がいないからである。"
11082
11083 #. type: Plain text
11084 #: build/C/man2/tee.2:100
11085 msgid ""
11086 "On error, B<tee>()  returns -1 and I<errno> is set to indicate the error."
11087 msgstr ""
11088 "エラーの場合、 B<tee>()  は -1 を返し、 I<errno> にエラーを示す値を設定する。"
11089
11090 #. type: Plain text
11091 #: build/C/man2/tee.2:111
11092 msgid ""
11093 "I<fd_in> or I<fd_out> does not refer to a pipe; or I<fd_in> and I<fd_out> "
11094 "refer to the same pipe."
11095 msgstr ""
11096 "I<fd_in> と I<fd_out> のどちらかがパイプを参照していない。もしくは I<fd_in> "
11097 "と I<fd_out> が同じパイプを参照している。"
11098
11099 #. type: Plain text
11100 #: build/C/man2/tee.2:119
11101 msgid ""
11102 "The B<tee>()  system call first appeared in Linux 2.6.17; library support "
11103 "was added to glibc in version 2.5."
11104 msgstr ""
11105 "B<tee>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11106 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11107
11108 #. type: Plain text
11109 #: build/C/man2/tee.2:130
11110 msgid ""
11111 "Conceptually, B<tee>()  copies the data between the two pipes.  In reality "
11112 "no real data copying takes place though: under the covers, B<tee>()  assigns "
11113 "data in the output by merely grabbing a reference to the input."
11114 msgstr ""
11115 "概念としては、 B<tee>()  は二つのパイプ間でデータのコピーを行う。 しかし、実"
11116 "際には実データのコピーは行われない。 内部では、 B<tee>()  は入力側に対する参"
11117 "照だけを作成することで出力側にデータを 追加する。"
11118
11119 #. type: Plain text
11120 #: build/C/man2/tee.2:136
11121 msgid ""
11122 "The following example implements a basic B<tee>(1)  program using the B<tee>"
11123 "()  system call."
11124 msgstr ""
11125 "以下の例は、 B<tee>()  システムコールを使って、 基本的な B<tee>(1)  プログラ"
11126 "ムを実装したものである。"
11127
11128 #. type: Plain text
11129 #: build/C/man2/tee.2:145
11130 #, no-wrap
11131 msgid ""
11132 "#define _GNU_SOURCE\n"
11133 "#include E<lt>fcntl.hE<gt>\n"
11134 "#include E<lt>stdio.hE<gt>\n"
11135 "#include E<lt>stdlib.hE<gt>\n"
11136 "#include E<lt>unistd.hE<gt>\n"
11137 "#include E<lt>errno.hE<gt>\n"
11138 "#include E<lt>limits.hE<gt>\n"
11139 msgstr ""
11140 "#define _GNU_SOURCE\n"
11141 "#include E<lt>fcntl.hE<gt>\n"
11142 "#include E<lt>stdio.hE<gt>\n"
11143 "#include E<lt>stdlib.hE<gt>\n"
11144 "#include E<lt>unistd.hE<gt>\n"
11145 "#include E<lt>errno.hE<gt>\n"
11146 "#include E<lt>limits.hE<gt>\n"
11147
11148 #. type: Plain text
11149 #: build/C/man2/tee.2:151
11150 #, no-wrap
11151 msgid ""
11152 "int\n"
11153 "main(int argc, char *argv[])\n"
11154 "{\n"
11155 "    int fd;\n"
11156 "    int len, slen;\n"
11157 msgstr ""
11158 "int\n"
11159 "main(int argc, char *argv[])\n"
11160 "{\n"
11161 "    int fd;\n"
11162 "    int len, slen;\n"
11163
11164 #. type: Plain text
11165 #: build/C/man2/tee.2:156
11166 #, no-wrap
11167 msgid ""
11168 "    if (argc != 2) {\n"
11169 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
11170 "        exit(EXIT_FAILURE);\n"
11171 "    }\n"
11172 msgstr ""
11173 "    if (argc != 2) {\n"
11174 "        fprintf(stderr, \"Usage: %s E<lt>fileE<gt>\\en\", argv[0]);\n"
11175 "        exit(EXIT_FAILURE);\n"
11176 "    }\n"
11177
11178 #. type: Plain text
11179 #: build/C/man2/tee.2:162
11180 #, no-wrap
11181 msgid ""
11182 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11183 "    if (fd == -1) {\n"
11184 "        perror(\"open\");\n"
11185 "        exit(EXIT_FAILURE);\n"
11186 "    }\n"
11187 msgstr ""
11188 "    fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);\n"
11189 "    if (fd == -1) {\n"
11190 "        perror(\"open\");\n"
11191 "        exit(EXIT_FAILURE);\n"
11192 "    }\n"
11193
11194 #. type: Plain text
11195 #: build/C/man2/tee.2:169
11196 #, no-wrap
11197 msgid ""
11198 "    do {\n"
11199 "        /*\n"
11200 "         * tee stdin to stdout.\n"
11201 "         */\n"
11202 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11203 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11204 msgstr ""
11205 "    do {\n"
11206 "        /*\n"
11207 "         * tee stdin to stdout.\n"
11208 "         */\n"
11209 "        len = tee(STDIN_FILENO, STDOUT_FILENO,\n"
11210 "                  INT_MAX, SPLICE_F_NONBLOCK);\n"
11211
11212 #. type: Plain text
11213 #: build/C/man2/tee.2:178
11214 #, no-wrap
11215 msgid ""
11216 "        if (len E<lt> 0) {\n"
11217 "            if (errno == EAGAIN)\n"
11218 "                continue;\n"
11219 "            perror(\"tee\");\n"
11220 "            exit(EXIT_FAILURE);\n"
11221 "        } else\n"
11222 "            if (len == 0)\n"
11223 "                break;\n"
11224 msgstr ""
11225 "        if (len E<lt> 0) {\n"
11226 "            if (errno == EAGAIN)\n"
11227 "                continue;\n"
11228 "            perror(\"tee\");\n"
11229 "            exit(EXIT_FAILURE);\n"
11230 "        } else\n"
11231 "            if (len == 0)\n"
11232 "                break;\n"
11233
11234 #. type: Plain text
11235 #: build/C/man2/tee.2:192
11236 #, no-wrap
11237 msgid ""
11238 "        /*\n"
11239 "         * Consume stdin by splicing it to a file.\n"
11240 "         */\n"
11241 "        while (len E<gt> 0) {\n"
11242 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11243 "                          len, SPLICE_F_MOVE);\n"
11244 "            if (slen E<lt> 0) {\n"
11245 "                perror(\"splice\");\n"
11246 "                break;\n"
11247 "            }\n"
11248 "            len -= slen;\n"
11249 "        }\n"
11250 "    } while (1);\n"
11251 msgstr ""
11252 "        /*\n"
11253 "         * Consume stdin by splicing it to a file.\n"
11254 "         */\n"
11255 "        while (len E<gt> 0) {\n"
11256 "            slen = splice(STDIN_FILENO, NULL, fd, NULL,\n"
11257 "                          len, SPLICE_F_MOVE);\n"
11258 "            if (slen E<lt> 0) {\n"
11259 "                perror(\"splice\");\n"
11260 "                break;\n"
11261 "            }\n"
11262 "            len -= slen;\n"
11263 "        }\n"
11264 "    } while (1);\n"
11265
11266 #. type: Plain text
11267 #: build/C/man2/tee.2:196
11268 #, no-wrap
11269 msgid ""
11270 "    close(fd);\n"
11271 "    exit(EXIT_SUCCESS);\n"
11272 "}\n"
11273 msgstr ""
11274 "    close(fd);\n"
11275 "    exit(EXIT_SUCCESS);\n"
11276 "}\n"
11277
11278 #. type: Plain text
11279 #: build/C/man2/tee.2:200
11280 msgid "B<splice>(2), B<vmsplice>(2)"
11281 msgstr "B<splice>(2), B<vmsplice>(2)"
11282
11283 #. type: TH
11284 #: build/C/man2/vm86.2:26
11285 #, no-wrap
11286 msgid "VM86"
11287 msgstr "VM86"
11288
11289 #. type: TH
11290 #: build/C/man2/vm86.2:26
11291 #, no-wrap
11292 msgid "2009-02-20"
11293 msgstr "2009-02-20"
11294
11295 #. type: Plain text
11296 #: build/C/man2/vm86.2:29
11297 msgid "vm86old, vm86 - enter virtual 8086 mode"
11298 msgstr "vm86old, vm86 - 仮想 8086 モードへ移行する"
11299
11300 #. type: Plain text
11301 #: build/C/man2/vm86.2:31
11302 msgid "B<#include E<lt>sys/vm86.hE<gt>>"
11303 msgstr "B<#include E<lt>sys/vm86.hE<gt>>"
11304
11305 #. type: Plain text
11306 #: build/C/man2/vm86.2:33
11307 msgid "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11308 msgstr "B<int vm86old(struct vm86_struct *>I<info>B<);>"
11309
11310 #. type: Plain text
11311 #: build/C/man2/vm86.2:35
11312 msgid "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11313 msgstr ""
11314 "B<int vm86(unsigned long >I<fn>B<, struct vm86plus_struct *>I<v86>B<);>"
11315
11316 #. type: Plain text
11317 #: build/C/man2/vm86.2:48
11318 msgid ""
11319 "The system call B<vm86>()  was introduced in Linux 0.97p2.  In Linux 2.1.15 "
11320 "and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>()  was "
11321 "introduced.  The definition of I<struct vm86_struct> was changed in 1.1.8 "
11322 "and 1.1.9."
11323 msgstr ""
11324 "B<vm86>()  システムコールは Linux 0.97p2 で導入された。 これは Linux 2.1.15 "
11325 "と 2.0.28 で B<vm86old>()  に名前が変更され、 新しい B<vm86>()  が導入され"
11326 "た。 I<struct vm86_struct> の定義は 1.1.8 と 1.1.9 で変更された。"
11327
11328 #. type: Plain text
11329 #: build/C/man2/vm86.2:52
11330 msgid ""
11331 "These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
11332 "literature), and are used by B<dosemu>."
11333 msgstr ""
11334 "これらのコールによってプロセスは VM86 モード (Intel の文書では仮想 8086 モー"
11335 "ド) へと移行する。 これらのコールは B<dosemu> で使用される。"
11336
11337 #. type: Plain text
11338 #: build/C/man2/vm86.2:54
11339 msgid "VM86 mode is an emulation of real mode within a protected mode task."
11340 msgstr ""
11341 "VM86 モードはプロテクトモードタスクにおける リアルモードのエミュレーションで"
11342 "ある。"
11343
11344 #. type: Plain text
11345 #: build/C/man2/vm86.2:64
11346 msgid ""
11347 "This return value is specific to i386 and indicates a problem with getting "
11348 "user-space data."
11349 msgstr ""
11350 "この返り値は i386 固有のものであり、 ユーザー空間のデータを取得する際に問題が"
11351 "あったことを示す。"
11352
11353 #. type: Plain text
11354 #: build/C/man2/vm86.2:68
11355 msgid ""
11356 "This return value indicates the call is not implemented on the present "
11357 "architecture."
11358 msgstr ""
11359 "この返り値は、このコールが現在のアーキテクチャで実装されていないことを示す。"
11360
11361 #. type: Plain text
11362 #: build/C/man2/vm86.2:73
11363 msgid ""
11364 "Saved kernel stack exists.  (This is a kernel sanity check; the saved stack "
11365 "should exist only within vm86 mode itself.)"
11366 msgstr ""
11367 "保存されたカーネルスタックが既に存在している。(これはカーネルが通常の 状態で"
11368 "あるかをチェックしている。保存されたスタックは vm86 モードで しか存在しな"
11369 "い。)"
11370
11371 #. type: Plain text
11372 #: build/C/man2/vm86.2:76
11373 msgid ""
11374 "This call is specific to Linux on 32-bit Intel processors, and should not be "
11375 "used in programs intended to be portable."
11376 msgstr ""
11377 "この関数は 32 ビット Intel プロセッサ上の Linux 特有の関数であり、 移植を意図"
11378 "したプログラムでは使用すべきでない。"
11379
11380 #. type: TH
11381 #: build/C/man2/vmsplice.2:26
11382 #, no-wrap
11383 msgid "VMSPLICE"
11384 msgstr "VMSPLICE"
11385
11386 #. type: Plain text
11387 #: build/C/man2/vmsplice.2:29
11388 msgid "vmsplice - splice user pages into a pipe"
11389 msgstr "vmsplice - ユーザ・ページをパイプに継ぎ合わせる"
11390
11391 #. type: Plain text
11392 #: build/C/man2/vmsplice.2:34
11393 #, no-wrap
11394 msgid ""
11395 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
11396 "B<#include E<lt>fcntl.hE<gt>>\n"
11397 "B<#include E<lt>sys/uio.hE<gt>>\n"
11398 msgstr ""
11399 "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
11400 "B<#include E<lt>fcntl.hE<gt>>\n"
11401 "B<#include E<lt>sys/uio.hE<gt>>\n"
11402
11403 #. type: Plain text
11404 #: build/C/man2/vmsplice.2:37
11405 #, no-wrap
11406 msgid ""
11407 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11408 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11409 msgstr ""
11410 "B<ssize_t vmsplice(int >I<fd>B<, const struct iovec *>I<iov>B<,>\n"
11411 "B<                 unsigned long >I<nr_segs>B<, unsigned int >I<flags>B<);>\n"
11412
11413 #.  Linus: vmsplice() system call to basically do a "write to
11414 #.  the buffer", but using the reference counting and VM traversal
11415 #.  to actually fill the buffer. This means that the user needs to
11416 #.  be careful not to reuse the user-space buffer it spliced into
11417 #.  the kernel-space one (contrast this to "write()", which copies
11418 #.  the actual data, and you can thus reuse the buffer immediately
11419 #.  after a successful write), but that is often easy to do.
11420 #. type: Plain text
11421 #: build/C/man2/vmsplice.2:57
11422 msgid ""
11423 "The B<vmsplice>()  system call maps I<nr_segs> ranges of user memory "
11424 "described by I<iov> into a pipe.  The file descriptor I<fd> must refer to a "
11425 "pipe."
11426 msgstr ""
11427 "B<vmsplice>()  システムコールは、 I<iov> で指定されたユーザ・メモリの "
11428 "I<nr_segs> の範囲をパイプにマッピングする。 I<fd> はパイプを参照していなけれ"
11429 "ばならない。"
11430
11431 #. type: Plain text
11432 #: build/C/man2/vmsplice.2:64
11433 msgid ""
11434 "The pointer I<iov> points to an array of I<iovec> structures as defined in "
11435 "I<E<lt>sys/uio.hE<gt>>:"
11436 msgstr ""
11437 "ポインタ I<iov> は I<iovec> 構造体の配列を指す。 I<iovec> 構造体は "
11438 "I<E<lt>sys/uio.hE<gt>> で以下のように定義されている:"
11439
11440 #. type: Plain text
11441 #: build/C/man2/vmsplice.2:71
11442 #, no-wrap
11443 msgid ""
11444 "struct iovec {\n"
11445 "    void  *iov_base;            /* Starting address */\n"
11446 "    size_t iov_len;             /* Number of bytes */\n"
11447 "};\n"
11448 msgstr ""
11449 "struct iovec {\n"
11450 "    void  *iov_base;            /* 開始アドレス */\n"
11451 "    size_t iov_len;             /* バイト数 */\n"
11452 "};\n"
11453
11454 #. type: Plain text
11455 #: build/C/man2/vmsplice.2:84
11456 msgid "Unused for B<vmsplice>(); see B<splice>(2)."
11457 msgstr "B<vmsplice>()  では未使用。 B<splice>(2)  参照。"
11458
11459 #. type: Plain text
11460 #: build/C/man2/vmsplice.2:97
11461 msgid ""
11462 "Currently has no effect for B<vmsplice>(), but may be implemented in the "
11463 "future; see B<splice>(2)."
11464 msgstr ""
11465 "現在のところ B<vmsplice>()  では何の効果もないが、将来的には実装される可能性"
11466 "がある。 B<splice>(2)  参照。"
11467
11468 #.  FIXME Explain the following line in a little more detail:
11469 #.  .... if we expect to later SPLICE_F_MOVE to the cache.
11470 #. type: Plain text
11471 #: build/C/man2/vmsplice.2:113
11472 msgid ""
11473 "The user pages are a gift to the kernel.  The application may not modify "
11474 "this memory ever, or page cache and on-disk data may differ.  Gifting pages "
11475 "to the kernel means that a subsequent B<splice>(2)  B<SPLICE_F_MOVE> can "
11476 "successfully move the pages; if this flag is not specified, then a "
11477 "subsequent B<splice>(2)  B<SPLICE_F_MOVE> must copy the pages.  Data must "
11478 "also be properly page aligned, both in memory and length."
11479 msgstr ""
11480 "ユーザ・ページがカーネルへ渡すもの (gift) であることを示す。 アプリケーション"
11481 "はこのメモリを絶対に変更してはならない。 さもなければ、ページキャッシュとディ"
11482 "スク上のデータは 一致しなくなるだろう。 ページをカーネルに渡すと、この次の "
11483 "B<splice>(2)  B<SPLICE_F_MOVE> でそのページの移動を行うことができる。 このフ"
11484 "ラグが指定されなかった場合、この次の B<splice>(2)  B<SPLICE_F_MOVE> でその"
11485 "ページのコピーを行わなければならない。 データはメモリ上でページ境界にあってい"
11486 "なければならず、 長さもページ境界の倍数でなければならない。"
11487
11488 #. type: Plain text
11489 #: build/C/man2/vmsplice.2:122
11490 msgid ""
11491 "Upon successful completion, B<vmsplice>()  returns the number of bytes "
11492 "transferred to the pipe.  On error, B<vmsplice>()  returns -1 and I<errno> "
11493 "is set to indicate the error."
11494 msgstr ""
11495 "成功して完了すると、 B<vmsplice>()  はパイプに転送したバイト数を返す。 エラー"
11496 "の場合、 B<vmplice>()  は -1 を返し、 I<errno> をエラーを示す値に設定する。"
11497
11498 #. type: Plain text
11499 #: build/C/man2/vmsplice.2:127
11500 msgid "I<fd> either not valid, or doesn't refer to a pipe."
11501 msgstr "I<fd> が有効でない、もしくはパイプを参照していない。"
11502
11503 #. type: Plain text
11504 #: build/C/man2/vmsplice.2:135
11505 msgid ""
11506 "I<nr_segs> is 0 or greater than B<IOV_MAX>; or memory not aligned if "
11507 "B<SPLICE_F_GIFT> set."
11508 msgstr ""
11509 "I<nr_segs> が 0 もしくは B<IOV_MAX> よりも大きい。または B<SPLICE_F_GIFT> が"
11510 "設定されたがメモリがページ境界にあっていない。"
11511
11512 #. type: Plain text
11513 #: build/C/man2/vmsplice.2:143
11514 msgid ""
11515 "The B<vmsplice>()  system call first appeared in Linux 2.6.17; library "
11516 "support was added to glibc in version 2.5."
11517 msgstr ""
11518 "B<vmsplice>() システムコールは Linux 2.6.17 で初めて登場した。\n"
11519 "ライブラリによるサポートは glibc バージョン 2.5 で追加された。"
11520
11521 #. type: Plain text
11522 #: build/C/man2/vmsplice.2:154
11523 msgid ""
11524 "B<vmsplice>()  follows the other vectorized read/write type functions when "
11525 "it comes to limitations on number of segments being passed in.  This limit "
11526 "is B<IOV_MAX> as defined in I<E<lt>limits.hE<gt>>.  At the time of this "
11527 "writing, that limit is 1024."
11528 msgstr ""
11529 "指定されたセグメント数が上限に達した場合、 B<vmsplice>()  は他のベクトル形式"
11530 "の read/write を行う関数と同じ動作をする。 上限は B<IOV_MAX> であり、 "
11531 "I<E<lt>limits.hE<gt>> で定義されている。 このドキュメントを書いた時点での値"
11532 "は 1024 である。"
11533
11534 #. type: Plain text
11535 #: build/C/man2/vmsplice.2:157
11536 msgid "B<splice>(2), B<tee>(2)"
11537 msgstr "B<splice>(2), B<tee>(2)"
11538
11539 #~ msgid "2013-03-15"
11540 #~ msgstr "2013-03-15"
11541
11542 #~ msgid "B<futex>(7)"
11543 #~ msgstr "B<futex>(7)"
11544
11545 #, fuzzy
11546 #~| msgid "The I<subcmd> value is one of the following:"
11547 #~ msgid "The I<flags> argument takes one of the following values:"
11548 #~ msgstr "I<subcmd> の値は以下のいずれかである"
11549
11550 #~ msgid ""
11551 #~ "Depending on which operation was executed, the returned value for a "
11552 #~ "successful call can have differing meanings."
11553 #~ msgstr "どの操作が実行されたかによって、 成功時の返り値の意味が変わる。"
11554
11555 #~ msgid ""
11556 #~ "Returns 0 if the process was woken by a B<FUTEX_WAKE> call.  In case of "
11557 #~ "timeout, the operation fails with the error B<ETIMEDOUT>.  If the futex "
11558 #~ "was not equal to the expected value, the operation fails with the error "
11559 #~ "B<EWOULDBLOCK>.  Signals (see B<signal>(7))  or other spurious wakeups "
11560 #~ "cause B<FUTEX_WAIT> to fail with the error B<EINTR>."
11561 #~ msgstr ""
11562 #~ "プロセスが B<FUTEX_WAKE> の呼び出しで wake すると 0 を返す。 タイムアウト"
11563 #~ "の場合、操作はエラー B<ETIMEOUT> で失敗する。 futex が指定された値と等しく"
11564 #~ "ない場合、 エラー B<EWOULDBLOCK> で失敗する。 シグナルを受信するか "
11565 #~ "(B<signal>(7)  参照) 他の偽の wake があった場合には、エラー B<EINTR> で失"
11566 #~ "敗する。"
11567
11568 #~ msgid "An operation was not defined or error in page alignment."
11569 #~ msgstr ""
11570 #~ "操作が定義されていない。またはページ・アラインメントでエラーが発生した。"
11571
11572 #, fuzzy
11573 #~| msgid ""
11574 #~| "Indicates that this process is to be traced by its parent.  Any signal "
11575 #~| "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11576 #~| "its parent to be notified via B<wait>(2).  Also, all subsequent calls to "
11577 #~| "B<execve>(2)  by this process will cause a B<SIGTRAP> to be sent to it, "
11578 #~| "giving the parent a chance to gain control before the new program begins "
11579 #~| "execution.  A process probably shouldn't make this request if its parent "
11580 #~| "isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> are ignored.)"
11581 #~ msgid ""
11582 #~ "Indicate that this process is to be traced by its parent.  Any signal "
11583 #~ "(except B<SIGKILL>)  delivered to this process will cause it to stop and "
11584 #~ "its parent to be notified via B<waitpid>(2).  In addition, all subsequent "
11585 #~ "calls to B<execve>(2)  by the traced process will cause a B<SIGTRAP> to "
11586 #~ "be sent to it, giving the parent a chance to gain control before the new "
11587 #~ "program begins execution.  A process probably shouldn't make this request "
11588 #~ "if its parent isn't expecting to trace it.  (I<pid>, I<addr>, and I<data> "
11589 #~ "are ignored.)"
11590 #~ msgstr ""
11591 #~ "このプロセスが親プロセスによってトレースされることを表す。 このプロセスに "
11592 #~ "(B<SIGKILL> 以外の) シグナルが配送されると、 プロセスは停止し、親プロセス"
11593 #~ "に B<wait>(2)  を通じて通知される。 また、これ以降はこのプロセスが "
11594 #~ "B<execve>(2)  を呼び出す度に B<SIGTRAP> が送信されるようになる。 これに"
11595 #~ "よって、親プロセスは 新しいプログラムが実行を開始する前に制御することがで"
11596 #~ "きる。 親プロセスが自プロセスをトレースするつもりがない場合には、 おそらく"
11597 #~ "このプロセスは本要求を行うべきではないだろう。 (I<pid>, I<addr>, I<data> "
11598 #~ "は無視される。)"
11599
11600 #~ msgid ""
11601 #~ "Stop the child at the next B<execve>(2)  call with I<SIGTRAP | "
11602 #~ "PTRACE_EVENT_EXEC\\ E<lt>E<lt>\\ 8>."
11603 #~ msgstr ""
11604 #~ "次の B<execve>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_EXEC\\ E<lt>E<lt>"
11605 #~ "\\ 8> で子プロセスの動作を停止させる。"
11606
11607 #~ msgid ""
11608 #~ "Stop the child at the completion of the next B<vfork>(2)  call with "
11609 #~ "I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ E<lt>E<lt>\\ 8>."
11610 #~ msgstr ""
11611 #~ "次の B<vfork>(2)  呼び出し時に I<SIGTRAP | PTRACE_EVENT_VFORK_DONE\\ "
11612 #~ "E<lt>E<lt>\\ 8> で子プロセスの動作を停止させる。"
11613
11614 #~ msgid ""
11615 #~ "Attaches to the process specified in I<pid>, making it a traced \"child\" "
11616 #~ "of the calling process; the behavior of the child is as if it had done a "
11617 #~ "B<PTRACE_TRACEME>.  The calling process actually becomes the parent of "
11618 #~ "the child process for most purposes (e.g., it will receive notification "
11619 #~ "of child events and appears in B<ps>(1)  output as the child's parent), "
11620 #~ "but a B<getppid>(2)  by the child will still return the PID of the "
11621 #~ "original parent.  The child is sent a B<SIGSTOP>, but will not "
11622 #~ "necessarily have stopped by the completion of this call; use B<wait>(2)  "
11623 #~ "to wait for the child to stop.  (I<addr> and I<data> are ignored.)"
11624 #~ msgstr ""
11625 #~ "I<pid> で指定されたプロセスに接続 (attach) し、それを呼び出し元のプロセス"
11626 #~ "の 子プロセスとしてトレースできるようにする。子プロセスは "
11627 #~ "B<PTRACE_TRACEME> したかのように振舞う。呼び出し元のプロセスはそのほとんど"
11628 #~ "の目的において、 その子プロセスの実際の親になる (例えば、子プロセスのイベ"
11629 #~ "ントの 通知を受けとったり、 B<ps>(1)  で親として表示されたりする)。しか"
11630 #~ "し、子プロセスで B<getppid>(2)  を実行した場合には元の親プロセスの PID が"
11631 #~ "返される。 子プロセスには B<SIGSTOP> が送られるが、この呼び出しが完了する"
11632 #~ "までに 必ずしも停止するとは限らない。子プロセスの停止を待つには B<wait>"
11633 #~ "(2)  を使用すること。(I<addr> と I<data> は無視される。)"
11634
11635 #~ msgid ""
11636 #~ "Tracing causes a few subtle differences in the semantics of traced "
11637 #~ "processes.  For example, if a process is attached to with "
11638 #~ "B<PTRACE_ATTACH>, its original parent can no longer receive notification "
11639 #~ "via B<wait>(2)  when it stops, and there is no way for the new parent to "
11640 #~ "effectively simulate this notification."
11641 #~ msgstr ""
11642 #~ "トレースすることによってトレースされるプロセスの動作に些細な違いが 起こる"
11643 #~ "ことがある。例えば、プロセスが B<PTRACE_ATTACH> によって接続された場合に"
11644 #~ "は、そのプロセスが停止した時でも本来の親は B<wait>(2)  を使って通知を受け"
11645 #~ "ることができず、新しい親が効率よく この通知を真似る方法もない。"
11646
11647 #~ msgid ""
11648 #~ "When the parent receives an event with B<PTRACE_EVENT_*> set, the child "
11649 #~ "is not in the normal signal delivery path.  This means the parent cannot "
11650 #~ "do B<ptrace>(PTRACE_CONT)  with a signal or B<ptrace>(PTRACE_KILL).  "
11651 #~ "B<kill>(2)  with a B<SIGKILL> signal can be used instead to kill the "
11652 #~ "child process after receiving one of these messages."
11653 #~ msgstr ""
11654 #~ "親プロセスが B<PTRACE_EVENT_*> がセットされたイベントを受信した場合、 子プ"
11655 #~ "ロセスは通常通りのシグナル配送が行われる状態にない。 つまり、親プロセス"
11656 #~ "が、 シグナルにより B<ptrace>(PTRACE_CONT)  を行ったり、 B<ptrace>"
11657 #~ "(PTRACE_KILL)  を行ったりできないということである。 こららのメッセージの受"
11658 #~ "信後は、子プロセスを終了 (kill) するのに、 シグナル B<SIGKILL> を指定して "
11659 #~ "B<kill>(2)  を行う方法を代わりに使用できる。"
11660
11661 #~ msgid ""
11662 #~ "The SunOS man page describes B<ptrace>()  as \"unique and arcane\", which "
11663 #~ "it is.  The proc-based debugging interface present in Solaris 2 "
11664 #~ "implements a superset of B<ptrace>()  functionality in a more powerful "
11665 #~ "and uniform way."
11666 #~ msgstr ""
11667 #~ "SunOS のマニュアル・ページには B<ptrace>()  は「独特で不可解」と記述されて"
11668 #~ "おり、まさしくそうである。 Solaris 2 では proc ベースの デバッグのインター"
11669 #~ "フェースとして B<ptrace>()  の上位互換関数が実装され、より強力で一貫性のあ"
11670 #~ "るものとなっている。"
11671
11672 #~ msgid ""
11673 #~ "The second argument I<special> is the block special device these quota "
11674 #~ "apply to.  It must be mounted."
11675 #~ msgstr ""
11676 #~ "二番目の引き数 I<special> は quota を適用するデバイスのブロック・スペシャ"
11677 #~ "ル・ファイルである。 そのデバイスはマウントされていなくてはならない。"
11678
11679 #~ msgid ""
11680 #~ "The third argument I<id> is the user or group ID these quota apply to "
11681 #~ "(when relevant)."
11682 #~ msgstr ""
11683 #~ "三番目の引き数 I<id> には、(必要な場合に) quota を適用するユーザーもしくは"
11684 #~ "グループの ID を指定する。"
11685
11686 #~ msgid ""
11687 #~ "The fourth argument I<addr> is the address of a data structure, depending "
11688 #~ "on the command."
11689 #~ msgstr ""
11690 #~ "四番目の引き数 I<addr> には、コマンドごとに異ったデータ構造体のアドレスを"
11691 #~ "指定する。"
11692
11693 #~ msgid ""
11694 #~ "Enable quota.  The I<addr> argument is the pathname of the file "
11695 #~ "containing the quota for the file system."
11696 #~ msgstr ""
11697 #~ "quota を有効にする。 I<addr> 引き数には、そのファイル・システムの quota が"
11698 #~ "記録されているファイルの パス名を指定する。"
11699
11700 #~ msgid "Disable quota."
11701 #~ msgstr "quota を無効にする。"
11702
11703 #~ msgid "Set limits and current usage; I<addr> is as before."
11704 #~ msgstr "制限値と現在の使用量を設定する: I<addr> は同上。"
11705
11706 #~ msgid "Set limits; I<addr> is as before."
11707 #~ msgstr "制限値を設定する; I<addr> は同上。"
11708
11709 #~ msgid "Set usage."
11710 #~ msgstr "使用量を設定する。"
11711
11712 #~ msgid "Sync disk copy of a file system's quota."
11713 #~ msgstr "ファイル・システムの quota ファイルをディスクと同期させる。"
11714
11715 #~ msgid "Get collected stats."
11716 #~ msgstr "収集された統計を取得する。"
11717
11718 #~ msgid ""
11719 #~ "On success, B<quotactl>()  returns 0.  On error, -1 is returned, and "
11720 #~ "I<errno> is set appropriately."
11721 #~ msgstr ""
11722 #~ "B<quotactl>()  は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 "
11723 #~ "I<errno> が適切な値に設定される。"
11724
11725 #~ msgid "B<Q_QUOTAON> was asked, but quotas were enabled already."
11726 #~ msgstr "B<Q_QUOTAON> の要求がなされたが、quota(s) は既に有効になっている。"
11727
11728 #~ msgid "Bad I<addr> value."
11729 #~ msgstr "I<addr> の値に誤りがある。"
11730
11731 #~ msgid ""
11732 #~ "I<type> is not a known quota type.  Or, I<special> could not be found."
11733 #~ msgstr ""
11734 #~ "I<type> が既知の quota の形式ではない。もしくは、 I<special> デバイスが見"
11735 #~ "付からなかった。"
11736
11737 #~ msgid "Cannot read or write the quota file."
11738 #~ msgstr "quota ファイルへの読み書きが出来ない。"
11739
11740 #~ msgid "Too many open files: cannot open quota file."
11741 #~ msgstr "ファイルをオープンしすぎている: quota ファイルをオープン出来ない。"
11742
11743 #~ msgid "I<special> cannot be found in the mount table."
11744 #~ msgstr "I<special> がマウント・テーブル内に見当たらない。"
11745
11746 #~ msgid "The kernel was compiled without quota support."
11747 #~ msgstr "quota を使用可にしてカーネルをコンパイルしていない。"
11748
11749 #~ msgid ""
11750 #~ "The process was not root (for the file system), and B<Q_GETQUOTA> was "
11751 #~ "asked for another I<id> than that of the process itself, or anything "
11752 #~ "other than B<Q_GETSTATS> or B<Q_SYNC> was asked."
11753 #~ msgstr ""
11754 #~ "プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自"
11755 #~ "身のものとは異なる I<id> に対して B<Q_GETQUOTA> 要求を行なった。 もしく"
11756 #~ "は、 B<Q_GETSTATS>, B<Q_SYNC> 以外の要求がなされた。"
11757
11758 #~ msgid ""
11759 #~ "B<Q_GETQUOTA> or B<Q_SETQUOTA> or B<Q_SETUSE> or B<Q_SETQLIM> was asked "
11760 #~ "for a file system that didn't have quota enabled."
11761 #~ msgstr ""
11762 #~ "quota が有効になっていないファイル・システムに対して B<Q_GETQUOTA>, "
11763 #~ "B<Q_SETQUOTA>, B<Q_SETUSE>, B<Q_SETQLIM> のいずれかの要求がなされた。"