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.
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "POT-Creation-Date: 2015-01-01 22:50+0900\n"
10 "PO-Revision-Date: 2014-06-08 02:45+0900\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
19 #: build/C/man3/CPU_SET.3:27
25 #: build/C/man3/CPU_SET.3:27
31 #: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
32 #: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
33 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
34 #: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
35 #: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
36 #: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
42 #: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
43 #: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
44 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
45 #: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
46 #: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
47 #: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
49 msgid "Linux Programmer's Manual"
50 msgstr "Linux Programmer's Manual"
53 #: build/C/man3/CPU_SET.3:28 build/C/man2/clone.2:43 build/C/man2/kcmp.2:29
54 #: build/C/man2/sched_get_priority_max.2:30 build/C/man3/sched_getcpu.3:27
55 #: build/C/man2/sched_rr_get_interval.2:30 build/C/man2/sched_setaffinity.2:35
56 #: build/C/man2/sched_setattr.2:27 build/C/man2/sched_setparam.2:31
57 #: build/C/man2/sched_setscheduler.2:27 build/C/man2/sched_yield.2:30
58 #: build/C/man7/sched.7:33 build/C/man2/setns.2:9 build/C/man2/unshare.2:21
64 #: build/C/man3/CPU_SET.3:35
66 "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, "
67 "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, "
68 "CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, "
69 "CPU_EQUAL_S - macros for manipulating CPU sets"
71 "CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, "
72 "CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, "
73 "CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, "
74 "CPU_EQUAL_S - CPU 集合を操作するためのマクロ"
77 #: build/C/man3/CPU_SET.3:35 build/C/man2/clone.2:45 build/C/man2/kcmp.2:31
78 #: build/C/man2/sched_get_priority_max.2:32 build/C/man3/sched_getcpu.3:29
79 #: build/C/man2/sched_rr_get_interval.2:32 build/C/man2/sched_setaffinity.2:38
80 #: build/C/man2/sched_setattr.2:30 build/C/man2/sched_setparam.2:33
81 #: build/C/man2/sched_setscheduler.2:30 build/C/man2/sched_yield.2:32
82 #: build/C/man2/setns.2:11 build/C/man2/unshare.2:23
88 #: build/C/man3/CPU_SET.3:39 build/C/man2/sched_setaffinity.2:42
89 #: build/C/man2/setns.2:15
92 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
93 "B<#include E<lt>sched.hE<gt>>\n"
95 "B<#define _GNU_SOURCE> /* feature_test_macros(7) 参照 */\n"
96 "B<#include E<lt>sched.hE<gt>>\n"
99 #: build/C/man3/CPU_SET.3:41
101 msgid "B<void CPU_ZERO(cpu_set_t *>I<set>B<);>\n"
102 msgstr "B<void CPU_ZERO(cpu_set_t *>I<set>B<);>\n"
105 #: build/C/man3/CPU_SET.3:45
108 "B<void CPU_SET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
109 "B<void CPU_CLR(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
110 "B<int CPU_ISSET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
112 "B<void CPU_SET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
113 "B<void CPU_CLR(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
114 "B<int CPU_ISSET(int >I<cpu>B<, cpu_set_t *>I<set>B<);>\n"
117 #: build/C/man3/CPU_SET.3:47
119 msgid "B<int CPU_COUNT(cpu_set_t *>I<set>B<);>\n"
120 msgstr "B<int CPU_COUNT(cpu_set_t *>I<set>B<);>\n"
123 #: build/C/man3/CPU_SET.3:54
126 "B<void CPU_AND(cpu_set_t *>I<destset>B<,>\n"
127 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
128 "B<void CPU_OR(cpu_set_t *>I<destset>B<,>\n"
129 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
130 "B<void CPU_XOR(cpu_set_t *>I<destset>B<,>\n"
131 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
133 "B<void CPU_AND(cpu_set_t *>I<destset>B<,>\n"
134 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
135 "B<void CPU_OR(cpu_set_t *>I<destset>B<,>\n"
136 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
137 "B<void CPU_XOR(cpu_set_t *>I<destset>B<,>\n"
138 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
141 #: build/C/man3/CPU_SET.3:56
143 msgid "B<int CPU_EQUAL(cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
144 msgstr "B<int CPU_EQUAL(cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
147 #: build/C/man3/CPU_SET.3:60
150 "B<cpu_set_t *CPU_ALLOC(int >I<num_cpus>B<);>\n"
151 "B<void CPU_FREE(cpu_set_t *>I<set>B<);>\n"
152 "B<size_t CPU_ALLOC_SIZE(int >I<num_cpus>B<);>\n"
154 "B<cpu_set_t *CPU_ALLOC(int >I<num_cpus>B<);>\n"
155 "B<void CPU_FREE(cpu_set_t *>I<set>B<);>\n"
156 "B<size_t CPU_ALLOC_SIZE(int >I<num_cpus>B<);>\n"
159 #: build/C/man3/CPU_SET.3:62
161 msgid "B<void CPU_ZERO_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
162 msgstr "B<void CPU_ZERO_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
165 #: build/C/man3/CPU_SET.3:66
168 "B<void CPU_SET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
169 "B<void CPU_CLR_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
170 "B<int CPU_ISSET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
172 "B<void CPU_SET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
173 "B<void CPU_CLR_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
174 "B<int CPU_ISSET_S(int >I<cpu>B<, size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
177 #: build/C/man3/CPU_SET.3:68
179 msgid "B<int CPU_COUNT_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
180 msgstr "B<int CPU_COUNT_S(size_t >I<setsize>B<, cpu_set_t *>I<set>B<);>\n"
183 #: build/C/man3/CPU_SET.3:75
186 "B<void CPU_AND_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
187 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
188 "B<void CPU_OR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
189 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
190 "B<void CPU_XOR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
191 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
193 "B<void CPU_AND_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
194 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
195 "B<void CPU_OR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
196 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
197 "B<void CPU_XOR_S(size_t >I<setsize>B<, cpu_set_t *>I<destset>B<,>\n"
198 "B< cpu_set_t *>I<srcset1>B<, cpu_set_t *>I<srcset2>B<);>\n"
201 #: build/C/man3/CPU_SET.3:78
203 msgid "B<int CPU_EQUAL_S(size_t >I<setsize>B<, cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
204 msgstr "B<int CPU_EQUAL_S(size_t >I<setsize>B<, cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
207 #: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:83 build/C/man2/kcmp.2:41
208 #: build/C/man2/sched_get_priority_max.2:38 build/C/man3/sched_getcpu.3:55
209 #: build/C/man2/sched_rr_get_interval.2:36 build/C/man2/sched_setaffinity.2:49
210 #: build/C/man2/sched_setattr.2:41 build/C/man2/sched_setparam.2:47
211 #: build/C/man2/sched_setscheduler.2:41 build/C/man2/sched_yield.2:36
212 #: build/C/man7/sched.7:35 build/C/man2/setns.2:18 build/C/man2/unshare.2:50
218 #: build/C/man3/CPU_SET.3:86
220 "The I<cpu_set_t> data structure represents a set of CPUs. CPU sets are used "
221 "by B<sched_setaffinity>(2) and similar interfaces."
223 "I<cpu_set_t> データ構造体は CPU 集合を表現している。 CPU 集合は "
224 "B<sched_setaffinity>(2) や同様のインタフェースで使用されている。"
227 #: build/C/man3/CPU_SET.3:93
229 "The I<cpu_set_t> data type is implemented as a bit set. However, the data "
230 "structure treated as considered opaque: all manipulation of CPU sets should "
231 "be done via the macros described in this page."
233 "I<cpu_set_t> データ型はビット集合として実装されている。 しかし、 データ構造体"
234 "はその実装を意識せずに扱うものとされており、 CPU 集合のすべての操作は、 この"
235 "ページで説明されているマクロを通して行うべきである。"
238 #: build/C/man3/CPU_SET.3:96
239 msgid "The following macros are provided to operate on the CPU set I<set>:"
240 msgstr "以下のマクロが CPU 集合 I<set> を操作するために提供されている。"
243 #: build/C/man3/CPU_SET.3:96
245 msgid "B<CPU_ZERO>()"
246 msgstr "B<CPU_ZERO>()"
249 #: build/C/man3/CPU_SET.3:101
250 msgid "Clears I<set>, so that it contains no CPUs."
251 msgstr "I<set> をクリアする。 集合には何も CPU が含まれない状態となる。"
254 #: build/C/man3/CPU_SET.3:101
257 msgstr "B<CPU_SET>()"
260 #: build/C/man3/CPU_SET.3:107
261 msgid "Add CPU I<cpu> to I<set>."
262 msgstr "I<set> に I<cpu> を追加する。"
265 #: build/C/man3/CPU_SET.3:107
268 msgstr "B<CPU_CLR>()"
271 #: build/C/man3/CPU_SET.3:113
272 msgid "Remove CPU I<cpu> from I<set>."
273 msgstr "I<set> から I<cpu> を削除する。"
276 #: build/C/man3/CPU_SET.3:113
278 msgid "B<CPU_ISSET>()"
279 msgstr "B<CPU_ISSET>()"
282 #: build/C/man3/CPU_SET.3:119
283 msgid "Test to see if CPU I<cpu> is a member of I<set>."
284 msgstr "CPU I<cpu> が I<set> のメンバーであるかを検査する。"
287 #: build/C/man3/CPU_SET.3:119
289 msgid "B<CPU_COUNT>()"
290 msgstr "B<CPU_COUNT>()"
293 #: build/C/man3/CPU_SET.3:123
294 msgid "Return the number of CPUs in I<set>."
295 msgstr "I<set> に含まれる CPU 数を返す。"
298 #: build/C/man3/CPU_SET.3:128
300 "Where a I<cpu> argument is specified, it should not produce side effects, "
301 "since the above macros may evaluate the argument more than once."
303 "I<cpu> 引き数が指定する場合、 その引き数は副作用を伴うべきではない。 上記のマ"
304 "クロは引き数を複数回評価する可能性があるからである。"
307 #: build/C/man3/CPU_SET.3:139
309 "The first available CPU on the system corresponds to a I<cpu> value of 0, "
310 "the next CPU corresponds to a I<cpu> value of 1, and so on. The constant "
311 "B<CPU_SETSIZE> (currently 1024) specifies a value one greater than the "
312 "maximum CPU number that can be stored in I<cpu_set_t>."
314 "そのシステムで利用可能な最初の CPU が I<cpu> 値 0 に対応し、 次の CPU が "
315 "I<cpu> 値 1 に対応し、 以降も同様である。 定数 B<CPU_SETSIZE> (現在のところ "
316 "1024) は I<cpu_set_t> に格納できる最大 CPU 数よりも大きな値である。"
319 #: build/C/man3/CPU_SET.3:141
320 msgid "The following macros perform logical operations on CPU sets:"
321 msgstr "以下のマクロは CPU 集合どうしの論理操作を行う。"
324 #: build/C/man3/CPU_SET.3:141
327 msgstr "B<CPU_AND>()"
330 #: build/C/man3/CPU_SET.3:150
332 "Store the intersection of the sets I<srcset1> and I<srcset2> in I<destset> "
333 "(which may be one of the source sets)."
335 "集合 I<srcset1> と I<srcset2> の積集合を I<destset> に格納する (元の集合のい"
336 "ずれかが I<destset> として使用される場合もある)。"
339 #: build/C/man3/CPU_SET.3:150
345 #: build/C/man3/CPU_SET.3:159
347 "Store the union of the sets I<srcset1> and I<srcset2> in I<destset> (which "
348 "may be one of the source sets)."
350 "集合 I<srcset1> と I<srcset2> の和集合を I<destset> に格納する (元の集合のい"
351 "ずれかが I<destset> として使用される場合もある)。"
354 #: build/C/man3/CPU_SET.3:159
357 msgstr "B<CPU_XOR>()"
360 #: build/C/man3/CPU_SET.3:173
362 "Store the XOR of the sets I<srcset1> and I<srcset2> in I<destset> (which may "
363 "be one of the source sets). The XOR means the set of CPUs that are in "
364 "either I<srcset1> or I<srcset2>, but not both."
366 "集合 I<srcset1> と I<srcset2> の XOR を I<destset> に格納する (元の集合のいず"
367 "れかが I<destset> として使用される場合もある)。 XOR とは、 I<srcset1> か "
368 "I<srcset2> のいずれかに含まれるが、両方には含まれない集合のことである。"
371 #: build/C/man3/CPU_SET.3:173
373 msgid "B<CPU_EQUAL>()"
374 msgstr "B<CPU_EQUAL>()"
377 #: build/C/man3/CPU_SET.3:176
378 msgid "Test whether two CPU set contain exactly the same CPUs."
379 msgstr "二つの CPU 集合が全く同じ CPU を含んでいるかを検査する。"
382 #: build/C/man3/CPU_SET.3:176
384 msgid "Dynamically sized CPU sets"
385 msgstr "動的に大きさが決まる CPU 集合"
388 #: build/C/man3/CPU_SET.3:182
390 "Because some applications may require the ability to dynamically size CPU "
391 "sets (e.g., to allocate sets larger than that defined by the standard "
392 "I<cpu_set_t> data type), glibc nowadays provides a set of macros to support "
395 "いくつかのアプリケーションでは CPU 集合の大きさを動的に決める能力 (例えば、 "
396 "標準の I<cpu_set_t> データ型で定義されたよりも大きい集合を割り当てるなど) が"
397 "必要となることがあるため、 現在 glibc はこれに対応するためにいくつかのマクロ"
401 #: build/C/man3/CPU_SET.3:184
402 msgid "The following macros are used to allocate and deallocate CPU sets:"
403 msgstr "以下のマクロを使うと CPU 集合の割り当てと解放ができる。"
406 #: build/C/man3/CPU_SET.3:184
408 msgid "B<CPU_ALLOC>()"
409 msgstr "B<CPU_ALLOC>()"
412 #: build/C/man3/CPU_SET.3:189
414 "Allocate a CPU set large enough to hold CPUs in the range 0 to I<num_cpus-1>."
416 "0 から I<num_cpus-1> までの範囲の CPU を保持するのに十分な大きさの CPU 集合を"
420 #: build/C/man3/CPU_SET.3:189
422 msgid "B<CPU_ALLOC_SIZE>()"
423 msgstr "B<CPU_ALLOC_SIZE>()"
426 #: build/C/man3/CPU_SET.3:199
428 "Return the size in bytes of the CPU set that would be needed to hold CPUs in "
429 "the range 0 to I<num_cpus-1>. This macro provides the value that can be "
430 "used for the I<setsize> argument in the B<CPU_*_S>() macros described below."
432 "0 から I<num_cpus-1> までの範囲の CPU を保持するのに必要な CPU 集合の大きさを"
433 "バイト数で返す。 このマクロが返す値は、 後述の B<CPU_*_S>() マクロの "
434 "I<setsize> 引き数として使用できる。"
437 #: build/C/man3/CPU_SET.3:199
439 msgid "B<CPU_FREE>()"
440 msgstr "B<CPU_FREE>()"
443 #: build/C/man3/CPU_SET.3:203
444 msgid "Free a CPU set previously allocated by B<CPU_ALLOC>()."
445 msgstr "以前に B<CPU_ALLOC>() で割り当てられた CPU 集合を解放する。"
448 #: build/C/man3/CPU_SET.3:210
450 "The macros whose names end with \"_S\" are the analogs of the similarly "
451 "named macros without the suffix. These macros perform the same tasks as "
452 "their analogs, but operate on the dynamically allocated CPU set(s) whose "
453 "size is I<setsize> bytes."
455 "名前が \"_S\" で終わるマクロは \"_S\" なしの同じ名前のマクロと同等である。 こ"
456 "れらのマクロは \"_S\" なしのものと同じ動作をするが、 動的に割り当てられた、 "
457 "大きさが I<setsize> バイトの CPU 集合に対して操作を行う点が異なる。"
460 #: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:873 build/C/man2/kcmp.2:127
461 #: build/C/man2/sched_get_priority_max.2:97 build/C/man3/sched_getcpu.3:58
462 #: build/C/man2/sched_rr_get_interval.2:73
463 #: build/C/man2/sched_setaffinity.2:107 build/C/man2/sched_setattr.2:262
464 #: build/C/man2/sched_setparam.2:87 build/C/man2/sched_setscheduler.2:135
465 #: build/C/man2/sched_yield.2:41 build/C/man2/setns.2:138
466 #: build/C/man2/unshare.2:277
472 #: build/C/man3/CPU_SET.3:219
474 "B<CPU_ISSET>() and B<CPU_ISSET_S>() return nonzero if I<cpu> is in I<set>; "
475 "otherwise, it returns 0."
477 "B<CPU_ISSET>() と B<CPU_ISSET_S>() は、 I<cpu> が I<set> に含まれていれば 0 "
478 "以外を返し、含まれない場合 0 を返す。"
481 #: build/C/man3/CPU_SET.3:225
483 "B<CPU_COUNT>() and B<CPU_COUNT_S>() return the number of CPUs in I<set>."
484 msgstr "B<CPU_COUNT>() と B<CPU_COUNT_S>() は I<set> に含まれる CPU 数を返す。"
487 #: build/C/man3/CPU_SET.3:230
489 "B<CPU_EQUAL>() and B<CPU_EQUAL_S>() return nonzero if the two CPU sets are "
490 "equal; otherwise it returns 0."
492 "B<CPU_EQUAL>() と B<CPU_EQUAL_S>() は、 二つの CPU 集合が等しければ 0 以外を"
496 #: build/C/man3/CPU_SET.3:235
498 "B<CPU_ALLOC>() returns a pointer on success, or NULL on failure. (Errors "
499 "are as for B<malloc>(3).)"
501 "B<CPU_ALLOC>() は成功するとポインタを返し、 失敗すると NULL を返す (エラーは "
502 "B<malloc>(3) と同じである)。"
505 #: build/C/man3/CPU_SET.3:239
507 "B<CPU_ALLOC_SIZE>() returns the number of bytes required to store a CPU set "
508 "of the specified cardinality."
510 "B<CPU_ALLOC_SIZE>() は指定された大きさの CPU 集合を格納するのに必要なバイト数"
514 #: build/C/man3/CPU_SET.3:241
515 msgid "The other functions do not return a value."
516 msgstr "他の関数は値を返さない。"
519 #: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:1030
520 #: build/C/man2/kcmp.2:198 build/C/man3/sched_getcpu.3:70
521 #: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setattr.2:348
522 #: build/C/man2/setns.2:181 build/C/man2/unshare.2:329
528 #: build/C/man3/CPU_SET.3:249
530 "The B<CPU_ZERO>(), B<CPU_SET>(), B<CPU_CLR>(), and B<CPU_ISSET>() macros "
531 "were added in glibc 2.3.3."
533 "マクロ B<CPU_ZERO>(), B<CPU_SET>(), B<CPU_CLR>(), B<CPU_ISSET>() は glibc "
537 #: build/C/man3/CPU_SET.3:252
538 msgid "B<CPU_COUNT>() first appeared in glibc 2.6."
539 msgstr "B<CPU_COUNT>() は glibc 2.6 で初めて登場した。"
542 #: build/C/man3/CPU_SET.3:270
544 "B<CPU_AND>(), B<CPU_OR>(), B<CPU_XOR>(), B<CPU_EQUAL>(), B<CPU_ALLOC>(), "
545 "B<CPU_ALLOC_SIZE>(), B<CPU_FREE>(), B<CPU_ZERO_S>(), B<CPU_SET_S>(), "
546 "B<CPU_CLR_S>(), B<CPU_ISSET_S>(), B<CPU_AND_S>(), B<CPU_OR_S>(), "
547 "B<CPU_XOR_S>(), and B<CPU_EQUAL_S>() first appeared in glibc 2.7."
549 "B<CPU_AND>(), B<CPU_OR>(), B<CPU_XOR>(), B<CPU_EQUAL>(), B<CPU_ALLOC>(), "
550 "B<CPU_ALLOC_SIZE>(), B<CPU_FREE>(), B<CPU_ZERO_S>(), B<CPU_SET_S>(), "
551 "B<CPU_CLR_S>(), B<CPU_ISSET_S>(), B<CPU_AND_S>(), B<CPU_OR_S>(), "
552 "B<CPU_XOR_S>(), B<CPU_EQUAL_S>() は glibc 2.7 で初めて登場した。"
555 #: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1037
556 #: build/C/man2/kcmp.2:202 build/C/man2/sched_get_priority_max.2:113
557 #: build/C/man3/sched_getcpu.3:77 build/C/man2/sched_rr_get_interval.2:94
558 #: build/C/man2/sched_setaffinity.2:159 build/C/man2/sched_setattr.2:351
559 #: build/C/man2/sched_setparam.2:119 build/C/man2/sched_setscheduler.2:170
560 #: build/C/man2/sched_yield.2:52 build/C/man2/setns.2:186
561 #: build/C/man2/unshare.2:333
563 msgid "CONFORMING TO"
567 #: build/C/man3/CPU_SET.3:272
568 msgid "These interfaces are Linux-specific."
569 msgstr "これらのインタフェースは Linux 固有である。"
572 #: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1041
573 #: build/C/man2/kcmp.2:205 build/C/man3/sched_getcpu.3:80
574 #: build/C/man2/sched_rr_get_interval.2:96
575 #: build/C/man2/sched_setaffinity.2:161 build/C/man2/sched_setattr.2:353
576 #: build/C/man2/sched_setparam.2:121 build/C/man2/sched_setscheduler.2:173
577 #: build/C/man2/sched_yield.2:54 build/C/man7/sched.7:611
578 #: build/C/man2/setns.2:190 build/C/man2/unshare.2:337
584 #: build/C/man3/CPU_SET.3:275
585 msgid "To duplicate a CPU set, use B<memcpy>(3)."
586 msgstr "CPU 集合を複製するには、 B<memcpy>(3) を使用する。"
589 #: build/C/man3/CPU_SET.3:282
591 "Since CPU sets are bit sets allocated in units of long words, the actual "
592 "number of CPUs in a dynamically allocated CPU set will be rounded up to the "
593 "next multiple of I<sizeof(unsigned long)>. An application should consider "
594 "the contents of these extra bits to be undefined."
596 "CPU 集合はロングワード単位に割り当てられるビット集合なので、 動的に割り当てら"
597 "れた CPU 集合の実際の CPU 数は I<sizeof(unsigned long)> の次の倍数に切り上げ"
598 "られることになる。 アプリケーションは、 これらの余分なビットの内容は不定と考"
602 #: build/C/man3/CPU_SET.3:294
604 "Notwithstanding the similarity in the names, note that the constant "
605 "B<CPU_SETSIZE> indicates the number of CPUs in the I<cpu_set_t> data type "
606 "(thus, it is effectively a count of bits in the bit set), while the "
607 "I<setsize> argument of the B<CPU_*_S>() macros is a size in bytes."
609 "名前は似ているが、 定数 B<CPU_SETSIZE> は I<cpu_set_t> データ型に含まれる "
610 "CPU 数 (つまり、事実上ビット集合内のビットカウント) を示すのに対して、 マク"
611 "ロ B<CPU_*_S>() の I<setsize> 引き数はバイト単位のサイズである点に注意するこ"
615 #: build/C/man3/CPU_SET.3:300
617 "The data types for arguments and return values shown in the SYNOPSIS are "
618 "hints what about is expected in each case. However, since these interfaces "
619 "are implemented as macros, the compiler won't necessarily catch all type "
620 "errors if you violate the suggestions."
622 "「書式」に書かれている引き数と返り値のデータ型は、それぞれの場合でどんな型が"
623 "期待されるかのヒントである。 しかしながら、 これらのインタフェースはマクロと"
624 "して実装されているため、 このヒントを守らなかった場合に、 コンパイラが必ずし"
625 "も全ての型エラーを捕捉できるとは限らない。"
628 #: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1066
629 #: build/C/man2/sched_setattr.2:369 build/C/man2/sched_setscheduler.2:214
634 #. http://sourceware.org/bugzilla/show_bug.cgi?id=7029
636 #: build/C/man3/CPU_SET.3:312
638 "On 32-bit platforms with glibc 2.8 and earlier, B<CPU_ALLOC>() allocates "
639 "twice as much space as is required, and B<CPU_ALLOC_SIZE>() returns a value "
640 "twice as large as it should. This bug should not affect the semantics of a "
641 "program, but does result in wasted memory and less efficient operation of "
642 "the macros that operate on dynamically allocated CPU sets. These bugs are "
643 "fixed in glibc 2.9."
645 "glibc 2.8 以前の 32 ビットプラットフォームでは、 B<CPU_ALLOC>() は必要な空間"
646 "の割り当てを二度行い、 B<CPU_ALLOC_SIZE>() は本来あるべき値の二倍の値を返"
647 "す。 このバグはプログラムの動作には影響を与えないはずだが、 無駄にメモリを消"
648 "費し、 動的に割り当てられた CPU 集合に対して操作を行うマクロの動作の効率が下"
649 "がる結果となる。 これらのバグは glibc 2.9 で修正された。"
652 #: build/C/man3/CPU_SET.3:312 build/C/man2/clone.2:1108
653 #: build/C/man2/setns.2:196 build/C/man2/unshare.2:371
659 #: build/C/man3/CPU_SET.3:315
661 "The following program demonstrates the use of some of the macros used for "
662 "dynamically allocated CPU sets."
664 "以下のプログラムは、動的に割り当てた CPU 集合に対していくつかのマクロを使用す"
668 #: build/C/man3/CPU_SET.3:323
671 "#define _GNU_SOURCE\n"
672 "#include E<lt>sched.hE<gt>\n"
673 "#include E<lt>stdlib.hE<gt>\n"
674 "#include E<lt>unistd.hE<gt>\n"
675 "#include E<lt>stdio.hE<gt>\n"
676 "#include E<lt>assert.hE<gt>\n"
678 "#define _GNU_SOURCE\n"
679 "#include E<lt>sched.hE<gt>\n"
680 "#include E<lt>stdlib.hE<gt>\n"
681 "#include E<lt>unistd.hE<gt>\n"
682 "#include E<lt>stdio.hE<gt>\n"
683 "#include E<lt>assert.hE<gt>\n"
686 #: build/C/man3/CPU_SET.3:330
690 "main(int argc, char *argv[])\n"
692 " cpu_set_t *cpusetp;\n"
694 " int num_cpus, cpu;\n"
697 "main(int argc, char *argv[])\n"
699 " cpu_set_t *cpusetp;\n"
701 " int num_cpus, cpu;\n"
704 #: build/C/man3/CPU_SET.3:335
707 " if (argc E<lt> 2) {\n"
708 " fprintf(stderr, \"Usage: %s E<lt>num-cpusE<gt>\\en\", argv[0]);\n"
709 " exit(EXIT_FAILURE);\n"
712 " if (argc E<lt> 2) {\n"
713 " fprintf(stderr, \"Usage: %s E<lt>num-cpusE<gt>\\en\", argv[0]);\n"
714 " exit(EXIT_FAILURE);\n"
718 #: build/C/man3/CPU_SET.3:337
720 msgid " num_cpus = atoi(argv[1]);\n"
721 msgstr " num_cpus = atoi(argv[1]);\n"
724 #: build/C/man3/CPU_SET.3:343
727 " cpusetp = CPU_ALLOC(num_cpus);\n"
728 " if (cpusetp == NULL) {\n"
729 " perror(\"CPU_ALLOC\");\n"
730 " exit(EXIT_FAILURE);\n"
733 " cpusetp = CPU_ALLOC(num_cpus);\n"
734 " if (cpusetp == NULL) {\n"
735 " perror(\"CPU_ALLOC\");\n"
736 " exit(EXIT_FAILURE);\n"
740 #: build/C/man3/CPU_SET.3:345
742 msgid " size = CPU_ALLOC_SIZE(num_cpus);\n"
743 msgstr " size = CPU_ALLOC_SIZE(num_cpus);\n"
746 #: build/C/man3/CPU_SET.3:349
749 " CPU_ZERO_S(size, cpusetp);\n"
750 " for (cpu = 0; cpu E<lt> num_cpus; cpu += 2)\n"
751 " CPU_SET_S(cpu, size, cpusetp);\n"
753 " CPU_ZERO_S(size, cpusetp);\n"
754 " for (cpu = 0; cpu E<lt> num_cpus; cpu += 2)\n"
755 " CPU_SET_S(cpu, size, cpusetp);\n"
758 #: build/C/man3/CPU_SET.3:351
760 msgid " printf(\"CPU_COUNT() of set: %d\\en\", CPU_COUNT_S(size, cpusetp));\n"
761 msgstr " printf(\"CPU_COUNT() of set: %d\\en\", CPU_COUNT_S(size, cpusetp));\n"
764 #: build/C/man3/CPU_SET.3:355
767 " CPU_FREE(cpusetp);\n"
768 " exit(EXIT_SUCCESS);\n"
771 " CPU_FREE(cpusetp);\n"
772 " exit(EXIT_SUCCESS);\n"
776 #: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1205
777 #: build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:115
778 #: build/C/man3/sched_getcpu.3:100 build/C/man2/sched_rr_get_interval.2:132
779 #: build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setattr.2:385
780 #: build/C/man2/sched_setparam.2:127 build/C/man2/sched_setscheduler.2:222
781 #: build/C/man2/sched_yield.2:79 build/C/man7/sched.7:664
782 #: build/C/man2/setns.2:283 build/C/man2/unshare.2:458
788 #: build/C/man3/CPU_SET.3:361
790 "B<sched_setaffinity>(2), B<pthread_attr_setaffinity_np>(3), "
791 "B<pthread_setaffinity_np>(3), B<cpuset>(7)"
793 "B<sched_setaffinity>(2), B<pthread_attr_setaffinity_np>(3), "
794 "B<pthread_setaffinity_np>(3), B<cpuset>(7)"
797 #: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1220
798 #: build/C/man2/kcmp.2:225 build/C/man2/sched_get_priority_max.2:125
799 #: build/C/man3/sched_getcpu.3:103 build/C/man2/sched_rr_get_interval.2:134
800 #: build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setattr.2:408
801 #: build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:242
802 #: build/C/man2/sched_yield.2:81 build/C/man7/sched.7:702
803 #: build/C/man2/setns.2:290 build/C/man2/unshare.2:469
809 #: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1228
810 #: build/C/man2/kcmp.2:233 build/C/man2/sched_get_priority_max.2:133
811 #: build/C/man3/sched_getcpu.3:111 build/C/man2/sched_rr_get_interval.2:142
812 #: build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setattr.2:416
813 #: build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:250
814 #: build/C/man2/sched_yield.2:89 build/C/man7/sched.7:710
815 #: build/C/man2/setns.2:298 build/C/man2/unshare.2:477
818 #| "This page is part of release 3.68 of the Linux I<man-pages> project. A "
819 #| "description of the project, information about reporting bugs, and the "
820 #| "latest version of this page, can be found at \\%http://www.kernel.org/doc/"
823 "This page is part of release 3.75 of the Linux I<man-pages> project. A "
824 "description of the project, information about reporting bugs, and the latest "
825 "version of this page, can be found at \\%http://www.kernel.org/doc/man-"
828 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.68 の一部\n"
829 "である。プロジェクトの説明とバグ報告に関する情報は\n"
830 "http://www.kernel.org/doc/man-pages/ に書かれている。"
833 #: build/C/man2/clone.2:42
839 #: build/C/man2/clone.2:42 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
841 #| msgid "2014-05-21"
846 #: build/C/man2/clone.2:45
847 msgid "clone, __clone2 - create a child process"
848 msgstr "clone, __clone2 - 子プロセスを作成する"
851 #: build/C/man2/clone.2:48
853 msgid "/* Prototype for the glibc wrapper function */\n"
854 msgstr "/* glibc ラッパー関数のプロトタイプ */\n"
857 #: build/C/man2/clone.2:50 build/C/man3/sched_getcpu.3:32
858 #: build/C/man2/sched_setattr.2:33 build/C/man2/sched_setparam.2:36
859 #: build/C/man2/sched_setscheduler.2:33 build/C/man2/unshare.2:26
861 msgid "B<#include E<lt>sched.hE<gt>>\n"
862 msgstr "B<#include E<lt>sched.hE<gt>>\n"
865 #: build/C/man2/clone.2:55
868 "B<int clone(int (*>I<fn>B<)(void *), void *>I<child_stack>B<,>\n"
869 "B< int >I<flags>B<, void *>I<arg>B<, ... >\n"
870 "B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
872 "B<int clone(int (*>I<fn>B<)(void *), void *>I<child_stack>B<,>\n"
873 "B< int >I<flags>B<, void *>I<arg>B<, ... >\n"
874 "B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
877 #: build/C/man2/clone.2:57
879 msgid "/* Prototype for the raw system call */\n"
880 msgstr "/* 素のシステムコールのプロトタイプ */\n"
883 #: build/C/man2/clone.2:61
886 "B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
887 "B< void *>I<ptid>B<, void *>I<ctid>B<,>\n"
888 "B< struct pt_regs *>I<regs>B<);>\n"
890 "B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
891 "B< void *>I<ptid>B<, void *>I<ctid>B<,>\n"
892 "B< struct pt_regs *>I<regs>B<);>\n"
895 #: build/C/man2/clone.2:66
897 "Feature Test Macro Requirements for glibc wrapper function (see "
898 "B<feature_test_macros>(7)):"
900 "glibc ラッパー関数の機能検査マクロの要件 (B<feature_test_macros>(7) 参照):"
903 #: build/C/man2/clone.2:69
908 #: build/C/man2/clone.2:72 build/C/man3/sched_getcpu.3:45
909 #: build/C/man2/unshare.2:39
911 msgid "Since glibc 2.14:"
912 msgstr "glibc 2.14 以降:"
915 #: build/C/man2/clone.2:75 build/C/man3/sched_getcpu.3:48
916 #: build/C/man2/unshare.2:42
920 #. See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
922 #: build/C/man2/clone.2:75 build/C/man3/sched_getcpu.3:48
923 #: build/C/man2/unshare.2:42
925 msgid "Before glibc 2.14:"
926 msgstr "glibc 2.14 より前:"
929 #: build/C/man2/clone.2:80 build/C/man3/sched_getcpu.3:52
930 #: build/C/man2/unshare.2:47
933 "_BSD_SOURCE || _SVID_SOURCE\n"
934 " /* _GNU_SOURCE also suffices */\n"
936 "_BSD_SOURCE || _SVID_SOURCE\n"
937 " /* _GNU_SOURCE も定義される */\n"
940 #: build/C/man2/clone.2:87
941 msgid "B<clone>() creates a new process, in a manner similar to B<fork>(2)."
942 msgstr "B<clone>() は、 B<fork>(2) と似た方法で新しいプロセスを作成する。"
945 #: build/C/man2/clone.2:94
947 "This page describes both the glibc B<clone>() wrapper function and the "
948 "underlying system call on which it is based. The main text describes the "
949 "wrapper function; the differences for the raw system call are described "
950 "toward the end of this page."
952 "このページでは、 glibc の B<clone>() ラッパー関数とその裏で呼ばれるシステム"
953 "コールの両方について説明している。 メインの説明はラッパー関数に関するものであ"
954 "る。 素のシステムコールにおける差分はこのページの最後の方で説明する。"
957 #: build/C/man2/clone.2:106
959 "Unlike B<fork>(2), B<clone>() allows the child process to share parts of "
960 "its execution context with the calling process, such as the memory space, "
961 "the table of file descriptors, and the table of signal handlers. (Note that "
962 "on this manual page, \"calling process\" normally corresponds to \"parent "
963 "process\". But see the description of B<CLONE_PARENT> below.)"
965 "B<fork>(2) とは異なり、B<clone>() では、子プロセス (child process) と呼び出"
966 "し元のプロセスとが、メモリ空間、ファイルディスクリプタのテーブル、シグナルハ"
967 "ンドラのテーブルなどの 実行コンテキストの一部を共有できる。 (このマニュアルに"
968 "おける「呼び出し元のプロセス」は、通常は 「親プロセス」と一致する。但し、後述"
969 "の B<CLONE_PARENT> の項も参照のこと)"
972 #: build/C/man2/clone.2:111
974 "The main use of B<clone>() is to implement threads: multiple threads of "
975 "control in a program that run concurrently in a shared memory space."
977 "B<clone>() の主要な使用法はスレッド (threads) を実装することである: 一つのプ"
978 "ログラムの中の複数のスレッドは共有されたメモリ空間で 同時に実行される。"
981 #: build/C/man2/clone.2:131
983 "When the child process is created with B<clone>(), it executes the function "
984 "I<fn>(I<arg>). (This differs from B<fork>(2), where execution continues in "
985 "the child from the point of the B<fork>(2) call.) The I<fn> argument is a "
986 "pointer to a function that is called by the child process at the beginning "
987 "of its execution. The I<arg> argument is passed to the I<fn> function."
989 "B<clone>() で子プロセスが作成された時に、作成された子プロセスは関数 "
990 "I<fn>(I<arg>) を実行する。 (この点が B<fork>(2) とは異なる。 B<fork>(2) の"
991 "場合、子プロセスは B<fork>(2) が呼び出された場所から実行を続ける。) I<fn> "
992 "引き数は、子プロセスが実行を始める時に子プロセスが呼び出す 関数へのポインタで"
993 "ある。 I<arg> 引き数はそのまま I<fn> 関数へと渡される。"
996 #: build/C/man2/clone.2:141
998 "When the I<fn>(I<arg>) function application returns, the child process "
999 "terminates. The integer returned by I<fn> is the exit code for the child "
1000 "process. The child process may also terminate explicitly by calling "
1001 "B<exit>(2) or after receiving a fatal signal."
1003 "I<fn>(I<arg>) 関数が終了すると、子プロセスは終了する。 I<fn> によって返され"
1004 "た整数が子プロセスの終了コードとなる。 子プロセスは、 B<exit>(2) を呼んで明"
1005 "示的に終了することもあるし、致命的なシグナルを受信した 場合に終了することもあ"
1009 #: build/C/man2/clone.2:157
1011 "The I<child_stack> argument specifies the location of the stack used by the "
1012 "child process. Since the child and calling process may share memory, it is "
1013 "not possible for the child process to execute in the same stack as the "
1014 "calling process. The calling process must therefore set up memory space for "
1015 "the child stack and pass a pointer to this space to B<clone>(). Stacks grow "
1016 "downward on all processors that run Linux (except the HP PA processors), so "
1017 "I<child_stack> usually points to the topmost address of the memory space set "
1018 "up for the child stack."
1020 "I<child_stack> 引き数は、子プロセスによって使用されるスタックの位置を指定す"
1021 "る。 子プロセスと呼び出し元のプロセスはメモリを共有することがあるため、 子プ"
1022 "ロセスは呼び出し元のプロセスと同じスタックで実行することができない。 このた"
1023 "め、呼び出し元のプロセスは子プロセスのスタックのためのメモリ空間を 用意して、"
1024 "この空間へのポインタを B<clone>() へ渡さなければならない。 (HP PA プロセッサ"
1025 "以外の) Linux が動作する全てのプロセッサでは、 スタックは下方 (アドレスが小さ"
1026 "い方向) へと伸びる。このため、普通は I<child_stack> は子プロセスのスタックの"
1027 "ために用意したメモリ空間の一番大きい アドレスを指すようにする。"
1030 #: build/C/man2/clone.2:173
1032 "The low byte of I<flags> contains the number of the I<termination signal> "
1033 "sent to the parent when the child dies. If this signal is specified as "
1034 "anything other than B<SIGCHLD>, then the parent process must specify the "
1035 "B<__WALL> or B<__WCLONE> options when waiting for the child with "
1036 "B<wait>(2). If no signal is specified, then the parent process is not "
1037 "signaled when the child terminates."
1039 "I<flags> の下位 1 バイトは子プロセスが死んだ場合に親プロセスへと送られる I<終"
1040 "了シグナル (termination signal)> の番号を指定する。このシグナルとして "
1041 "B<SIGCHLD> 以外が指定された場合、親プロセスは、 B<wait>(2) で子プロセスを待"
1042 "つ際に、オプションとして B<__WALL> または B<__WCLONE> を指定しなければならな"
1043 "い。 どのシグナルも指定されなかった場合、子プロセスが終了した時に親プロセス "
1047 #: build/C/man2/clone.2:178
1049 "I<flags> may also be bitwise-or'ed with zero or more of the following "
1050 "constants, in order to specify what is shared between the calling process "
1051 "and the child process:"
1053 "I<flags> には、以下の定数のうち 0個以上をビット毎の論理和 (bitwise-or) を"
1054 "とったものを指定できる。これらの定数は呼び出し元のプロセスと 子プロセスの間で"
1058 #: build/C/man2/clone.2:178
1060 msgid "B<CLONE_CHILD_CLEARTID> (since Linux 2.5.49)"
1061 msgstr "B<CLONE_CHILD_CLEARTID> (Linux 2.5.49 以降)"
1064 #: build/C/man2/clone.2:188
1066 "Erase child thread ID at location I<ctid> in child memory when the child "
1067 "exits, and do a wakeup on the futex at that address. The address involved "
1068 "may be changed by the B<set_tid_address>(2) system call. This is used by "
1069 "threading libraries."
1071 "子プロセスが終了したときに子プロセスのメモリ内の I<ctid> が指す場所にある子プ"
1072 "ロセスのスレッド ID を消去し、 そのアドレスで futex を wake (起床) させる。 "
1073 "このアドレスは B<set_tid_address>(2) システムコールで変更することができる。 "
1074 "この機能はスレッドライブラリで使用される。"
1077 #: build/C/man2/clone.2:188
1079 msgid "B<CLONE_CHILD_SETTID> (since Linux 2.5.49)"
1080 msgstr "B<CLONE_CHILD_SETTID> (Linux 2.5.49 以降)"
1083 #: build/C/man2/clone.2:193
1084 msgid "Store child thread ID at location I<ctid> in child memory."
1086 "子プロセスのメモリ内の I<ctid> が指す場所に子プロセスのスレッド ID を格納す"
1090 #: build/C/man2/clone.2:193
1092 msgid "B<CLONE_FILES> (since Linux 2.0)"
1093 msgstr "B<CLONE_FILES> (Linux 2.0 以降)"
1096 #: build/C/man2/clone.2:206
1098 "If B<CLONE_FILES> is set, the calling process and the child process share "
1099 "the same file descriptor table. Any file descriptor created by the calling "
1100 "process or by the child process is also valid in the other process. "
1101 "Similarly, if one of the processes closes a file descriptor, or changes its "
1102 "associated flags (using the B<fcntl>(2) B<F_SETFD> operation), the other "
1103 "process is also affected."
1105 "B<CLONE_FILES> が設定された場合、呼び出し元のプロセスと子プロセスはファイル"
1106 "ディスクリプタの テーブルを共有する。 呼び出し元プロセスとその子プロセスの一"
1107 "方が作成した ファイルディスクリプタは、もう一方においても有効である。 同じよ"
1108 "うに、一方のプロセスがファイルディスクリプタを閉じたり、 (B<fcntl>(2) "
1109 "B<F_SETFD> 操作を使って) ディスクリプタに関連するフラグを変更したりすると、 "
1113 #: build/C/man2/clone.2:220
1115 "If B<CLONE_FILES> is not set, the child process inherits a copy of all file "
1116 "descriptors opened in the calling process at the time of B<clone>(). (The "
1117 "duplicated file descriptors in the child refer to the same open file "
1118 "descriptions (see B<open>(2)) as the corresponding file descriptors in the "
1119 "calling process.) Subsequent operations that open or close file "
1120 "descriptors, or change file descriptor flags, performed by either the "
1121 "calling process or the child process do not affect the other process."
1123 "B<CLONE_FILES> が設定されていない場合、子プロセスは、 B<clone>() が実行され"
1124 "た時点で、呼び出し元のプロセスがオープンしている全ての ファイルディスクリプタ"
1125 "のコピーを継承する (子プロセスの複製されたファイルディスクリプタは、 対応する"
1126 "呼び出し元のプロセスのファイルディスクリプタと 同じファイル記述 (B<open>(2) "
1127 "参照) を参照する)。 これ以降に、呼び出し元のプロセスと子プロセスの一方が ファ"
1128 "イルディスクリプタの操作 (ファイルディスクリプタの オープン・クローズや、ファ"
1129 "イルディスクリプタ・フラグの変更) を行っても、もう一方のプロセスには影響を与"
1133 #: build/C/man2/clone.2:220
1135 msgid "B<CLONE_FS> (since Linux 2.0)"
1136 msgstr "B<CLONE_FS> (Linux 2.0 以降)"
1139 #: build/C/man2/clone.2:235
1141 "If B<CLONE_FS> is set, the caller and the child process share the same "
1142 "filesystem information. This includes the root of the filesystem, the "
1143 "current working directory, and the umask. Any call to B<chroot>(2), "
1144 "B<chdir>(2), or B<umask>(2) performed by the calling process or the child "
1145 "process also affects the other process."
1147 "B<CLONE_FS> が設定された場合、呼び出し元のプロセスと子プロセスが同じファイル"
1148 "システム 情報を共有する。ファイルシステム情報は、ファイルシステムのルート "
1149 "(root)、 カレントワーキングディレクトリ (current working directory) や "
1150 "umask などである。 呼び出し元のプロセスや子プロセスのどちらか一方によって "
1151 "B<chroot>(2), B<chdir>(2), B<umask>(2) が呼び出されると、もう一方のプロセス"
1155 #: build/C/man2/clone.2:247
1157 "If B<CLONE_FS> is not set, the child process works on a copy of the "
1158 "filesystem information of the calling process at the time of the B<clone>() "
1159 "call. Calls to B<chroot>(2), B<chdir>(2), B<umask>(2) performed later by "
1160 "one of the processes do not affect the other process."
1162 "B<CLONE_FS> が設定されていない場合、子プロセスは、 B<clone>() が実行された時"
1163 "点での、呼び出し元のプロセスのファイルシステム情報のコピーを 使用する。 これ"
1164 "以降は、呼び出し元のプロセスと子プロセスの一方が B<chroot>(2), B<chdir>(2), "
1165 "B<umask>(2) を呼び出しても、もう一方のプロセスには影響を与えない。"
1168 #: build/C/man2/clone.2:247
1170 msgid "B<CLONE_IO> (since Linux 2.6.25)"
1171 msgstr "B<CLONE_IO> (Linux 2.6.25 以降)"
1174 #: build/C/man2/clone.2:256
1176 "If B<CLONE_IO> is set, then the new process shares an I/O context with the "
1177 "calling process. If this flag is not set, then (as with B<fork>(2)) the "
1178 "new process has its own I/O context."
1180 "B<CLONE_IO> が設定された場合、新しいプロセスは呼び出し元のプロセスと I/O コン"
1181 "テキストを共有する。 このフラグが設定されていない場合には、 (B<fork>(2) の場"
1182 "合と同様) 新しいプロセスは自分専用の I/O コンテキストを持つ。"
1184 #. The following based on text from Jens Axboe
1185 #. the anticipatory and CFQ scheduler
1188 #: build/C/man2/clone.2:273
1190 "The I/O context is the I/O scope of the disk scheduler (i.e, what the I/O "
1191 "scheduler uses to model scheduling of a process's I/O). If processes share "
1192 "the same I/O context, they are treated as one by the I/O scheduler. As a "
1193 "consequence, they get to share disk time. For some I/O schedulers, if two "
1194 "processes share an I/O context, they will be allowed to interleave their "
1195 "disk access. If several threads are doing I/O on behalf of the same process "
1196 "(B<aio_read>(3), for instance), they should employ B<CLONE_IO> to get better "
1199 "I/O コンテキストは、ディスクスケジュールの I/O スコープである (言い換えると、"
1200 "I/O コンテキストは I/O スケジューラがプロセス I/O の スケジューリングをモデル"
1201 "化するのに使用される)。 複数のプロセスが同じ I/O コンテキストを共有する場"
1202 "合、 これらのプロセスは I/O スケジューラからは一つとして扱われる。 結果とし"
1203 "て、これらのプロセスはディスクアクセスの時間を共有するようになる。 いくつか"
1204 "の I/O スケジューラでは、 二つのプロセスが I/O コンテキストを共有している場"
1205 "合、 これらのプロセスはディスクアクセスを交互に行うことができる。 同じプロセ"
1206 "スの複数のスレッドが I/O を実行している場合 (例えば B<aio_read>(3))、 "
1207 "B<CLONE_IO> を利用することで I/O 性能を良くすることができる。"
1210 #: build/C/man2/clone.2:277
1212 "If the kernel is not configured with the B<CONFIG_BLOCK> option, this flag "
1215 "カーネルの設定が B<CONFIG_BLOCK> オプション付きでない場合、 このフラグは何の"
1219 #: build/C/man2/clone.2:277 build/C/man2/unshare.2:96
1221 msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
1222 msgstr "B<CLONE_NEWIPC> (Linux 2.6.19 以降)"
1225 #: build/C/man2/clone.2:287
1227 "If B<CLONE_NEWIPC> is set, then create the process in a new IPC namespace. "
1228 "If this flag is not set, then (as with B<fork>(2)), the process is created "
1229 "in the same IPC namespace as the calling process. This flag is intended for "
1230 "the implementation of containers."
1232 "B<CLONE_NEWIPC> が設定された場合、新しい IPC 名前空間 (namespace) でプロセス"
1233 "を作成する。 このフラグが設定されていない場合、 (B<fork>(2) の場合と同様) 呼"
1234 "び出し元のプロセスと同じ IPC 名前空間でプロセスが 作成される。 このフラグは、"
1235 "コンテナの実装での使用を意図して用意されたものである。"
1237 #. commit 7eafd7c74c3f2e67c27621b987b28397110d643f
1238 #. https://lwn.net/Articles/312232/
1240 #: build/C/man2/clone.2:299
1242 "An IPC namespace provides an isolated view of System\\ V IPC objects (see "
1243 "B<svipc>(7)) and (since Linux 2.6.30) POSIX message queues (see "
1244 "B<mq_overview>(7)). The common characteristic of these IPC mechanisms is "
1245 "that IPC objects are identified by mechanisms other than filesystem "
1248 "IPC 名前空間は、独立の System\\ V IPC オブジェクト空間 (B<svipc>(7) 参照) を"
1249 "提供する 。 (Linux 2.6.30 以降では) 独立した POSIX メッセージキュー空間 "
1250 "(B<mq_overview>(7) 参照) も提供される。 これらの IPC 機構に共通の特徴とし"
1251 "て、 IPC オブジェクトはファイルシステムのパス名とは違った仕組みで識別されると"
1255 #: build/C/man2/clone.2:303
1257 "Objects created in an IPC namespace are visible to all other processes that "
1258 "are members of that namespace, but are not visible to processes in other IPC "
1261 "ある IPC 名前空間に作成されたオブジェクトは、 その名前空間のメンバーである他"
1262 "のすべてのプロセスからも見えるが、 違う IPC 名前空間のプロセスからは見えな"
1266 #: build/C/man2/clone.2:307
1268 "When an IPC namespace is destroyed (i.e., when the last process that is a "
1269 "member of the namespace terminates), all IPC objects in the namespace are "
1270 "automatically destroyed."
1272 "IPC 名前空間が破棄される時 (すなわち、その名前空間のメンバーの最後のプロセス"
1273 "が終了する時)、 その名前空間の全ての IPC オブジェクトは自動的に破棄される。"
1276 #: build/C/man2/clone.2:314
1278 "Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWIPC>. "
1279 "This flag can't be specified in conjunction with B<CLONE_SYSVSEM>."
1283 #: build/C/man2/clone.2:317
1284 msgid "For further information on IPC namespaces, see B<namespaces>(7)."
1288 #: build/C/man2/clone.2:317 build/C/man2/unshare.2:113
1290 msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
1291 msgstr "B<CLONE_NEWNET> (Linux 2.6.24 以降)"
1294 #: build/C/man2/clone.2:321
1296 "(The implementation of this flag was completed only by about kernel version "
1298 msgstr "(このフラグの実装は、Linux 2.6.29 あたりまでには完成した。)"
1301 #: build/C/man2/clone.2:330
1304 #| "If B<CLONE_NEWNET> is set, then create the process in a new network "
1305 #| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
1306 #| "process is created in the same network namespace as the calling process. "
1307 #| "This flag is intended for the implementation of containers."
1309 "If B<CLONE_NEWNET> is set, then create the process in a new network "
1310 "namespace. If this flag is not set, then (as with B<fork>(2)) the process "
1311 "is created in the same network namespace as the calling process. This flag "
1312 "is intended for the implementation of containers."
1314 "B<CLONE_NEWNET> が設定された場合、新しいネットワーク名前空間 (network "
1315 "namaspace) でプロセスを作成する。 このフラグが設定されていない場合、 "
1316 "(B<fork>(2) の場合と同様) 呼び出し元のプロセスと同じネットワーク名前空間でプ"
1317 "ロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用意され"
1320 #. FIXME . Add pointer to veth(4) page when it is eventually completed
1322 #: build/C/man2/clone.2:345
1324 "A network namespace provides an isolated view of the networking stack "
1325 "(network device interfaces, IPv4 and IPv6 protocol stacks, IP routing "
1326 "tables, firewall rules, the I</proc/net> and I</sys/class/net> directory "
1327 "trees, sockets, etc.). A physical network device can live in exactly one "
1328 "network namespace. A virtual network device (\"veth\") pair provides a pipe-"
1329 "like abstraction that can be used to create tunnels between network "
1330 "namespaces, and can be used to create a bridge to a physical network device "
1331 "in another namespace."
1333 "ネットワーク名前空間は、分離されたネットワークスタックを提供するものである "
1334 "(ネットワークスタックとは、 ネットワークデバイスインタフェース、IPv4 や IPv6 "
1335 "プロトコルスタック、 I</proc/net>、 I</sys/class/net> ディレクトリツリー、ソ"
1336 "ケットなどである)。 物理ネットワークデバイスが所属できるネットワーク名前空間"
1337 "は一つだけである。 仮想ネットワークデバイス (\"veth\") のペアにより パイプ風"
1338 "の抽象化 (abstraction) が実現されており、 これを使うことで、ネットワーク名前"
1339 "空間間のトンネルを作成したり、 別の名前空間の物理ネットワークデバイスへのブ"
1340 "リッジを作成したり することができる。"
1343 #: build/C/man2/clone.2:352
1346 #| "When a network namespace is freed (i.e., when the last process in the "
1347 #| "namespace terminates), its physical network devices are moved back to the "
1348 #| "initial network namespace (not to the parent of the process)."
1350 "When a network namespace is freed (i.e., when the last process in the "
1351 "namespace terminates), its physical network devices are moved back to the "
1352 "initial network namespace (not to the parent of the process). For further "
1353 "information on network namespaces, see B<namespaces>(7)."
1355 "ネットワーク名前空間が解放される時 (すなわち、その名前空間の最後のプロセスが"
1356 "終了する時)、 物理ネットワークデバイスは初期ネットワーク名前空間 (initial "
1357 "network namespace) に戻される (親プロセスのネットワーク名前空間に戻される訳で"
1361 #: build/C/man2/clone.2:357
1363 "Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWNET>."
1367 #: build/C/man2/clone.2:357
1369 msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
1370 msgstr "B<CLONE_NEWNS> (Linux 2.4.19 以降)"
1373 #: build/C/man2/clone.2:367
1376 #| "After a B<clone>() where the B<CLONE_NEWNS> flag is set, the cloned "
1377 #| "child is started in a new mount namespace, initialized with a copy of the "
1378 #| "namespace of the parent."
1380 "If B<CLONE_NEWNS> is set, the cloned child is started in a new mount "
1381 "namespace, initialized with a copy of the namespace of the parent. If "
1382 "B<CLONE_NEWNS> is not set, the child lives in the same mount namespace as "
1385 "B<CLONE_NEWNS> フラグがセットされて B<clone>() が呼ばれると、clone で作成さ"
1386 "れた子プロセスは新しいマウント名前空間で 開始される。新しい名前空間は親プロセ"
1387 "スの名前空間のコピーで初期化される。"
1390 #: build/C/man2/clone.2:370
1391 msgid "For further information on mount namespaces, see B<namespaces>(7)."
1394 #. See https://lwn.net/Articles/543273/
1396 #: build/C/man2/clone.2:383
1399 #| "Only a privileged process (one having the B<CAP_SYS_ADMIN> capability) "
1400 #| "may specify the B<CLONE_NEWNS> flag. It is not permitted to specify both "
1401 #| "B<CLONE_NEWNS> and B<CLONE_FS> in the same B<clone>() call."
1403 "Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWNS>. It "
1404 "is not permitted to specify both B<CLONE_NEWNS> and B<CLONE_FS> in the same "
1407 "特権プロセス (B<CAP_SYS_ADMIN> ケーパビリティを持つプロセス) のみが "
1408 "B<CLONE_NEWNS> フラグを指定することができる。 一つの B<clone>() 呼び出し"
1409 "で、 B<CLONE_NEWNS> と B<CLONE_FS> の両方を指定することはできない。"
1412 #: build/C/man2/clone.2:383
1414 msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
1415 msgstr "B<CLONE_NEWPID> (Linux 2.6.24 以降)"
1417 #. This explanation draws a lot of details from
1418 #. http://lwn.net/Articles/259217/
1419 #. Authors: Pavel Emelyanov <xemul@openvz.org>
1420 #. and Kir Kolyshkin <kir@openvz.org>
1421 #. The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264
1422 #. Author: Pavel Emelyanov <xemul@openvz.org>
1424 #: build/C/man2/clone.2:400
1427 #| "If B<CLONE_NEWPID> is set, then create the process in a new PID "
1428 #| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
1429 #| "process is created in the same PID namespace as the calling process. "
1430 #| "This flag is intended for the implementation of containers."
1432 "If B<CLONE_NEWPID> is set, then create the process in a new PID namespace. "
1433 "If this flag is not set, then (as with B<fork>(2)) the process is created "
1434 "in the same PID namespace as the calling process. This flag is intended for "
1435 "the implementation of containers."
1437 "B<CLONE_NEWPID> が設定された場合、新しい PID 名前空間でプロセスを作成する。 "
1438 "このフラグが設定されていない場合、 (B<fork>(2) の場合と同様) 呼び出し元のプ"
1439 "ロセスと同じ PID 名前空間で プロセスが作成される。 このフラグは、コンテナの実"
1440 "装での使用を意図して用意されたものである。"
1443 #: build/C/man2/clone.2:405
1445 "For further information on PID namespaces, see B<namespaces>(7) and "
1446 "B<pid_namespaces>(7)"
1450 #: build/C/man2/clone.2:414
1452 "Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWPID>. "
1453 "This flag can't be specified in conjunction with B<CLONE_THREAD> or "
1458 #: build/C/man2/clone.2:414
1460 #| msgid "B<CLONE_NEWUTS>"
1461 msgid "B<CLONE_NEWUSER>"
1462 msgstr "B<CLONE_NEWUTS>"
1465 #: build/C/man2/clone.2:424
1467 "(This flag first became meaningful for B<clone>() in Linux 2.6.23, the "
1468 "current B<clone()> semantics were merged in Linux 3.5, and the final pieces "
1469 "to make the user namespaces completely usable were merged in Linux 3.8.)"
1473 #: build/C/man2/clone.2:431
1476 #| "If B<CLONE_NEWNET> is set, then create the process in a new network "
1477 #| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
1478 #| "process is created in the same network namespace as the calling process. "
1479 #| "This flag is intended for the implementation of containers."
1481 "If B<CLONE_NEWUSER> is set, then create the process in a new user "
1482 "namespace. If this flag is not set, then (as with B<fork>(2)) the process "
1483 "is created in the same user namespace as the calling process."
1485 "B<CLONE_NEWNET> が設定された場合、新しいネットワーク名前空間 (network "
1486 "namaspace) でプロセスを作成する。 このフラグが設定されていない場合、 "
1487 "(B<fork>(2) の場合と同様) 呼び出し元のプロセスと同じネットワーク名前空間でプ"
1488 "ロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用意され"
1492 #: build/C/man2/clone.2:436
1494 "For further information on user namespaces, see B<namespaces>(7) and "
1495 "B<user_namespaces>(7)"
1498 #. Before Linux 2.6.29, it appears that only CAP_SYS_ADMIN was needed
1500 #: build/C/man2/clone.2:447
1502 "Before Linux 3.8, use of B<CLONE_NEWUSER> required that the caller have "
1503 "three capabilities: B<CAP_SYS_ADMIN>, B<CAP_SETUID>, and B<CAP_SETGID>. "
1504 "Starting with Linux 3.8, no privileges are needed to create a user namespace."
1507 #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
1508 #. https://lwn.net/Articles/543273/
1509 #. The fix actually went into 3.9 and into 3.8.3. However, user namespaces
1510 #. were, for practical purposes, unusable in earlier 3.8.x because of the
1511 #. various filesystems that didn't support userns.
1513 #: build/C/man2/clone.2:461
1515 "This flag can't be specified in conjunction with B<CLONE_THREAD> or "
1516 "B<CLONE_PARENT>. For security reasons, B<CLONE_NEWUSER> cannot be specified "
1517 "in conjunction with B<CLONE_FS>."
1521 #: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
1522 msgid "For further information on user namespaces, see B<user_namespaces>(7)."
1526 #: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
1528 msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
1529 msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
1532 #: build/C/man2/clone.2:476
1535 #| "If B<CLONE_NEWUTS> is set, then create the process in a new UTS "
1536 #| "namespace, whose identifiers are initialized by duplicating the "
1537 #| "identifiers from the UTS namespace of the calling process. If this flag "
1538 #| "is not set, then (as with B<fork>(2)), the process is created in the same "
1539 #| "UTS namespace as the calling process. This flag is intended for the "
1540 #| "implementation of containers."
1542 "If B<CLONE_NEWUTS> is set, then create the process in a new UTS namespace, "
1543 "whose identifiers are initialized by duplicating the identifiers from the "
1544 "UTS namespace of the calling process. If this flag is not set, then (as "
1545 "with B<fork>(2)) the process is created in the same UTS namespace as the "
1546 "calling process. This flag is intended for the implementation of containers."
1548 "B<CLONE_NEWUTS> が設定された場合、新しい UTS 名前空間でプロセスを作成する。 "
1549 "新しい UTS 名前空間の識別子の初期値は、呼び出し元のプロセスの UTS 名前空間の"
1550 "識別子を複製したものとなる。 このフラグが設定されていない場合、 (B<fork>(2) "
1551 "の場合と同様) 呼び出し元のプロセスと同じ UTS 名前空間で プロセスが作成され"
1552 "る。 このフラグは、コンテナの実装での使用を意図して用意されたものである。"
1555 #: build/C/man2/clone.2:487
1557 "A UTS namespace is the set of identifiers returned by B<uname>(2); among "
1558 "these, the domain name and the hostname can be modified by "
1559 "B<setdomainname>(2) and B<sethostname>(2), respectively. Changes made to "
1560 "the identifiers in a UTS namespace are visible to all other processes in the "
1561 "same namespace, but are not visible to processes in other UTS namespaces."
1563 "UTS 名前空間は、 B<uname>(2) が返す識別子の集合である。 識別子としてはドメイ"
1564 "ン名とホスト名があり、 それぞれ B<setdomainname>(2), B<sethostname>(2) で修"
1565 "正することができる。 ある UTS 名前空間における識別子の変更は同じ名前空間の他"
1566 "のすべての プロセスに見えるが、別の UTS 名前空間のプロセスには見えない。"
1569 #: build/C/man2/clone.2:492
1571 "Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWUTS>."
1575 #: build/C/man2/clone.2:495
1576 msgid "For further information on UTS namespaces, see B<namespaces>(7)."
1580 #: build/C/man2/clone.2:495
1582 msgid "B<CLONE_PARENT> (since Linux 2.3.12)"
1583 msgstr "B<CLONE_PARENT> (Linux 2.3.12 以降)"
1586 #: build/C/man2/clone.2:502
1588 "If B<CLONE_PARENT> is set, then the parent of the new child (as returned by "
1589 "B<getppid>(2)) will be the same as that of the calling process."
1591 "B<CLONE_PARENT> が設定された場合、新しい子供の (B<getppid>(2) で返される) 親"
1592 "プロセスは呼び出し元のプロセスの親プロセスと同じになる。"
1595 #: build/C/man2/clone.2:508
1597 "If B<CLONE_PARENT> is not set, then (as with B<fork>(2)) the child's parent "
1598 "is the calling process."
1600 "B<CLONE_PARENT> が設定されていない場合、 (B<fork>(2) と同様に) 呼び出し元の"
1604 #: build/C/man2/clone.2:516
1606 "Note that it is the parent process, as returned by B<getppid>(2), which is "
1607 "signaled when the child terminates, so that if B<CLONE_PARENT> is set, then "
1608 "the parent of the calling process, rather than the calling process itself, "
1611 "子供が終了した時にシグナルが送られるのは B<getppid>(2) が返す親プロセスであ"
1612 "る点に注意すること。このため B<CLONE_PARENT> が設定された場合、呼び出し元のプ"
1613 "ロセスではなく呼び出し元のプロセスの 親プロセスにシグナルが送られる。"
1616 #: build/C/man2/clone.2:516
1618 msgid "B<CLONE_PARENT_SETTID> (since Linux 2.5.49)"
1619 msgstr "B<CLONE_PARENT_SETTID> (Linux 2.5.49 以降)"
1622 #: build/C/man2/clone.2:524
1624 "Store child thread ID at location I<ptid> in parent and child memory. (In "
1625 "Linux 2.5.32-2.5.48 there was a flag B<CLONE_SETTID> that did this.)"
1627 "親プロセスと子プロセスのメモリ内の I<ptid> が指す領域に子プロセスのスレッド "
1628 "ID を格納する。 (Linux 2.5.32-2.5.48 では、 同じことをする B<CLONE_SETTID> と"
1632 #: build/C/man2/clone.2:524
1634 msgid "B<CLONE_PID> (obsolete)"
1635 msgstr "B<CLONE_PID> (廃止予定)"
1638 #: build/C/man2/clone.2:535
1640 "If B<CLONE_PID> is set, the child process is created with the same process "
1641 "ID as the calling process. This is good for hacking the system, but "
1642 "otherwise of not much use. Since 2.3.21 this flag can be specified only by "
1643 "the system boot process (PID 0). It disappeared in Linux 2.5.16."
1645 "B<CLONE_PID> が設定された場合、子プロセスは呼び出し元のプロセスと同じプロセ"
1646 "ス ID で作成される。これはシステムをハッキングするのには便利だが、 それ以外に"
1647 "はあまり使われない。 Linux 2.3.21 以降では、 システムのブートプロセス (PID "
1648 "0) だけがこのフラグを指定できる。 Linux 2.5.16 で削除された。"
1651 #: build/C/man2/clone.2:535
1653 msgid "B<CLONE_PTRACE> (since Linux 2.2)"
1654 msgstr "B<CLONE_PTRACE> (Linux 2.2 以降)"
1657 #: build/C/man2/clone.2:542
1659 "If B<CLONE_PTRACE> is specified, and the calling process is being traced, "
1660 "then trace the child also (see B<ptrace>(2))."
1662 "B<CLONE_PTRACE> が指定され、かつ呼び出し元のプロセスが追跡 (trace) されていた"
1663 "場合、子プロセスも 同様に追跡される。 (B<ptrace>(2) を参照のこと)"
1666 #: build/C/man2/clone.2:542
1668 msgid "B<CLONE_SETTLS> (since Linux 2.5.32)"
1669 msgstr "B<CLONE_SETTLS> (Linux 2.5.32 以降)"
1672 #: build/C/man2/clone.2:549
1674 "The I<newtls> argument is the new TLS (Thread Local Storage) descriptor. "
1675 "(See B<set_thread_area>(2).)"
1677 "I<newtls> 引き数は、新しい TLS (Thread Local Storage) ディスクリプタである。 "
1678 "(B<set_thread_area>(2) を参照のこと)"
1681 #: build/C/man2/clone.2:549
1683 msgid "B<CLONE_SIGHAND> (since Linux 2.0)"
1684 msgstr "B<CLONE_SIGHAND> (Linux 2.0 以降)"
1687 #: build/C/man2/clone.2:565
1689 "If B<CLONE_SIGHAND> is set, the calling process and the child process share "
1690 "the same table of signal handlers. If the calling process or child process "
1691 "calls B<sigaction>(2) to change the behavior associated with a signal, the "
1692 "behavior is changed in the other process as well. However, the calling "
1693 "process and child processes still have distinct signal masks and sets of "
1694 "pending signals. So, one of them may block or unblock some signals using "
1695 "B<sigprocmask>(2) without affecting the other process."
1697 "B<CLONE_SIGHAND> が設定された場合、呼び出し元のプロセスと子プロセスは同じシグ"
1698 "ナルハン ドラのテーブルを共有する。呼び出し元のプロセスまたは子プロセスのどち"
1699 "らかが B<sigaction>(2) を呼び出してシグナルに対応する動作を変更した場合、 も"
1700 "う一方のプロセスのシグナル動作も変更される。 但し、呼び出し元のプロセスと子プ"
1701 "ロセスは、 プロセス毎に、シグナルマスク (signal mask) と処理待ちシグナルの集"
1702 "合 を持っている。このため、あるプロセスは、 B<sigprocmask>(2) を使用して、も"
1703 "う一方のプロセスに影響を与えずに シグナルを禁止 (block) したり許可 (unblock) "
1707 #: build/C/man2/clone.2:576
1709 "If B<CLONE_SIGHAND> is not set, the child process inherits a copy of the "
1710 "signal handlers of the calling process at the time B<clone>() is called. "
1711 "Calls to B<sigaction>(2) performed later by one of the processes have no "
1712 "effect on the other process."
1714 "B<CLONE_SIGHAND> が設定されていない場合、子プロセスは B<clone>() が実行され"
1715 "た時点での、呼び出し元のプロセスのシグナルハンドラの コピーを継承する。これ以"
1716 "降は、一方のプロセスが B<sigaction>(2) を呼び出しても、もう一方のプロセスに"
1720 #: build/C/man2/clone.2:584
1722 "Since Linux 2.6.0-test6, I<flags> must also include B<CLONE_VM> if "
1723 "B<CLONE_SIGHAND> is specified"
1725 "Linux 2.6.0-test6 以降では、 B<CLONE_SIGHAND> を指定する場合、 B<CLONE_VM> "
1726 "も I<flags> に含めなければならない。"
1729 #: build/C/man2/clone.2:584
1731 msgid "B<CLONE_STOPPED> (since Linux 2.6.0-test2)"
1732 msgstr "B<CLONE_STOPPED> (Linux 2.6.0-test2 以降)"
1735 #: build/C/man2/clone.2:593
1737 "If B<CLONE_STOPPED> is set, then the child is initially stopped (as though "
1738 "it was sent a B<SIGSTOP> signal), and must be resumed by sending it a "
1739 "B<SIGCONT> signal."
1741 "B<CLONE_STOPPED> が設定されると、子プロセスは最初 (B<SIGSTOP> シグナルを送ら"
1742 "れたかのように) 停止した状態となる。 子プロセスを再開させるには B<SIGCONT> シ"
1745 #. glibc 2.8 removed this defn from bits/sched.h
1747 #: build/C/man2/clone.2:601
1749 "This flag was I<deprecated> from Linux 2.6.25 onward, and was I<removed> "
1750 "altogether in Linux 2.6.38."
1752 "このフラグは Linux 2.6.25 以降ではI<非推奨>であり、\n"
1753 "Linux 2.6.38 で完全にI<削除>された。"
1756 #: build/C/man2/clone.2:601
1758 msgid "B<CLONE_SYSVSEM> (since Linux 2.5.10)"
1759 msgstr "B<CLONE_SYSVSEM> (Linux 2.5.10 以降)"
1762 #: build/C/man2/clone.2:619
1765 #| "If B<CLONE_SYSVSEM> is set, then the child and the calling process share "
1766 #| "a single list of System\\ V semaphore undo values (see B<semop>(2)). If "
1767 #| "this flag is not set, then the child has a separate undo list, which is "
1768 #| "initially empty."
1770 "If B<CLONE_SYSVSEM> is set, then the child and the calling process share a "
1771 "single list of System V semaphore adjustment (I<semadj>) values (see "
1772 "B<semop>(2)). In this case, the shared list accumulates I<semadj> values "
1773 "across all processes sharing the list, and semaphore adjustments are "
1774 "performed only when the last process that is sharing the list terminates (or "
1775 "ceases sharing the list using B<unshare>(2)). If this flag is not set, then "
1776 "the child has a separate I<semadj> list that is initially empty."
1778 "B<CLONE_SYSVSEM> がセットされると、子プロセスと呼び出し元プロセスは一つの "
1779 "System\\ V セマフォのアンドゥ値リスト (B<semop>(2) 参照) を共有する。このフ"
1780 "ラグがセットされていなければ、 子プロセスは独自のアンドゥリストを持つ (リスト"
1784 #: build/C/man2/clone.2:619
1786 msgid "B<CLONE_THREAD> (since Linux 2.4.0-test8)"
1787 msgstr "B<CLONE_THREAD> (Linux 2.4.0-test8以降)"
1790 #: build/C/man2/clone.2:628
1792 "If B<CLONE_THREAD> is set, the child is placed in the same thread group as "
1793 "the calling process. To make the remainder of the discussion of "
1794 "B<CLONE_THREAD> more readable, the term \"thread\" is used to refer to the "
1795 "processes within a thread group."
1797 "B<CLONE_THREAD> が設定された場合、子プロセスは呼び出し元のプロセスと同じス"
1798 "レッドグループに 置かれる。 B<CLONE_THREAD> についての以降の議論を読みやすく"
1799 "するため、 「スレッド」という用語はスレッドグループの中のプロセスを 参照する"
1803 #: build/C/man2/clone.2:636
1805 "Thread groups were a feature added in Linux 2.4 to support the POSIX threads "
1806 "notion of a set of threads that share a single PID. Internally, this shared "
1807 "PID is the so-called thread group identifier (TGID) for the thread group. "
1808 "Since Linux 2.4, calls to B<getpid>(2) return the TGID of the caller."
1810 "スレッドグループは、 スレッド集合で一つの PID を共有するという POSIX スレッド"
1811 "の概念をサポートするために Linux 2.4 に加えられた機能であった。 内部的には、"
1812 "この共有 PID はいわゆるそのスレッドグループの スレッドグループ識別子 (TGID) "
1813 "である。 Linux 2.4 以降では、 B<getpid>(2) の呼び出しではそのプロセスのス"
1817 #: build/C/man2/clone.2:645
1819 "The threads within a group can be distinguished by their (system-wide) "
1820 "unique thread IDs (TID). A new thread's TID is available as the function "
1821 "result returned to the caller of B<clone>(), and a thread can obtain its own "
1822 "TID using B<gettid>(2)."
1824 "あるグループに属するスレッドは (システム全体で) 一意なスレッド ID (TID) で区"
1825 "別できる。新しいスレッドの TID は B<clone>() の呼び出し元へ関数の結果として"
1826 "返され、 スレッドは自分自身の TID を B<gettid>(2) で取得できる。"
1829 #: build/C/man2/clone.2:655
1831 "When a call is made to B<clone>() without specifying B<CLONE_THREAD>, then "
1832 "the resulting thread is placed in a new thread group whose TGID is the same "
1833 "as the thread's TID. This thread is the I<leader> of the new thread group."
1835 "B<CLONE_THREAD> を指定せずに B<clone>() の呼び出しが行われると、 生成された"
1836 "スレッドはそのスレッドの TID と同じ値の TGID を持つ 新しいスレッドグループに"
1837 "置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。"
1840 #: build/C/man2/clone.2:677
1842 "A new thread created with B<CLONE_THREAD> has the same parent process as the "
1843 "caller of B<clone>() (i.e., like B<CLONE_PARENT>), so that calls to "
1844 "B<getppid>(2) return the same value for all of the threads in a thread "
1845 "group. When a B<CLONE_THREAD> thread terminates, the thread that created it "
1846 "using B<clone>() is not sent a B<SIGCHLD> (or other termination) signal; "
1847 "nor can the status of such a thread be obtained using B<wait>(2). (The "
1848 "thread is said to be I<detached>.)"
1850 "B<CLONE_THREAD> を指定して作成された新しいスレッドは、 (B<CLONE_PARENT> の場"
1851 "合と同様に) B<clone>() を呼び出し元と同じ親プロセスを持つ。 そのため、 "
1852 "B<getppid>(2) を呼ぶと、一つのスレッドグループに属すスレッドは全て同じ値を返"
1853 "す。 B<CLONE_THREAD> で作られたスレッドが終了した際に、 そのスレッドを "
1854 "B<clone>() を使って生成したスレッドには B<SIGCHLD> (もしくは他の終了シグナ"
1855 "ル) は送信されない。 また、 B<wait>(2) を使って終了したスレッドの状態を取得"
1856 "することもできない (そのようなスレッドは I<detached> (分離された) といわれ"
1860 #: build/C/man2/clone.2:682
1862 "After all of the threads in a thread group terminate the parent process of "
1863 "the thread group is sent a B<SIGCHLD> (or other termination) signal."
1865 "スレッドグループに属す全てのスレッドが終了した後、 そのスレッドグループの親プ"
1866 "ロセスに B<SIGCHLD> (もしくは他の終了シグナル) が送られる。"
1869 #: build/C/man2/clone.2:687
1871 "If any of the threads in a thread group performs an B<execve>(2), then all "
1872 "threads other than the thread group leader are terminated, and the new "
1873 "program is executed in the thread group leader."
1875 "スレッドグループに属すいずれかのスレッドが B<execve>(2) を実行すると、スレッ"
1876 "ドグループリーダー以外の全てのスレッドは 終了され、新しいプロセスがそのスレッ"
1877 "ドグループリーダーの下で 実行される。"
1880 #: build/C/man2/clone.2:693
1882 "If one of the threads in a thread group creates a child using B<fork>(2), "
1883 "then any thread in the group can B<wait>(2) for that child."
1885 "スレッドグループに属すスレッドの一つが B<fork>(2) を使って子プロセスを作成し"
1886 "た場合、 スレッドグループのどのスレッドであっても その子供を B<wait>(2) でき"
1890 #: build/C/man2/clone.2:706
1892 "Since Linux 2.5.35, I<flags> must also include B<CLONE_SIGHAND> if "
1893 "B<CLONE_THREAD> is specified (and note that, since Linux 2.6.0-test6, "
1894 "B<CLONE_SIGHAND> also requires B<CLONE_VM> to be included)."
1896 "Linux 2.5.35 以降では、 B<CLONE_THREAD> を指定する場合、 I<flags> に "
1897 "B<CLONE_SIGHAND> も含まれていなければならない (Linux 2.6.0-test6 以降では、 "
1898 "B<CLONE_SIGHAND> を指定する場合 B<CLONE_VM> も指定する必要がある点に注意する"
1902 #: build/C/man2/clone.2:711
1904 "Signals may be sent to a thread group as a whole (i.e., a TGID) using "
1905 "B<kill>(2), or to a specific thread (i.e., TID) using B<tgkill>(2)."
1907 "B<kill>(2) を使ってスレッドグループ全体 (つまり TGID) にシグナルを送ることも"
1908 "できれば、 B<tgkill>(2) を使って特定のスレッド (つまり TID) にシグナルを送る"
1912 #: build/C/man2/clone.2:716
1914 "Signal dispositions and actions are process-wide: if an unhandled signal is "
1915 "delivered to a thread, then it will affect (terminate, stop, continue, be "
1916 "ignored in) all members of the thread group."
1918 "シグナルの配送と処理はプロセス全体に影響する: ハンドラを設定していないシグナ"
1919 "ルがあるスレッドに配送されると、 そのシグナルはスレッドグループの全メンバーに"
1920 "影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。"
1923 #: build/C/man2/clone.2:729
1925 "Each thread has its own signal mask, as set by B<sigprocmask>(2), but "
1926 "signals can be pending either: for the whole process (i.e., deliverable to "
1927 "any member of the thread group), when sent with B<kill>(2); or for an "
1928 "individual thread, when sent with B<tgkill>(2). A call to B<sigpending>(2) "
1929 "returns a signal set that is the union of the signals pending for the whole "
1930 "process and the signals that are pending for the calling thread."
1932 "各々のスレッドは独自のシグナルマスクを持っており、 B<sigprocmask>(2) で設定"
1933 "できる。 だが、処理待ちのシグナルには、 B<kill>(2) で送信されるプロセス全体"
1934 "に対するもの (つまり、スレッドグループの どのメンバーにも配送できるもの) "
1935 "と、 B<tgkill>(2) で送信される個々のスレッドに対するものがありえる。 "
1936 "B<sigpending>(2) を呼び出すと、プロセス全体に対する処理待ちシグナルと呼び出"
1937 "し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。"
1940 #: build/C/man2/clone.2:741
1942 "If B<kill>(2) is used to send a signal to a thread group, and the thread "
1943 "group has installed a handler for the signal, then the handler will be "
1944 "invoked in exactly one, arbitrarily selected member of the thread group that "
1945 "has not blocked the signal. If multiple threads in a group are waiting to "
1946 "accept the same signal using B<sigwaitinfo>(2), the kernel will arbitrarily "
1947 "select one of these threads to receive a signal sent using B<kill>(2)."
1949 "B<kill>(2) を使ってスレッドグループにシグナルが送られた場合で、 そのスレッド"
1950 "グループがそのシグナルに対するシグナルハンドラが 登録されていたときには、シグ"
1951 "ナルハンドラはスレッドグループの メンバーのうち、ただ一つのスレッドでだけ起動"
1952 "される。ハンドラが 起動されるスレッドは、そのシグナルを禁止 (block) していな"
1953 "い メンバーの中から一つだけが勝手に (arbitrarily) 選ばれる。 スレッドグループ"
1954 "に属す複数のスレッドが B<sigwaitinfo>(2) を使って同じシグナルを待っている場"
1955 "合、 これらのスレッドの中から一つをカーネルが勝手に選択し、 そのスレッドが "
1956 "B<kill (2)> を使って送信されたシグナルを受信する。"
1959 #: build/C/man2/clone.2:741
1961 msgid "B<CLONE_UNTRACED> (since Linux 2.5.46)"
1962 msgstr "B<CLONE_UNTRACED> (Linux 2.5.46 以降)"
1965 #: build/C/man2/clone.2:748
1967 "If B<CLONE_UNTRACED> is specified, then a tracing process cannot force "
1968 "B<CLONE_PTRACE> on this child process."
1970 "B<CLONE_UNTRACED> が指定されると、 trace を行っているプロセスは この子プロセ"
1971 "スに B<CLONE_PTRACE> を適用することができない。"
1974 #: build/C/man2/clone.2:748
1976 msgid "B<CLONE_VFORK> (since Linux 2.2)"
1977 msgstr "B<CLONE_VFORK> (Linux 2.2 以降)"
1980 #: build/C/man2/clone.2:760
1982 "If B<CLONE_VFORK> is set, the execution of the calling process is suspended "
1983 "until the child releases its virtual memory resources via a call to "
1984 "B<execve>(2) or B<_exit>(2) (as with B<vfork>(2))."
1986 "B<CLONE_VFORK> が設定された場合、 (B<vfork>(2) と同様に) 子プロセスが "
1987 "B<execve>(2) または B<_exit>(2) によって仮想メモリを解放するまで、呼び出し"
1991 #: build/C/man2/clone.2:766
1993 "If B<CLONE_VFORK> is not set, then both the calling process and the child "
1994 "are schedulable after the call, and an application should not rely on "
1995 "execution occurring in any particular order."
1997 "B<CLONE_VFORK> が設定されていない場合、 B<clone>() 呼び出し後は、呼び出し元"
1998 "のプロセスと子プロセスの 両方がスケジュール対象となり、アプリケーションはこれ"
1999 "らのプロセスの 実行順序に依存しないようにすべきである。"
2002 #: build/C/man2/clone.2:766
2004 msgid "B<CLONE_VM> (since Linux 2.0)"
2005 msgstr "B<CLONE_VM> (Linux 2.0 以降)"
2008 #: build/C/man2/clone.2:779
2010 "If B<CLONE_VM> is set, the calling process and the child process run in the "
2011 "same memory space. In particular, memory writes performed by the calling "
2012 "process or by the child process are also visible in the other process. "
2013 "Moreover, any memory mapping or unmapping performed with B<mmap>(2) or "
2014 "B<munmap>(2) by the child or calling process also affects the other process."
2016 "B<CLONE_VM> が設定された場合、呼び出し元のプロセスと子プロセスは同じメモリ空"
2017 "間で 実行される。特に、呼び出し元のプロセスや子プロセスの一方がメモリに 書き"
2018 "込んだ内容はもう一方のプロセスからも見ることができる。さらに、 子プロセスや呼"
2019 "び出し元のプロセスの一方が B<mmap>(2) や B<munmap>(2) を使ってメモリをマッ"
2020 "プしたりアンマップした場合、 もう一方のプロセスにも影響が及ぶ。"
2023 #: build/C/man2/clone.2:788
2025 "If B<CLONE_VM> is not set, the child process runs in a separate copy of the "
2026 "memory space of the calling process at the time of B<clone>(). Memory "
2027 "writes or file mappings/unmappings performed by one of the processes do not "
2028 "affect the other, as with B<fork>(2)."
2030 "B<CLONE_VM> が設定されていない場合、子プロセスは B<clone>() が実行された時点"
2031 "での、親プロセスのメモリ空間をコピーした 別のメモリ空間で実行される。 一方の"
2032 "プロセスが行ったメモリへの書き込みや ファイルのマップ/アンマップは、 "
2033 "B<fork>(2) の場合と同様、もう一方のプロセスには影響しない。"
2036 #: build/C/man2/clone.2:788 build/C/man2/sched_setaffinity.2:200
2038 msgid "C library/kernel ABI differences"
2042 #: build/C/man2/clone.2:804
2044 "The raw B<clone>() system call corresponds more closely to B<fork>(2) in "
2045 "that execution in the child continues from the point of the call. As such, "
2046 "the I<fn> and I<arg> arguments of the B<clone>() wrapper function are "
2047 "omitted. Furthermore, the argument order changes. The raw system call "
2048 "interface on x86 and many other architectures is roughly:"
2050 "素の B<clone> システムコールは、より B<fork>(2) に近いかたちになっており、 子"
2051 "プロセスの実行が呼び出しが行われた場所から続けられる。 そのため、 B<clone>() "
2052 "ラッパー関数の引き数 I<fn> と I<arg> は省略される。 また、 引き数の順序も違っ"
2053 "ている。 x86 と他の多くのアーキテクチャにおける、 素のシステムコールのイン"
2054 "ターフェースは、 おおまかには次のようになっている。"
2057 #: build/C/man2/clone.2:810
2060 "B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
2061 "B< void *>I<ptid>B<, void *>I<ctid>B<,>\n"
2062 "B< struct pt_regs *>I<regs>B<);>\n"
2064 "B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
2065 "B< void *>I<ptid>B<, void *>I<ctid>B<,>\n"
2066 "B< struct pt_regs *>I<regs>B<);>\n"
2069 #: build/C/man2/clone.2:821
2071 "Another difference for the raw system call is that the I<child_stack> "
2072 "argument may be zero, in which case copy-on-write semantics ensure that the "
2073 "child gets separate copies of stack pages when either process modifies the "
2074 "stack. In this case, for correct operation, the B<CLONE_VM> option should "
2077 "生のシステムコールのもう一つの違いは、 I<child_stack> 引き数がゼロでも良いこ"
2078 "とである。この場合には、どちらかのプロセスが スタックを変更した時に、書き込み"
2079 "時コピー (copy-on-write) 方式により 子プロセスがスタックページの独立したコ"
2080 "ピーを得られることが保証される。 この場合、正常に動作させるためには、 "
2081 "B<CLONE_VM> オプションを指定してはならない。"
2084 #: build/C/man2/clone.2:829
2086 "For some architectures, the order of the arguments for the system call "
2087 "differs from that shown above. On the score, microblaze, ARM, ARM 64, PA-"
2088 "RISC, arc, Power PC, xtensa, and MIPS architectures, the order of the fourth "
2089 "and fifth arguments is reversed. On the cris and s390 architectures, the "
2090 "order of the first and second arguments is reversed."
2092 "いくつかのアーキテクチャでは、システムコールの引き数の順序は上記とは異なって"
2093 "いる。 microblaze, ARM, ARM 64, PA-RISC, arc, Power PC, xtensa, MIPS アーキテ"
2094 "クチャでは、 4 番目と 5 番目の引き数の順番が逆である。 cris と s390 アーキテ"
2095 "クチャでは、最初と 2 番目の引き数の順番が逆である。"
2098 #: build/C/man2/clone.2:829
2100 msgid "blackfin, m68k, and sparc"
2101 msgstr "blackfin, m68k, sparc"
2104 #: build/C/man2/clone.2:833
2106 "The argument-passing conventions on blackfin, m68k, and sparc are different "
2107 "from the descriptions above. For details, see the kernel (and glibc) source."
2109 "blackfin, m68k, sparc では引き数渡しの規約が上記の説明とは異なる。 詳細は、"
2110 "カーネル (と glibc) のソースを参照のこと。"
2113 #: build/C/man2/clone.2:833
2119 #: build/C/man2/clone.2:835
2120 msgid "On ia64, a different interface is used:"
2121 msgstr "ia64 では、別のインターフェースが使用される:"
2124 #: build/C/man2/clone.2:842
2127 "B<int __clone2(int (*>I<fn>B<)(void *), >\n"
2128 "B< void *>I<child_stack_base>B<, size_t >I<stack_size>B<,>\n"
2129 "B< int >I<flags>B<, void *>I<arg>B<, ... >\n"
2130 "B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
2132 "B<int __clone2(int (*>I<fn>B<)(void *), >\n"
2133 "B< void *>I<child_stack_base>B<, size_t >I<stack_size>B<,>\n"
2134 "B< int >I<flags>B<, void *>I<arg>B<, ... >\n"
2135 "B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
2138 #: build/C/man2/clone.2:854
2140 "The prototype shown above is for the glibc wrapper function; the raw system "
2141 "call interface has no I<fn> or I<arg> argument, and changes the order of the "
2142 "arguments so that I<flags> is the first argument, and I<tls> is the last "
2145 "上記のプロトタイプは glibc ラッパー関数用のものである。 素のシステムコールの"
2146 "インターフェースには引き数 I<fn> と I<arg> がない。 また、引き数の順序が変わ"
2147 "り、 I<flags> が最初の引き数で、 I<tls> が最後の引き数である。"
2150 #: build/C/man2/clone.2:865
2152 "B<__clone2>() operates in the same way as B<clone>(), except that "
2153 "I<child_stack_base> points to the lowest address of the child's stack area, "
2154 "and I<stack_size> specifies the size of the stack pointed to by "
2155 "I<child_stack_base>."
2157 "B<__clone2>() は B<clone>() と同じように動作するが、以下の点が異なる: "
2158 "I<child_stack_base> は子プロセスのスタックエリアの最小のアドレスを指し、 "
2159 "I<stack_size> は I<child_stack_base> が指し示すスタックエリアの大きさを示す。"
2162 #: build/C/man2/clone.2:865
2164 msgid "Linux 2.4 and earlier"
2165 msgstr "Linux 2.4 以前"
2168 #: build/C/man2/clone.2:873
2170 "In Linux 2.4 and earlier, B<clone>() does not take arguments I<ptid>, "
2171 "I<tls>, and I<ctid>."
2173 "Linux 2.4 以前では、 B<clone>() は引き数 I<ptid>, I<tls>, I<ctid> を取らな"
2176 #. gettid(2) returns current->pid;
2177 #. getpid(2) returns current->tgid;
2179 #: build/C/man2/clone.2:882
2181 "On success, the thread ID of the child process is returned in the caller's "
2182 "thread of execution. On failure, -1 is returned in the caller's context, no "
2183 "child process will be created, and I<errno> will be set appropriately."
2185 "成功した場合、呼び出し元の実行スレッドには子プロセスのスレッドID が返され"
2186 "る。 失敗した場合、 呼び出し元のコンテキストには -1 が返され、子プロセスは 作"
2187 "成されず、 I<errno> が適切に設定される。"
2190 #: build/C/man2/clone.2:882 build/C/man2/kcmp.2:170
2191 #: build/C/man2/sched_get_priority_max.2:107 build/C/man3/sched_getcpu.3:65
2192 #: build/C/man2/sched_rr_get_interval.2:80
2193 #: build/C/man2/sched_setaffinity.2:116 build/C/man2/sched_setattr.2:271
2194 #: build/C/man2/sched_setparam.2:96 build/C/man2/sched_setscheduler.2:145
2195 #: build/C/man2/sched_yield.2:48 build/C/man2/setns.2:145
2196 #: build/C/man2/unshare.2:282
2202 #: build/C/man2/clone.2:883
2208 #: build/C/man2/clone.2:887
2209 msgid "Too many processes are already running; see B<fork>(2)."
2210 msgstr "すでに実行中のプロセスが多すぎる。 B<fork>(2) 参照。"
2213 #: build/C/man2/clone.2:887 build/C/man2/clone.2:894 build/C/man2/clone.2:909
2214 #: build/C/man2/clone.2:926 build/C/man2/clone.2:934 build/C/man2/clone.2:946
2215 #: build/C/man2/clone.2:952 build/C/man2/clone.2:962 build/C/man2/clone.2:970
2216 #: build/C/man2/clone.2:978 build/C/man2/kcmp.2:181
2217 #: build/C/man2/sched_get_priority_max.2:108
2218 #: build/C/man2/sched_rr_get_interval.2:84
2219 #: build/C/man2/sched_setaffinity.2:120 build/C/man2/sched_setaffinity.2:128
2220 #: build/C/man2/sched_setattr.2:276 build/C/man2/sched_setattr.2:300
2221 #: build/C/man2/sched_setattr.2:323 build/C/man2/sched_setparam.2:97
2222 #: build/C/man2/sched_setparam.2:104 build/C/man2/sched_setscheduler.2:146
2223 #: build/C/man2/sched_setscheduler.2:153 build/C/man2/sched_setscheduler.2:158
2224 #: build/C/man2/setns.2:150 build/C/man2/setns.2:155 build/C/man2/setns.2:159
2225 #: build/C/man2/setns.2:163 build/C/man2/setns.2:170
2226 #: build/C/man2/unshare.2:283 build/C/man2/unshare.2:287
2232 #: build/C/man2/clone.2:894
2234 "B<CLONE_SIGHAND> was specified, but B<CLONE_VM> was not. (Since Linux 2.6.0-"
2237 "B<CLONE_SIGHAND> が指定されていたが、 B<CLONE_VM> が指定されていなかった。 "
2238 "(Linux 2.6.0-test6 以降)"
2243 #. .B CLONE_DETACHED
2247 #. (Since Linux 2.6.0-test6.)
2249 #: build/C/man2/clone.2:909
2251 "B<CLONE_THREAD> was specified, but B<CLONE_SIGHAND> was not. (Since Linux "
2254 "B<CLONE_THREAD> が指定されていたが、 B<CLONE_SIGHAND> が指定されていなかっ"
2255 "た。 (Linux 2.5.35 以降)"
2257 #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
2259 #: build/C/man2/clone.2:918
2260 msgid "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in I<flags>."
2261 msgstr "B<CLONE_FS> と B<CLONE_NEWNS> の両方が I<flags> に指定された。"
2264 #: build/C/man2/clone.2:918
2266 #| msgid "B<CLONE_VM> (since Linux 2.0)"
2267 msgid "B<EINVAL> (since Linux 3.9)"
2268 msgstr "B<CLONE_VM> (Linux 2.0 以降)"
2271 #: build/C/man2/clone.2:926
2273 #| msgid "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in I<flags>."
2274 msgid "Both B<CLONE_NEWUSER> and B<CLONE_FS> were specified in I<flags>."
2275 msgstr "B<CLONE_FS> と B<CLONE_NEWNS> の両方が I<flags> に指定された。"
2278 #: build/C/man2/clone.2:934
2279 msgid "Both B<CLONE_NEWIPC> and B<CLONE_SYSVSEM> were specified in I<flags>."
2280 msgstr "B<CLONE_NEWIPC> と B<CLONE_SYSVSEM> の両方が I<flags> に指定された。"
2283 #: build/C/man2/clone.2:946
2285 #| msgid "Both B<CLONE_NEWPID> and B<CLONE_THREAD> were specified in I<flags>."
2287 "One (or both) of B<CLONE_NEWPID> or B<CLONE_NEWUSER> and one (or both) of "
2288 "B<CLONE_THREAD> or B<CLONE_PARENT> were specified in I<flags>."
2289 msgstr "B<CLONE_NEWPID> と B<CLONE_THREAD> の両方が I<flags> に指定された。"
2292 #: build/C/man2/clone.2:952
2294 "Returned by B<clone>() when a zero value is specified for I<child_stack>."
2295 msgstr "I<child_stack> にゼロを指定した場合に B<clone>() が返す。"
2298 #: build/C/man2/clone.2:962
2300 "B<CLONE_NEWIPC> was specified in I<flags>, but the kernel was not configured "
2301 "with the B<CONFIG_SYSVIPC> and B<CONFIG_IPC_NS> options."
2303 "I<flags> に B<CLONE_NEWIPC> が指定されたが、カーネルでオプション "
2304 "B<CONFIG_SYSVIPC> と B<CONFIG_IPC_NS> が有効になっていなかった。"
2307 #: build/C/man2/clone.2:970
2309 "B<CLONE_NEWNET> was specified in I<flags>, but the kernel was not configured "
2310 "with the B<CONFIG_NET_NS> option."
2312 "I<flags> に B<CLONE_NEWNET> が指定されたが、カーネルでオプション "
2313 "B<CONFIG_NET_NS> が有効になっていなかった。"
2316 #: build/C/man2/clone.2:978
2318 "B<CLONE_NEWPID> was specified in I<flags>, but the kernel was not configured "
2319 "with the B<CONFIG_PID_NS> option."
2321 "I<flags> に B<CLONE_NEWPID> が指定されたが、カーネルでオプション "
2322 "B<CONFIG_PID_NS> が有効になっていなかった。"
2325 #: build/C/man2/clone.2:986
2327 "B<CLONE_NEWUTS> was specified in I<flags>, but the kernel was not configured "
2328 "with the B<CONFIG_UTS> option."
2330 "I<flags> に B<CLONE_NEWUTS> が指定されたが、カーネルでオプション "
2331 "B<CONFIG_UTS> が有効になっていなかった。"
2334 #: build/C/man2/clone.2:986 build/C/man2/setns.2:174
2335 #: build/C/man2/unshare.2:296
2341 #: build/C/man2/clone.2:991
2343 "Cannot allocate sufficient memory to allocate a task structure for the "
2344 "child, or to copy those parts of the caller's context that need to be copied."
2346 "子プロセスのために確保すべきタスク構造体や、呼び出し元のコンテキストの 一部を"
2347 "コピーするのに必要なメモリを十分に割り当てることができない。"
2350 #: build/C/man2/clone.2:991 build/C/man2/clone.2:1000
2351 #: build/C/man2/clone.2:1004 build/C/man2/kcmp.2:185
2352 #: build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setattr.2:339
2353 #: build/C/man2/sched_setattr.2:342 build/C/man2/sched_setparam.2:109
2354 #: build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:177
2355 #: build/C/man2/unshare.2:300 build/C/man2/unshare.2:303
2361 #: build/C/man2/clone.2:1000
2363 "B<CLONE_NEWIPC>, B<CLONE_NEWNET>, B<CLONE_NEWNS>, B<CLONE_NEWPID>, or "
2364 "B<CLONE_NEWUTS> was specified by an unprivileged process (process without "
2365 "B<CAP_SYS_ADMIN>)."
2367 "非特権プロセス (B<CAP_SYS_ADMIN> を持たないプロセス) が B<CLONE_NEWIPC>, "
2368 "B<CLONE_NEWNET>, B<CLONE_NEWNS>, B<CLONE_NEWPID>, B<CLONE_NEWUTS> を指定し"
2372 #: build/C/man2/clone.2:1004
2373 msgid "B<CLONE_PID> was specified by a process other than process 0."
2374 msgstr "PID が 0 以外のプロセスによって B<CLONE_PID> が指定された。"
2377 #: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
2379 "B<CLONE_NEWUSER> was specified in I<flags>, but either the effective user ID "
2380 "or the effective group ID of the caller does not have a mapping in the "
2381 "parent namespace (see B<user_namespaces>(7))."
2385 #: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
2387 #| msgid "B<CLONE_VM> (since Linux 2.0)"
2388 msgid "B<EPERM> (since Linux 3.9)"
2389 msgstr "B<CLONE_VM> (Linux 2.0 以降)"
2391 #. commit 3151527ee007b73a0ebd296010f1c0454a919c7d
2392 #. FIXME What is the rationale for this restriction?
2394 #: build/C/man2/clone.2:1021 build/C/man2/unshare.2:320
2396 "B<CLONE_NEWUSER was specified in> I<flags> and the caller is in a chroot "
2397 "environment (i.e., the caller's root directory does not match the root "
2398 "directory of the mount namespace in which it resides)."
2402 #: build/C/man2/clone.2:1021 build/C/man2/unshare.2:320
2404 #| msgid "B<CLONE_FS> (since Linux 2.0)"
2405 msgid "B<EUSERS> (since Linux 3.11)"
2406 msgstr "B<CLONE_FS> (Linux 2.0 以降)"
2409 #: build/C/man2/clone.2:1030 build/C/man2/unshare.2:329
2411 "B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
2412 "limit on the number of nested user namespaces to be exceeded. See "
2413 "B<user_namespaces>(7)."
2417 #: build/C/man2/clone.2:1037
2419 "There is no entry for B<clone>() in libc5. glibc2 provides B<clone>() as "
2420 "described in this manual page."
2422 "libc5 には B<clone>() はない。glibc2 では B<clone>() が提供されており、この"
2423 "マニュアルページに記載の通りである。"
2426 #: build/C/man2/clone.2:1041
2428 "B<clone>() is Linux-specific and should not be used in programs intended to "
2431 "B<clone>() は Linux 特有であり、移植を考慮したプログラムでは使用すべき ではな"
2435 #: build/C/man2/clone.2:1051
2437 "In the kernel 2.4.x series, B<CLONE_THREAD> generally does not make the "
2438 "parent of the new thread the same as the parent of the calling process. "
2439 "However, for kernel versions 2.4.7 to 2.4.18 the B<CLONE_THREAD> flag "
2440 "implied the B<CLONE_PARENT> flag (as in kernel 2.6)."
2442 "カーネル 2.4.x 系列では、一般的には B<CLONE_THREAD> フラグを指定しても新しい"
2443 "スレッドの親を 呼び出し元プロセスの親と同じにはしない。 しかし、バージョン "
2444 "2.4.7〜2.4.18 のカーネルでは、 (カーネル 2.6 と同じように) CLONE_THREAD フラ"
2445 "グを指定すると、 暗黙のうちに CLONE_PARENT フラグを指定したことになる。"
2448 #: build/C/man2/clone.2:1061
2450 "For a while there was B<CLONE_DETACHED> (introduced in 2.5.32): parent wants "
2451 "no child-exit signal. In 2.6.2 the need to give this together with "
2452 "B<CLONE_THREAD> disappeared. This flag is still defined, but has no effect."
2454 "B<CLONE_DETACHED> というフラグが、2.5.32 で導入されて以来しばらくの間存在し"
2455 "た。 このフラグは親プロセスが子プロセス終了のシグナルを必要としないことを 表"
2456 "すものである。 2.6.2 で、 CLONE_DETATCHED を CLONE_THREAD と一緒に指定する必"
2457 "要はなくなった。 このフラグはまだ定義されているが、何の効果もない。"
2460 #: build/C/man2/clone.2:1066
2462 "On i386, B<clone>() should not be called through vsyscall, but directly "
2463 "through I<int $0x80>."
2465 "i386 上では、 B<clone>() は vsyscall 経由ではなく、直接 I<int $0x80> 経由で"
2469 #: build/C/man2/clone.2:1097
2471 "Versions of the GNU C library that include the NPTL threading library "
2472 "contain a wrapper function for B<getpid>(2) that performs caching of PIDs. "
2473 "This caching relies on support in the glibc wrapper for B<clone>(), but as "
2474 "currently implemented, the cache may not be up to date in some "
2475 "circumstances. In particular, if a signal is delivered to the child "
2476 "immediately after the B<clone>() call, then a call to B<getpid>(2) in a "
2477 "handler for the signal may return the PID of the calling process (\"the "
2478 "parent\"), if the clone wrapper has not yet had a chance to update the PID "
2479 "cache in the child. (This discussion ignores the case where the child was "
2480 "created using B<CLONE_THREAD>, when B<getpid>(2) I<should> return the same "
2481 "value in the child and in the process that called B<clone>(), since the "
2482 "caller and the child are in the same thread group. The stale-cache problem "
2483 "also does not occur if the I<flags> argument includes B<CLONE_VM>.) To get "
2484 "the truth, it may be necessary to use code such as the following:"
2486 "NPTL スレッドライブラリを含んでいる GNU C ライブラリのいくつかのバージョン に"
2487 "は、 B<getpid>(2) のラッパー関数が含まれており、このラッパー関数は PID を"
2488 "キャッシュする。 このキャッシュ処理が正しく動作するためには glibc の "
2489 "B<clone>() のラッパー関数での助けが必要だが、現状の実装では、 ある状況下にお"
2490 "いてキャッシュが最新とならない可能性がある。 特に、 B<clone>() の呼び出し直"
2491 "後にシグナルが子プロセスに配送された場合に、 そのシグナルに対するハンドラ内"
2492 "で B<getpid>(2) を呼び出すと、それまでに clone のラッパー関数が子プロセスの "
2493 "PID キャッシュを 更新する機会が得られていなければ、呼び出し元プロセス (\"親プ"
2494 "ロセス\") の PID が 返される可能性がある。 (この議論では、子プロセスが "
2495 "B<CLONE_THREAD> を使って作成された場合のことは無視している。 子プロセスが "
2496 "B<CLONE_THREAD> を作って作成された場合には、 呼び出し元と子プロセスは同じス"
2497 "レッドグループに属すので、 B<getpid>(2) は子プロセスと B<clone>() を呼び出"
2498 "したプロセスで同じ値を返すのが「正しい」。 キャッシュが最新とならない問題 "
2499 "(stale-cache problem) は、 I<flags> に B<CLONE_VM> が含まれている場合にも発生"
2500 "しない。) 本当の値を得るためには、次のようなコードを使う必要があるかもしれな"
2504 #: build/C/man2/clone.2:1100
2506 msgid " #include E<lt>syscall.hE<gt>\n"
2507 msgstr " #include E<lt>syscall.hE<gt>\n"
2510 #: build/C/man2/clone.2:1102
2512 msgid " pid_t mypid;\n"
2513 msgstr " pid_t mypid;\n"
2516 #: build/C/man2/clone.2:1104
2518 msgid " mypid = syscall(SYS_getpid);\n"
2519 msgstr " mypid = syscall(SYS_getpid);\n"
2522 #: build/C/man2/clone.2:1118
2524 "The following program demonstrates the use of B<clone>() to create a child "
2525 "process that executes in a separate UTS namespace. The child changes the "
2526 "hostname in its UTS namespace. Both parent and child then display the "
2527 "system hostname, making it possible to see that the hostname differs in the "
2528 "UTS namespaces of the parent and child. For an example of the use of this "
2529 "program, see B<setns>(2)."
2531 "以下のプログラムは、 別の UTS 名前空間で動作する子プロセスを B<clone>() を"
2532 "使って作成する例である。 子プロセスは、自分の UTS 名前空間においてホスト名を"
2533 "変更する。 それから、親プロセスと子プロセスの両方でシステムのホスト名を表示"
2534 "し、 親プロセスと子プロセスの UTS 名前空間でホスト名が異なることを確認する。 "
2535 "このプログラムの使用方法については B<setns>(2) を参照。"
2538 #: build/C/man2/clone.2:1118 build/C/man2/setns.2:250
2539 #: build/C/man2/unshare.2:395
2541 msgid "Program source"
2545 #: build/C/man2/clone.2:1128
2548 "#define _GNU_SOURCE\n"
2549 "#include E<lt>sys/wait.hE<gt>\n"
2550 "#include E<lt>sys/utsname.hE<gt>\n"
2551 "#include E<lt>sched.hE<gt>\n"
2552 "#include E<lt>string.hE<gt>\n"
2553 "#include E<lt>stdio.hE<gt>\n"
2554 "#include E<lt>stdlib.hE<gt>\n"
2555 "#include E<lt>unistd.hE<gt>\n"
2557 "#define _GNU_SOURCE\n"
2558 "#include E<lt>sys/wait.hE<gt>\n"
2559 "#include E<lt>sys/utsname.hE<gt>\n"
2560 "#include E<lt>sched.hE<gt>\n"
2561 "#include E<lt>string.hE<gt>\n"
2562 "#include E<lt>stdio.hE<gt>\n"
2563 "#include E<lt>stdlib.hE<gt>\n"
2564 "#include E<lt>unistd.hE<gt>\n"
2567 #: build/C/man2/clone.2:1131 build/C/man2/setns.2:261
2568 #: build/C/man2/unshare.2:414
2571 "#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n"
2574 "#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n"
2578 #: build/C/man2/clone.2:1136
2581 "static int /* Start function for cloned child */\n"
2582 "childFunc(void *arg)\n"
2584 " struct utsname uts;\n"
2586 "static int /* clone された子プロセスの開始関数 */\n"
2587 "childFunc(void *arg)\n"
2589 " struct utsname uts;\n"
2592 #: build/C/man2/clone.2:1138
2594 msgid " /* Change hostname in UTS namespace of child */\n"
2595 msgstr " /* 子プロセスの UTS 名前空間でホスト名を変更する */\n"
2598 #: build/C/man2/clone.2:1141
2601 " if (sethostname(arg, strlen(arg)) == -1)\n"
2602 " errExit(\"sethostname\");\n"
2604 " if (sethostname(arg, strlen(arg)) == -1)\n"
2605 " errExit(\"sethostname\");\n"
2608 #: build/C/man2/clone.2:1143
2610 msgid " /* Retrieve and display hostname */\n"
2611 msgstr " /* ホスト名を取得し表示する */\n"
2614 #: build/C/man2/clone.2:1147
2617 " if (uname(&uts) == -1)\n"
2618 " errExit(\"uname\");\n"
2619 " printf(\"uts.nodename in child: %s\\en\", uts.nodename);\n"
2621 " if (uname(&uts) == -1)\n"
2622 " errExit(\"uname\");\n"
2623 " printf(\"uts.nodename in child: %s\\en\", uts.nodename);\n"
2626 #: build/C/man2/clone.2:1151
2629 " /* Keep the namespace open for a while, by sleeping.\n"
2630 " This allows some experimentation--for example, another\n"
2631 " process might join the namespace. */\n"
2633 " /* sleep を使ってしばらく名前空間をオープンされたままにする。\n"
2634 " これにより実験を行うことができる -- 例えば、\n"
2635 " 別のプロセスがこの名前空間に参加するなど。 */\n"
2638 #: build/C/man2/clone.2:1153
2640 msgid " sleep(200);\n"
2641 msgstr " sleep(200);\n"
2644 #: build/C/man2/clone.2:1156
2647 " return 0; /* Child terminates now */\n"
2650 " return 0; /* 子プロセスを終了する */\n"
2654 #: build/C/man2/clone.2:1158
2656 msgid "#define STACK_SIZE (1024 * 1024) /* Stack size for cloned child */\n"
2657 msgstr "#define STACK_SIZE (1024 * 1024) /* clone される子プロセスのスタックサイズ */\n"
2660 #: build/C/man2/clone.2:1166
2664 "main(int argc, char *argv[])\n"
2666 " char *stack; /* Start of stack buffer */\n"
2667 " char *stackTop; /* End of stack buffer */\n"
2669 " struct utsname uts;\n"
2672 "main(int argc, char *argv[])\n"
2674 " char *stack; /* スタックバッファの先頭 */\n"
2675 " char *stackTop; /* スタックバッファの末尾 */\n"
2677 " struct utsname uts;\n"
2680 #: build/C/man2/clone.2:1171
2683 " if (argc E<lt> 2) {\n"
2684 " fprintf(stderr, \"Usage: %s E<lt>child-hostnameE<gt>\\en\", argv[0]);\n"
2685 " exit(EXIT_SUCCESS);\n"
2688 " if (argc E<lt> 2) {\n"
2689 " fprintf(stderr, \"Usage: %s E<lt>child-hostnameE<gt>\\en\", argv[0]);\n"
2690 " exit(EXIT_SUCCESS);\n"
2694 #: build/C/man2/clone.2:1173
2696 msgid " /* Allocate stack for child */\n"
2697 msgstr " /* 子プロセス用のスタックを割り当てる */\n"
2700 #: build/C/man2/clone.2:1178
2703 " stack = malloc(STACK_SIZE);\n"
2704 " if (stack == NULL)\n"
2705 " errExit(\"malloc\");\n"
2706 " stackTop = stack + STACK_SIZE; /* Assume stack grows downward */\n"
2708 " stack = malloc(STACK_SIZE);\n"
2709 " if (stack == NULL)\n"
2710 " errExit(\"malloc\");\n"
2711 " stackTop = stack + STACK_SIZE; /* スタックは下方向に伸びるものとする */\n"
2714 #: build/C/man2/clone.2:1181
2717 " /* Create child that has its own UTS namespace;\n"
2718 " child commences execution in childFunc() */\n"
2720 " /* 自分専用の UTS 名前空間を持つ子プロセスを作成する;\n"
2721 " 子プロセスは childFunc() の実行を開始する */\n"
2724 #: build/C/man2/clone.2:1186
2727 " pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
2729 " errExit(\"clone\");\n"
2730 " printf(\"clone() returned %ld\\en\", (long) pid);\n"
2732 " pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
2734 " errExit(\"clone\");\n"
2735 " printf(\"clone() returned %ld\\en\", (long) pid);\n"
2738 #: build/C/man2/clone.2:1188
2740 msgid " /* Parent falls through to here */\n"
2741 msgstr " /* 親プロセスの実行はここに来る */\n"
2744 #: build/C/man2/clone.2:1190
2746 msgid " sleep(1); /* Give child time to change its hostname */\n"
2747 msgstr " sleep(1); /* 子プロセスがホスト名を変更する時間を与える */\n"
2750 #: build/C/man2/clone.2:1193
2753 " /* Display hostname in parent\\(aqs UTS namespace. This will be\n"
2754 " different from hostname in child\\(aqs UTS namespace. */\n"
2756 " /* 親プロセスの UTS 名前空間でのホスト名を表示する;\n"
2757 " これは子プロセスの UTS 名前空間でのホスト名とは異なる */\n"
2760 #: build/C/man2/clone.2:1197
2763 " if (uname(&uts) == -1)\n"
2764 " errExit(\"uname\");\n"
2765 " printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n"
2767 " if (uname(&uts) == -1)\n"
2768 " errExit(\"uname\");\n"
2769 " printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n"
2772 #: build/C/man2/clone.2:1201
2775 " if (waitpid(pid, NULL, 0) == -1) /* Wait for child */\n"
2776 " errExit(\"waitpid\");\n"
2777 " printf(\"child has terminated\\en\");\n"
2779 " if (waitpid(pid, NULL, 0) == -1) /* 子プロセスを待つ */\n"
2780 " errExit(\"waitpid\");\n"
2781 " printf(\"child has terminated\\en\");\n"
2784 #: build/C/man2/clone.2:1204
2787 " exit(EXIT_SUCCESS);\n"
2790 " exit(EXIT_SUCCESS);\n"
2794 #: build/C/man2/clone.2:1220
2797 #| "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
2798 #| "B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
2799 #| "B<unshare>(2), B<wait>(2), B<capabilities>(7), B<pthreads>(7)"
2801 "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
2802 "B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
2803 "B<unshare>(2), B<wait>(2), B<capabilities>(7), B<namespaces>(7), "
2806 "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
2807 "B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
2808 "B<unshare>(2), B<wait>(2), B<capabilities>(7), B<pthreads>(7)"
2811 #: build/C/man2/kcmp.2:28
2817 #: build/C/man2/kcmp.2:28
2823 #: build/C/man2/kcmp.2:31
2825 "kcmp - compare two processes to determine if they share a kernel resource"
2826 msgstr "kcmp - 二つのプロセスが同じカーネルリソースを共有しているかを比較する"
2829 #: build/C/man2/kcmp.2:34
2831 msgid "B<#include E<lt>linux/kcmp.hE<gt>>\n"
2832 msgstr "B<#include E<lt>linux/kcmp.hE<gt>>\n"
2835 #: build/C/man2/kcmp.2:37
2838 "B<int kcmp(pid_t >I<pid1>B<, pid_t >I<pid2>B<, int >I<type>B<,>\n"
2839 "B< unsigned long >I<idx1>B<, unsigned long >I<idx2>B<);>\n"
2841 "B<int kcmp(pid_t >I<pid1>B<, pid_t >I<pid2>B<, int >I<type>B<,>\n"
2842 "B< unsigned long >I<idx1>B<, unsigned long >I<idx2>B<);>\n"
2845 #: build/C/man2/kcmp.2:41
2846 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
2848 "I<注>: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節"
2852 #: build/C/man2/kcmp.2:50
2854 "The B<kcmp>() system call can be used to check whether the two processes "
2855 "identified by I<pid1> and I<pid2> share a kernel resource such as virtual "
2856 "memory, file descriptors, and so on."
2858 "システムコール B<kcmp>() を使うと、 ID が I<pid1> と I<pid2> の二つのプロセス"
2859 "が、 仮想メモリやファイルディスクリプタなどの、 同じカーネルリソースを共有し"
2863 #: build/C/man2/kcmp.2:55
2865 "The I<type> argument specifies which resource is to be compared in the two "
2866 "processes. It has one of the following values:"
2868 "I<type> 引き数は 2 つのプロセス間でどのリソースを比較するかを指定する。 以下"
2872 #: build/C/man2/kcmp.2:55
2874 msgid "B<KCMP_FILE>"
2875 msgstr "B<KCMP_FILE>"
2878 #: build/C/man2/kcmp.2:67
2880 "Check whether a file descriptor I<idx1> in the process I<pid1> refers to the "
2881 "same open file description (see B<open>(2)) as file descriptor I<idx2> in "
2882 "the process I<pid2>."
2884 "プロセス I<pid1> のファイルディスクリプタ I<idx1> が、 プロセス I<pid2> の"
2885 "ファイルディスクリプタ I<idx2> と同じオープンファイル記述 (open file "
2886 "description) を参照しているかを検査する。"
2889 #: build/C/man2/kcmp.2:67
2891 msgid "B<KCMP_FILES>"
2892 msgstr "B<KCMP_FILES>"
2895 #: build/C/man2/kcmp.2:75
2897 "Check whether the process share the same set of open file descriptors. The "
2898 "arguments I<idx1> and I<idx2> are ignored."
2900 "二つのプロセスが同じオープンファイル記述の集合を共有しているかを検査する。 引"
2901 "き数 I<idx1> と I<idx2> は無視される。"
2904 #: build/C/man2/kcmp.2:75
2910 #: build/C/man2/kcmp.2:84
2912 "Check whether the processes share the same filesystem information (i.e., "
2913 "file mode creation mask, working directory, and filesystem root). The "
2914 "arguments I<idx1> and I<idx2> are ignored."
2916 "二つのプロセスが同じファイルシステム情報 (すなわち、ファイルのモード作成マス"
2917 "ク、作業ディレクトリ、ファイルシステムのルート) を共有しているかを検査する。 "
2918 "引き数 I<idx1> と I<idx2> は無視される。"
2921 #: build/C/man2/kcmp.2:84
2927 #: build/C/man2/kcmp.2:92
2929 "Check whether the processes share I/O context. The arguments I<idx1> and "
2930 "I<idx2> are ignored."
2932 "二つのプロセスが I/O コンテキストを共有しているかを検査する。 引き数 I<idx1> "
2936 #: build/C/man2/kcmp.2:92
2938 msgid "B<KCMP_SIGHAND>"
2939 msgstr "B<KCMP_SIGHAND>"
2942 #: build/C/man2/kcmp.2:100
2944 "Check whether the processes share the same table of signal dispositions. "
2945 "The arguments I<idx1> and I<idx2> are ignored."
2947 "二つのプロセスがシグナル配送 (disposition) テーブルを共有しているかを検査す"
2948 "る。 引き数 I<idx1> と I<idx2> は無視される。"
2951 #: build/C/man2/kcmp.2:100
2953 msgid "B<KCMP_SYSVSEM>"
2954 msgstr "B<KCMP_SYSVSEM>"
2957 #: build/C/man2/kcmp.2:109
2959 "Check whether the processes share the same list of System\\ V semaphore undo "
2960 "operations. The arguments I<idx1> and I<idx2> are ignored."
2962 "二つのプロセスが同じ System\\ V セマフォ undo 操作のリストを共有しているかを"
2963 "検査する。 引き数 I<idx1> と I<idx2> は無視される。"
2966 #: build/C/man2/kcmp.2:109
2972 #: build/C/man2/kcmp.2:117
2974 "Check whether the processes share the same address space. The arguments "
2975 "I<idx1> and I<idx2> are ignored."
2977 "二つのプロセスが同じアドレス空間を共有しているかを検査する。 引き数 I<idx1> "
2981 #: build/C/man2/kcmp.2:127
2983 "Note the B<kcmp>() is not protected against false positives which may occur "
2984 "if tasks are running. One should stop tasks by sending B<SIGSTOP> (see "
2985 "B<signal>(7)) prior to inspection with this system call to obtain "
2986 "meaningful results."
2988 "B<kcmp>() には、タスクが実行されている場合に起こり得る誤判定 (false "
2989 "positive) に関する保護はない。 ということは、 意味のある結果を得るためには、 "
2990 "このシステムコールで検査を行う前に、 B<SIGSTOP> を送信してタスクを停止すべき"
2991 "だということだ (B<signal>(7) 参照)。"
2994 #: build/C/man2/kcmp.2:133
2996 "The return value of a successful call to B<kcmp>() is simply the result of "
2997 "arithmetic comparison of kernel pointers (when the kernel compares "
2998 "resources, it uses their memory addresses)."
3000 "B<kcmp>() の呼び出しが成功した場合の返り値は、単にカーネルポインタを数値で比"
3001 "較した結果となる (カーネルはリソースを比較する際、リソースのメモリアドレスを"
3005 #: build/C/man2/kcmp.2:141
3007 "The easiest way to explain is to consider an example. Suppose that I<v1> "
3008 "and I<v2> are the addresses of appropriate resources, then the return value "
3009 "is one of the following:"
3011 "これを説明するには、例を見るのが一番簡単である。 I<v1> と I<v2> を適切なリ"
3012 "ソースのアドレスとすると、 返り値は以下のいずれか一つとなる。"
3015 #: build/C/man2/kcmp.2:142
3021 #: build/C/man2/kcmp.2:147
3023 "I<v1> is equal to I<v2>; in other words, the two processes share the "
3026 "I<v1> は I<v2> と等しい。言い換えれば、二つのプロセスはそのリソースを共有して"
3030 #: build/C/man2/kcmp.2:147
3036 #: build/C/man2/kcmp.2:151
3037 msgid "I<v1> is less than I<v2>."
3038 msgstr "I<v1> は I<v2> より小さい。"
3041 #: build/C/man2/kcmp.2:151
3047 #: build/C/man2/kcmp.2:155
3048 msgid "I<v1> is greater than I<v2>."
3049 msgstr "I<v1> は I<v2> より大きい。"
3052 #: build/C/man2/kcmp.2:155
3058 #: build/C/man2/kcmp.2:160
3059 msgid "I<v1> is not equal to I<v2>, but ordering information is unavailable."
3060 msgstr "I<v1> は I<v2> と等しくないが、順序情報がない。"
3063 #: build/C/man2/kcmp.2:165
3064 msgid "On error, -1 is returned, and I<errno> is set appropriately."
3065 msgstr "エラーの場合は -1 が返され、 I<errno> が適切に設定される。"
3068 #: build/C/man2/kcmp.2:170
3070 "B<kcmp>() was designed to return values suitable for sorting. This is "
3071 "particularly handy if one needs to compare a large number of file "
3074 "B<kcmp>() は、ソートに適した値を返すように設計された。 大量のファイルディスク"
3075 "リプタを比較する必要がある場合に、特に役に立つ。"
3078 #: build/C/man2/kcmp.2:171 build/C/man2/setns.2:146
3084 #: build/C/man2/kcmp.2:181
3086 "I<type> is B<KCMP_FILE> and I<fd1> or I<fd2> is not an open file descriptor."
3088 "I<type> が B<KCMP_FILE> で、かつ I<fd1> か I<fd2> がオープンファイル記述でな"
3092 #: build/C/man2/kcmp.2:185
3093 msgid "I<type> is invalid."
3094 msgstr "I<type> が無効である。"
3097 #: build/C/man2/kcmp.2:191
3099 "Insufficient permission to inspect process resources. The B<CAP_SYS_PTRACE> "
3100 "capability is required to inspect processes that you do not own."
3102 "プロセスのリソースを検査するのに十分な許可がない。 自分が所有していないプロセ"
3103 "スを検査するためには B<CAP_SYS_PTRACE> ケーパビリティが必要である。"
3106 #: build/C/man2/kcmp.2:191 build/C/man2/sched_rr_get_interval.2:90
3107 #: build/C/man2/sched_setaffinity.2:145 build/C/man2/sched_setattr.2:284
3108 #: build/C/man2/sched_setparam.2:116 build/C/man2/sched_setscheduler.2:167
3114 #: build/C/man2/kcmp.2:198
3115 msgid "Process I<pid1> or I<pid2> does not exist."
3116 msgstr "プロセス I<pid1> か I<pid2> が存在しない。"
3119 #: build/C/man2/kcmp.2:202
3120 msgid "The B<kcmp>() system call first appeared in Linux 3.5."
3121 msgstr "B<kcmp>() システムコールは Linux 3.5 で初めて登場した。"
3124 #: build/C/man2/kcmp.2:205
3126 "B<kcmp>() is Linux-specific and should not be used in programs intended to "
3129 "B<kcmp>() は Linux 特有であり、 移植を考慮したプログラムでは使用すべきではな"
3133 #: build/C/man2/kcmp.2:208
3135 "Glibc does not provide a wrapper for this system call; call it using "
3138 "glibc はこのシステムコールに対するラッパー関数を提供していない。 "
3139 "B<syscall>(2) を使って呼び出すこと。"
3142 #: build/C/man2/kcmp.2:217
3144 "This system call is available only if the kernel was configured with "
3145 "B<CONFIG_CHECKPOINT_RESTORE>. The main use of the system call is for the "
3146 "checkpoint/restore in user space (CRIU) feature. The alternative to this "
3147 "system call would have been to expose suitable process information via the "
3148 "B<proc>(5) filesystem; this was deemed to be unsuitable for security "
3151 "このシステムコールが利用できるのは、 カーネルの B<CONFIG_CHECKPOINT_RESTORE> "
3152 "オプションが有効になっている場合だけである。 このシステムコールの主な用途"
3153 "は、 ユーザ空間でのチェックポイント/リストア (checkpoint/restore in user "
3154 "space; CRIU) 機能である。 このシステムコールを使わないとすると、 B<proc>(5) "
3155 "ファイルシステム経由で必要なプロセス情報を公開することになるが、 これはセキュ"
3156 "リティ上の理由から不適切とみなされた。"
3159 #: build/C/man2/kcmp.2:222
3161 "See B<clone>(2) for some background information on the shared resources "
3162 "referred to on this page."
3164 "このページで参照されている共有リソースに関する背景についての情報は "
3165 "B<clone>(2) を参照のこと。"
3168 #: build/C/man2/kcmp.2:225
3169 msgid "B<clone>(2), B<unshare>(2)"
3170 msgstr "B<clone>(2), B<unshare>(2)"
3173 #: build/C/man2/sched_get_priority_max.2:29
3175 msgid "SCHED_GET_PRIORITY_MAX"
3176 msgstr "SCHED_GET_PRIORITY_MAX"
3179 #: build/C/man2/sched_get_priority_max.2:29
3185 #: build/C/man2/sched_get_priority_max.2:32
3187 "sched_get_priority_max, sched_get_priority_min - get static priority range"
3189 "sched_get_priority_max, sched_get_priority_min - 静的プライオリティの範囲を取"
3193 #: build/C/man2/sched_get_priority_max.2:34
3194 #: build/C/man2/sched_rr_get_interval.2:34 build/C/man2/sched_yield.2:34
3195 msgid "B<#include E<lt>sched.hE<gt>>"
3196 msgstr "B<#include E<lt>sched.hE<gt>>"
3199 #: build/C/man2/sched_get_priority_max.2:36
3200 msgid "B<int sched_get_priority_max(int >I<policy>B<);>"
3201 msgstr "B<int sched_get_priority_max(int >I<policy>B<);>"
3204 #: build/C/man2/sched_get_priority_max.2:38
3205 msgid "B<int sched_get_priority_min(int >I<policy>B<);>"
3206 msgstr "B<int sched_get_priority_min(int >I<policy>B<);>"
3209 #: build/C/man2/sched_get_priority_max.2:59
3211 "B<sched_get_priority_max>() returns the maximum priority value that can be "
3212 "used with the scheduling algorithm identified by I<policy>. "
3213 "B<sched_get_priority_min>() returns the minimum priority value that can be "
3214 "used with the scheduling algorithm identified by I<policy>. Supported "
3215 "I<policy> values are B<SCHED_FIFO>, B<SCHED_RR>, B<SCHED_OTHER>, "
3216 "B<SCHED_BATCH>, B<SCHED_IDLE>, and B<SCHED_DEADLINE>. Further details about "
3217 "these policies can be found in B<sched>(7)."
3219 "B<sched_get_priority_max>() はI<policy> によって指定されたスケジューリングの"
3220 "アルゴリズムで 使用されるプライオリティの最大値を返す。 "
3221 "B<sched_get_priority_min>() はI<policy> によって指定されたスケジューリングの"
3222 "アルゴリズムで 使用されるプライオリティの最小値を返す。 サポートされる "
3223 "I<policy> の値は B<SCHED_FIFO>、 B<SCHED_RR>、 B<SCHED_OTHER>、 "
3224 "B<SCHED_BATCH>, B<SCHED_IDLE>, B<SCHED_DEADLINE> である。これらのスケジューリ"
3225 "ング方針に関する詳細は B<sched>(7) に書かれている。"
3228 #: build/C/man2/sched_get_priority_max.2:68
3230 "Processes with numerically higher priority values are scheduled before "
3231 "processes with numerically lower priority values. Thus, the value returned "
3232 "by B<sched_get_priority_max>() will be greater than the value returned by "
3233 "B<sched_get_priority_min>()."
3235 "数値的に大きなプライオリティ値を持つプロセスは小さな プライオリティ値を持つプ"
3236 "ロセスより前にスケジュールされる。 このため B<sched_get_priority_max>() が返"
3237 "す値は B<sched_get_priority_min>() が返す値よりも大きい。"
3240 #: build/C/man2/sched_get_priority_max.2:76
3242 "Linux allows the static priority range 1 to 99 for the B<SCHED_FIFO> and "
3243 "B<SCHED_RR> policies, and the priority 0 for the remaining policies. "
3244 "Scheduling priority ranges for the various policies are not alterable."
3246 "Linux では、 ポリシー B<SCHED_FIFO> と B<SCHED_RR> では 1 から 99 の範囲の静"
3247 "的プライオリティーを持ち、それ以外のポリシーでは プライオリティとして 0 を持"
3248 "つ。 それぞれの方針のスケジューリングプライオリティの範囲は 変更することがで"
3252 #: build/C/man2/sched_get_priority_max.2:88
3254 "The range of scheduling priorities may vary on other POSIX systems, thus it "
3255 "is a good idea for portable applications to use a virtual priority range and "
3256 "map it to the interval given by B<sched_get_priority_max>() and "
3257 "B<sched_get_priority_min>(). POSIX.1-2001 requires a spread of at least 32 "
3258 "between the maximum and the minimum values for B<SCHED_FIFO> and B<SCHED_RR>."
3260 "スケジューリングプライオリティの範囲は他の POSIX システムと 異なっているかも"
3261 "しれない。それで、移植性(portable)のある アプリケーションでは仮想的な範囲を用"
3262 "い B<sched_get_priority_max>() と B<sched_get_priority_min>() で与えられた"
3263 "間隔にマップして使用することはいい考えである。 POSIX.1-2001 では "
3264 "B<SCHED_FIFO> と B<SCHED_RR> における 最大値と最小値の間隔を少なくとも 32 に"
3268 #: build/C/man2/sched_get_priority_max.2:97
3270 "POSIX systems on which B<sched_get_priority_max>() and "
3271 "B<sched_get_priority_min>() are available define "
3272 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
3274 "POSIX システムでは B<sched_get_priority_max>() と "
3275 "B<sched_get_priority_min>() は I<E<lt>unistd.hE<gt>> に "
3276 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
3279 #: build/C/man2/sched_get_priority_max.2:107
3281 "On success, B<sched_get_priority_max>() and B<sched_get_priority_min>() "
3282 "return the maximum/minimum priority value for the named scheduling policy. "
3283 "On error, -1 is returned, and I<errno> is set appropriately."
3285 "成功した場合は B<sched_get_priority_max>() と B<sched_get_priority_min>() "
3286 "は指定されたスケジューリング方針のプライオリティの最大値/最小値を返す。 エ"
3287 "ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
3290 #: build/C/man2/sched_get_priority_max.2:113
3291 msgid "The argument I<policy> does not identify a defined scheduling policy."
3292 msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
3295 #: build/C/man2/sched_get_priority_max.2:115
3296 #: build/C/man2/sched_rr_get_interval.2:96 build/C/man2/sched_setparam.2:121
3297 #: build/C/man2/sched_yield.2:54
3298 msgid "POSIX.1-2001."
3299 msgstr "POSIX.1-2001."
3302 #: build/C/man2/sched_get_priority_max.2:125
3304 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
3305 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
3308 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_getscheduler>(2), "
3309 "B<sched_setaffinity>(2), B<sched_setparam>(2), B<sched_setscheduler>(2), "
3313 #: build/C/man3/sched_getcpu.3:26
3315 msgid "SCHED_GETCPU"
3316 msgstr "SCHED_GETCPU"
3319 #: build/C/man3/sched_getcpu.3:26
3325 #: build/C/man3/sched_getcpu.3:29
3326 msgid "sched_getcpu - determine CPU on which the calling thread is running"
3327 msgstr "sched_getcpu - 呼び出したスレッドが実行されている CPU を知る"
3330 #: build/C/man3/sched_getcpu.3:34
3332 msgid "B<int sched_getcpu(void);>\n"
3333 msgstr "B<int sched_getcpu(void);>\n"
3336 #: build/C/man3/sched_getcpu.3:39 build/C/man2/unshare.2:33
3338 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
3339 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7) 参照):"
3342 #: build/C/man3/sched_getcpu.3:42
3343 msgid "B<sched_getcpu>():"
3344 msgstr "B<sched_getcpu>():"
3347 #: build/C/man3/sched_getcpu.3:58
3349 "B<sched_getcpu>() returns the number of the CPU on which the calling thread "
3350 "is currently executing."
3352 "B<sched_getcpu>() は、呼び出したスレッドが現在実行されている CPU の番号を返"
3356 #: build/C/man3/sched_getcpu.3:65
3358 "On success, B<sched_getcpu>() returns a nonnegative CPU number. On error, "
3359 "-1 is returned and I<errno> is set to indicate the error."
3361 "成功すると、 B<sched_getcpu>() は非負の CPU 番号を返す。 エラーの場合、-1 を"
3362 "返し、 I<errno> にエラーを示す値を設定する。"
3365 #: build/C/man3/sched_getcpu.3:66 build/C/man2/sched_rr_get_interval.2:87
3371 #: build/C/man3/sched_getcpu.3:70
3372 msgid "This kernel does not implement B<getcpu>(2)."
3373 msgstr "このカーネルでは B<getcpu>(2) が実装されていない。"
3376 #: build/C/man3/sched_getcpu.3:72
3377 msgid "This function is available since glibc 2.6."
3378 msgstr "この関数は glibc 2.6 以降で利用可能である。"
3381 #: build/C/man3/sched_getcpu.3:72
3387 #: build/C/man3/sched_getcpu.3:73
3389 msgid "Multithreading (see pthreads(7))"
3390 msgstr "マルチスレッディング (pthreads(7) 参照)"
3393 #: build/C/man3/sched_getcpu.3:77
3394 msgid "The B<sched_getcpu>() function is thread-safe."
3395 msgstr "B<sched_getcpu>() 関数はスレッドセーフである。"
3398 #: build/C/man3/sched_getcpu.3:80
3399 msgid "B<sched_getcpu>() is glibc-specific."
3400 msgstr "B<sched_getcpu>() は glibc 固有である。"
3403 #: build/C/man3/sched_getcpu.3:82
3408 #: build/C/man3/sched_getcpu.3:86
3410 msgid "cpu = sched_getcpu();\n"
3411 msgstr "cpu = sched_getcpu();\n"
3414 #: build/C/man3/sched_getcpu.3:92
3415 msgid "is equivalent to the following B<getcpu>(2) call:"
3416 msgstr "は、以下の B<getcpu>(2) 呼び出しと等価である。"
3419 #: build/C/man3/sched_getcpu.3:98
3423 "s = getcpu(&c, NULL, NULL);\n"
3424 "cpu = (s == -1) ? s : c;\n"
3427 "s = getcpu(&c, NULL, NULL);\n"
3428 "cpu = (s == -1) ? s : c;\n"
3431 #: build/C/man3/sched_getcpu.3:103
3432 msgid "B<getcpu>(2), B<sched>(7)"
3433 msgstr "B<getcpu>(2), B<sched>(7)"
3436 #: build/C/man2/sched_rr_get_interval.2:29
3438 msgid "SCHED_RR_GET_INTERVAL"
3439 msgstr "SCHED_RR_GET_INTERVAL"
3442 #: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_yield.2:29
3448 #: build/C/man2/sched_rr_get_interval.2:32
3449 msgid "sched_rr_get_interval - get the SCHED_RR interval for the named process"
3450 msgstr "sched_rr_get_interval - 指定されたプロセスの SCHED_RR 間隔を取得する"
3453 #: build/C/man2/sched_rr_get_interval.2:36
3455 "B<int sched_rr_get_interval(pid_t >I<pid>B<, struct timespec * >I<tp>B<);>"
3457 "B<int sched_rr_get_interval(pid_t >I<pid>B<, struct timespec *>I<tp>B<);>"
3460 #: build/C/man2/sched_rr_get_interval.2:47
3462 "B<sched_rr_get_interval>() writes into the I<timespec> structure pointed to "
3463 "by I<tp> the round-robin time quantum for the process identified by I<pid>. "
3464 "The specified process should be running under the B<SCHED_RR> scheduling "
3467 "B<sched_rr_get_interval>() は I<tp> で指定された I<timespec> 構造体に\n"
3468 "I<pid> で指定されたプロセスのラウンドロビン時間量 (round robin time\n"
3469 "quantum) を書き込む。指定されたプロセスは B<SCHED_RR> スケジューリング\n"
3473 #: build/C/man2/sched_rr_get_interval.2:51
3474 msgid "The I<timespec> structure has the following form:"
3475 msgstr "I<timespec> 構造体は以下の通りである:"
3478 #: build/C/man2/sched_rr_get_interval.2:58
3481 "struct timespec {\n"
3482 " time_t tv_sec; /* seconds */\n"
3483 " long tv_nsec; /* nanoseconds */\n"
3486 "struct timespec {\n"
3487 " time_t tv_sec; /* seconds */\n"
3488 " long tv_nsec; /* nanoseconds */\n"
3492 #. FIXME . On Linux, sched_rr_get_interval()
3493 #. returns the timeslice for SCHED_OTHER processes -- this timeslice
3494 #. is influenced by the nice value.
3495 #. For SCHED_FIFO processes, this always returns 0.
3496 #. The round-robin time quantum value is not alterable under Linux
3499 #: build/C/man2/sched_rr_get_interval.2:73
3501 "If I<pid> is zero, the time quantum for the calling process is written into "
3504 "I<pid> が 0 の場合、呼び出したプロセスの時間量 (time quantum) が\n"
3508 #: build/C/man2/sched_rr_get_interval.2:80
3510 "On success, B<sched_rr_get_interval>() returns 0. On error, -1 is "
3511 "returned, and I<errno> is set appropriately."
3513 "成功した場合は B<sched_rr_get_interval>() は 0 を返す。 エラーの場合は -1 が"
3514 "返され、 I<errno> が適切に設定される。"
3517 #: build/C/man2/sched_rr_get_interval.2:81
3518 #: build/C/man2/sched_setaffinity.2:117
3524 #: build/C/man2/sched_rr_get_interval.2:84
3525 msgid "Problem with copying information to user space."
3526 msgstr "情報をユーザ空間にコピーする時に問題が起きた。"
3529 #: build/C/man2/sched_rr_get_interval.2:87
3530 msgid "Invalid pid."
3531 msgstr "PID が不正である。"
3534 #: build/C/man2/sched_rr_get_interval.2:90
3535 msgid "The system call is not yet implemented (only on rather old kernels)."
3537 "システムコールがまだ実装されていない (かなり古いカーネルにおいてのみ)。"
3540 #: build/C/man2/sched_rr_get_interval.2:94
3541 msgid "Could not find a process with the ID I<pid>."
3542 msgstr "プロセス ID が I<pid> のプロセスが見つからなかった。"
3545 #: build/C/man2/sched_rr_get_interval.2:103
3547 "POSIX systems on which B<sched_rr_get_interval>() is available define "
3548 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
3550 "POSIX システムで B<sched_rr_get_interval>() は I<E<lt>unistd.hE<gt>> に\n"
3551 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
3554 #: build/C/man2/sched_rr_get_interval.2:103
3559 #. commit a4ec24b48ddef1e93f7578be53270f0b95ad666c
3561 #: build/C/man2/sched_rr_get_interval.2:117
3563 "POSIX does not specify any mechanism for controlling the size of the round-"
3564 "robin time quantum. Older Linux kernels provide a (nonportable) method of "
3565 "doing this. The quantum can be controlled by adjusting the process's nice "
3566 "value (see B<setpriority>(2)). Assigning a negative (i.e., high) nice value "
3567 "results in a longer quantum; assigning a positive (i.e., low) nice value "
3568 "results in a shorter quantum. The default quantum is 0.1 seconds; the "
3569 "degree to which changing the nice value affects the quantum has varied "
3570 "somewhat across kernel versions. This method of adjusting the quantum was "
3571 "removed starting with Linux 2.6.24."
3573 "POSIX ではラウンドロビン時間量の大きさを制御する仕組みが規定されていない。 古"
3574 "い Linux カーネルではこれを変更する方法が提供されている (この方法に移植性はな"
3575 "い)。 プロセスの nice 値を調整することで時間量を制御できる "
3576 "(B<setpriority>(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り当てる"
3577 "と時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間"
3578 "量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にど"
3579 "の程度影響を与えるかは カーネルのバージョンにより多少異なる。時間量を調整する"
3580 "このメソッドは Linux 2.6.24 以降で削除された。"
3582 #. commit ce0dbbbb30aee6a835511d5be446462388ba9eee
3584 #. As of Linux 1.3.81
3585 #. .BR sched_rr_get_interval ()
3586 #. returns with error
3587 #. ENOSYS, because SCHED_RR has not yet been fully implemented and tested
3590 #: build/C/man2/sched_rr_get_interval.2:132
3592 "Linux 3.9 added a new mechanism for adjusting (and viewing) the B<SCHED_RR> "
3593 "quantum: the I</proc/sys/kernel/sched_rr_timeslice_ms> file exposes the "
3594 "quantum as a millisecond value, whose default is 100. Writing 0 to this "
3595 "file resets the quantum to the default value."
3597 "Linux 3.9 で、 B<SCHED_RR> の時間量の調整 (と参照) を行う新しい機構が追加され"
3598 "た。 I</proc/sys/kernel/sched_rr_timeslice_ms> ファイルでミリ秒単位の時間量の"
3599 "値が参照でき、 デフォルト値は 100 である。 このファイルに 0 を書き込むと、 時"
3600 "間量をデフォルト値に戻すことができる。"
3603 #: build/C/man2/sched_rr_get_interval.2:134 build/C/man2/sched_yield.2:81
3605 msgstr "B<sched>(7)"
3608 #: build/C/man2/sched_setaffinity.2:34
3610 msgid "SCHED_SETAFFINITY"
3611 msgstr "SCHED_SETAFFINITY"
3614 #: build/C/man2/sched_setaffinity.2:34
3616 #| msgid "2014-05-12"
3621 #: build/C/man2/sched_setaffinity.2:38
3623 "sched_setaffinity, sched_getaffinity - set and get a thread's CPU affinity "
3626 "sched_setaffinity, sched_getaffinity - スレッドの CPU affinity マスクを設定・"
3630 #: build/C/man2/sched_setaffinity.2:45
3633 "B<int sched_setaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
3634 "B< const cpu_set_t *>I<mask>B<);>\n"
3636 "B<int sched_setaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
3637 "B< const cpu_set_t *>I<mask>B<);>\n"
3640 #: build/C/man2/sched_setaffinity.2:48
3643 "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
3644 "B< cpu_set_t *>I<mask>B<);>\n"
3646 "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
3647 "B< cpu_set_t *>I<mask>B<);>\n"
3650 #: build/C/man2/sched_setaffinity.2:63
3652 "A thread's CPU affinity mask determines the set of CPUs on which it is "
3653 "eligible to run. On a multiprocessor system, setting the CPU affinity mask "
3654 "can be used to obtain performance benefits. For example, by dedicating one "
3655 "CPU to a particular thread (i.e., setting the affinity mask of that thread "
3656 "to specify a single CPU, and setting the affinity mask of all other threads "
3657 "to exclude that CPU), it is possible to ensure maximum execution speed for "
3658 "that thread. Restricting a thread to run on a single CPU also avoids the "
3659 "performance cost caused by the cache invalidation that occurs when a thread "
3660 "ceases to execute on one CPU and then recommences execution on a different "
3663 "スレッドの CPU affinity (親和度) マスクは、そのスレッドが 実行を許可されてい"
3664 "る CPU の集合を決定する。 マルチプロセッサシステムでは、CPU affinity マスクを"
3665 "設定することで 性能上のメリットを得られる可能性がある。 例えば、特定のスレッ"
3666 "ドを一つの CPU に括り付け (すなわち、そのスレッドの affinity マスクを一つの "
3667 "CPU に設定し)、 他の全てのスレッドの affinity マスクからその CPU を除外するこ"
3668 "とで、 確実にそのスレッドの実行速度を最大にすることができる。 また、あるス"
3669 "レッドの実行を一つの CPU に限定することで、 一つの CPU での実行を停止してから"
3670 "別の CPU で実行を再開するときに発生する キャッシュ無効化 (cache "
3671 "invalidation) による性能面の劣化を避けることもできる。"
3674 #: build/C/man2/sched_setaffinity.2:70
3676 "A CPU affinity mask is represented by the I<cpu_set_t> structure, a \"CPU set"
3677 "\", pointed to by I<mask>. A set of macros for manipulating CPU sets is "
3678 "described in B<CPU_SET>(3)."
3680 "CPU affinity マスクは「CPU の集合」を表す I<cpu_set_t> 構造体で表現され、 "
3681 "I<cpu_set_t> へのポインタ I<mask> で指定される。 CPU 集合を操作するためのマク"
3682 "ロ群については B<CPU_SET>(3) で記載されている。"
3685 #: build/C/man2/sched_setaffinity.2:85
3687 "B<sched_setaffinity>() sets the CPU affinity mask of the thread whose ID is "
3688 "I<pid> to the value specified by I<mask>. If I<pid> is zero, then the "
3689 "calling thread is used. The argument I<cpusetsize> is the length (in bytes) "
3690 "of the data pointed to by I<mask>. Normally this argument would be "
3691 "specified as I<sizeof(cpu_set_t)>."
3693 "B<sched_setaffinity>() は、スレッド ID が I<pid> のスレッドの CPU affinity "
3694 "マスクを I<mask> で指定された値に設定する。 I<pid> が 0 の場合、呼び出し元ス"
3695 "レッドが使われる。 I<cpusetsize> 引き数には I<mask> が指すデータの長さ (バイ"
3696 "ト単位) である。 通常は、この引き数には I<sizeof(cpu_set_t)> を指定すればよ"
3700 #: build/C/man2/sched_setaffinity.2:92
3702 "If the thread specified by I<pid> is not currently running on one of the "
3703 "CPUs specified in I<mask>, then that thread is migrated to one of the CPUs "
3704 "specified in I<mask>."
3706 "I<pid> で指定されたスレッドが I<mask> で指定された CPU のいずれかで現在実行さ"
3707 "れていない場合、 そのスレッドは I<mask> で指定された CPU のいずれかに移動され"
3711 #: build/C/man2/sched_setaffinity.2:107
3713 "B<sched_getaffinity>() writes the affinity mask of the thread whose ID is "
3714 "I<pid> into the I<cpu_set_t> structure pointed to by I<mask>. The "
3715 "I<cpusetsize> argument specifies the size (in bytes) of I<mask>. If I<pid> "
3716 "is zero, then the mask of the calling thread is returned."
3718 "B<sched_getaffinity>() は、 スレッド ID が I<pid> のスレッドの affinity マス"
3719 "クを I<mask> が指す I<cpu_set_t> 構造体に書き込む。 I<cpusetsize> 引き数には "
3720 "I<mask> の (バイト単位の) 大きさを指定する。"
3723 #: build/C/man2/sched_setaffinity.2:116
3725 "On success, B<sched_setaffinity>() and B<sched_getaffinity>() return 0. "
3726 "On error, -1 is returned, and I<errno> is set appropriately."
3728 "成功した場合、 B<sched_setaffinity>() と B<sched_getaffinity>() は 0 を返"
3729 "す。 エラーの場合は -1 を返し、 I<errno> を適切に設定する。"
3732 #: build/C/man2/sched_setaffinity.2:120
3733 msgid "A supplied memory address was invalid."
3734 msgstr "指定されたメモリ番地が不正である。"
3737 #: build/C/man2/sched_setaffinity.2:128
3739 "The affinity bit mask I<mask> contains no processors that are currently "
3740 "physically on the system and permitted to the thread according to any "
3741 "restrictions that may be imposed by the \"cpuset\" mechanism described in "
3744 "システム上に現在実際に存在し、かつ \"cpuset\" 機構が課す制限においてそのス"
3745 "レッドに対して許可されている プロセッサが、 affinity ビットマスク I<mask> に"
3746 "含まれていない。 \"cpuset\" 機構については B<cpuset>(7) を参照。"
3749 #: build/C/man2/sched_setaffinity.2:135
3751 "(B<sched_getaffinity>() and, in kernels before 2.6.9, "
3752 "B<sched_setaffinity>()) I<cpusetsize> is smaller than the size of the "
3753 "affinity mask used by the kernel."
3755 "(B<sched_getaffinity>() と、カーネル 2.6.9 以前の B<sched_setaffinity>()) "
3756 "I<cpusetsize> がカーネルで使われている affinity マスクのサイズより小さい。"
3759 #: build/C/man2/sched_setaffinity.2:145
3761 "(B<sched_setaffinity>()) The calling thread does not have appropriate "
3762 "privileges. The caller needs an effective user ID equal to the real user ID "
3763 "or effective user ID of the thread identified by I<pid>, or it must possess "
3764 "the B<CAP_SYS_NICE> capability."
3766 "(B<sched_setaffinity>()) 呼び出し元のスレッドに適切な特権がなかった。 呼び出"
3767 "し元は、実効ユーザ ID が I<pid> で識別されるスレッドの実ユーザ ID または実効"
3768 "ユーザ ID と同じであるか、 B<CAP_SYS_NICE> ケーパビリティ (capability) を持た"
3772 #: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setattr.2:289
3773 #: build/C/man2/sched_setscheduler.2:170
3774 msgid "The thread whose ID is I<pid> could not be found."
3775 msgstr "ID が I<pid> のスレッドが見つからなかった。"
3778 #: build/C/man2/sched_setaffinity.2:159
3780 "The CPU affinity system calls were introduced in Linux kernel 2.5.8. The "
3781 "system call wrappers were introduced in glibc 2.3. Initially, the glibc "
3782 "interfaces included a I<cpusetsize> argument, typed as I<unsigned int>. In "
3783 "glibc 2.3.3, the I<cpusetsize> argument was removed, but was then restored "
3784 "in glibc 2.3.4, with type I<size_t>."
3786 "CPU affinity システムコールは Linux kernel 2.5.8 で導入された。 これらのシス"
3787 "テムコールのラッパー関数は glibc 2.3 で導入された。 最初は、glibc のインタ"
3788 "フェースには I<unsigned int> 型の I<cpusetsize> 引き数が入っていた。 glibc "
3789 "2.3.3 では I<cpusetsize> 引き数が削除されたが、glibc 2.3.4 で I<size_t> 型で"
3793 #: build/C/man2/sched_setaffinity.2:161
3794 msgid "These system calls are Linux-specific."
3795 msgstr "これらのシステムコールは Linux 固有である。"
3798 #: build/C/man2/sched_setaffinity.2:174
3800 "After a call to B<sched_setaffinity>(), the set of CPUs on which the thread "
3801 "will actually run is the intersection of the set specified in the I<mask> "
3802 "argument and the set of CPUs actually present on the system. The system may "
3803 "further restrict the set of CPUs on which the thread runs if the \"cpuset\" "
3804 "mechanism described in B<cpuset>(7) is being used. These restrictions on "
3805 "the actual set of CPUs on which the thread will run are silently imposed by "
3808 "B<sched_setaffinity>() を呼び出した後は、スレッドが実際に実行される CPU の集"
3809 "合は、 I<mask> 引き数で指定された集合と、システム上に実際に存在する CPU の集"
3810 "合の 共通集合 (AND) となる。 \"cpuset\" 機構が使用されている場合には、スレッ"
3811 "ドが動作する CPU 集合 に対してシステムはさらに制限を加えるかもしれない "
3812 "(\"cpuset\" 機構については B<cpuset>(7) を参照)。 スレッドが動作する実際の "
3813 "CPU 集合に対する制限はカーネルにより 暗黙のうちに適用される。"
3816 #: build/C/man2/sched_setaffinity.2:177
3817 msgid "B<sched>(7) has a description of the Linux scheduling scheme."
3818 msgstr "B<sched>(7) に Linux のスケジューリング方式についての説明がある。"
3821 #: build/C/man2/sched_setaffinity.2:194
3823 "The affinity mask is a per-thread attribute that can be adjusted "
3824 "independently for each of the threads in a thread group. The value returned "
3825 "from a call to B<gettid>(2) can be passed in the argument I<pid>. "
3826 "Specifying I<pid> as 0 will set the attribute for the calling thread, and "
3827 "passing the value returned from a call to B<getpid>(2) will set the "
3828 "attribute for the main thread of the thread group. (If you are using the "
3829 "POSIX threads API, then use B<pthread_setaffinity_np>(3) instead of "
3830 "B<sched_setaffinity>().)"
3832 "affinity マスクはスレッド単位の属性で、スレッドグループの 各スレッド単位に独"
3833 "立して調整することができる。 B<gettid>(2) コールからの返り値をこのコールの "
3834 "I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると呼び出し元のス"
3835 "レッドの属性が設定され、 B<getpid>(2) コールからの返り値を I<pid> に指定する"
3836 "とスレッドグループのメインスレッドの属性が設定される (POSIX スレッド API を使"
3837 "用している場合、 B<sched_setaffinity>() の代わりに "
3838 "B<pthread_setaffinity_np>(3) を使用すること)。"
3841 #: build/C/man2/sched_setaffinity.2:200
3843 "A child created via B<fork>(2) inherits its parent's CPU affinity mask. "
3844 "The affinity mask is preserved across an B<execve>(2)."
3846 "B<fork>(2) 経由で生成された子プロセスは親プロセスの CPU affinity マスクを継"
3847 "承する。 affinity マスクは B<execve>(2) の前後で保存される。"
3850 #: build/C/man2/sched_setaffinity.2:214
3852 "This manual page describes the glibc interface for the CPU affinity calls. "
3853 "The actual system call interface is slightly different, with the I<mask> "
3854 "being typed as I<unsigned long\\ *>, reflecting the fact that the underlying "
3855 "implementation of CPU sets is a simple bit mask. On success, the raw "
3856 "B<sched_getaffinity>() system call returns the size (in bytes) of the "
3857 "I<cpumask_t> data type that is used internally by the kernel to represent "
3858 "the CPU set bit mask."
3860 "このマニュアルページでは CPU affinity コールの glibc インタフェースを 説明し"
3861 "ている。実際のシステムコールインタフェースは少し違っており、 実際の実装では "
3862 "CPU 集合は簡単なビットマスクであるという実状を反映し、 I<mask> の型が "
3863 "I<unsigned long\\ *> となっている。 成功時には、生の B<sched_getaffinity>() "
3864 "システムコール自身は I<cpumask_t> データ型の (バイト単位の) 大きさを返す。 "
3865 "I<cpumask_t> はカーネル内部で CPU 集合のビットマスクを表現するのに 使われてい"
3869 #: build/C/man2/sched_setaffinity.2:234
3871 "B<taskset>(1), B<clone>(2), B<getcpu>(2), B<getpriority>(2), B<gettid>(2), "
3872 "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
3873 "B<sched_getscheduler>(2), B<sched_setscheduler>(2), B<setpriority>(2), "
3874 "B<CPU_SET>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), "
3875 "B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
3877 "B<taskset>(1), B<clone>(2), B<getcpu>(2), B<getpriority>(2), B<gettid>(2), "
3878 "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
3879 "B<sched_getscheduler>(2), B<sched_setscheduler>(2), B<setpriority>(2), "
3880 "B<CPU_SET>(3), B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), "
3881 "B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
3884 #: build/C/man2/sched_setattr.2:26
3886 msgid "SCHED_SETATTR"
3887 msgstr "SCHED_SETATTR"
3890 #: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setscheduler.2:26
3891 #: build/C/man7/sched.7:32
3893 #| msgid "2014-05-28"
3898 #: build/C/man2/sched_setattr.2:30
3900 #| msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
3902 "sched_setattr, sched_getattr - set and get scheduling policy and attributes"
3904 "sched_setparam, sched_getparam - スケジューリングパラメータの設定と取得を行な"
3908 #: build/C/man2/sched_setattr.2:36
3911 "B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
3912 "B< unsigned int >I<flags>B<);>\n"
3914 "B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
3915 "B< unsigned int >I<flags>B<);>\n"
3918 #: build/C/man2/sched_setattr.2:39
3921 "B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
3922 "B< unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
3924 "B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
3925 "B< unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
3928 #: build/C/man2/sched_setattr.2:42
3930 msgid "sched_setattr()"
3931 msgstr "sched_setattr()"
3934 #: build/C/man2/sched_setattr.2:52
3937 #| "The B<sched_setscheduler>() system call sets both the scheduling policy "
3938 #| "and parameters for the thread whose ID is specified in I<pid>. If I<pid> "
3939 #| "equals zero, the scheduling policy and parameters of the calling thread "
3942 "The B<sched_setattr>() system call sets the scheduling policy and "
3943 "associated attributes for the thread whose ID is specified in I<pid>. If "
3944 "I<pid> equals zero, the scheduling policy and attributes of the calling "
3945 "thread will be set."
3947 "B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
3948 "レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
3949 "る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
3950 "ケジューリングパラメーターが設定される。"
3953 #: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73
3955 "Currently, Linux supports the following \"normal\" (i.e., non-real-time) "
3956 "scheduling policies as values that may be specified in I<policy>:"
3960 #: build/C/man2/sched_setattr.2:56 build/C/man2/sched_setscheduler.2:73
3962 msgid "B<SCHED_OTHER>"
3963 msgstr "B<SCHED_OTHER>"
3965 #. In the 2.6 kernel sources, SCHED_OTHER is actually called
3968 #: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78
3969 msgid "the standard round-robin time-sharing policy;"
3970 msgstr "標準の、ラウンドロビンによる時分割型のスケジューリングポリシー。"
3973 #: build/C/man2/sched_setattr.2:61 build/C/man2/sched_setscheduler.2:78
3975 msgid "B<SCHED_BATCH>"
3976 msgstr "B<SCHED_BATCH>"
3979 #: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81
3980 msgid "for \"batch\" style execution of processes; and"
3981 msgstr "「バッチ」形式でのプロセスの実行用。"
3984 #: build/C/man2/sched_setattr.2:64 build/C/man2/sched_setscheduler.2:81
3986 msgid "B<SCHED_IDLE>"
3987 msgstr "B<SCHED_IDLE>"
3990 #: build/C/man2/sched_setattr.2:69 build/C/man2/sched_setscheduler.2:86
3991 msgid "for running I<very> low priority background jobs."
3992 msgstr "「非常に」低い優先度で動作するバックグラウンドジョブ用。"
3995 #: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99
3997 "Various \"real-time\" policies are also supported, for special time-critical "
3998 "applications that need precise control over the way in which runnable "
3999 "threads are selected for execution. For the rules governing when a process "
4000 "may use these policies, see B<sched>(7). The real-time policies that may be "
4001 "specified in I<policy> are:"
4003 "どの実行可能スレッドを選択するかについて、より正確な制御を必要とする 時間の制"
4004 "約が厳しい特別なアプリケーション用として、 いろいろな「リアルタイム」ポリシー"
4005 "もサポートされている。 プロセスがこれらのポリシーをいつ使用できるかを決める"
4006 "ルールについては、B<sched>(7) を参照。 I<policy> には以下のリアルタイムポリ"
4010 #: build/C/man2/sched_setattr.2:78 build/C/man2/sched_setscheduler.2:99
4012 msgid "B<SCHED_FIFO>"
4013 msgstr "B<SCHED_FIFO>"
4016 #: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:102
4017 msgid "a first-in, first-out policy; and"
4018 msgstr "ファーストイン、ファーストアウト型のポリシー。"
4021 #: build/C/man2/sched_setattr.2:81 build/C/man2/sched_setscheduler.2:102
4024 msgstr "B<SCHED_RR>"
4027 #: build/C/man2/sched_setattr.2:84 build/C/man2/sched_setscheduler.2:105
4028 msgid "a round-robin policy."
4029 msgstr "ラウンドロビン型のポリシー。"
4032 #: build/C/man2/sched_setattr.2:86
4033 msgid "Linux also provides the following policy:"
4037 #: build/C/man2/sched_setattr.2:86
4039 msgid "B<SCHED_DEADLINE>"
4040 msgstr "B<SCHED_DEADLINE>"
4043 #: build/C/man2/sched_setattr.2:91
4044 msgid "a deadline scheduling policy; see B<sched>(7) for details."
4048 #: build/C/man2/sched_setattr.2:97
4050 "The I<attr> argument is a pointer to a structure that defines the new "
4051 "scheduling policy and attributes for the specified thread. This structure "
4052 "has the following form:"
4056 #: build/C/man2/sched_setattr.2:113
4059 "struct sched_attr {\n"
4060 " u32 size; /* Size of this structure */\n"
4061 " u32 sched_policy; /* Policy (SCHED_*) */\n"
4062 " u64 sched_flags; /* Flags */\n"
4063 " s32 sched_nice; /* Nice value (SCHED_OTHER,\n"
4064 " SCHED_BATCH) */\n"
4065 " u32 sched_priority; /* Static priority (SCHED_FIFO,\n"
4067 " /* Remaining fields are for SCHED_DEADLINE */\n"
4068 " u64 sched_runtime;\n"
4069 " u64 sched_deadline;\n"
4070 " u64 sched_period;\n"
4075 #: build/C/man2/sched_setattr.2:117
4077 #| msgid "The I<timespec> structure has the following form:"
4078 msgid "The fields of this structure are as follows:"
4079 msgstr "I<timespec> 構造体は以下の通りである:"
4082 #: build/C/man2/sched_setattr.2:117
4088 #: build/C/man2/sched_setattr.2:132
4090 "This field should be set to the size of the structure in bytes, as in "
4091 "I<sizeof(struct sched_attr)>. If the provided structure is smaller than the "
4092 "kernel structure, any additional fields are assumed to be '0'. If the "
4093 "provided structure is larger than the kernel structure, the kernel verifies "
4094 "that all additional fields are 0; if they are not, B<sched_setattr>() fails "
4095 "with the error B<E2BIG> and updates I<size> to contain the size of the "
4100 #: build/C/man2/sched_setattr.2:146
4102 "The above behavior when the size of the user-space I<sched_attr> structure "
4103 "does not match the size of the kernel structure allows for future "
4104 "extensibility of the interface. Malformed applications that pass oversize "
4105 "structures won't break in the future if the size of the kernel I<sched_attr> "
4106 "structure is increased. In the future, it could also allow applications "
4107 "that know about a larger user-space I<sched_attr> structure to determine "
4108 "whether they are running on an older kernel that does not support the larger "
4113 #: build/C/man2/sched_setattr.2:146
4115 msgid "I<sched_policy>"
4119 #: build/C/man2/sched_setattr.2:151
4121 "This field specifies the scheduling policy, as one of the B<SCHED_*> values "
4126 #: build/C/man2/sched_setattr.2:151
4128 msgid "I<sched_flags>"
4132 #: build/C/man2/sched_setattr.2:162
4135 #| "Since Linux 2.6.32, the B<SCHED_RESET_ON_FORK> flag can be ORed in "
4136 #| "I<policy> when calling B<sched_setscheduler>(). As a result of including "
4137 #| "this flag, children created by B<fork>(2) do not inherit privileged "
4138 #| "scheduling policies. See B<sched>(7) for details."
4140 "This field contains flags controlling scheduling behavior. Only one such "
4141 "flag is currently defined: B<SCHED_FLAG_RESET_ON_FORK>. As a result of "
4142 "including this flag, children created by B<fork>(2) do not inherit "
4143 "privileged scheduling policies. See B<sched>(7) for details."
4145 "Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に "
4146 "B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 "
4147 "B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承"
4148 "しない。 詳細は B<sched>(7) を参照。"
4151 #: build/C/man2/sched_setattr.2:162
4153 msgid "I<sched_nice>"
4157 #: build/C/man2/sched_setattr.2:173
4159 "This field specifies the nice value to be set when specifying "
4160 "I<sched_policy> as B<SCHED_OTHER> or B<SCHED_BATCH>. The nice value is a "
4161 "number in the range -20 (high priority) to +19 (low priority); see "
4162 "B<setpriority>(2)."
4166 #: build/C/man2/sched_setattr.2:173
4168 msgid "I<sched_priority>"
4172 #: build/C/man2/sched_setattr.2:186
4174 "This field specifies the static priority to be set when specifying "
4175 "I<sched_policy> as B<SCHED_FIFO> or B<SCHED_RR>. The allowed range of "
4176 "priorities for these policies can be determined using "
4177 "B<sched_get_priority_min>(2) and B<sched_get_priority_max>(2). For other "
4178 "policies, this field must be specified as 0."
4182 #: build/C/man2/sched_setattr.2:186
4184 msgid "I<sched_runtime>"
4188 #: build/C/man2/sched_setattr.2:195
4190 "This field specifies the \"Runtime\" parameter for deadline scheduling. The "
4191 "value is expressed in nanoseconds. This field, and the next two fields, are "
4192 "used only for B<SCHED_DEADLINE> scheduling; for further details, see "
4197 #: build/C/man2/sched_setattr.2:195
4199 msgid "I<sched_deadline>"
4203 #: build/C/man2/sched_setattr.2:199
4205 "This field specifies the \"Deadline\" parameter for deadline scheduling. "
4206 "The value is expressed in nanoseconds."
4210 #: build/C/man2/sched_setattr.2:199
4212 msgid "I<sched_period>"
4216 #: build/C/man2/sched_setattr.2:203
4218 "This field specifies the \"Period\" parameter for deadline scheduling. The "
4219 "value is expressed in nanoseconds."
4223 #: build/C/man2/sched_setattr.2:210 build/C/man2/sched_setattr.2:262
4225 "The I<flags> argument is provided to allow for future extensions to the "
4226 "interface; in the current implementation it must be specified as 0."
4230 #: build/C/man2/sched_setattr.2:210
4232 msgid "sched_getattr()"
4233 msgstr "sched_getattr()"
4236 #: build/C/man2/sched_setattr.2:221
4239 #| "The B<sched_setscheduler>() system call sets both the scheduling policy "
4240 #| "and parameters for the thread whose ID is specified in I<pid>. If I<pid> "
4241 #| "equals zero, the scheduling policy and parameters of the calling thread "
4244 "The B<sched_getattr>() system call fetches the scheduling policy and the "
4245 "associated attributes for the thread whose ID is specified in I<pid>. If "
4246 "I<pid> equals zero, the scheduling policy and attributes of the calling "
4247 "thread will be retrieved."
4249 "B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
4250 "レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
4251 "る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
4252 "ケジューリングパラメーターが設定される。"
4255 #: build/C/man2/sched_setattr.2:231
4257 "The I<size> argument should be set to the size of the I<sched_attr> "
4258 "structure as known to user space. The value must be at least as large as "
4259 "the size of the initially published I<sched_attr> structure, or the call "
4260 "fails with the error B<EINVAL>."
4264 #: build/C/man2/sched_setattr.2:241
4266 "The retrieved scheduling attributes are placed in the fields of the "
4267 "I<sched_attr> structure pointed to by I<attr>. The kernel sets I<attr.size> "
4268 "to the size of its I<sched_attr> structure."
4272 #: build/C/man2/sched_setattr.2:257
4274 "If the caller-provided I<attr> buffer is larger than the kernel's "
4275 "I<sched_attr> structure, the additional bytes in the user-space structure "
4276 "are not touched. If the caller-provided structure is smaller than the "
4277 "kernel I<sched_attr> structure and the kernel needs to return values outside "
4278 "the provided space, B<sched_getattr>() fails with the error B<E2BIG>. As "
4279 "with B<sched_setattr>(), these semantics allow for future extensibility of "
4284 #: build/C/man2/sched_setattr.2:271
4287 #| "On success, B<sched_setparam>() and B<sched_getparam>() return 0. On "
4288 #| "error, -1 is returned, and I<errno> is set appropriately."
4290 "On success, B<sched_setattr>() and B<sched_getattr>() return 0. On error, "
4291 "-1 is returned, and I<errno> is set to indicate the cause of the error."
4293 "成功した場合は B<sched_setparam>() と B<sched_getparam>() は 0 を返す。 エ"
4294 "ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
4297 #: build/C/man2/sched_setattr.2:276
4299 "B<sched_getattr>() and B<sched_setattr>() can both fail for the following "
4304 #: build/C/man2/sched_setattr.2:284
4306 #| msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
4307 msgid "I<attr> is NULL; or I<pid> is negative; or I<flags> is not zero."
4308 msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
4311 #: build/C/man2/sched_setattr.2:293
4312 msgid "In addition, B<sched_getattr>() can fail for the following reasons:"
4316 #: build/C/man2/sched_setattr.2:293 build/C/man2/sched_setattr.2:310
4322 #: build/C/man2/sched_setattr.2:300
4323 msgid "The buffer specified by I<size> and I<attr> is too small."
4327 #: build/C/man2/sched_setattr.2:306
4329 "I<size> is invalid; that is, it is smaller than the initial version of the "
4330 "I<sched_attr> structure (48 bytes) or larger than the system page size."
4334 #: build/C/man2/sched_setattr.2:310
4335 msgid "In addition, B<sched_setattr>() can fail for the following reasons:"
4339 #: build/C/man2/sched_setattr.2:318
4341 "The buffer specified by I<size> and I<attr> is larger than the kernel "
4342 "structure, and one or more of the excess bytes is nonzero."
4346 #: build/C/man2/sched_setattr.2:318
4352 #: build/C/man2/sched_setattr.2:323
4353 msgid "B<SCHED_DEADLINE> admission control failure, see B<sched>(7)."
4357 #: build/C/man2/sched_setattr.2:339
4359 "I<attr.sched_policy> is not one of the recognized policies; I<attr."
4360 "sched_flags> contains a flag other than B<SCHED_FLAG_RESET_ON_FORK>; or "
4361 "I<attr.sched_priority> is invalid; or I<attr.sched_policy> is "
4362 "B<SCHED_DEADLINE> and the deadline scheduling parameters in I<attr> are "
4367 #: build/C/man2/sched_setattr.2:342
4369 #| msgid "The calling thread does not have appropriate privileges."
4370 msgid "The caller does not have appropriate privileges."
4371 msgstr "呼び出したスレッドが適切な特権を持っていない。"
4374 #: build/C/man2/sched_setattr.2:348
4376 "The caller's CPU affinity mask does not include all CPUs in the system (see "
4377 "B<sched_setaffinity>(2))."
4380 #. FIXME . Add glibc version
4382 #: build/C/man2/sched_setattr.2:351
4384 #| msgid "The B<kcmp>() system call first appeared in Linux 3.5."
4385 msgid "These system calls first appeared in Linux 3.14."
4386 msgstr "B<kcmp>() システムコールは Linux 3.5 で初めて登場した。"
4389 #: build/C/man2/sched_setattr.2:353
4391 #| msgid "These system calls are Linux-specific."
4392 msgid "These system calls are nonstandard Linux extensions."
4393 msgstr "これらのシステムコールは Linux 固有である。"
4396 #: build/C/man2/sched_setattr.2:369
4398 "B<sched_setattr>() provides a superset of the functionality of "
4399 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<nice>(2), and (other than "
4400 "the ability to set the priority of all processes belonging to a specified "
4401 "user or all processes in a specified group) B<setpriority>(2). "
4402 "Analogously, B<sched_getattr()> provides a superset of the functionality of "
4403 "B<sched_getscheduler>(2), B<sched_getparam>(2), and (partially) "
4404 "B<getpriority>(2)."
4407 #. FIXME . patch sent to Peter Zijlstra
4408 #. In Linux versions up to up 3.15,
4409 #. FIXME . patch from Peter Zijlstra pending
4410 #. .BR sched_setattr ()
4411 #. allowed a negative
4412 #. .I attr.sched_policy
4415 #: build/C/man2/sched_setattr.2:385
4417 "In Linux versions up to 3.15, B<sched_settattr>() failed with the error "
4418 "B<EFAULT> instead of B<E2BIG> for the case described in ERRORS."
4422 #: build/C/man2/sched_setattr.2:407
4425 #| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
4426 #| "B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_getparam>(2), "
4427 #| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
4428 #| "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
4429 #| "B<setpriority>(2), B<pthread_getschedparam>(3), "
4430 #| "B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), "
4431 #| "B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
4433 "B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
4434 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
4435 "B<sched_getscheduler>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
4436 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
4437 "B<sched_yield>(2), B<setpriority>(2), B<pthread_getschedparam>(3), "
4438 "B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), B<capabilities>(7), "
4439 "B<cpuset>(7), B<sched>(7)"
4441 "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
4442 "B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_getparam>(2), "
4443 "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
4444 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
4445 "B<setpriority>(2), B<pthread_getschedparam>(3), B<pthread_setschedparam>(3), "
4446 "B<pthread_setschedprio>(3), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
4449 #: build/C/man2/sched_setparam.2:30
4451 msgid "SCHED_SETPARAM"
4452 msgstr "SCHED_SETPARAM"
4455 #: build/C/man2/sched_setparam.2:30
4461 #: build/C/man2/sched_setparam.2:33
4462 msgid "sched_setparam, sched_getparam - set and get scheduling parameters"
4464 "sched_setparam, sched_getparam - スケジューリングパラメータの設定と取得を行な"
4468 #: build/C/man2/sched_setparam.2:38
4470 msgid "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
4471 msgstr "B<int sched_setparam(pid_t >I<pid>B<, const struct sched_param *>I<param>B<);>\n"
4474 #: build/C/man2/sched_setparam.2:40
4476 msgid "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
4477 msgstr "B<int sched_getparam(pid_t >I<pid>B<, struct sched_param *>I<param>B<);>\n"
4480 #: build/C/man2/sched_setparam.2:46
4483 "B<struct sched_param {\n"
4485 " int >I<sched_priority>B<;\n"
4489 "B<struct sched_param {\n"
4491 " int >I<sched_priority>B<;\n"
4496 #: build/C/man2/sched_setparam.2:60
4498 "B<sched_setparam>() sets the scheduling parameters associated with the "
4499 "scheduling policy for the process identified by I<pid>. If I<pid> is zero, "
4500 "then the parameters of the calling process are set. The interpretation of "
4501 "the argument I<param> depends on the scheduling policy of the process "
4502 "identified by I<pid>. See B<sched>(7) for a description of the scheduling "
4503 "policies supported under Linux."
4505 "B<sched_setparam>() は I<pid> で指定されたプロセスのスケジューリング方針 "
4506 "(scheduling policy) に 関連するスケジューリングパラメータを設定する。 I<pid> "
4507 "が 0 ならば、呼び出し元のプロセスのパラメータが設定される。 引き数 I<param> "
4508 "の解釈は、 I<pid> で指定されたプロセスのスケジューリング方針によって異なる。 "
4509 "Linux でサポートされているスケジューリング方針の説明は B<sched>(7) を参照の"
4513 #: build/C/man2/sched_setparam.2:66
4515 "B<sched_getparam>() retrieves the scheduling parameters for the process "
4516 "identified by I<pid>. If I<pid> is zero, then the parameters of the calling "
4517 "process are retrieved."
4519 "B<sched_getparam>() は I<pid> で指定されたプロセスのスケジューリングパラメー"
4520 "タを取得する。 I<pid> が 0 ならば、呼び出し元のプロセスのパラメータを取得す"
4524 #: build/C/man2/sched_setparam.2:75
4526 "B<sched_setparam>() checks the validity of I<param> for the scheduling "
4527 "policy of the thread. The value I<param-E<gt>sched_priority> must lie "
4528 "within the range given by B<sched_get_priority_min>(2) and "
4529 "B<sched_get_priority_max>(2)."
4531 "B<sched_setparam>() はスレッドのスケジューリング方針における I<param> の妥当"
4532 "性をチェックする。 I<param-E<gt>sched_priority> の値は "
4533 "B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) の範囲に入って"
4537 #: build/C/man2/sched_setparam.2:79
4539 "For a discussion of the privileges and resource limits related to scheduling "
4540 "priority and policy, see B<sched>(7)."
4542 "スケジューリングの優先度と方針に関連する特権とリソース制限の 議論に関しては "
4543 "B<sched>(7) を参照のこと。"
4546 #: build/C/man2/sched_setparam.2:87
4548 "POSIX systems on which B<sched_setparam>() and B<sched_getparam>() are "
4549 "available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
4551 "B<sched_setparam>() と B<sched_getparam>() が使用できる POSIX システムで"
4552 "は、 I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が定義されてい"
4556 #: build/C/man2/sched_setparam.2:96
4558 "On success, B<sched_setparam>() and B<sched_getparam>() return 0. On "
4559 "error, -1 is returned, and I<errno> is set appropriately."
4561 "成功した場合は B<sched_setparam>() と B<sched_getparam>() は 0 を返す。 エ"
4562 "ラーの場合は -1 が返され、 I<errno> が適切に設定される。"
4565 #: build/C/man2/sched_setparam.2:104
4566 msgid "Invalid arguments: I<param> is NULL or I<pid> is negative"
4567 msgstr "無効な引き数: I<param> が NULL である、または I<pid> が負である。"
4570 #: build/C/man2/sched_setparam.2:109
4572 "(B<sched_setparam>()) The argument I<param> does not make sense for the "
4573 "current scheduling policy."
4575 "(B<sched_setparam>()) 引き数 I<param> が現在のスケジューリング方針においては "
4579 #: build/C/man2/sched_setparam.2:116
4581 "(B<sched_setparam>()) The calling process does not have appropriate "
4582 "privileges (Linux: does not have the B<CAP_SYS_NICE> capability)."
4584 "(B<sched_setparam>()) 呼び出し元のプロセスが適切な特権を持っていない (Linux "
4585 "では、 B<CAP_SYS_NICE> ケーパビリティを持っていない)。"
4588 #: build/C/man2/sched_setparam.2:119
4589 msgid "The process whose ID is I<pid> could not be found."
4590 msgstr "プロセス ID I<pid> のプロセスが見つからなかった。"
4593 #: build/C/man2/sched_setparam.2:127
4595 "Scheduling parameters are in fact per-thread attributes on Linux; see "
4598 "Linux では、スケジューリングパラメータは実際にはスレッド単位の属性である。 "
4602 #: build/C/man2/sched_setparam.2:142
4604 "B<getpriority>(2), B<nice>(2), B<sched_get_priority_max>(2), "
4605 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
4606 "B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
4607 "B<sched_setattr>(2), B<setpriority>(2), B<capabilities>(7), B<sched>(7)"
4609 "B<getpriority>(2), B<nice>(2), B<sched_get_priority_max>(2), "
4610 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
4611 "B<sched_getscheduler>(2), B<sched_setaffinity>(2), B<sched_setscheduler>(2), "
4612 "B<sched_setattr>(2), B<setpriority>(2), B<capabilities>(7), B<sched>(7)"
4615 #: build/C/man2/sched_setscheduler.2:26
4617 msgid "SCHED_SETSCHEDULER"
4618 msgstr "SCHED_SETSCHEDULER"
4621 #: build/C/man2/sched_setscheduler.2:30
4623 "sched_setscheduler, sched_getscheduler - set and get scheduling policy/"
4626 "sched_setscheduler, sched_getscheduler - スケジューリングポリシーとパラメータ"
4630 #: build/C/man2/sched_setscheduler.2:35
4632 msgid "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
4633 msgstr "B<int sched_setscheduler(pid_t >I<pid>B<, int >I<policy>B<,>\n"
4636 #: build/C/man2/sched_setscheduler.2:37
4638 msgid "B< const struct sched_param *>I<param>B<);>\n"
4639 msgstr "B< const struct sched_param *>I<param>B<);>\n"
4642 #: build/C/man2/sched_setscheduler.2:39
4644 msgid "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
4645 msgstr "B<int sched_getscheduler(pid_t >I<pid>B<);>\n"
4648 #: build/C/man2/sched_setscheduler.2:49
4650 "The B<sched_setscheduler>() system call sets both the scheduling policy and "
4651 "parameters for the thread whose ID is specified in I<pid>. If I<pid> equals "
4652 "zero, the scheduling policy and parameters of the calling thread will be set."
4654 "B<sched_setscheduler>() システムコールは、 I<pid> で指定された ID を持つス"
4655 "レッドのスケジューリングポリシーとスケジューリングパラメーターの両方を設定す"
4656 "る。 I<pid> が 0 の場合、呼び出したスレッド自身のスケジューリングポリシーとス"
4657 "ケジューリングパラメーターが設定される。"
4660 #: build/C/man2/sched_setscheduler.2:53
4662 "The scheduling parameters are specified in the I<param> argument, which is a "
4663 "pointer to a structure of the following form:"
4667 #: build/C/man2/sched_setscheduler.2:61
4670 "struct sched_param {\n"
4672 " int sched_priority;\n"
4676 "struct sched_param {\n"
4678 " int sched_priority;\n"
4683 #: build/C/man2/sched_setscheduler.2:69
4685 "In the current implementation, the structure contains only one field, "
4686 "I<sched_priority>. The interpretation of I<param> depends on the selected "
4691 #: build/C/man2/sched_setscheduler.2:90
4692 msgid "For each of the above policies, I<param-E<gt>sched_priority> must be 0."
4696 #: build/C/man2/sched_setscheduler.2:116
4698 "For each of the above policies, I<param-E<gt>sched_priority> specifies a "
4699 "scheduling priority for the thread. This is a number in the range returned "
4700 "by calling B<sched_get_priority_min>(2) and B<sched_get_priority_min>(2) "
4701 "with the specified I<policy>. On Linux, these system calls return, "
4702 "respectively, 1 and 99."
4706 #: build/C/man2/sched_setscheduler.2:129
4708 "Since Linux 2.6.32, the B<SCHED_RESET_ON_FORK> flag can be ORed in I<policy> "
4709 "when calling B<sched_setscheduler>(). As a result of including this flag, "
4710 "children created by B<fork>(2) do not inherit privileged scheduling "
4711 "policies. See B<sched>(7) for details."
4713 "Linux 2.6.32 以降では、 B<sched_setscheduler>() を呼び出す際に I<policy> に "
4714 "B<SCHED_RESET_ON_FORK> フラグを OR で指定できる。このフラグが指定されると、 "
4715 "B<fork>(2) で作成された子プロセスは特権が必要なスケジューリングポリシーを継承"
4716 "しない。 詳細は B<sched>(7) を参照。"
4719 #: build/C/man2/sched_setscheduler.2:135
4721 "B<sched_getscheduler>() returns the current scheduling policy of the thread "
4722 "identified by I<pid>. If I<pid> equals zero, the policy of the calling "
4723 "thread will be retrieved."
4725 "B<sched_getscheduler>() は I<pid> で識別されるスレッドの現在のスケジューリン"
4726 "グポリシーを返す。I<pid> が 0 ならば、呼び出した スレッド自身のスケジューリン"
4730 #: build/C/man2/sched_setscheduler.2:145
4732 "On success, B<sched_setscheduler>() returns zero. On success, "
4733 "B<sched_getscheduler>() returns the policy for the thread (a nonnegative "
4734 "integer). On error, both calls return -1, and I<errno> is set appropriately."
4736 "成功した場合、 B<sched_setscheduler>() は 0 を返す。 成功した場合、 "
4737 "B<sched_getscheduler>() は現在のそのスレッドのポリシー (非負の整数) を返"
4738 "す。 エラーの場合、 どちらのコールも -1 を返し、 I<errno> が適切に設定され"
4742 #: build/C/man2/sched_setscheduler.2:153
4743 msgid "Invalid arguments: I<pid> is negative or I<param> is NULL."
4744 msgstr "無効な引き数: I<pid> が負である、または I<param> が NULL である。"
4747 #: build/C/man2/sched_setscheduler.2:158
4749 "(B<sched_setscheduler>()) I<policy> is not one of the recognized policies."
4750 msgstr "(B<sched_setscheduler>()) I<policy> が認識できるポリシーではない。"
4753 #: build/C/man2/sched_setscheduler.2:164
4755 "(B<sched_setscheduler>()) I<param> does not make sense for the specified "
4758 "(B<sched_setscheduler>()) 引き数 I<param> が指定された I<policy> では意味を持"
4762 #: build/C/man2/sched_setscheduler.2:167
4763 msgid "The calling thread does not have appropriate privileges."
4764 msgstr "呼び出したスレッドが適切な特権を持っていない。"
4767 #: build/C/man2/sched_setscheduler.2:173
4769 "POSIX.1-2001 (but see BUGS below). The B<SCHED_BATCH> and B<SCHED_IDLE> "
4770 "policies are Linux-specific."
4772 "POSIX.1-2001 (但し、下記のバグの節も参照)。 B<SCHED_BATCH> と B<SCHED_IDLE> "
4773 "ポリシーは Linux 固有である。"
4776 #: build/C/man2/sched_setscheduler.2:177
4778 "Further details of the semantics of all of the above \"normal\" and \"real-"
4779 "time\" scheduling policies can be found in B<sched>(7)."
4783 #: build/C/man2/sched_setscheduler.2:185
4785 "POSIX systems on which B<sched_setscheduler>() and B<sched_getscheduler>() "
4786 "are available define B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
4788 "POSIX システムでは I<E<lt>unistd.hE<gt>> に B<_POSIX_PRIORITY_SCHEDULING> が"
4789 "定義されている場合にのみ B<sched_setscheduler>() と "
4790 "B<sched_getscheduler>() が使用できる。"
4793 #: build/C/man2/sched_setscheduler.2:193
4795 "POSIX.1 does not detail the permissions that an unprivileged thread requires "
4796 "in order to call B<sched_setscheduler>(), and details vary across systems. "
4797 "For example, the Solaris 7 manual page says that the real or effective user "
4798 "ID of the caller must match the real user ID or the save set-user-ID of the "
4801 "POSIX.1 は、非特権スレッドが B<sched_setscheduler>() を呼び出すために必要な"
4802 "権限の詳細を規定しておらず、 詳細はシステムにより異なる。 例えば、Solaris 7 "
4803 "のマニュアルページでは、 呼び出し元の実ユーザ ID または実効ユーザ ID が 設定"
4804 "対象の実ユーザ ID か保存 (save) set-user-ID と 一致していなければならない、と"
4808 #: build/C/man2/sched_setscheduler.2:214
4810 "The scheduling policy and parameters are in fact per-thread attributes on "
4811 "Linux. The value returned from a call to B<gettid>(2) can be passed in the "
4812 "argument I<pid>. Specifying I<pid> as 0 will operate on the attributes of "
4813 "the calling thread, and passing the value returned from a call to "
4814 "B<getpid>(2) will operate on the attributes of the main thread of the "
4815 "thread group. (If you are using the POSIX threads API, then use "
4816 "B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
4817 "B<pthread_setschedprio>(3), instead of the B<sched_*>(2) system calls.)"
4819 "Linux では、 スケジューリングポリシーとスケジューリングパラメータは、 実際に"
4820 "はスレッド単位の属性である。 B<gettid>(2) の呼び出しの返り値をこのシステム"
4821 "コールの I<pid> 引き数として渡すことができる。 I<pid> に 0 を指定すると、 呼"
4822 "び出し元のスレッドの属性が設定される。 B<getpid>(2) コールからの返り値を "
4823 "I<pid> に指定すると、 スレッドグループのメインスレッドの属性が設定される "
4824 "(POSIX スレッド API を使用している場合は、 B<sched_*>(2) システムコールの代わ"
4825 "りに B<pthread_setschedparam>(3), B<pthread_getschedparam>(3), and "
4826 "B<pthread_setschedprio>(3) を使用すること)。"
4829 #: build/C/man2/sched_setscheduler.2:222
4831 "POSIX says that on success, B<sched_setscheduler>() should return the "
4832 "previous scheduling policy. Linux B<sched_setscheduler>() does not conform "
4833 "to this requirement, since it always returns 0 on success."
4835 "POSIX では、成功時に B<sched_setscheduler>() は直前のスケジューリングポリ"
4836 "シーを返すべきとされている。 Linux の B<sched_setscheduler>() はこの要求仕様"
4837 "に準拠しておらず、 成功時には常に 0 を返す。"
4840 #: build/C/man2/sched_setscheduler.2:241
4843 #| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
4844 #| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
4845 #| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
4846 #| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
4847 #| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
4849 "B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
4850 "B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), "
4851 "B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
4852 "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
4853 "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
4855 "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
4856 "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
4857 "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
4858 "B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
4859 "B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
4862 #: build/C/man2/sched_yield.2:29
4865 msgstr "SCHED_YIELD"
4868 #: build/C/man2/sched_yield.2:32
4869 msgid "sched_yield - yield the processor"
4870 msgstr "sched_yield - プロセッサーを空け渡す(yield)"
4873 #: build/C/man2/sched_yield.2:36
4874 msgid "B<int sched_yield(void);>"
4875 msgstr "B<int sched_yield(void);>"
4878 #: build/C/man2/sched_yield.2:41
4880 "B<sched_yield>() causes the calling thread to relinquish the CPU. The "
4881 "thread is moved to the end of the queue for its static priority and a new "
4882 "thread gets to run."
4884 "B<sched_yield>() を呼び出すことで、呼び出したスレッドが CPU の使用権を手放す"
4885 "ことができる。 そのスレッドは、そのスレッドの静的プライオリティのキューの末尾"
4886 "に 移動し、新しいスレッドが走り始める。"
4889 #: build/C/man2/sched_yield.2:48
4891 "On success, B<sched_yield>() returns 0. On error, -1 is returned, and "
4892 "I<errno> is set appropriately."
4894 "成功した場合は B<sched_yield>() は 0 を返す。 エラーの場合は -1 が返され、 "
4895 "I<errno> が適切に設定される。"
4898 #: build/C/man2/sched_yield.2:52
4899 msgid "In the Linux implementation, B<sched_yield>() always succeeds."
4900 msgstr "Linux の実装では、 B<sched_yield>() は常に成功する。"
4903 #: build/C/man2/sched_yield.2:59
4905 "If the calling thread is the only thread in the highest priority list at "
4906 "that time, it will continue to run after a call to B<sched_yield>()."
4908 "B<sched_yield>() を呼び出した時点で最大優先度のリストの中に呼び出し元のス"
4909 "レッドしか 存在しなければ、そのスレッドは呼び出し後も走り続けることになる。"
4912 #: build/C/man2/sched_yield.2:66
4914 "POSIX systems on which B<sched_yield>() is available define "
4915 "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
4917 "POSIX システムで B<sched_yield>() は I<E<lt>unistd.hE<gt>> に "
4918 "B<_POSIX_PRIORITY_SCHEDULING> が定義されている場合にのみ使用可能である。"
4921 #: build/C/man2/sched_yield.2:79
4923 "Strategic calls to B<sched_yield>() can improve performance by giving other "
4924 "threads or processes a chance to run when (heavily) contended resources (e."
4925 "g., mutexes) have been released by the caller. Avoid calling "
4926 "B<sched_yield>() unnecessarily or inappropriately (e.g., when resources "
4927 "needed by other schedulable threads are still held by the caller), since "
4928 "doing so will result in unnecessary context switches, which will degrade "
4929 "system performance."
4931 "B<sched_yield>() を戦略的に呼び出すことで、(極度に) 競合するリソース (mutex "
4932 "など) を呼び出し元が解放した際に他のスレッドやプロセスに実行機会を与えること"
4933 "で、 性能を上げることができる。 B<sched_yield>() を必要もないのに呼び出した"
4934 "り、不適切な場面 (例えば、他のスケジューリング 対象となるスレッドが必要とする"
4935 "リソースを呼び出し元が保持したままの状態) で呼び出したりするのは避けること。"
4936 "なぜなら、 B<sched_yield>() の呼び出しより不必要なコンテキストスイッチが起こ"
4937 "り、システム性能が 劣化する結果になるからである。"
4940 #: build/C/man7/sched.7:32
4946 #: build/C/man7/sched.7:35
4947 msgid "sched - overview of scheduling APIs"
4951 #: build/C/man7/sched.7:36
4957 #: build/C/man7/sched.7:38
4958 msgid "The Linux scheduling APIs are as follows:"
4962 #: build/C/man7/sched.7:38
4964 msgid "B<sched_setscheduler>(2)"
4965 msgstr "B<sched_setscheduler>(2)"
4968 #: build/C/man7/sched.7:41
4969 msgid "Set the scheduling policy and parameters of a specified thread."
4973 #: build/C/man7/sched.7:41
4975 msgid "B<sched_getscheduler>(2)"
4976 msgstr "B<sched_getscheduler>(2)"
4979 #: build/C/man7/sched.7:44
4981 #| msgid "Resetting scheduling policy for child processes"
4982 msgid "Return the scheduling policy of a specified thread."
4983 msgstr "子プロセスでのスケジューリングポリシーのリセット"
4986 #: build/C/man7/sched.7:44
4988 msgid "B<sched_setparam>(2)"
4989 msgstr "B<sched_setparam>(2)"
4992 #: build/C/man7/sched.7:47
4993 msgid "Set the scheduling parameters of a specified thread."
4997 #: build/C/man7/sched.7:47
4999 msgid "B<sched_getparam>(2)"
5000 msgstr "B<sched_getparam>(2)"
5003 #: build/C/man7/sched.7:50
5004 msgid "Fetch the scheduling parameters of a specified thread."
5008 #: build/C/man7/sched.7:50
5010 msgid "B<sched_get_priority_max>(2)"
5011 msgstr "B<sched_get_priority_max>(2)"
5014 #: build/C/man7/sched.7:53
5017 #| "The argument I<policy> does not identify a defined scheduling policy."
5018 msgid "Return the minimum priority available in a specified scheduling policy."
5019 msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
5022 #: build/C/man7/sched.7:53
5024 msgid "B<sched_get_priority_min>(2)"
5025 msgstr "B<sched_get_priority_min>(2)"
5028 #: build/C/man7/sched.7:56
5031 #| "The argument I<policy> does not identify a defined scheduling policy."
5032 msgid "Return the maximum priority available in a specified scheduling policy."
5033 msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
5036 #: build/C/man7/sched.7:56
5038 msgid "B<sched_rr_get_interval>(2)"
5039 msgstr "B<sched_rr_get_interval>(2)"
5042 #: build/C/man7/sched.7:60
5044 "Fetch the quantum used for threads that are scheduled under the \"round-robin"
5045 "\" scheduling policy."
5049 #: build/C/man7/sched.7:60
5051 msgid "B<sched_yield>(2)"
5052 msgstr "B<sched_yield>(2)"
5055 #: build/C/man7/sched.7:64
5057 "Cause the caller to relinquish the CPU, so that some other thread be "
5062 #: build/C/man7/sched.7:64
5064 msgid "B<sched_setaffinity>(2)"
5065 msgstr "B<sched_setaffinity>(2)"
5068 #: build/C/man7/sched.7:68
5069 msgid "(Linux-specific) Set the CPU affinity of a specified thread."
5073 #: build/C/man7/sched.7:68
5075 msgid "B<sched_getaffinity>(2)"
5076 msgstr "B<sched_getaffinity>(2)"
5079 #: build/C/man7/sched.7:72
5080 msgid "(Linux-specific) Get the CPU affinity of a specified thread."
5084 #: build/C/man7/sched.7:72
5086 msgid "B<sched_setattr>(2)"
5087 msgstr "B<sched_setattr>(2)"
5090 #: build/C/man7/sched.7:79
5092 "Set the scheduling policy and parameters of a specified thread. This (Linux-"
5093 "specific) system call provides a superset of the functionality of "
5094 "B<sched_setscheduler>(2) and B<sched_setparam>(2)."
5098 #: build/C/man7/sched.7:79
5100 msgid "B<sched_getattr>(2)"
5101 msgstr "B<sched_getattr>(2)"
5104 #: build/C/man7/sched.7:87
5106 "Fetch the scheduling policy and parameters of a specified thread. This "
5107 "(Linux-specific) system call provides a superset of the functionality of "
5108 "B<sched_getscheduler>(2) and B<sched_getparam>(2)."
5112 #: build/C/man7/sched.7:87
5114 msgid "Scheduling policies"
5115 msgstr "スケジューリングポリシー (scheduling policy)"
5118 #: build/C/man7/sched.7:95
5121 #| "The scheduler is the kernel component that decides which runnable thread "
5122 #| "will be executed by the CPU next. Each thread has an associated "
5123 #| "scheduling policy and a I<static> scheduling priority, I<sched_priority>; "
5124 #| "these are the settings that are modified by B<sched_setscheduler>(). The "
5125 #| "scheduler makes it decisions based on knowledge of the scheduling policy "
5126 #| "and static priority of all threads on the system."
5128 "The scheduler is the kernel component that decides which runnable thread "
5129 "will be executed by the CPU next. Each thread has an associated scheduling "
5130 "policy and a I<static> scheduling priority, I<sched_priority>. The "
5131 "scheduler makes its decisions based on knowledge of the scheduling policy "
5132 "and static priority of all threads on the system."
5134 "スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行"
5135 "可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ"
5136 "シーと 「静的」なスケジューリング優先度 I<sched_priority> が対応付けられ、 こ"
5137 "れらの設定は B<sched_setscheduler>() で変更できる。 スケジューラは、システム"
5138 "上の全スレッドのスケジューリングポリシーと 静的優先度に関する知識に基づいて決"
5142 #: build/C/man7/sched.7:100
5144 "For threads scheduled under one of the normal scheduling policies "
5145 "(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
5146 "used in scheduling decisions (it must be specified as 0)."
5148 "通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
5149 "B<SCHED_BATCH>) の下でスケジューリングされるスレッドでは、 "
5150 "I<sched_priority> はスケジューリングの決定に使用されない (I<sched_priority> "
5151 "には 0 を指定しなければならない)。"
5154 #: build/C/man7/sched.7:114
5156 "Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
5157 "B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
5158 "(high). (As the numbers imply, real-time threads always have higher "
5159 "priority than normal threads.) Note well: POSIX.1-2001 requires an "
5160 "implementation to support only a minimum 32 distinct priority levels for the "
5161 "real-time policies, and some systems supply just this minimum. Portable "
5162 "programs should use B<sched_get_priority_min>(2) and "
5163 "B<sched_get_priority_max>(2) to find the range of priorities supported for "
5164 "a particular policy."
5166 "リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>) の下でスケ"
5167 "ジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) から 99 (最"
5168 "高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のス"
5169 "レッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要求"
5170 "しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レ"
5171 "ベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の "
5172 "優先度しか提供されていない、ということである。 移植性が必要なプログラムで"
5173 "は、 B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) を使っ"
5174 "て、あるポリシーがサポートする優先度の範囲を調べるべきである。"
5177 #: build/C/man7/sched.7:120
5179 "Conceptually, the scheduler maintains a list of runnable threads for each "
5180 "possible I<sched_priority> value. In order to determine which thread runs "
5181 "next, the scheduler looks for the nonempty list with the highest static "
5182 "priority and selects the thread at the head of this list."
5184 "概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して 実行"
5185 "可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する"
5186 "ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス"
5190 #: build/C/man7/sched.7:124
5192 "A thread's scheduling policy determines where it will be inserted into the "
5193 "list of threads with equal static priority and how it will move inside this "
5196 "各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス"
5197 "レッドのリストの中のどこに挿入され、 このリストの中をどのように移動するかを決"
5201 #: build/C/man7/sched.7:132
5203 "All scheduling is preemptive: if a thread with a higher static priority "
5204 "becomes ready to run, the currently running thread will be preempted and "
5205 "returned to the wait list for its static priority level. The scheduling "
5206 "policy determines the ordering only within the list of runnable threads with "
5207 "equal static priority."
5209 "全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度"
5210 "のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ "
5211 "(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ"
5212 "ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順"
5216 #: build/C/man7/sched.7:132
5218 msgid "SCHED_FIFO: First in-first out scheduling"
5219 msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
5222 #: build/C/man7/sched.7:141
5224 "B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
5225 "means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
5226 "immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
5227 "B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple scheduling algorithm "
5228 "without time slicing. For threads scheduled under the B<SCHED_FIFO> policy, "
5229 "the following rules apply:"
5231 "B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 "
5232 "B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
5233 "B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは直ち"
5234 "に実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケジューリング"
5235 "アルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリングされているスレッ"
5239 #: build/C/man7/sched.7:141 build/C/man7/sched.7:146 build/C/man7/sched.7:149
5240 #: build/C/man7/sched.7:164 build/C/man7/sched.7:412 build/C/man7/sched.7:421
5241 #: build/C/man7/sched.7:444 build/C/man7/sched.7:452 build/C/man7/sched.7:491
5242 #: build/C/man7/sched.7:499 build/C/man7/sched.7:504 build/C/man7/sched.7:509
5248 #: build/C/man7/sched.7:146
5250 "A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
5251 "priority will stay at the head of the list for its priority and will resume "
5252 "execution as soon as all threads of higher priority are blocked again."
5254 "より高い優先度の他のスレッドによって取って代わられた B<SCHED_FIFO> スレッドは"
5255 "その優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 "
5256 "(block) した場合に実行を再開する。"
5259 #: build/C/man7/sched.7:149
5261 "When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
5262 "of the list for its priority."
5264 "B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ"
5267 #. In 2.2.x and 2.4.x, the thread is placed at the front of the queue
5268 #. In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
5270 #: build/C/man7/sched.7:164
5272 "A call to B<sched_setscheduler>(2), B<sched_setparam>(2), or "
5273 "B<sched_setattr>(2) will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
5274 "identified by I<pid> at the start of the list if it was runnable. As a "
5275 "consequence, it may preempt the currently running thread if it has the same "
5276 "priority. (POSIX.1-2001 specifies that the thread should go to the end of "
5279 "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2) は "
5280 "I<pid> で指定された B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能な"
5281 "場合、リストの最初に置く。 結果として、もし優先度が同じだった場合、 現在実行"
5282 "中のスレッドに先んじるかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後"
5286 #: build/C/man7/sched.7:168
5287 msgid "A thread calling B<sched_yield>(2) will be put at the end of the list."
5288 msgstr "B<sched_yield>(2) を呼び出したスレッドはリストの最後に置かれる。"
5291 #: build/C/man7/sched.7:172
5293 "No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
5294 "in the wait list of runnable threads with equal static priority."
5296 "その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるスレッ"
5297 "ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。"
5300 #: build/C/man7/sched.7:177
5302 "A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
5303 "is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
5305 "B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ"
5306 "ドによって置きかえられるか、 B<sched_yield>(2) を呼び出すまで実行を続ける。"
5309 #: build/C/man7/sched.7:177
5311 msgid "SCHED_RR: Round-robin scheduling"
5312 msgstr "SCHED_RR: ラウンドロビン (round-robin)スケジューリング"
5314 #. On Linux 2.4, the length of the RR interval is influenced
5315 #. by the process nice value -- MTK
5317 #: build/C/man7/sched.7:196
5319 "B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything described "
5320 "above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
5321 "is allowed to run only for a maximum time quantum. If a B<SCHED_RR> thread "
5322 "has been running for a time period equal to or longer than the time quantum, "
5323 "it will be put at the end of the list for its priority. A B<SCHED_RR> "
5324 "thread that has been preempted by a higher priority thread and subsequently "
5325 "resumes execution as a running thread will complete the unexpired portion of "
5326 "its round-robin time quantum. The length of the time quantum can be "
5327 "retrieved using B<sched_rr_get_interval>(2)."
5329 "B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
5330 "B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
5331 "それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
5332 "B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
5333 "その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
5334 "置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
5335 "ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
5336 "B<sched_rr_get_interval>(2) を使って取得できる。"
5339 #: build/C/man7/sched.7:196
5341 msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
5345 #: build/C/man7/sched.7:208
5347 "Since version 3.14, Linux provides a deadline scheduling policy "
5348 "(B<SCHED_DEADLINE>). This policy is currently implemented using GEDF "
5349 "(Global Earliest Deadline First) in conjunction with CBS (Constant "
5350 "Bandwidth Server). To set and fetch this policy and associated attributes, "
5351 "one must use the Linux-specific B<sched_setattr>(2) and "
5352 "B<sched_getattr>(2) system calls."
5356 #: build/C/man7/sched.7:226
5358 "A sporadic task is one that has a sequence of jobs, where each job is "
5359 "activated at most once per period. Each job also has a I<relative "
5360 "deadline>, before which it should finish execution, and a I<computation "
5361 "time>, which is the CPU time necessary for executing the job. The moment "
5362 "when a task wakes up because a new job has to be executed is called the "
5363 "I<arrival time> (also referred to as the request time or release time). The "
5364 "I<start time> is the time at which a task starts its execution. The "
5365 "I<absolute deadline> is thus obtained by adding the relative deadline to the "
5370 #: build/C/man7/sched.7:228
5371 msgid "The following diagram clarifies these terms:"
5375 #: build/C/man7/sched.7:239
5378 "arrival/wakeup absolute deadline\n"
5382 "-----x--------xooooooooooooooooo--------x--------x---\n"
5383 " |E<lt>- comp. time -E<gt>|\n"
5384 " |E<lt>------- relative deadline ------E<gt>|\n"
5385 " |E<lt>-------------- period -------------------E<gt>|\n"
5389 #: build/C/man7/sched.7:258
5391 "When setting a B<SCHED_DEADLINE> policy for a thread using "
5392 "B<sched_setattr>(2), one can specify three parameters: I<Runtime>, "
5393 "I<Deadline>, and I<Period>. These parameters do not necessarily correspond "
5394 "to the aforementioned terms: usual practice is to set Runtime to something "
5395 "bigger than the average computation time (or worst-case execution time for "
5396 "hard real-time tasks), Deadline to the relative deadline, and Period to the "
5397 "period of the task. Thus, for B<SCHED_DEADLINE> scheduling, we have:"
5401 #: build/C/man7/sched.7:269
5404 "arrival/wakeup absolute deadline\n"
5408 "-----x--------xooooooooooooooooo--------x--------x---\n"
5409 " |E<lt>-- Runtime -------E<gt>|\n"
5410 " |E<lt>----------- Deadline -----------E<gt>|\n"
5411 " |E<lt>-------------- Period -------------------E<gt>|\n"
5414 #. FIXME It looks as though specifying sched_period as 0 means
5415 #. "make sched_period the same as sched_deadline".
5416 #. This needs to be documented.
5418 #: build/C/man7/sched.7:289
5420 "The three deadline-scheduling parameters correspond to the I<sched_runtime>, "
5421 "I<sched_deadline>, and I<sched_period> fields of the I<sched_attr> "
5422 "structure; see B<sched_setattr>(2). These fields express value in "
5423 "nanoseconds. If I<sched_period> is specified as 0, then it is made the same "
5424 "as I<sched_deadline>."
5428 #: build/C/man7/sched.7:291
5429 msgid "The kernel requires that:"
5433 #: build/C/man7/sched.7:293
5435 msgid " sched_runtime E<lt>= sched_deadline E<lt>= sched_period\n"
5438 #. See __checkparam_dl in kernel/sched/core.c
5440 #: build/C/man7/sched.7:303
5442 "In addition, under the current implementation, all of the parameter values "
5443 "must be at least 1024 (i.e., just over one microsecond, which is the "
5444 "resolution of the implementation), and less than 2^63. If any of these "
5445 "checks fails, B<sched_setattr>(2) fails with the error B<EINVAL>."
5449 #: build/C/man7/sched.7:306
5451 "The CBS guarantees non-interference between tasks, by throttling threads "
5452 "that attempt to over-run their specified Runtime."
5456 #: build/C/man7/sched.7:319
5458 "To ensure deadline scheduling guarantees, the kernel must prevent situations "
5459 "where the set of B<SCHED_DEADLINE> threads is not feasible (schedulable) "
5460 "within the given constraints. The kernel thus performs an admittance test "
5461 "when setting or changing B<SCHED_DEADLINE> policy and attributes. This "
5462 "admission test calculates whether the change is feasible; if it is not "
5463 "B<sched_setattr>(2) fails with the error B<EBUSY>."
5467 #: build/C/man7/sched.7:325
5469 "For example, it is required (but not necessarily sufficient) for the total "
5470 "utilization to be less than or equal to the total number of CPUs available, "
5471 "where, since each thread can maximally run for Runtime per Period, that "
5472 "thread's utilization is its Runtime divided by its Period."
5476 #: build/C/man7/sched.7:336
5478 "In order to fulfil the guarantees that are made when a thread is admitted to "
5479 "the B<SCHED_DEADLINE> policy, B<SCHED_DEADLINE> threads are the highest "
5480 "priority (user controllable) threads in the system; if any B<SCHED_DEADLINE> "
5481 "thread is runnable, it will preempt any thread scheduled under one of the "
5486 #: build/C/man7/sched.7:344
5488 "A call to B<fork>(2) by a thread scheduled under the B<SCHED_DEADLINE> "
5489 "policy will fail with the error B<EAGAIN>, unless the thread has its reset-"
5490 "on-fork flag set (see below)."
5494 #. FIXME Calling sched_getparam() on a SCHED_DEADLINE thread
5495 #. fails with EINVAL, but sched_getscheduler() succeeds.
5496 #. Is that intended? (Why?)
5498 #: build/C/man7/sched.7:355
5500 "A B<SCHED_DEADLINE> thread that calls B<sched_yield>(2) will yield the "
5501 "current job and wait for a new period to begin."
5505 #: build/C/man7/sched.7:355
5507 msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
5508 msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
5511 #: build/C/man7/sched.7:372
5513 "B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is the "
5514 "standard Linux time-sharing scheduler that is intended for all threads that "
5515 "do not require the special real-time mechanisms. The thread to run is "
5516 "chosen from the static priority 0 list based on a I<dynamic> priority that "
5517 "is determined only inside this list. The dynamic priority is based on the "
5518 "nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2)) "
5519 "and increased for each time quantum the thread is ready to run, but denied "
5520 "to run by the scheduler. This ensures fair progress among all "
5521 "B<SCHED_OTHER> threads."
5523 "B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux 標準"
5524 "の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ"
5525 "ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの"
5526 "中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 "
5527 "動的な優先度は (B<nice>(2), B<setpriority>(2), B<sched_setattr>(2) により設定"
5528 "される) nice 値に基づいて決定されるもので、 単位時間毎に、スレッドが実行可能"
5529 "だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これに"
5530 "より、全ての B<SCHED_OTHER> スレッドでの公平性が保証される。"
5533 #: build/C/man7/sched.7:372
5535 msgid "SCHED_BATCH: Scheduling batch processes"
5536 msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
5539 #: build/C/man7/sched.7:384
5542 #| "(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
5543 #| "0. This policy is similar to B<SCHED_OTHER> in that it schedules the "
5544 #| "thread according to its dynamic priority (based on the nice value). The "
5545 #| "difference is that this policy will cause the scheduler to always assume "
5546 #| "that the thread is CPU-intensive. Consequently, the scheduler will apply "
5547 #| "a small scheduling penalty with respect to wakeup behaviour, so that this "
5548 #| "thread is mildly disfavored in scheduling decisions."
5550 "(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
5551 "0. This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
5552 "according to its dynamic priority (based on the nice value). The difference "
5553 "is that this policy will cause the scheduler to always assume that the "
5554 "thread is CPU-intensive. Consequently, the scheduler will apply a small "
5555 "scheduling penalty with respect to wakeup behavior, so that this thread is "
5556 "mildly disfavored in scheduling decisions."
5558 "(Linux 2.6.16 以降) B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 このポ"
5559 "リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン"
5560 "グが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポリシー"
5561 "では、スレッドが常に CPU に負荷のかかる (CPU-intensive) 処理を行うと、スケ"
5562 "ジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎にそのスレッ"
5563 "ドにスケジューリング上の ペナルティを少し課し、その結果、このスレッドはスケ"
5564 "ジューリングの決定で 若干冷遇されるようになる。"
5566 #. The following paragraph is drawn largely from the text that
5567 #. accompanied Ingo Molnar's patch for the implementation of
5569 #. commit b0a9499c3dd50d333e2aedb7e894873c58da3785
5571 #: build/C/man7/sched.7:394
5573 "This policy is useful for workloads that are noninteractive, but do not want "
5574 "to lower their nice value, and for workloads that want a deterministic "
5575 "scheduling policy without interactivity causing extra preemptions (between "
5576 "the workload's tasks)."
5578 "このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の"
5579 "タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な "
5580 "(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。"
5583 #: build/C/man7/sched.7:394
5585 msgid "SCHED_IDLE: Scheduling very low priority jobs"
5586 msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
5589 #: build/C/man7/sched.7:398
5591 "(Since Linux 2.6.23.) B<SCHED_IDLE> can be used only at static priority 0; "
5592 "the process nice value has no influence for this policy."
5594 "(Linux 2.6.23 以降) B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 このポリ"
5595 "シーではプロセスの nice 値はスケジューリングに影響を与えない。"
5598 #: build/C/man7/sched.7:406
5600 "This policy is intended for running jobs at extremely low priority (lower "
5601 "even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
5604 "非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
5605 "は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに低い"
5609 #: build/C/man7/sched.7:406
5611 msgid "Resetting scheduling policy for child processes"
5612 msgstr "子プロセスでのスケジューリングポリシーのリセット"
5615 #: build/C/man7/sched.7:412
5617 "Each thread has a reset-on-fork scheduling flag. When this flag is set, "
5618 "children created by B<fork>(2) do not inherit privileged scheduling "
5619 "policies. The reset-on-fork flag can be set by either:"
5623 #: build/C/man7/sched.7:421
5626 #| "The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned "
5627 #| "by B<sched_getscheduler>()"
5629 "ORing the B<SCHED_RESET_ON_FORK> flag into the I<policy> argument when "
5630 "calling B<sched_setscheduler>(2) (since Linux 2.6.32); or"
5632 "B<SCHED_RESET_ON_FORK> フラグは、 B<sched_getscheduler>() が返すポリシー値で"
5636 #: build/C/man7/sched.7:428
5638 "specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
5639 "calling B<sched_setattr>(2)."
5643 #: build/C/man7/sched.7:434
5645 "Note that the constants used with these two APIs have different names. The "
5646 "state of the reset-on-fork flag can analogously be retrieved using "
5647 "B<sched_getscheduler>(2) and B<sched_getattr>(2)."
5651 #: build/C/man7/sched.7:441
5653 "The reset-on-fork feature is intended for media-playback applications, and "
5654 "can be used to prevent applications evading the B<RLIMIT_RTTIME> resource "
5655 "limit (see B<getrlimit>(2)) by creating multiple child processes."
5659 #: build/C/man7/sched.7:444
5662 #| "More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
5663 #| "following rules apply for subsequently created children:"
5665 "More precisely, if the reset-on-fork flag is set, the following rules apply "
5666 "for subsequently created children:"
5668 "より正確には、 B<SCHED_RESET_ON_FORK> フラグが指定された場合、それ以降に作成"
5669 "される子プロセスに以下のルールが適用される。"
5672 #: build/C/man7/sched.7:452
5674 "If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
5675 "B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
5677 "呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か B<SCHED_RR> "
5678 "の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされる。"
5681 #: build/C/man7/sched.7:455
5683 "If the calling process has a negative nice value, the nice value is reset to "
5684 "zero in child processes."
5686 "子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセット"
5690 #: build/C/man7/sched.7:463
5693 #| "After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can be reset "
5694 #| "only if the thread has the B<CAP_SYS_NICE> capability. This flag is "
5695 #| "disabled in child processes created by B<fork>(2)."
5697 "After the reset-on-fork flag has been enabled, it can be reset only if the "
5698 "thread has the B<CAP_SYS_NICE> capability. This flag is disabled in child "
5699 "processes created by B<fork>(2)."
5701 "一度 B<SCHED_RESET_ON_FORK> フラグが有効にされた後は、このフラグをリセットで"
5702 "きるのは、スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけである。この"
5703 "フラグは B<fork>(2) で作成された子プロセスでは無効になる。"
5706 #: build/C/man7/sched.7:463
5708 msgid "Privileges and resource limits"
5712 #: build/C/man7/sched.7:475
5715 #| "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) "
5716 #| "threads can set a nonzero static priority (i.e., set a real-time "
5717 #| "scheduling policy). The only change that an unprivileged thread can make "
5718 #| "is to set the B<SCHED_OTHER> policy, and this can be done only if the "
5719 #| "effective user ID of the caller of B<sched_setscheduler>() matches the "
5720 #| "real or effective user ID of the target thread (i.e., the thread "
5721 #| "specified by I<pid>) whose policy is being changed."
5723 "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) threads "
5724 "can set a nonzero static priority (i.e., set a real-time scheduling "
5725 "policy). The only change that an unprivileged thread can make is to set the "
5726 "B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
5727 "the caller matches the real or effective user ID of the target thread (i.e., "
5728 "the thread specified by I<pid>) whose policy is being changed."
5730 "2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
5731 "(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設"
5732 "定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ"
5733 "る。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定することだけで"
5734 "あり、さらにこの変更を行えるのは B<sched_setscheduler>() の呼び出し元の実効"
5735 "ユーザ ID がポリシーの変更対象スレッド (I<pid> で指定されたスレッド) の実ユー"
5736 "ザ ID か実効ユーザ ID と 一致する場合だけである。"
5739 #: build/C/man7/sched.7:481
5741 "A thread must be privileged (B<CAP_SYS_NICE>) in order to set or modify a "
5742 "B<SCHED_DEADLINE> policy."
5746 #: build/C/man7/sched.7:491
5748 "Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
5749 "an unprivileged thread's static priority for the B<SCHED_RR> and "
5750 "B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
5751 "priority are as follows:"
5753 "Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 スケ"
5754 "ジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権スレッド"
5755 "の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際"
5759 #: build/C/man7/sched.7:499
5761 "If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then it "
5762 "can change its scheduling policy and priority, subject to the restriction "
5763 "that the priority cannot be set to a value higher than the maximum of its "
5764 "current priority and its B<RLIMIT_RTPRIO> soft limit."
5766 "非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されている場"
5767 "合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で"
5768 "きるが、優先度を現在の自身の優先度と B<RLIMIT_RTPRIO> ソフトリミットの大きい"
5769 "方よりも高い値に設定できないという制限が課される。"
5772 #: build/C/man7/sched.7:504
5774 "If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes are "
5775 "to lower the priority, or to switch to a non-real-time policy."
5777 "B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで"
5778 "ないポリシーへ切り替えるかの変更だけが許可される。"
5781 #: build/C/man7/sched.7:509
5783 "Subject to the same rules, another unprivileged thread can also make these "
5784 "changes, as long as the effective user ID of the thread making the change "
5785 "matches the real or effective user ID of the target thread."
5787 "ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール"
5788 "が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザ ID が"
5789 "変更対象のスレッドの実ユーザ ID か実効ユーザ ID と 一致している場合に限られ"
5792 #. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
5794 #: build/C/man7/sched.7:528
5797 #| "Special rules apply for the B<SCHED_IDLE>. In Linux kernels before "
5798 #| "2.6.39, an unprivileged thread operating under this policy cannot change "
5799 #| "its policy, regardless of the value of its B<RLIMIT_RTPRIO> resource "
5800 #| "limit. In Linux kernels since 2.6.39, an unprivileged thread can switch "
5801 #| "to either the B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its "
5802 #| "nice value falls within the range permitted by its B<RLIMIT_NICE> "
5803 #| "resource limit (see B<getrlimit>(2))."
5805 "Special rules apply for the B<SCHED_IDLE> policy. In Linux kernels before "
5806 "2.6.39, an unprivileged thread operating under this policy cannot change its "
5807 "policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit. In "
5808 "Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
5809 "B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
5810 "within the range permitted by its B<RLIMIT_NICE> resource limit (see "
5813 "B<SCHED_IDLE> の場合には特別なルールが適用される。 2.6.39 より前の Linux カー"
5814 "ネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リソース"
5815 "上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の "
5816 "Linux カーネルでは、非特権スレッドは、自分の nice 値が B<RLIMIT_NICE> リソー"
5817 "ス上限 (B<getrlimit>(2) 参照) で許可された範囲である限りは、自分のスケジュー"
5818 "リングポリシーを B<SCHED_BATCH> か B<SCHED_NORMAL> ポリシーに切り替えることが"
5822 #: build/C/man7/sched.7:539
5824 "Privileged (B<CAP_SYS_NICE>) threads ignore the B<RLIMIT_RTPRIO> limit; as "
5825 "with older kernels, they can make arbitrary changes to scheduling policy and "
5826 "priority. See B<getrlimit>(2) for further information on B<RLIMIT_RTPRIO>."
5828 "特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
5829 "B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジューリン"
5830 "グポリシーと優先度に対し 任意の変更を行うことができる。 B<RLIMIT_RTPRIO> に関"
5831 "するもっと詳しい情報は B<getrlimit>(2) を参照のこと。"
5834 #: build/C/man7/sched.7:539
5836 msgid "Limiting the CPU usage of real-time and deadline processes"
5840 #: build/C/man7/sched.7:552
5843 #| "Since a nonblocking infinite loop in a thread scheduled under "
5844 #| "B<SCHED_FIFO> or B<SCHED_RR> will block all threads with lower priority "
5845 #| "forever, a software developer should always keep available on the console "
5846 #| "a shell scheduled under a higher static priority than the tested "
5847 #| "application. This will allow an emergency kill of tested real-time "
5848 #| "applications that do not block or terminate as expected. See also the "
5849 #| "description of the B<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
5851 "A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
5852 "B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all threads with lower "
5853 "priority forever. Prior to Linux 2.6.25, the only way of preventing a "
5854 "runaway real-time process from freezing the system was to run (at the "
5855 "console) a shell scheduled under a higher static priority than the tested "
5856 "application. This allows an emergency kill of tested real-time applications "
5857 "that do not block or terminate as expected."
5859 "B<SCHED_FIFO> や B<SCHED_RR> でスケジューリングされる スレッドが停止せずに無"
5860 "限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 (block) さ"
5861 "せてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストす"
5862 "る アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止"
5863 "したり終了したりしないリアルタイム アプリケーションを緊急終了させることが可能"
5864 "になる。 B<getrlimit>(2) のリソース制限 B<RLIMIT_RTTIME> の説明も参照のこ"
5868 #: build/C/man7/sched.7:562
5870 "Since Linux 2.6.25, there are other techniques for dealing with runaway real-"
5871 "time and deadline processes. One of these is to use the B<RLIMIT_RTTIME> "
5872 "resource limit to set a ceiling on the CPU time that a real-time process may "
5873 "consume. See B<getrlimit>(2) for details."
5877 #: build/C/man7/sched.7:570
5879 "Since version 2.6.25, Linux also provides two I</proc> files that can be "
5880 "used to reserve a certain amount of CPU time to be used by non-real-time "
5881 "processes. Reserving some CPU time in this fashion allows some CPU time to "
5882 "be allocated to (say) a root shell that can be used to kill a runaway "
5883 "process. Both of these files specify time values in microseconds:"
5887 #: build/C/man7/sched.7:570
5889 msgid "I</proc/sys/kernel/sched_rt_period_us>"
5893 #: build/C/man7/sched.7:578
5895 "This file specifies a scheduling period that is equivalent to 100% CPU "
5896 "bandwidth. The value in this file can range from 1 to B<INT_MAX>, giving an "
5897 "operating range of 1 microsecond to around 35 minutes. The default value in "
5898 "this file is 1,000,000 (1 second)."
5902 #: build/C/man7/sched.7:578
5904 msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
5908 #: build/C/man7/sched.7:591
5910 "The value in this file specifies how much of the \"period\" time can be used "
5911 "by all real-time and deadline scheduled processes on the system. The value "
5912 "in this file can range from -1 to B<INT_MAX>-1. Specifying -1 makes the "
5913 "runtime the same as the period; that is, no CPU time is set aside for non-"
5914 "real-time processes (which was the Linux behavior before kernel 2.6.25). "
5915 "The default value in this file is 950,000 (0.95 seconds), meaning that 5% of "
5916 "the CPU time is reserved for processes that don't run under a real-time or "
5917 "deadline scheduling policy."
5921 #: build/C/man7/sched.7:592
5923 msgid "Response time"
5924 msgstr "応答時間 (response time)"
5927 #. .BR request_irq (9).
5929 #: build/C/man7/sched.7:600
5931 "A blocked high priority thread waiting for I/O has a certain response time "
5932 "before it is scheduled again. The device driver writer can greatly reduce "
5933 "this response time by using a \"slow interrupt\" interrupt handler."
5935 "I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい"
5936 "くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt"
5937 "\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで"
5941 #: build/C/man7/sched.7:600
5943 msgid "Miscellaneous"
5947 #: build/C/man7/sched.7:605
5949 "Child processes inherit the scheduling policy and parameters across a "
5950 "B<fork>(2). The scheduling policy and parameters are preserved across "
5953 "子プロセスは B<fork>(2) の際に親プロセスのスケジューリングポリシーとパラメー"
5954 "タを継承する。 B<execve>(2) の前後で、スケジューリングポリシーとパラメータは"
5958 #: build/C/man7/sched.7:611
5960 "Memory locking is usually needed for real-time processes to avoid paging "
5961 "delays; this can be done with B<mlock>(2) or B<mlockall>(2)."
5963 "リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B<mlock>(2) "
5964 "や B<mlockall>(2) を使ってメモリロックをしなければならない。"
5967 #: build/C/man7/sched.7:622
5969 "Originally, Standard Linux was intended as a general-purpose operating "
5970 "system being able to handle background processes, interactive applications, "
5971 "and less demanding real-time applications (applications that need to usually "
5972 "meet timing deadlines). Although the Linux kernel 2.6 allowed for kernel "
5973 "preemption and the newly introduced O(1) scheduler ensures that the time "
5974 "needed to schedule is fixed and deterministic irrespective of the number of "
5975 "active tasks, true real-time computing was not possible up to kernel version "
5978 "もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され"
5979 "ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要"
5980 "求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 "
5981 "(deadline) を満たす必要があるアプリケーション) を扱うことができた。 Linux "
5982 "カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ"
5983 "り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ"
5984 "らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが"
5985 "保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ"
5986 "ンピューティングは実現できなかった。"
5989 #: build/C/man7/sched.7:622
5991 msgid "Real-time features in the mainline Linux kernel"
5992 msgstr "本流の Linux カーネルでのリアルタイム機能"
5994 #. FIXME . Probably this text will need some minor tweaking
5995 #. by about the time of 2.6.30; ask Carsten Emde about this then.
5997 #: build/C/man7/sched.7:636
5999 "From kernel version 2.6.18 onward, however, Linux is gradually becoming "
6000 "equipped with real-time capabilities, most of which are derived from the "
6001 "former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
6002 "Gleixner, Steven Rostedt, and others. Until the patches have been "
6003 "completely merged into the mainline kernel (this is expected to be around "
6004 "kernel version 2.6.30), they must be installed to achieve the best real-time "
6005 "performance. These patches are named:"
6007 "カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
6008 "あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
6009 "Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
6010 "からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
6011 "では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
6012 "性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
6016 #: build/C/man7/sched.7:640
6018 msgid "patch-I<kernelversion>-rtI<patchversion>\n"
6019 msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
6022 #: build/C/man7/sched.7:646
6024 "and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
6025 "kernel\\:/projects\\:/rt/> E<.UE .>"
6027 "という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
6028 "projects\\:/rt/> E<.UE> からダウンロードできる。"
6031 #: build/C/man7/sched.7:655
6033 "Without the patches and prior to their full inclusion into the mainline "
6034 "kernel, the kernel configuration offers only the three preemption classes "
6035 "B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
6036 "B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
6037 "considerable reduction of the worst-case scheduling latency."
6039 "このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する"
6040 "までは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
6041 "B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプショ"
6042 "ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合"
6043 "のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。"
6046 #: build/C/man7/sched.7:664
6048 "With the patches applied or after their full inclusion into the mainline "
6049 "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
6050 "available. If this is selected, Linux is transformed into a regular real-"
6051 "time operating system. The FIFO and RR scheduling policies are then used to "
6052 "run a thread with true real-time priority and a minimum worst-case "
6053 "scheduling latency."
6055 "パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了し"
6056 "た後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能になる。"
6057 "この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変"
6058 "身する。 この場合には、 FIFO と RR のスケジューリングポリシーは、 真のリアル"
6059 "タイム優先度を持つスレッドを最悪の場合のスケジューリング遅延が 最小となる環境"
6060 "で動作させるために使われることになる。"
6063 #: build/C/man7/sched.7:691
6066 #| "B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), "
6067 #| "B<munlock>(2), B<munlockall>(2), B<nice>(2), "
6068 #| "B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
6069 #| "B<sched_getscheduler>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), "
6070 #| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
6071 #| "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
6072 #| "B<setpriority>(2), B<pthread_getaffinity_np>(3), "
6073 #| "B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
6076 "B<chrt>(1), B<taskset>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), "
6077 "B<munlock>(2), B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
6078 "B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
6079 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
6080 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
6081 "B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
6082 "B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
6085 "B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
6086 "B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
6087 "B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
6088 "B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
6089 "B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
6090 "B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
6091 "B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
6095 #: build/C/man7/sched.7:695
6097 "I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
6098 "& Associates, Inc., ISBN 1-56592-074-0."
6100 "I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
6101 "& Associates, Inc., ISBN 1-56592-074-0."
6104 #: build/C/man7/sched.7:702
6106 "The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
6107 "I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/scheduler/"
6108 "sched-design-CFS.txt>, and I<Documentation/scheduler/sched-nice-design.txt>"
6112 #: build/C/man2/setns.2:8
6118 #: build/C/man2/setns.2:11
6119 msgid "setns - reassociate thread with a namespace"
6120 msgstr "setns - スレッドに名前空間を関連付けしなおす"
6123 #: build/C/man2/setns.2:17
6125 msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
6126 msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
6129 #: build/C/man2/setns.2:21
6131 "Given a file descriptor referring to a namespace, reassociate the calling "
6132 "thread with that namespace."
6134 "名前空間を参照するファイルディスクリプタを指定すると、\n"
6135 "呼び出したスレッドにその名前空間を関連付けしなおす。"
6138 #: build/C/man2/setns.2:34
6141 #| "The I<fd> argument is a file descriptor referring to one of the namespace "
6142 #| "entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
6143 #| "information on I</proc/[pid]/ns/>. The calling thread will be "
6144 #| "reassociated with the corresponding namespace, subject to any constraints "
6145 #| "imposed by the I<nstype> argument."
6147 "The I<fd> argument is a file descriptor referring to one of the namespace "
6148 "entries in a I</proc/[pid]/ns/> directory; see B<namespaces>(7) for further "
6149 "information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
6150 "with the corresponding namespace, subject to any constraints imposed by the "
6151 "I<nstype> argument."
6153 "I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリ\n"
6154 "のいずれかを参照するファイルディスクリプタである。\n"
6155 "I</proc/[pid]/ns/> の詳細は B<proc>(5) を参照。\n"
6156 "I<nstype> 引き数で指定された制限の範囲内で、\n"
6157 "呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
6160 #: build/C/man2/setns.2:40
6162 "The I<nstype> argument specifies which type of namespace the calling thread "
6163 "may be reassociated with. This argument can have one of the following "
6166 "I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を\n"
6167 "関連付けしなおすことができるかを指定する。\n"
6168 "この引き数には以下のいずれかの値を指定できる。"
6171 #: build/C/man2/setns.2:40
6177 #: build/C/man2/setns.2:43
6178 msgid "Allow any type of namespace to be joined."
6179 msgstr "どのタイプの名前空間も関連付けることができる。"
6182 #: build/C/man2/setns.2:43
6184 #| msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
6185 msgid "B<CLONE_NEWIPC> (since Linux 3.0)"
6186 msgstr "B<CLONE_NEWIPC> (Linux 2.6.19 以降)"
6189 #: build/C/man2/setns.2:47
6190 msgid "I<fd> must refer to an IPC namespace."
6191 msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
6194 #: build/C/man2/setns.2:47
6196 #| msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
6197 msgid "B<CLONE_NEWNET> (since Linux 3.0)"
6198 msgstr "B<CLONE_NEWNET> (Linux 2.6.24 以降)"
6201 #: build/C/man2/setns.2:51
6202 msgid "I<fd> must refer to a network namespace."
6203 msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
6206 #: build/C/man2/setns.2:51
6208 #| msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
6209 msgid "B<CLONE_NEWNS> (since Linux 3.8)"
6210 msgstr "B<CLONE_NEWNS> (Linux 2.4.19 以降)"
6213 #: build/C/man2/setns.2:55
6215 #| msgid "I<fd> must refer to a network namespace."
6216 msgid "I<fd> must refer to a mount namespace."
6217 msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
6220 #: build/C/man2/setns.2:55 build/C/man2/unshare.2:149
6222 #| msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
6223 msgid "B<CLONE_NEWPID> (since Linux 3.8)"
6224 msgstr "B<CLONE_NEWPID> (Linux 2.6.24 以降)"
6227 #: build/C/man2/setns.2:59
6229 #| msgid "I<fd> must refer to an IPC namespace."
6230 msgid "I<fd> must refer to a PID namespace."
6231 msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
6234 #: build/C/man2/setns.2:59 build/C/man2/unshare.2:176
6236 #| msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
6237 msgid "B<CLONE_NEWUSER> (since Linux 3.8)"
6238 msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
6241 #: build/C/man2/setns.2:63
6243 #| msgid "I<fd> must refer to a network namespace."
6244 msgid "I<fd> must refer to a user namespace."
6245 msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
6248 #: build/C/man2/setns.2:63
6250 #| msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
6251 msgid "B<CLONE_NEWUTS> (since Linux 3.0)"
6252 msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
6255 #: build/C/man2/setns.2:67
6256 msgid "I<fd> must refer to a UTS namespace."
6257 msgstr "I<fd> は UTS 名前空間を参照していなければならない。"
6260 #: build/C/man2/setns.2:82
6262 "Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
6263 "what type of namespace is referred to by I<fd>. Specifying a nonzero value "
6264 "for I<nstype> is useful if the caller does not know what type of namespace "
6265 "is referred to by I<fd> and wants to ensure that the namespace is of a "
6266 "particular type. (The caller might not know the type of the namespace "
6267 "referred to by I<fd> if the file descriptor was opened by another process "
6268 "and, for example, passed to the caller via a UNIX domain socket.)"
6270 "呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
6271 "(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
6272 "である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
6273 "知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
6274 "I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の\n"
6275 "プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
6276 "側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
6277 "参照しているかを知らない可能性がある。)"
6280 #: build/C/man2/setns.2:97
6282 "B<CLONE_NEWPID> behaves somewhat differently from the other I<nstype> "
6283 "values: reassociating the calling thread with a PID namespace only changes "
6284 "the PID namespace that child processes of the caller will be created in; it "
6285 "does not change the PID namespace of the caller itself. Reassociating with "
6286 "a PID namespace is only allowed if the PID namespace specified by I<fd> is a "
6287 "descendant (child, grandchild, etc.) of the PID namespace of the caller. "
6288 "For further details on PID namespaces, see B<pid_namespaces>(7)."
6291 #. See kernel/user_namespace.c:userns_install() [3.8 source]
6292 #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
6293 #. https://lwn.net/Articles/543273/
6295 #: build/C/man2/setns.2:124
6297 "A process reassociating itself with a user namespace must have the "
6298 "B<CAP_SYS_ADMIN> capability in the target user namespace. Upon successfully "
6299 "joining a user namespace, a process is granted all capabilities in that "
6300 "namespace, regardless of its user and group IDs. A multithreaded process "
6301 "may not change user namespace with B<setns>(). It is not permitted to use "
6302 "B<setns>() to reenter the caller's current user namespace. This prevents a "
6303 "caller that has dropped capabilities from regaining those capabilities via a "
6304 "call to B<setns>(). For security reasons, a process can't join a new user "
6305 "namespace if it is sharing filesystem-related attributes (the attributes "
6306 "whose sharing is controlled by the B<clone>(2) B<CLONE_FS> flag) with "
6307 "another process. For further details on user namespaces, see "
6308 "B<user_namespaces>(7)."
6311 #. Above check is in fs/namespace.c:mntns_install() [3.8 source]
6313 #: build/C/man2/setns.2:138
6315 "A process may not be reassociated with a new mount namespace if it is "
6316 "multithreaded. Changing the mount namespace requires that the caller "
6317 "possess both B<CAP_SYS_CHROOT> and B<CAP_SYS_ADMIN> capabilities in its own "
6318 "user namespace and B<CAP_SYS_ADMIN> in the target mount namespace. See "
6319 "B<user_namespaces>(7) for details on the interaction of user namespaces and "
6324 #: build/C/man2/setns.2:145
6326 "On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
6327 "is set to indicate the error."
6329 "成功すると I<setns>() は 0 を返す。\n"
6330 "失敗すると、 -1 が返され、 I<errno> にエラーを示す値が設定される。"
6333 #: build/C/man2/setns.2:150
6334 msgid "I<fd> is not a valid file descriptor."
6335 msgstr "I<fd> が有効なファイルディスクリプタではない。"
6338 #: build/C/man2/setns.2:155
6341 #| "I<fd> refers to a namespace whose type does not match that specified in "
6342 #| "I<nstype>, or there is problem with reassociating the the thread with the "
6343 #| "specified namespace."
6345 "I<fd> refers to a namespace whose type does not match that specified in "
6348 "I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。\n"
6349 "または、指定された名前空間をそのスレッドに関連付けし直す際に問題\n"
6353 #: build/C/man2/setns.2:159
6355 #| msgid "setns - reassociate thread with a namespace"
6357 "There is problem with reassociating the thread with the specified namespace."
6358 msgstr "setns - スレッドに名前空間を関連付けしなおす"
6361 #: build/C/man2/setns.2:163
6363 "The caller attempted to join the user namespace in which it is already a "
6367 #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
6369 #: build/C/man2/setns.2:170
6371 "The caller shares filesystem (B<CLONE_FS>) state (in particular, the root "
6372 "directory) with other processes and tried to join a new user namespace."
6375 #. See kernel/user_namespace.c::userns_install() [kernel 3.15 sources]
6377 #: build/C/man2/setns.2:174
6378 msgid "The caller is multithreaded and tried to join a new user namespace."
6382 #: build/C/man2/setns.2:177
6383 msgid "Cannot allocate sufficient memory to change the specified namespace."
6384 msgstr "指定された名前空間に変更するのに必要なメモリが割り当てられない。"
6387 #: build/C/man2/setns.2:181
6390 #| "The calling process did not have the required privileges for this "
6393 "The calling thread did not have the required capability for this operation."
6394 msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
6397 #: build/C/man2/setns.2:186
6399 "The B<setns>() system call first appeared in Linux in kernel 3.0; library "
6400 "support was added to glibc in version 2.14."
6402 "B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
6403 "ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
6406 #: build/C/man2/setns.2:190
6407 msgid "The B<setns>() system call is Linux-specific."
6408 msgstr "B<setns>() システムコールは Linux 固有である。"
6411 #: build/C/man2/setns.2:196
6413 "Not all of the attributes that can be shared when a new thread is created "
6414 "using B<clone>(2) can be changed using B<setns>()."
6416 "新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
6417 "B<setns>() を使って変更できるわけではない。"
6420 #: build/C/man2/setns.2:205
6422 "The program below takes two or more arguments. The first argument specifies "
6423 "the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
6424 "directory. The remaining arguments specify a command and its arguments. "
6425 "The program opens the namespace file, joins that namespace using B<setns>(), "
6426 "and executes the specified command inside that namespace."
6428 "以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
6429 "proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
6430 "数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
6431 "プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
6435 #: build/C/man2/setns.2:215
6437 "The following shell session demonstrates the use of this program (compiled "
6438 "as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
6439 "example program in the B<clone>(2) man page (complied as a binary named "
6442 "以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
6443 "としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
6444 "B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
6447 #: build/C/man2/setns.2:223
6449 "We begin by executing the example program in B<clone>(2) in the "
6450 "background. That program creates a child in a separate UTS namespace. The "
6451 "child changes the hostname in its namespace, and then both processes display "
6452 "the hostnames in their UTS namespaces, so that we can see that they are "
6455 "まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
6456 "ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
6457 "空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
6458 "れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
6461 #: build/C/man2/setns.2:235
6464 "$ B<su> # Need privilege for namespace operations\n"
6466 "# B<./newuts bizarro &>\n"
6468 "clone() returned 3550\n"
6469 "uts.nodename in child: bizarro\n"
6470 "uts.nodename in parent: antero\n"
6471 "# B<uname -n> # Verify hostname in the shell\n"
6474 "$ B<su> # 名前空間の操作には特権が必要\n"
6476 "# B<./newuts bizarro &>\n"
6478 "clone() returned 3550\n"
6479 "uts.nodename in child: bizarro\n"
6480 "uts.nodename in parent: antero\n"
6481 "# B<uname -n> # シェルでホスト名を確認\n"
6485 #: build/C/man2/setns.2:242
6487 "We then run the program shown below, using it to execute a shell. Inside "
6488 "that shell, we verify that the hostname is the one set by the child created "
6489 "by the first program:"
6491 "次に、以下のプログラムを使ってシェルを実行する。 このシェルの中では、ホスト名"
6492 "が最初のプログラムで作成された子プロセスが設定したホスト名になっていることを"
6496 #: build/C/man2/setns.2:248
6499 "# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
6500 "# B<uname -n> # Executed in shell started by ns_exec\n"
6503 "# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
6504 "# B<uname -n> # ns_exec で起動されたシェル内で実行\n"
6508 #: build/C/man2/setns.2:258
6511 "#define _GNU_SOURCE\n"
6512 "#include E<lt>fcntl.hE<gt>\n"
6513 "#include E<lt>sched.hE<gt>\n"
6514 "#include E<lt>unistd.hE<gt>\n"
6515 "#include E<lt>stdlib.hE<gt>\n"
6516 "#include E<lt>stdio.hE<gt>\n"
6518 "#define _GNU_SOURCE\n"
6519 "#include E<lt>fcntl.hE<gt>\n"
6520 "#include E<lt>sched.hE<gt>\n"
6521 "#include E<lt>unistd.hE<gt>\n"
6522 "#include E<lt>stdlib.hE<gt>\n"
6523 "#include E<lt>stdio.hE<gt>\n"
6526 #: build/C/man2/setns.2:266
6530 "main(int argc, char *argv[])\n"
6535 "main(int argc, char *argv[])\n"
6540 #: build/C/man2/setns.2:271
6543 " if (argc E<lt> 3) {\n"
6544 " fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
6545 " exit(EXIT_FAILURE);\n"
6548 " if (argc E<lt> 3) {\n"
6549 " fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
6550 " exit(EXIT_FAILURE);\n"
6554 #: build/C/man2/setns.2:275
6557 #| " fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
6558 #| " if (fd == -1)\n"
6559 #| " errExit(\"open\");\n"
6561 " fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
6563 " errExit(\"open\");\n"
6565 " fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */\n"
6567 " errExit(\"open\");\n"
6570 #: build/C/man2/setns.2:278
6573 #| " if (setns(fd, 0) == -1) /* Join that namespace */\n"
6574 #| " errExit(\"setns\");\n"
6576 " if (setns(fd, 0) == -1) /* Join that namespace */\n"
6577 " errExit(\"setns\");\n"
6579 " if (setns(fd, 0) == -1) /* 名前空間に参加 */\n"
6580 " errExit(\"setns\");\n"
6583 #: build/C/man2/setns.2:282
6586 #| " execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
6587 #| " errExit(\"execvp\");\n"
6590 " execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
6591 " errExit(\"execvp\");\n"
6594 " execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
6595 " errExit(\"execvp\");\n"
6599 #: build/C/man2/setns.2:290
6601 #| msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
6603 "B<clone>(2), B<fork>(2), B<unshare>(2), B<vfork>(2), B<namespaces>(7), "
6605 msgstr "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
6608 #: build/C/man2/unshare.2:20
6614 #: build/C/man2/unshare.2:23
6615 msgid "unshare - disassociate parts of the process execution context"
6616 msgstr "unshare - プロセス実行コンテキストの一部を分離する"
6619 #: build/C/man2/unshare.2:28
6621 msgid "B<int unshare(int >I<flags>B<);>\n"
6622 msgstr "B<int unshare(int >I<flags>B<);>\n"
6625 #: build/C/man2/unshare.2:36
6626 msgid "B<unshare>():"
6627 msgstr "B<unshare>():"
6630 #: build/C/man2/unshare.2:62
6632 "B<unshare>() allows a process to disassociate parts of its execution "
6633 "context that are currently being shared with other processes. Part of the "
6634 "execution context, such as the mount namespace, is shared implicitly when a "
6635 "new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
6636 "such as virtual memory, may be shared by explicit request when creating a "
6637 "process using B<clone>(2)."
6639 "B<unshare>() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキ"
6640 "ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名"
6641 "前空間 (mount namespace) などは、新しいプロセスを B<fork>(2) または "
6642 "B<vfork>(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ"
6643 "リなどは、 B<clone>(2) を使ってプロセスを生成するときに、明示的に共有するこ"
6647 #: build/C/man2/unshare.2:67
6649 "The main use of B<unshare>() is to allow a process to control its shared "
6650 "execution context without creating a new process."
6652 "B<unshare>() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
6653 "有実行コンテキストを制御することである。"
6656 #: build/C/man2/unshare.2:74
6658 "The I<flags> argument is a bit mask that specifies which parts of the "
6659 "execution context should be unshared. This argument is specified by ORing "
6660 "together zero or more of the following constants:"
6662 "I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
6663 "するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
6666 #: build/C/man2/unshare.2:74
6668 msgid "B<CLONE_FILES>"
6669 msgstr "B<CLONE_FILES>"
6672 #: build/C/man2/unshare.2:82
6674 "Reverse the effect of the B<clone>(2) B<CLONE_FILES> flag. Unshare the "
6675 "file descriptor table, so that the calling process no longer shares its file "
6676 "descriptors with any other process."
6678 "B<clone>(2) B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプタ"
6679 "テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
6683 #: build/C/man2/unshare.2:82
6686 msgstr "B<CLONE_FS>"
6689 #: build/C/man2/unshare.2:96
6691 "Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
6692 "attributes, so that the calling process no longer shares its root directory "
6693 "(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
6694 "attributes with any other process."
6696 "B<clone>(2) B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
6697 "せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
6698 "クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
6701 #: build/C/man2/unshare.2:113
6703 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWIPC> flag. "
6704 "Unshare the System\\ V IPC namespace, so that the calling process has a "
6705 "private copy of the System\\ V IPC namespace which is not shared with any "
6706 "other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
6707 "as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
6709 "このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。\n"
6710 "System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n"
6711 "共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n"
6712 "すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を\n"
6713 "使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
6716 #: build/C/man2/unshare.2:128
6718 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
6719 "Unshare the network namespace, so that the calling process is moved into a "
6720 "new network namespace which is not shared with any previously existing "
6721 "process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
6723 "このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
6724 "ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
6725 "い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
6726 "には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
6729 #: build/C/man2/unshare.2:128
6731 msgid "B<CLONE_NEWNS>"
6732 msgstr "B<CLONE_NEWNS>"
6734 #. These flag name are inconsistent:
6735 #. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
6736 #. CLONE_FS, and CLONE_FILES reverse the action of the clone()
6737 #. flags of the same name.
6739 #: build/C/man2/unshare.2:149
6741 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
6742 "Unshare the mount namespace, so that the calling process has a private copy "
6743 "of its namespace which is not shared with any other process. Specifying "
6744 "this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
6745 "requires the B<CAP_SYS_ADMIN> capability."
6747 "このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
6748 "ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
6749 "有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
6750 "黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
6754 #: build/C/man2/unshare.2:176
6757 #| "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
6758 #| "Unshare the mount namespace, so that the calling process has a private "
6759 #| "copy of its namespace which is not shared with any other process. "
6760 #| "Specifying this flag automatically implies B<CLONE_FS> as well. Use of "
6761 #| "B<CLONE_NEWNS> requires the B<CAP_SYS_ADMIN> capability."
6763 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWPID> flag. "
6764 "Unshare the PID namespace, so that the calling process has a new PID "
6765 "namespace for its children which is not shared with any previously existing "
6766 "process. The calling process is I<not> moved into the new namespace. The "
6767 "first child created by the calling process will have the process ID 1 and "
6768 "will assume the role of B<init>(1) in the new namespace. B<CLONE_NEWPID> "
6769 "automatically implies B<CLONE_THREAD> as well. Use of B<CLONE_NEWPID> "
6770 "requires the B<CAP_SYS_ADMIN> capability. For further information, see "
6771 "B<pid_namespaces>(7)."
6773 "このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
6774 "ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
6775 "有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
6776 "黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
6780 #: build/C/man2/unshare.2:190
6783 #| "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
6784 #| "Unshare the network namespace, so that the calling process is moved into "
6785 #| "a new network namespace which is not shared with any previously existing "
6786 #| "process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
6788 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWUSER> flag. "
6789 "Unshare the user namespace, so that the calling process is moved into a new "
6790 "user namespace which is not shared with any previously existing process. As "
6791 "with the child process created by B<clone>(2) with the B<CLONE_NEWUSER> "
6792 "flag, the caller obtains a full set of capabilities in the new namespace."
6794 "このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
6795 "ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
6796 "い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
6797 "には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
6799 #. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
6800 #. https://lwn.net/Articles/543273/
6802 #: build/C/man2/unshare.2:206
6804 "B<CLONE_NEWUSER> requires that the calling process is not threaded; "
6805 "specifying B<CLONE_NEWUSER> automatically implies B<CLONE_THREAD>. Since "
6806 "Linux 3.9, B<CLONE_NEWUSER> also automatically implies B<CLONE_FS>. "
6807 "B<CLONE_NEWUSER> requires that the user ID and group ID of the calling "
6808 "process are mapped to user IDs and group IDs in the user namespace of the "
6809 "calling process at the time of the call."
6813 #: build/C/man2/unshare.2:223
6815 "This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
6816 "Unshare the UTS IPC namespace, so that the calling process has a private "
6817 "copy of the UTS namespace which is not shared with any other process. Use "
6818 "of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
6820 "このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
6821 "IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
6822 "固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
6823 "B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
6824 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
6827 #: build/C/man2/unshare.2:223
6829 msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
6830 msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
6832 #. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
6833 #. CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared
6834 #. (i.e., current->signal->count > 1), force CLONE_THREAD.
6836 #: build/C/man2/unshare.2:243
6839 #| "This flag reverses the effect of the B<clone>(2) B<CLONE_SYSVSEM> flag. "
6840 #| "Unshare System\\ V semaphore undo values, so that the calling process has "
6841 #| "a private copy which is not shared with any other process. Use of "
6842 #| "B<CLONE_SYSVSEM> requires the B<CAP_SYS_ADMIN> capability."
6844 "This flag reverses the effect of the B<clone>(2) B<CLONE_SYSVSEM> flag. "
6845 "Unshare System\\ V semaphore adjustment (I<semadj>) values, so that the "
6846 "calling process has a new empty I<semadj> list that is not shared with any "
6847 "other process. If this is the last process that has a reference to the "
6848 "process's current I<semadj> list, then the adjustments in that list are "
6849 "applied to the corresponding semaphores, as described in B<semop>(2)."
6851 "このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。\n"
6852 "System\\ V セマフォのアンドゥ値を共有せず、呼び出し元プロセスは 他のプロ\n"
6853 "セスとは共有しない固有のコピーを持つ。B<CLONE_SYSVSEM> を使用するには\n"
6854 "B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
6857 #. As at 3.9, the following forced implications also apply,
6858 #. although the relevant flags are not yet implemented.
6859 #. If CLONE_THREAD is set force CLONE_VM.
6860 #. If CLONE_VM is set, force CLONE_SIGHAND.
6861 #. See kernel/fork.c::check_unshare_flags()
6863 #: build/C/man2/unshare.2:270
6865 "In addition, B<CLONE_THREAD>, B<CLONE_SIGHAND>, and B<CLONE_VM> can be "
6866 "specified in I<flags> if the caller is single threaded (i.e., it is not "
6867 "sharing its address space with another process or thread). In this case, "
6868 "these flags have no effect. (Note also that specifying B<CLONE_THREAD> "
6869 "automatically implies B<CLONE_VM>, and specifying B<CLONE_VM> automatically "
6870 "implies B<CLONE_SIGHAND>.) If the process is multithreaded, then the use of "
6871 "these flags results in an error."
6875 #: build/C/man2/unshare.2:277
6877 "If I<flags> is specified as zero, then B<unshare>() is a no-op; no changes "
6878 "are made to the calling process's execution context."
6880 "I<flags> に 0 が指定された場合、 B<unshare>() は何も行わないので、 呼び出し"
6881 "元プロセスの実行コンテキストは、何も変更されない。"
6884 #: build/C/man2/unshare.2:282
6886 "On success, zero returned. On failure, -1 is returned and I<errno> is set "
6887 "to indicate the error."
6889 "成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
6893 #: build/C/man2/unshare.2:287
6894 msgid "An invalid bit was specified in I<flags>."
6895 msgstr "I<flags> に不正なビットが指定された。"
6898 #: build/C/man2/unshare.2:296
6900 "B<CLONE_THREAD>, B<CLONE_SIGHAND>, or B<CLONE_VM> was specified in I<flags>, "
6901 "and the caller is multithreaded."
6905 #: build/C/man2/unshare.2:300
6907 "Cannot allocate sufficient memory to copy parts of caller's context that "
6908 "need to be unshared."
6910 "呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするため"
6911 "に、 十分なメモリが確保できなかった。"
6914 #: build/C/man2/unshare.2:303
6916 "The calling process did not have the required privileges for this operation."
6917 msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
6920 #: build/C/man2/unshare.2:333
6921 msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
6922 msgstr "B<unshare>() システムコールは Linux カーネル 2.6.16 で追加された。"
6925 #: build/C/man2/unshare.2:337
6926 msgid "The B<unshare>() system call is Linux-specific."
6927 msgstr "B<unshare>() システムコールは Linux 固有である。"
6929 #. FIXME all of the following needs to be reviewed for the current kernel
6930 #. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
6931 #. was not specified when doing clone(); i.e., unsharing
6932 #. signal handlers is permitted if we are not actually
6933 #. sharing signal handlers. mtk
6934 #. However, we can do unshare(CLONE_VM) if CLONE_VM
6935 #. was not specified when doing clone(); i.e., unsharing
6936 #. virtual memory is permitted if we are not actually
6937 #. sharing virtual memory. mtk
6940 #. The current implementation of unshare does not allow unsharing of
6941 #. signals and signal handlers. Signals are complex to begin with and
6942 #. to unshare signals and/or signal handlers of a currently running
6943 #. process is even more complex. If in the future there is a specific
6944 #. need to allow unsharing of signals and/or signal handlers, it can
6945 #. be incrementally added to unshare without affecting legacy
6946 #. applications using unshare.
6948 #: build/C/man2/unshare.2:371
6950 "Not all of the process attributes that can be shared when a new process is "
6951 "created using B<clone>(2) can be unshared using B<unshare>(). In "
6952 "particular, as at kernel 3.8, B<unshare>() does not implement flags that "
6953 "reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
6954 "Such functionality may be added in the future, if required."
6956 "B<clone>(2) で新しいプロセスを生成したときに共有される全てのプロセス属性"
6957 "を、 B<unshare>() によって共有の解除ができるわけではない。 特に、カーネル "
6958 "3.8 時点では、 B<unshare>() に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
6959 "B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
6960 "必要であれば将来追加されるかもしれない。"
6963 #: build/C/man2/unshare.2:380
6965 "The program below provides a simple implementation of the B<unshare>(1) "
6966 "command, which unshares one or more namespaces and executes the command "
6967 "supplied in its command-line arguments. Here's an example of the use of "
6968 "this program, running a shell in a new mount namespace, and verifying that "
6969 "the original shell and the new shell are in separate mount namespaces:"
6973 #: build/C/man2/unshare.2:389
6976 "$ B<readlink /proc/$$/ns/mnt>\n"
6977 "mnt:[4026531840]\n"
6978 "$ B<sudo ./unshare -m /bin/bash>\n"
6979 "[sudo] password for cecilia:\n"
6980 "# B<readlink /proc/$$/ns/mnt>\n"
6981 "mnt:[4026532325]\n"
6985 #: build/C/man2/unshare.2:395
6987 "The differing output of the two B<readlink>(1) commands shows that the two "
6988 "shells are in different mount namespaces."
6992 #: build/C/man2/unshare.2:399
6994 msgid "/* unshare.c\n"
6998 #: build/C/man2/unshare.2:408
7001 #| "#define _GNU_SOURCE\n"
7002 #| "#include E<lt>fcntl.hE<gt>\n"
7003 #| "#include E<lt>sched.hE<gt>\n"
7004 #| "#include E<lt>unistd.hE<gt>\n"
7005 #| "#include E<lt>stdlib.hE<gt>\n"
7006 #| "#include E<lt>stdio.hE<gt>\n"
7008 " A simple implementation of the unshare(1) command: unshare\n"
7009 " namespaces and execute a command.\n"
7011 "#define _GNU_SOURCE\n"
7012 "#include E<lt>sched.hE<gt>\n"
7013 "#include E<lt>unistd.hE<gt>\n"
7014 "#include E<lt>stdlib.hE<gt>\n"
7015 "#include E<lt>stdio.hE<gt>\n"
7017 "#define _GNU_SOURCE\n"
7018 "#include E<lt>fcntl.hE<gt>\n"
7019 "#include E<lt>sched.hE<gt>\n"
7020 "#include E<lt>unistd.hE<gt>\n"
7021 "#include E<lt>stdlib.hE<gt>\n"
7022 "#include E<lt>stdio.hE<gt>\n"
7025 #: build/C/man2/unshare.2:411
7028 "/* A simple error-handling function: print an error message based\n"
7029 " on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
7033 #: build/C/man2/unshare.2:428
7037 "usage(char *pname)\n"
7039 " fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n"
7040 " fprintf(stderr, \"Options can be:\\en\");\n"
7041 " fprintf(stderr, \" -i unshare IPC namespace\\en\");\n"
7042 " fprintf(stderr, \" -m unshare mount namespace\\en\");\n"
7043 " fprintf(stderr, \" -n unshare network namespace\\en\");\n"
7044 " fprintf(stderr, \" -p unshare PID namespace\\en\");\n"
7045 " fprintf(stderr, \" -u unshare UTS namespace\\en\");\n"
7046 " fprintf(stderr, \" -U unshare user namespace\\en\");\n"
7047 " exit(EXIT_FAILURE);\n"
7052 #: build/C/man2/unshare.2:433
7056 #| "main(int argc, char *argv[])\n"
7061 "main(int argc, char *argv[])\n"
7063 " int flags, opt;\n"
7066 "main(int argc, char *argv[])\n"
7071 #: build/C/man2/unshare.2:435
7073 msgid " flags = 0;\n"
7077 #: build/C/man2/unshare.2:447
7080 " while ((opt = getopt(argc, argv, \"imnpuU\")) != -1) {\n"
7082 " case \\(aqi\\(aq: flags |= CLONE_NEWIPC; break;\n"
7083 " case \\(aqm\\(aq: flags |= CLONE_NEWNS; break;\n"
7084 " case \\(aqn\\(aq: flags |= CLONE_NEWNET; break;\n"
7085 " case \\(aqp\\(aq: flags |= CLONE_NEWPID; break;\n"
7086 " case \\(aqu\\(aq: flags |= CLONE_NEWUTS; break;\n"
7087 " case \\(aqU\\(aq: flags |= CLONE_NEWUSER; break;\n"
7088 " default: usage(argv[0]);\n"
7094 #: build/C/man2/unshare.2:450
7097 " if (optind E<gt>= argc)\n"
7098 " usage(argv[0]);\n"
7102 #: build/C/man2/unshare.2:453
7105 #| " if (sethostname(arg, strlen(arg)) == -1)\n"
7106 #| " errExit(\"sethostname\");\n"
7108 " if (unshare(flags) == -1)\n"
7109 " errExit(\"unshare\");\n"
7111 " if (sethostname(arg, strlen(arg)) == -1)\n"
7112 " errExit(\"sethostname\");\n"
7115 #: build/C/man2/unshare.2:457
7118 #| " execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
7119 #| " errExit(\"execvp\");\n"
7122 " execvp(argv[optind], &argv[optind]);\n"
7123 " errExit(\"execvp\");\n"
7126 " execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
7127 " errExit(\"execvp\");\n"
7131 #: build/C/man2/unshare.2:466
7133 #| msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
7135 "B<unshare>(1), B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), "
7136 "B<vfork>(2), B<namespaces>(7)"
7137 msgstr "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
7140 #: build/C/man2/unshare.2:469
7141 msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
7142 msgstr "Linux カーネルソース内の I<Documentation/unshare.txt>"
7145 #~ "Use of this flag requires: a kernel configured with the B<CONFIG_SYSVIPC> "
7146 #~ "and B<CONFIG_IPC_NS> options and that the process be privileged "
7147 #~ "(B<CAP_SYS_ADMIN>). This flag can't be specified in conjunction with "
7148 #~ "B<CLONE_SYSVSEM>."
7150 #~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_SYSVIPC> と "
7151 #~ "B<CONFIG_IPC_NS> を有効になっていること、 プロセスが特権 "
7152 #~ "(B<CAP_SYS_ADMIN>) を持っていることが必要である。 このフラグは "
7153 #~ "B<CLONE_SYSVSEM> と組み合わせて使うことはできない。"
7156 #~ "Use of this flag requires: a kernel configured with the B<CONFIG_NET_NS> "
7157 #~ "option and that the process be privileged (B<CAP_SYS_ADMIN>)."
7159 #~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_NET_NS> を有"
7160 #~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
7163 #~ msgid "Start the child in a new mount namespace."
7164 #~ msgstr "子プロセスを新しいマウント名前空間 (mount namespace) で開始する。"
7167 #~ "Every process lives in a mount namespace. The I<namespace> of a process "
7168 #~ "is the data (the set of mounts) describing the file hierarchy as seen by "
7169 #~ "that process. After a B<fork>(2) or B<clone>() where the "
7170 #~ "B<CLONE_NEWNS> flag is not set, the child lives in the same mount "
7171 #~ "namespace as the parent. The system calls B<mount>(2) and B<umount>(2) "
7172 #~ "change the mount namespace of the calling process, and hence affect all "
7173 #~ "processes that live in the same namespace, but do not affect processes in "
7174 #~ "a different mount namespace."
7176 #~ "各プロセスはある一つのマウント名前空間中に存在する。プロセスの I<名前空間 "
7177 #~ "(namespace)> は、そのプロセスから見えるファイル階層を表すデータ (mount の"
7178 #~ "集合) である。 B<CLONE_NEWNS> フラグがセットされずに B<fork>(2) か "
7179 #~ "B<clone>() が呼ばれると、子プロセスは親プロセスと同じマウント名前空間に作"
7180 #~ "成される。 システムコール B<mount>(2)、 B<umount>(2) が呼ばれると呼び出し"
7181 #~ "元のプロセスのマウント名前空間が変更され、この結果 呼び出し元のプロセスと"
7182 #~ "同じ名前空間にいるプロセスはすべて影響を受けるが、 異なるマウント名前空間"
7183 #~ "にいるプロセスは影響を受けない。"
7186 #~ "A PID namespace provides an isolated environment for PIDs: PIDs in a new "
7187 #~ "namespace start at 1, somewhat like a standalone system, and calls to "
7188 #~ "B<fork>(2), B<vfork>(2), or B<clone>() will produce processes with PIDs "
7189 #~ "that are unique within the namespace."
7191 #~ "PID 名前空間は、PID に関して分離された環境を提供するものである。 新しい名"
7192 #~ "前空間における PID は 1 から始まり (これはスタンドアロンのシステムと似たよ"
7193 #~ "うな感じ)、 B<fork>(2), B<vfork>(2), B<clone>() を呼び出すと、その名前空"
7194 #~ "間で一意な PID を持ったプロセスが作成される。"
7197 #~ "The first process created in a new namespace (i.e., the process created "
7198 #~ "using the B<CLONE_NEWPID> flag) has the PID 1, and is the \"init\" "
7199 #~ "process for the namespace. Children that are orphaned within the "
7200 #~ "namespace will be reparented to this process rather than B<init>(8). "
7201 #~ "Unlike the traditional B<init> process, the \"init\" process of a PID "
7202 #~ "namespace can terminate, and if it does, all of the processes in the "
7203 #~ "namespace are terminated."
7205 #~ "新しい名前空間で作成される最初のプロセス (つまり、 B<CLONE_NEWPID> フラグ"
7206 #~ "を使って作成されたプロセス) の PID は 1 であり、 このプロセスはその名前空"
7207 #~ "間における \"init\" プロセスとなる。 この名前空間において孤児 (orphaned) "
7208 #~ "となった子プロセスについては、 B<init>(8) ではなくこのプロセスが親プロセ"
7209 #~ "スとなる。 昔ながらの B<init> プロセスとは違い、PID 名前空間の \"init\" プ"
7210 #~ "ロセスは終了 (terminated) する ことができ、その場合には、この名前空間の全"
7214 #~ "PID namespaces form a hierarchy. When a new PID namespace is created, "
7215 #~ "the processes in that namespace are visible in the PID namespace of the "
7216 #~ "process that created the new namespace; analogously, if the parent PID "
7217 #~ "namespace is itself the child of another PID namespace, then processes in "
7218 #~ "the child and parent PID namespaces will both be visible in the "
7219 #~ "grandparent PID namespace. Conversely, the processes in the \"child\" "
7220 #~ "PID namespace do not see the processes in the parent namespace. The "
7221 #~ "existence of a namespace hierarchy means that each process may now have "
7222 #~ "multiple PIDs: one for each namespace in which it is visible; each of "
7223 #~ "these PIDs is unique within the corresponding namespace. (A call to "
7224 #~ "B<getpid>(2) always returns the PID associated with the namespace in "
7225 #~ "which the process lives.)"
7227 #~ "PID 名前空間間には階層構造が形成される。 新しい PID 名前空間が作成される"
7228 #~ "と、その名前空間のプロセスは、 新しい名前空間を作成したプロセスの PID 名前"
7229 #~ "空間で見える。 同様に、親の PID 名前空間自体が別の PID 名前空間の子供の場"
7230 #~ "合には、 子供の PID 名前空間と親の PID 名前空間のプロセスはどれも 親の親"
7231 #~ "の PID 名前空間でも見えることになる。 反対に、「子供」の PID 名前空間のプ"
7232 #~ "ロセスには、 親の名前空間のプロセスは見えない。 名前空間に階層構造が存在す"
7233 #~ "るということは、個々のプロセスは 複数の PID を持つということを意味してい"
7234 #~ "る。 そのプロセスが見える名前空間一つにつき PID が一つあり、 それぞれの "
7235 #~ "PID は対応する名前空間において一意である。 (B<getpid>(2) を呼び出すと、常"
7236 #~ "にそのプロセスが存在している名前空間における PID が返される。)"
7239 #~ "After creating the new namespace, it is useful for the child to change "
7240 #~ "its root directory and mount a new procfs instance at I</proc> so that "
7241 #~ "tools such as B<ps>(1) work correctly. (If B<CLONE_NEWNS> is also "
7242 #~ "included in I<flags>, then it isn't necessary to change the root "
7243 #~ "directory: a new procfs instance can be mounted directly over I</proc>.)"
7245 #~ "新しい名前空間の作成後には、 子プロセスにおいて、 B<ps>(1) といったツール"
7246 #~ "が正しく動作するように、 自身の root ディレクトリを変更し、 I</proc> に新"
7247 #~ "しい procfs インスタンスをマウントするのがよいだろう。 (B<flags> に "
7248 #~ "B<CLONE_NEWNS> も指定されていた場合には、root ディレクトリを変更する必要は"
7249 #~ "なく、 いきなり新しい procfs インスタンスを I</proc> にマウントすることが"
7253 #~ "Use of this flag requires: a kernel configured with the B<CONFIG_PID_NS> "
7254 #~ "option and that the process be privileged (B<CAP_SYS_ADMIN>). This flag "
7255 #~ "can't be specified in conjunction with B<CLONE_THREAD>."
7257 #~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_PID_NS> を有"
7258 #~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
7259 #~ "必要である。 このフラグは B<CLONE_THREAD> と組み合わせて使うことはできな"
7263 #~ "Use of this flag requires: a kernel configured with the B<CONFIG_UTS_NS> "
7264 #~ "option and that the process be privileged (B<CAP_SYS_ADMIN>)."
7266 #~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_UTS_NS> を有"
7267 #~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
7270 #~ msgid "The raw system call interface"
7271 #~ msgstr "素のシステムコールのインターフェース"
7273 #~ msgid "2014-05-13"
7274 #~ msgstr "2014-05-13"
7276 #~ msgid "2013-01-01"
7277 #~ msgstr "2013-01-01"
7279 #~ msgid "B<CLONE_NEWIPC>"
7280 #~ msgstr "B<CLONE_NEWIPC>"
7282 #~ msgid "B<CLONE_NEWNET>"
7283 #~ msgstr "B<CLONE_NEWNET>"
7286 #~ "The calling thread did not have the required privilege "
7287 #~ "(B<CAP_SYS_ADMIN>) for this operation."
7289 #~ "呼び出したスレッドがこの操作を行うのに必要な特権 (B<CAP_SYS_ADMIN>) を\n"
7292 #~ msgid "2013-04-17"
7293 #~ msgstr "2013-04-17"
7295 #~ msgid "2014-02-27"
7296 #~ msgstr "2014-02-27"
7298 #~ msgid "2013-09-23"
7299 #~ msgstr "2013-09-23"
7301 #~ msgid "B<getcpu>(2)"
7302 #~ msgstr "B<getcpu>(2)"
7304 #~ msgid "2013-03-18"
7305 #~ msgstr "2013-03-18"
7307 #~ msgid "2013-09-17"
7308 #~ msgstr "2013-09-17"
7311 #~ "B<sched_setscheduler>() sets both the scheduling policy and the "
7312 #~ "associated parameters for the thread whose ID is specified in I<pid>. If "
7313 #~ "I<pid> equals zero, the scheduling policy and parameters of the calling "
7314 #~ "thread will be set. The interpretation of the argument I<param> depends "
7315 #~ "on the selected policy. Currently, Linux supports the following \"normal"
7316 #~ "\" (i.e., non-real-time) scheduling policies:"
7318 #~ "B<sched_setscheduler>() は I<pid> で指定された ID を持つスレッドのスケ"
7319 #~ "ジューリングポリシーや それに関連するパラメータを設定する。I<pid> が 0 の"
7320 #~ "場合は 呼び出したスレッドのスケジューリングポリシーとパラメータが設定され"
7321 #~ "る。 引き数 I<param> の解釈は選択されたポリシーによる。 現在のところ、"
7322 #~ "Linux では 以下に示す「通常」(リアルタイムでない) スケジューリングポリシー"
7325 #~ msgid "The semantics of each of these policies are detailed below."
7326 #~ msgstr "これらのポリシーのそれぞれの動作については以下で説明する。"
7329 #~ "The scheduling I<policy> is not one of the recognized policies, I<param> "
7330 #~ "is NULL, or I<param> does not make sense for the I<policy>."
7332 #~ "スケジューリングポリシー I<policy> が間違っている。\n"
7333 #~ "または I<param> が NULL である。\n"
7334 #~ "または I<param> がそのポリシーでは意味をなさない。"
7337 #~ "The Linux kernel source file I<Documentation/scheduler/sched-rt-group.txt>"
7339 #~ "Linux カーネルソースファイル I<Documentation/scheduler/sched-rt-group.txt>"
7341 #~ msgid "2008-10-18"
7342 #~ msgstr "2008-10-18"
7344 #~ msgid "B<sched_setscheduler>(2) for a description of Linux scheduling"
7346 #~ "Linux のスケージュリング (scheduling) については B<sched_setscheduler>(2) "
7349 #~ msgid "2013-04-16"
7350 #~ msgstr "2013-04-16"
7352 #~ msgid "Create a child that executes in a separate UTS namespace"
7353 #~ msgstr "別の UTS 名前空間で動作する子プロセスを作成する"
7355 #~ msgid "2013-01-27"
7356 #~ msgstr "2013-01-27"
7358 #~ msgid "2006-03-23"
7359 #~ msgstr "2006-03-23"
7361 #~ msgid "2013-02-11"
7362 #~ msgstr "2013-02-11"
7365 #~ "B<clone>() creates a new process, in a manner similar to B<fork>(2). It "
7366 #~ "is actually a library function layered on top of the underlying "
7367 #~ "B<clone>() system call, hereinafter referred to as B<sys_clone>. A "
7368 #~ "description of B<sys_clone> is given toward the end of this page."
7370 #~ "B<clone>() は B<fork>(2) と同じような方法で新しいプロセスを作成する。 "
7371 #~ "B<clone>() には、ライブラリ関数とその下層にあたる B<clone>() システム"
7372 #~ "コールが存在する。以下の説明では、システムコールの方を B<sys_clone> と表す"
7373 #~ "こととする。 B<sys_clone> に関する説明はこのマニュアルの最後の方にある。"
7376 #~ "The B<clone>() and B<sys_clone> calls are Linux-specific and should not "
7377 #~ "be used in programs intended to be portable."
7379 #~ "B<clone>() と B<sys_clone> コールは Linux 特有であり、移植を考慮したプロ"
7380 #~ "グラムでは使用すべき ではない。"
7383 #~ "I<Documentation/scheduler/sched-rt-group.txt> in the Linux kernel source "
7384 #~ "tree (since kernel 2.6.25)."
7386 #~ "Linux カーネルソース内の I<Documentation/scheduler/sched-rt-group.txt> "
7387 #~ "(カーネル 2.6.25 以降)"
7390 #~ "The PID namespace and the mount namespace are not currently supported. "
7391 #~ "(See the descriptions of B<CLONE_NEWPID> and B<CLONE_NEWNS> in "
7394 #~ "現在のところ、 PID 名前空間とマウント名前空間はサポートされていない\n"
7395 #~ "(B<clone>(2) の B<CLONE_NEWPID> と B<CLONE_NEWNS> の説明を参照)。"
7398 #~ "If I<pid> is zero, the time quantum for the calling process is written "
7399 #~ "into I<*tp>. The identified process should be running under the "
7400 #~ "B<SCHED_RR> scheduling policy. POSIX systems on which "
7401 #~ "B<sched_rr_get_interval>() is available define "
7402 #~ "B<_POSIX_PRIORITY_SCHEDULING> in I<E<lt>unistd.hE<gt>>."
7404 #~ "I<pid> がゼロの場合、呼び出したプロセスの時間量が I<*tp> に書き込まれる。"
7405 #~ "指定したプロセスは B<SCHED_RR> スケジューリング方針で稼動している必要があ"
7406 #~ "る。 B<sched_rr_get_interval>() の使用可能な POSIX システムでは "
7407 #~ "I<E<lt>unistd.hE<gt>> で B<_POSIX_PRIORITY_SCHEDULING> が定義されている。"
7410 #~ "I<From Linux 2.6.25 this flag is deprecated.> You probably never wanted "
7411 #~ "to use it, you certainly shouldn't be using it, and soon it will go away."
7413 #~ "I<Linux 2.6.25 以降、このフラグは非推奨である。> このフラグを使いたいと思"
7414 #~ "うことは決してないだろうし、 確実に使わないようにすべきである。 このフラグ"
7415 #~ "は近いうちになくなることだろう。"
7418 #~ "Special rules apply for the B<SCHED_IDLE>: an unprivileged process "
7419 #~ "operating under this policy cannot change its policy, regardless of the "
7420 #~ "value of its B<RLIMIT_RTPRIO> resource limit."
7422 #~ "B<SCHED_IDLE> には特別なルールが適用され、 このポリシーの下で動作する非特"
7423 #~ "権プロセスは、リソース制限 B<RLIMIT_RTPRIO> の値にかかわらず自身のポリシー"
7427 #~ "I<flags> specified B<CLONE_NEWNS> but the calling process was not "
7428 #~ "privileged (did not have the B<CAP_SYS_ADMIN> capability)."
7430 #~ "I<flags> に B<CLONE_NEWNS> が指定されたが、呼び出し元プロセスに特権 "
7431 #~ "(B<CAP_SYS_ADMIN> ケーパビリティ) がなかった。"