msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-06-08 01:16+0900\n"
-"PO-Revision-Date: 2014-06-06 01:38+0900\n"
+"POT-Creation-Date: 2015-01-01 22:50+0900\n"
+"PO-Revision-Date: 2014-06-08 02:45+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
msgstr "2012-03-15"
#. type: TH
-#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:45 build/C/man2/kcmp.2:28
+#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
#: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
#: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
#: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
-#: build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
+#: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
#, no-wrap
msgid "Linux"
msgstr "Linux"
#. type: TH
-#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:45 build/C/man2/kcmp.2:28
+#: build/C/man3/CPU_SET.3:27 build/C/man2/clone.2:42 build/C/man2/kcmp.2:28
#: build/C/man2/sched_get_priority_max.2:29 build/C/man3/sched_getcpu.3:26
#: build/C/man2/sched_rr_get_interval.2:29 build/C/man2/sched_setaffinity.2:34
#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setparam.2:30
#: build/C/man2/sched_setscheduler.2:26 build/C/man2/sched_yield.2:29
-#: build/C/man2/setns.2:8 build/C/man2/unshare.2:20 build/C/man7/sched.7:32
+#: build/C/man7/sched.7:32 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr "Linux Programmer's Manual"
#. type: SH
-#: build/C/man3/CPU_SET.3:28 build/C/man2/clone.2:46 build/C/man2/kcmp.2:29
+#: build/C/man3/CPU_SET.3:28 build/C/man2/clone.2:43 build/C/man2/kcmp.2:29
#: build/C/man2/sched_get_priority_max.2:30 build/C/man3/sched_getcpu.3:27
#: build/C/man2/sched_rr_get_interval.2:30 build/C/man2/sched_setaffinity.2:35
#: build/C/man2/sched_setattr.2:27 build/C/man2/sched_setparam.2:31
#: build/C/man2/sched_setscheduler.2:27 build/C/man2/sched_yield.2:30
-#: build/C/man2/setns.2:9 build/C/man2/unshare.2:21 build/C/man7/sched.7:33
+#: build/C/man7/sched.7:33 build/C/man2/setns.2:9 build/C/man2/unshare.2:21
#, no-wrap
msgid "NAME"
msgstr "名前"
"CPU_EQUAL_S - CPU 集合を操作するためのマクロ"
#. type: SH
-#: build/C/man3/CPU_SET.3:35 build/C/man2/clone.2:48 build/C/man2/kcmp.2:31
+#: build/C/man3/CPU_SET.3:35 build/C/man2/clone.2:45 build/C/man2/kcmp.2:31
#: build/C/man2/sched_get_priority_max.2:32 build/C/man3/sched_getcpu.3:29
#: build/C/man2/sched_rr_get_interval.2:32 build/C/man2/sched_setaffinity.2:38
#: build/C/man2/sched_setattr.2:30 build/C/man2/sched_setparam.2:33
msgstr "B<int CPU_EQUAL_S(size_t >I<setsize>B<, cpu_set_t *>I<set1>B<, cpu_set_t *>I<set2>B<);>\n"
#. type: SH
-#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:86 build/C/man2/kcmp.2:41
+#: build/C/man3/CPU_SET.3:79 build/C/man2/clone.2:83 build/C/man2/kcmp.2:41
#: build/C/man2/sched_get_priority_max.2:38 build/C/man3/sched_getcpu.3:55
#: build/C/man2/sched_rr_get_interval.2:36 build/C/man2/sched_setaffinity.2:49
#: build/C/man2/sched_setattr.2:41 build/C/man2/sched_setparam.2:47
#: build/C/man2/sched_setscheduler.2:41 build/C/man2/sched_yield.2:36
-#: build/C/man2/setns.2:18 build/C/man2/unshare.2:50 build/C/man7/sched.7:35
+#: build/C/man7/sched.7:35 build/C/man2/setns.2:18 build/C/man2/unshare.2:50
#, no-wrap
msgid "DESCRIPTION"
msgstr "説明"
"大きさが I<setsize> バイトの CPU 集合に対して操作を行う点が異なる。"
#. type: SH
-#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:878 build/C/man2/kcmp.2:127
+#: build/C/man3/CPU_SET.3:210 build/C/man2/clone.2:873 build/C/man2/kcmp.2:127
#: build/C/man2/sched_get_priority_max.2:97 build/C/man3/sched_getcpu.3:58
#: build/C/man2/sched_rr_get_interval.2:73
#: build/C/man2/sched_setaffinity.2:107 build/C/man2/sched_setattr.2:262
#: build/C/man2/sched_setparam.2:87 build/C/man2/sched_setscheduler.2:135
-#: build/C/man2/sched_yield.2:41 build/C/man2/setns.2:70
-#: build/C/man2/unshare.2:207
+#: build/C/man2/sched_yield.2:41 build/C/man2/setns.2:138
+#: build/C/man2/unshare.2:277
#, no-wrap
msgid "RETURN VALUE"
msgstr "返り値"
msgstr "他の関数は値を返さない。"
#. type: SH
-#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:995 build/C/man2/kcmp.2:198
-#: build/C/man3/sched_getcpu.3:70 build/C/man2/sched_setaffinity.2:148
-#: build/C/man2/sched_setattr.2:348 build/C/man2/setns.2:97
-#: build/C/man2/unshare.2:224
+#: build/C/man3/CPU_SET.3:241 build/C/man2/clone.2:1030
+#: build/C/man2/kcmp.2:198 build/C/man3/sched_getcpu.3:70
+#: build/C/man2/sched_setaffinity.2:148 build/C/man2/sched_setattr.2:348
+#: build/C/man2/setns.2:181 build/C/man2/unshare.2:329
#, no-wrap
msgid "VERSIONS"
msgstr "バージョン"
"B<CPU_XOR_S>(), B<CPU_EQUAL_S>() は glibc 2.7 で初めて登場した。"
#. type: SH
-#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1002
+#: build/C/man3/CPU_SET.3:270 build/C/man2/clone.2:1037
#: build/C/man2/kcmp.2:202 build/C/man2/sched_get_priority_max.2:113
#: build/C/man3/sched_getcpu.3:77 build/C/man2/sched_rr_get_interval.2:94
#: build/C/man2/sched_setaffinity.2:159 build/C/man2/sched_setattr.2:351
#: build/C/man2/sched_setparam.2:119 build/C/man2/sched_setscheduler.2:170
-#: build/C/man2/sched_yield.2:52 build/C/man2/setns.2:102
-#: build/C/man2/unshare.2:228
+#: build/C/man2/sched_yield.2:52 build/C/man2/setns.2:186
+#: build/C/man2/unshare.2:333
#, no-wrap
msgid "CONFORMING TO"
msgstr "準拠"
msgstr "これらのインタフェースは Linux 固有である。"
#. type: SH
-#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1006
+#: build/C/man3/CPU_SET.3:272 build/C/man2/clone.2:1041
#: build/C/man2/kcmp.2:205 build/C/man3/sched_getcpu.3:80
#: build/C/man2/sched_rr_get_interval.2:96
#: build/C/man2/sched_setaffinity.2:161 build/C/man2/sched_setattr.2:353
#: build/C/man2/sched_setparam.2:121 build/C/man2/sched_setscheduler.2:173
-#: build/C/man2/sched_yield.2:54 build/C/man2/setns.2:106
-#: build/C/man2/unshare.2:232 build/C/man7/sched.7:612
+#: build/C/man2/sched_yield.2:54 build/C/man7/sched.7:611
+#: build/C/man2/setns.2:190 build/C/man2/unshare.2:337
#, no-wrap
msgid "NOTES"
msgstr "注意"
"も全ての型エラーを捕捉できるとは限らない。"
#. type: SH
-#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1031
+#: build/C/man3/CPU_SET.3:300 build/C/man2/clone.2:1066
#: build/C/man2/sched_setattr.2:369 build/C/man2/sched_setscheduler.2:214
#, no-wrap
msgid "BUGS"
"がる結果となる。 これらのバグは glibc 2.9 で修正された。"
#. type: SH
-#: build/C/man3/CPU_SET.3:312 build/C/man2/clone.2:1073
-#: build/C/man2/setns.2:112
+#: build/C/man3/CPU_SET.3:312 build/C/man2/clone.2:1108
+#: build/C/man2/setns.2:196 build/C/man2/unshare.2:371
#, no-wrap
msgid "EXAMPLE"
msgstr "例"
"}\n"
#. type: SH
-#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1170
+#: build/C/man3/CPU_SET.3:356 build/C/man2/clone.2:1205
#: build/C/man2/kcmp.2:222 build/C/man2/sched_get_priority_max.2:115
#: build/C/man3/sched_getcpu.3:100 build/C/man2/sched_rr_get_interval.2:132
#: build/C/man2/sched_setaffinity.2:214 build/C/man2/sched_setattr.2:385
#: build/C/man2/sched_setparam.2:127 build/C/man2/sched_setscheduler.2:222
-#: build/C/man2/sched_yield.2:79 build/C/man2/setns.2:199
-#: build/C/man2/unshare.2:266 build/C/man7/sched.7:665
+#: build/C/man2/sched_yield.2:79 build/C/man7/sched.7:664
+#: build/C/man2/setns.2:283 build/C/man2/unshare.2:458
#, no-wrap
msgid "SEE ALSO"
msgstr "関連項目"
"B<pthread_setaffinity_np>(3), B<cpuset>(7)"
#. type: SH
-#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1184
+#: build/C/man3/CPU_SET.3:361 build/C/man2/clone.2:1220
#: build/C/man2/kcmp.2:225 build/C/man2/sched_get_priority_max.2:125
#: build/C/man3/sched_getcpu.3:103 build/C/man2/sched_rr_get_interval.2:134
-#: build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setattr.2:407
-#: build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:241
-#: build/C/man2/sched_yield.2:81 build/C/man2/setns.2:205
-#: build/C/man2/unshare.2:275 build/C/man7/sched.7:702
+#: build/C/man2/sched_setaffinity.2:234 build/C/man2/sched_setattr.2:408
+#: build/C/man2/sched_setparam.2:142 build/C/man2/sched_setscheduler.2:242
+#: build/C/man2/sched_yield.2:81 build/C/man7/sched.7:702
+#: build/C/man2/setns.2:290 build/C/man2/unshare.2:469
#, no-wrap
msgid "COLOPHON"
msgstr "この文書について"
#. type: Plain text
-#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1192
+#: build/C/man3/CPU_SET.3:369 build/C/man2/clone.2:1228
#: build/C/man2/kcmp.2:233 build/C/man2/sched_get_priority_max.2:133
#: build/C/man3/sched_getcpu.3:111 build/C/man2/sched_rr_get_interval.2:142
-#: build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setattr.2:415
-#: build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:249
-#: build/C/man2/sched_yield.2:89 build/C/man2/setns.2:213
-#: build/C/man2/unshare.2:283 build/C/man7/sched.7:710
+#: build/C/man2/sched_setaffinity.2:242 build/C/man2/sched_setattr.2:416
+#: build/C/man2/sched_setparam.2:150 build/C/man2/sched_setscheduler.2:250
+#: build/C/man2/sched_yield.2:89 build/C/man7/sched.7:710
+#: build/C/man2/setns.2:298 build/C/man2/unshare.2:477
+#, fuzzy
+#| msgid ""
+#| "This page is part of release 3.68 of the Linux I<man-pages> project. A "
+#| "description of the project, information about reporting bugs, and the "
+#| "latest version of this page, can be found at \\%http://www.kernel.org/doc/"
+#| "man-pages/."
msgid ""
-"This page is part of release 3.67 of the Linux I<man-pages> project. A "
+"This page is part of release 3.75 of the Linux I<man-pages> project. A "
"description of the project, information about reporting bugs, and the latest "
"version of this page, can be found at \\%http://www.kernel.org/doc/man-"
"pages/."
msgstr ""
-"この man ページは Linux I<man-pages> プロジェクトのリリース 3.67 の一部\n"
+"この man ページは Linux I<man-pages> プロジェクトのリリース 3.68 の一部\n"
"である。プロジェクトの説明とバグ報告に関する情報は\n"
"http://www.kernel.org/doc/man-pages/ に書かれている。"
#. type: TH
-#: build/C/man2/clone.2:45
+#: build/C/man2/clone.2:42
#, no-wrap
msgid "CLONE"
msgstr "CLONE"
#. type: TH
-#: build/C/man2/clone.2:45
-#, no-wrap
-msgid "2014-02-27"
-msgstr "2014-02-27"
+#: build/C/man2/clone.2:42 build/C/man2/setns.2:8 build/C/man2/unshare.2:20
+#, fuzzy, no-wrap
+#| msgid "2014-05-21"
+msgid "2014-09-21"
+msgstr "2014-05-21"
#. type: Plain text
-#: build/C/man2/clone.2:48
+#: build/C/man2/clone.2:45
msgid "clone, __clone2 - create a child process"
msgstr "clone, __clone2 - 子プロセスを作成する"
#. type: Plain text
-#: build/C/man2/clone.2:51
+#: build/C/man2/clone.2:48
#, no-wrap
msgid "/* Prototype for the glibc wrapper function */\n"
msgstr "/* glibc ラッパー関数のプロトタイプ */\n"
#. type: Plain text
-#: build/C/man2/clone.2:53 build/C/man3/sched_getcpu.3:32
+#: build/C/man2/clone.2:50 build/C/man3/sched_getcpu.3:32
#: build/C/man2/sched_setattr.2:33 build/C/man2/sched_setparam.2:36
#: build/C/man2/sched_setscheduler.2:33 build/C/man2/unshare.2:26
#, no-wrap
msgstr "B<#include E<lt>sched.hE<gt>>\n"
#. type: Plain text
-#: build/C/man2/clone.2:58
+#: build/C/man2/clone.2:55
#, no-wrap
msgid ""
"B<int clone(int (*>I<fn>B<)(void *), void *>I<child_stack>B<,>\n"
"B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
#. type: Plain text
-#: build/C/man2/clone.2:60
+#: build/C/man2/clone.2:57
#, no-wrap
msgid "/* Prototype for the raw system call */\n"
msgstr "/* 素のシステムコールのプロトタイプ */\n"
#. type: Plain text
-#: build/C/man2/clone.2:64
+#: build/C/man2/clone.2:61
#, no-wrap
msgid ""
"B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
"B< struct pt_regs *>I<regs>B<);>\n"
#. type: Plain text
-#: build/C/man2/clone.2:69
+#: build/C/man2/clone.2:66
msgid ""
"Feature Test Macro Requirements for glibc wrapper function (see "
"B<feature_test_macros>(7)):"
"glibc ラッパー関数の機能検査マクロの要件 (B<feature_test_macros>(7) 参照):"
#. type: Plain text
-#: build/C/man2/clone.2:72
+#: build/C/man2/clone.2:69
msgid "B<clone>():"
msgstr "B<clone>():"
#. type: TP
-#: build/C/man2/clone.2:75 build/C/man3/sched_getcpu.3:45
+#: build/C/man2/clone.2:72 build/C/man3/sched_getcpu.3:45
#: build/C/man2/unshare.2:39
#, no-wrap
msgid "Since glibc 2.14:"
msgstr "glibc 2.14 以降:"
#. type: Plain text
-#: build/C/man2/clone.2:78 build/C/man3/sched_getcpu.3:48
+#: build/C/man2/clone.2:75 build/C/man3/sched_getcpu.3:48
#: build/C/man2/unshare.2:42
msgid "_GNU_SOURCE"
msgstr "_GNU_SOURCE"
#. See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
#. type: TP
-#: build/C/man2/clone.2:78 build/C/man3/sched_getcpu.3:48
+#: build/C/man2/clone.2:75 build/C/man3/sched_getcpu.3:48
#: build/C/man2/unshare.2:42
#, no-wrap
msgid "Before glibc 2.14:"
msgstr "glibc 2.14 より前:"
#. type: Plain text
-#: build/C/man2/clone.2:83 build/C/man3/sched_getcpu.3:52
+#: build/C/man2/clone.2:80 build/C/man3/sched_getcpu.3:52
#: build/C/man2/unshare.2:47
#, no-wrap
msgid ""
" /* _GNU_SOURCE も定義される */\n"
#. type: Plain text
-#: build/C/man2/clone.2:90
+#: build/C/man2/clone.2:87
msgid "B<clone>() creates a new process, in a manner similar to B<fork>(2)."
msgstr "B<clone>() は、 B<fork>(2) と似た方法で新しいプロセスを作成する。"
#. type: Plain text
-#: build/C/man2/clone.2:97
+#: build/C/man2/clone.2:94
msgid ""
"This page describes both the glibc B<clone>() wrapper function and the "
"underlying system call on which it is based. The main text describes the "
"る。 素のシステムコールにおける差分はこのページの最後の方で説明する。"
#. type: Plain text
-#: build/C/man2/clone.2:109
+#: build/C/man2/clone.2:106
msgid ""
"Unlike B<fork>(2), B<clone>() allows the child process to share parts of "
"its execution context with the calling process, such as the memory space, "
"の B<CLONE_PARENT> の項も参照のこと)"
#. type: Plain text
-#: build/C/man2/clone.2:114
+#: build/C/man2/clone.2:111
msgid ""
"The main use of B<clone>() is to implement threads: multiple threads of "
"control in a program that run concurrently in a shared memory space."
"ログラムの中の複数のスレッドは共有されたメモリ空間で 同時に実行される。"
#. type: Plain text
-#: build/C/man2/clone.2:134
+#: build/C/man2/clone.2:131
msgid ""
"When the child process is created with B<clone>(), it executes the function "
"I<fn>(I<arg>). (This differs from B<fork>(2), where execution continues in "
"ある。 I<arg> 引き数はそのまま I<fn> 関数へと渡される。"
#. type: Plain text
-#: build/C/man2/clone.2:144
+#: build/C/man2/clone.2:141
msgid ""
"When the I<fn>(I<arg>) function application returns, the child process "
"terminates. The integer returned by I<fn> is the exit code for the child "
"る。"
#. type: Plain text
-#: build/C/man2/clone.2:160
+#: build/C/man2/clone.2:157
msgid ""
"The I<child_stack> argument specifies the location of the stack used by the "
"child process. Since the child and calling process may share memory, it is "
"ために用意したメモリ空間の一番大きい アドレスを指すようにする。"
#. type: Plain text
-#: build/C/man2/clone.2:176
+#: build/C/man2/clone.2:173
msgid ""
"The low byte of I<flags> contains the number of the I<termination signal> "
"sent to the parent when the child dies. If this signal is specified as "
"にシグナルは送られない。"
#. type: Plain text
-#: build/C/man2/clone.2:181
+#: build/C/man2/clone.2:178
msgid ""
"I<flags> may also be bitwise-or'ed with zero or more of the following "
"constants, in order to specify what is shared between the calling process "
"何を共有するかを指定する:"
#. type: TP
-#: build/C/man2/clone.2:181
+#: build/C/man2/clone.2:178
#, no-wrap
msgid "B<CLONE_CHILD_CLEARTID> (since Linux 2.5.49)"
msgstr "B<CLONE_CHILD_CLEARTID> (Linux 2.5.49 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:191
+#: build/C/man2/clone.2:188
msgid ""
"Erase child thread ID at location I<ctid> in child memory when the child "
"exits, and do a wakeup on the futex at that address. The address involved "
"この機能はスレッドライブラリで使用される。"
#. type: TP
-#: build/C/man2/clone.2:191
+#: build/C/man2/clone.2:188
#, no-wrap
msgid "B<CLONE_CHILD_SETTID> (since Linux 2.5.49)"
msgstr "B<CLONE_CHILD_SETTID> (Linux 2.5.49 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:196
+#: build/C/man2/clone.2:193
msgid "Store child thread ID at location I<ctid> in child memory."
msgstr ""
"子プロセスのメモリ内の I<ctid> が指す場所に子プロセスのスレッド ID を格納す"
"る。"
#. type: TP
-#: build/C/man2/clone.2:196
+#: build/C/man2/clone.2:193
#, no-wrap
msgid "B<CLONE_FILES> (since Linux 2.0)"
msgstr "B<CLONE_FILES> (Linux 2.0 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:209
+#: build/C/man2/clone.2:206
msgid ""
"If B<CLONE_FILES> is set, the calling process and the child process share "
"the same file descriptor table. Any file descriptor created by the calling "
"もう一方のプロセスにも影響する。"
#. type: Plain text
-#: build/C/man2/clone.2:223
+#: build/C/man2/clone.2:220
msgid ""
"If B<CLONE_FILES> is not set, the child process inherits a copy of all file "
"descriptors opened in the calling process at the time of B<clone>(). (The "
"えない。"
#. type: TP
-#: build/C/man2/clone.2:223
+#: build/C/man2/clone.2:220
#, no-wrap
msgid "B<CLONE_FS> (since Linux 2.0)"
msgstr "B<CLONE_FS> (Linux 2.0 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:238
+#: build/C/man2/clone.2:235
msgid ""
"If B<CLONE_FS> is set, the caller and the child process share the same "
"filesystem information. This includes the root of the filesystem, the "
"にも影響が及ぶ。"
#. type: Plain text
-#: build/C/man2/clone.2:250
+#: build/C/man2/clone.2:247
msgid ""
"If B<CLONE_FS> is not set, the child process works on a copy of the "
"filesystem information of the calling process at the time of the B<clone>() "
"B<umask>(2) を呼び出しても、もう一方のプロセスには影響を与えない。"
#. type: TP
-#: build/C/man2/clone.2:250
+#: build/C/man2/clone.2:247
#, no-wrap
msgid "B<CLONE_IO> (since Linux 2.6.25)"
msgstr "B<CLONE_IO> (Linux 2.6.25 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:259
+#: build/C/man2/clone.2:256
msgid ""
"If B<CLONE_IO> is set, then the new process shares an I/O context with the "
"calling process. If this flag is not set, then (as with B<fork>(2)) the "
#. the anticipatory and CFQ scheduler
#. with CFQ and AS.
#. type: Plain text
-#: build/C/man2/clone.2:276
+#: build/C/man2/clone.2:273
msgid ""
"The I/O context is the I/O scope of the disk scheduler (i.e, what the I/O "
"scheduler uses to model scheduling of a process's I/O). If processes share "
"B<CLONE_IO> を利用することで I/O 性能を良くすることができる。"
#. type: Plain text
-#: build/C/man2/clone.2:280
+#: build/C/man2/clone.2:277
msgid ""
"If the kernel is not configured with the B<CONFIG_BLOCK> option, this flag "
"is a no-op."
"意味も持たない。"
#. type: TP
-#: build/C/man2/clone.2:280 build/C/man2/unshare.2:96
+#: build/C/man2/clone.2:277 build/C/man2/unshare.2:96
#, no-wrap
msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
msgstr "B<CLONE_NEWIPC> (Linux 2.6.19 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:290
+#: build/C/man2/clone.2:287
msgid ""
"If B<CLONE_NEWIPC> is set, then create the process in a new IPC namespace. "
"If this flag is not set, then (as with B<fork>(2)), the process is created "
#. commit 7eafd7c74c3f2e67c27621b987b28397110d643f
#. https://lwn.net/Articles/312232/
#. type: Plain text
-#: build/C/man2/clone.2:302
+#: build/C/man2/clone.2:299
msgid ""
"An IPC namespace provides an isolated view of System\\ V IPC objects (see "
"B<svipc>(7)) and (since Linux 2.6.30) POSIX message queues (see "
"いう点がある。"
#. type: Plain text
-#: build/C/man2/clone.2:306
+#: build/C/man2/clone.2:303
msgid ""
"Objects created in an IPC namespace are visible to all other processes that "
"are members of that namespace, but are not visible to processes in other IPC "
"い。"
#. type: Plain text
-#: build/C/man2/clone.2:310
+#: build/C/man2/clone.2:307
msgid ""
"When an IPC namespace is destroyed (i.e., when the last process that is a "
"member of the namespace terminates), all IPC objects in the namespace are "
"が終了する時)、 その名前空間の全ての IPC オブジェクトは自動的に破棄される。"
#. type: Plain text
-#: build/C/man2/clone.2:319
+#: build/C/man2/clone.2:314
msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_SYSVIPC> "
-"and B<CONFIG_IPC_NS> options and that the process be privileged "
-"(B<CAP_SYS_ADMIN>). This flag can't be specified in conjunction with "
-"B<CLONE_SYSVSEM>."
+"Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWIPC>. "
+"This flag can't be specified in conjunction with B<CLONE_SYSVSEM>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:317
+msgid "For further information on IPC namespaces, see B<namespaces>(7)."
msgstr ""
-"このフラグを使用するためには、 カーネルでオプション B<CONFIG_SYSVIPC> と "
-"B<CONFIG_IPC_NS> を有効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) "
-"を持っていることが必要である。 このフラグは B<CLONE_SYSVSEM> と組み合わせて使"
-"うことはできない。"
#. type: TP
-#: build/C/man2/clone.2:319 build/C/man2/unshare.2:113
+#: build/C/man2/clone.2:317 build/C/man2/unshare.2:113
#, no-wrap
msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
msgstr "B<CLONE_NEWNET> (Linux 2.6.24 以降)"
-#. FIXME Check when the implementation was completed
#. type: Plain text
-#: build/C/man2/clone.2:324
+#: build/C/man2/clone.2:321
msgid ""
"(The implementation of this flag was completed only by about kernel version "
"2.6.29.)"
msgstr "(このフラグの実装は、Linux 2.6.29 あたりまでには完成した。)"
#. type: Plain text
-#: build/C/man2/clone.2:333
+#: build/C/man2/clone.2:330
+#, fuzzy
+#| msgid ""
+#| "If B<CLONE_NEWNET> is set, then create the process in a new network "
+#| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
+#| "process is created in the same network namespace as the calling process. "
+#| "This flag is intended for the implementation of containers."
msgid ""
"If B<CLONE_NEWNET> is set, then create the process in a new network "
-"namespace. If this flag is not set, then (as with B<fork>(2)), the process "
+"namespace. If this flag is not set, then (as with B<fork>(2)) the process "
"is created in the same network namespace as the calling process. This flag "
"is intended for the implementation of containers."
msgstr ""
"ロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用意され"
"たものである。"
-#. FIXME Add pointer to veth(4) page when it is eventually completed
+#. FIXME . Add pointer to veth(4) page when it is eventually completed
#. type: Plain text
-#: build/C/man2/clone.2:348
+#: build/C/man2/clone.2:345
msgid ""
"A network namespace provides an isolated view of the networking stack "
"(network device interfaces, IPv4 and IPv6 protocol stacks, IP routing "
"リッジを作成したり することができる。"
#. type: Plain text
-#: build/C/man2/clone.2:353
+#: build/C/man2/clone.2:352
+#, fuzzy
+#| msgid ""
+#| "When a network namespace is freed (i.e., when the last process in the "
+#| "namespace terminates), its physical network devices are moved back to the "
+#| "initial network namespace (not to the parent of the process)."
msgid ""
"When a network namespace is freed (i.e., when the last process in the "
"namespace terminates), its physical network devices are moved back to the "
-"initial network namespace (not to the parent of the process)."
+"initial network namespace (not to the parent of the process). For further "
+"information on network namespaces, see B<namespaces>(7)."
msgstr ""
"ネットワーク名前空間が解放される時 (すなわち、その名前空間の最後のプロセスが"
"終了する時)、 物理ネットワークデバイスは初期ネットワーク名前空間 (initial "
"はない)。"
#. type: Plain text
-#: build/C/man2/clone.2:358
+#: build/C/man2/clone.2:357
msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_NET_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+"Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWNET>."
msgstr ""
-"このフラグを使用するためには、 カーネルでオプション B<CONFIG_NET_NS> を有効に"
-"なっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが必要で"
-"ある。"
#. type: TP
-#: build/C/man2/clone.2:358
+#: build/C/man2/clone.2:357
#, no-wrap
msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
msgstr "B<CLONE_NEWNS> (Linux 2.4.19 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:361
-msgid "Start the child in a new mount namespace."
-msgstr "子プロセスを新しいマウント名前空間 (mount namespace) で開始する。"
-
-#. type: Plain text
-#: build/C/man2/clone.2:382
-msgid ""
-"Every process lives in a mount namespace. The I<namespace> of a process is "
-"the data (the set of mounts) describing the file hierarchy as seen by that "
-"process. After a B<fork>(2) or B<clone>() where the B<CLONE_NEWNS> flag "
-"is not set, the child lives in the same mount namespace as the parent. The "
-"system calls B<mount>(2) and B<umount>(2) change the mount namespace of "
-"the calling process, and hence affect all processes that live in the same "
-"namespace, but do not affect processes in a different mount namespace."
-msgstr ""
-"各プロセスはある一つのマウント名前空間中に存在する。プロセスの I<名前空間 "
-"(namespace)> は、そのプロセスから見えるファイル階層を表すデータ (mount の集"
-"合) である。 B<CLONE_NEWNS> フラグがセットされずに B<fork>(2) か "
-"B<clone>() が呼ばれると、子プロセスは親プロセスと同じマウント名前空間に作成"
-"される。 システムコール B<mount>(2)、 B<umount>(2) が呼ばれると呼び出し元の"
-"プロセスのマウント名前空間が変更され、この結果 呼び出し元のプロセスと同じ名前"
-"空間にいるプロセスはすべて影響を受けるが、 異なるマウント名前空間にいるプロセ"
-"スは影響を受けない。"
-
-#. type: Plain text
-#: build/C/man2/clone.2:389
+#: build/C/man2/clone.2:367
+#, fuzzy
+#| msgid ""
+#| "After a B<clone>() where the B<CLONE_NEWNS> flag is set, the cloned "
+#| "child is started in a new mount namespace, initialized with a copy of the "
+#| "namespace of the parent."
msgid ""
-"After a B<clone>() where the B<CLONE_NEWNS> flag is set, the cloned child "
-"is started in a new mount namespace, initialized with a copy of the "
-"namespace of the parent."
+"If B<CLONE_NEWNS> is set, the cloned child is started in a new mount "
+"namespace, initialized with a copy of the namespace of the parent. If "
+"B<CLONE_NEWNS> is not set, the child lives in the same mount namespace as "
+"the parent."
msgstr ""
"B<CLONE_NEWNS> フラグがセットされて B<clone>() が呼ばれると、clone で作成さ"
"れた子プロセスは新しいマウント名前空間で 開始される。新しい名前空間は親プロセ"
"スの名前空間のコピーで初期化される。"
#. type: Plain text
-#: build/C/man2/clone.2:401
+#: build/C/man2/clone.2:370
+msgid "For further information on mount namespaces, see B<namespaces>(7)."
+msgstr ""
+
+#. See https://lwn.net/Articles/543273/
+#. type: Plain text
+#: build/C/man2/clone.2:383
+#, fuzzy
+#| msgid ""
+#| "Only a privileged process (one having the B<CAP_SYS_ADMIN> capability) "
+#| "may specify the B<CLONE_NEWNS> flag. It is not permitted to specify both "
+#| "B<CLONE_NEWNS> and B<CLONE_FS> in the same B<clone>() call."
msgid ""
-"Only a privileged process (one having the B<CAP_SYS_ADMIN> capability) may "
-"specify the B<CLONE_NEWNS> flag. It is not permitted to specify both "
-"B<CLONE_NEWNS> and B<CLONE_FS> in the same B<clone>() call."
+"Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWNS>. It "
+"is not permitted to specify both B<CLONE_NEWNS> and B<CLONE_FS> in the same "
+"B<clone>() call."
msgstr ""
"特権プロセス (B<CAP_SYS_ADMIN> ケーパビリティを持つプロセス) のみが "
"B<CLONE_NEWNS> フラグを指定することができる。 一つの B<clone>() 呼び出し"
"で、 B<CLONE_NEWNS> と B<CLONE_FS> の両方を指定することはできない。"
#. type: TP
-#: build/C/man2/clone.2:401
+#: build/C/man2/clone.2:383
#, no-wrap
msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
msgstr "B<CLONE_NEWPID> (Linux 2.6.24 以降)"
#. The primary kernel commit is 30e49c263e36341b60b735cbef5ca37912549264
#. Author: Pavel Emelyanov <xemul@openvz.org>
#. type: Plain text
-#: build/C/man2/clone.2:418
+#: build/C/man2/clone.2:400
+#, fuzzy
+#| msgid ""
+#| "If B<CLONE_NEWPID> is set, then create the process in a new PID "
+#| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
+#| "process is created in the same PID namespace as the calling process. "
+#| "This flag is intended for the implementation of containers."
msgid ""
"If B<CLONE_NEWPID> is set, then create the process in a new PID namespace. "
-"If this flag is not set, then (as with B<fork>(2)), the process is created "
+"If this flag is not set, then (as with B<fork>(2)) the process is created "
"in the same PID namespace as the calling process. This flag is intended for "
"the implementation of containers."
msgstr ""
"装での使用を意図して用意されたものである。"
#. type: Plain text
-#: build/C/man2/clone.2:427
+#: build/C/man2/clone.2:405
+msgid ""
+"For further information on PID namespaces, see B<namespaces>(7) and "
+"B<pid_namespaces>(7)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:414
+msgid ""
+"Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWPID>. "
+"This flag can't be specified in conjunction with B<CLONE_THREAD> or "
+"B<CLONE_PARENT>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:414
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_NEWUTS>"
+msgid "B<CLONE_NEWUSER>"
+msgstr "B<CLONE_NEWUTS>"
+
+#. type: Plain text
+#: build/C/man2/clone.2:424
msgid ""
-"A PID namespace provides an isolated environment for PIDs: PIDs in a new "
-"namespace start at 1, somewhat like a standalone system, and calls to "
-"B<fork>(2), B<vfork>(2), or B<clone>() will produce processes with PIDs "
-"that are unique within the namespace."
+"(This flag first became meaningful for B<clone>() in Linux 2.6.23, the "
+"current B<clone()> semantics were merged in Linux 3.5, and the final pieces "
+"to make the user namespaces completely usable were merged in Linux 3.8.)"
msgstr ""
-"PID 名前空間は、PID に関して分離された環境を提供するものである。 新しい名前空"
-"間における PID は 1 から始まり (これはスタンドアロンのシステムと似たような感"
-"じ)、 B<fork>(2), B<vfork>(2), B<clone>() を呼び出すと、その名前空間で一意"
-"な PID を持ったプロセスが作成される。"
#. type: Plain text
-#: build/C/man2/clone.2:439
+#: build/C/man2/clone.2:431
+#, fuzzy
+#| msgid ""
+#| "If B<CLONE_NEWNET> is set, then create the process in a new network "
+#| "namespace. If this flag is not set, then (as with B<fork>(2)), the "
+#| "process is created in the same network namespace as the calling process. "
+#| "This flag is intended for the implementation of containers."
msgid ""
-"The first process created in a new namespace (i.e., the process created "
-"using the B<CLONE_NEWPID> flag) has the PID 1, and is the \"init\" process "
-"for the namespace. Children that are orphaned within the namespace will be "
-"reparented to this process rather than B<init>(8). Unlike the traditional "
-"B<init> process, the \"init\" process of a PID namespace can terminate, and "
-"if it does, all of the processes in the namespace are terminated."
+"If B<CLONE_NEWUSER> is set, then create the process in a new user "
+"namespace. If this flag is not set, then (as with B<fork>(2)) the process "
+"is created in the same user namespace as the calling process."
msgstr ""
-"新しい名前空間で作成される最初のプロセス (つまり、 B<CLONE_NEWPID> フラグを"
-"使って作成されたプロセス) の PID は 1 であり、 このプロセスはその名前空間にお"
-"ける \"init\" プロセスとなる。 この名前空間において孤児 (orphaned) となった子"
-"プロセスについては、 B<init>(8) ではなくこのプロセスが親プロセスとなる。 昔"
-"ながらの B<init> プロセスとは違い、PID 名前空間の \"init\" プロセスは終了 "
-"(terminated) する ことができ、その場合には、この名前空間の全てのプロセスが終"
-"了される。"
+"B<CLONE_NEWNET> が設定された場合、新しいネットワーク名前空間 (network "
+"namaspace) でプロセスを作成する。 このフラグが設定されていない場合、 "
+"(B<fork>(2) の場合と同様) 呼び出し元のプロセスと同じネットワーク名前空間でプ"
+"ロセスが 作成される。 このフラグは、コンテナの実装での使用を意図して用意され"
+"たものである。"
#. type: Plain text
-#: build/C/man2/clone.2:458
+#: build/C/man2/clone.2:436
msgid ""
-"PID namespaces form a hierarchy. When a new PID namespace is created, the "
-"processes in that namespace are visible in the PID namespace of the process "
-"that created the new namespace; analogously, if the parent PID namespace is "
-"itself the child of another PID namespace, then processes in the child and "
-"parent PID namespaces will both be visible in the grandparent PID "
-"namespace. Conversely, the processes in the \"child\" PID namespace do not "
-"see the processes in the parent namespace. The existence of a namespace "
-"hierarchy means that each process may now have multiple PIDs: one for each "
-"namespace in which it is visible; each of these PIDs is unique within the "
-"corresponding namespace. (A call to B<getpid>(2) always returns the PID "
-"associated with the namespace in which the process lives.)"
+"For further information on user namespaces, see B<namespaces>(7) and "
+"B<user_namespaces>(7)"
msgstr ""
-"PID 名前空間間には階層構造が形成される。 新しい PID 名前空間が作成されると、"
-"その名前空間のプロセスは、 新しい名前空間を作成したプロセスの PID 名前空間で"
-"見える。 同様に、親の PID 名前空間自体が別の PID 名前空間の子供の場合には、 "
-"子供の PID 名前空間と親の PID 名前空間のプロセスはどれも 親の親の PID 名前空"
-"間でも見えることになる。 反対に、「子供」の PID 名前空間のプロセスには、 親の"
-"名前空間のプロセスは見えない。 名前空間に階層構造が存在するということは、個々"
-"のプロセスは 複数の PID を持つということを意味している。 そのプロセスが見える"
-"名前空間一つにつき PID が一つあり、 それぞれの PID は対応する名前空間において"
-"一意である。 (B<getpid>(2) を呼び出すと、常にそのプロセスが存在している名前"
-"空間における PID が返される。)"
-#. mount -t proc proc /proc
+#. Before Linux 2.6.29, it appears that only CAP_SYS_ADMIN was needed
#. type: Plain text
-#: build/C/man2/clone.2:474
+#: build/C/man2/clone.2:447
msgid ""
-"After creating the new namespace, it is useful for the child to change its "
-"root directory and mount a new procfs instance at I</proc> so that tools "
-"such as B<ps>(1) work correctly. (If B<CLONE_NEWNS> is also included in "
-"I<flags>, then it isn't necessary to change the root directory: a new procfs "
-"instance can be mounted directly over I</proc>.)"
+"Before Linux 3.8, use of B<CLONE_NEWUSER> required that the caller have "
+"three capabilities: B<CAP_SYS_ADMIN>, B<CAP_SETUID>, and B<CAP_SETGID>. "
+"Starting with Linux 3.8, no privileges are needed to create a user namespace."
msgstr ""
-"新しい名前空間の作成後には、 子プロセスにおいて、 B<ps>(1) といったツールが"
-"正しく動作するように、 自身の root ディレクトリを変更し、 I</proc> に新しい "
-"procfs インスタンスをマウントするのがよいだろう。 (B<flags> に "
-"B<CLONE_NEWNS> も指定されていた場合には、root ディレクトリを変更する必要はな"
-"く、 いきなり新しい procfs インスタンスを I</proc> にマウントすることができ"
-"る。)"
+#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
+#. https://lwn.net/Articles/543273/
+#. The fix actually went into 3.9 and into 3.8.3. However, user namespaces
+#. were, for practical purposes, unusable in earlier 3.8.x because of the
+#. various filesystems that didn't support userns.
#. type: Plain text
-#: build/C/man2/clone.2:481
+#: build/C/man2/clone.2:461
msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_PID_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>). This flag "
-"can't be specified in conjunction with B<CLONE_THREAD>."
+"This flag can't be specified in conjunction with B<CLONE_THREAD> or "
+"B<CLONE_PARENT>. For security reasons, B<CLONE_NEWUSER> cannot be specified "
+"in conjunction with B<CLONE_FS>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
+msgid "For further information on user namespaces, see B<user_namespaces>(7)."
msgstr ""
-"このフラグを使用するためには、 カーネルでオプション B<CONFIG_PID_NS> を有効に"
-"なっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが必要で"
-"ある。 このフラグは B<CLONE_THREAD> と組み合わせて使うことはできない。"
#. type: TP
-#: build/C/man2/clone.2:481 build/C/man2/unshare.2:149
+#: build/C/man2/clone.2:464 build/C/man2/unshare.2:209
#, no-wrap
msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:493
+#: build/C/man2/clone.2:476
+#, fuzzy
+#| msgid ""
+#| "If B<CLONE_NEWUTS> is set, then create the process in a new UTS "
+#| "namespace, whose identifiers are initialized by duplicating the "
+#| "identifiers from the UTS namespace of the calling process. If this flag "
+#| "is not set, then (as with B<fork>(2)), the process is created in the same "
+#| "UTS namespace as the calling process. This flag is intended for the "
+#| "implementation of containers."
msgid ""
"If B<CLONE_NEWUTS> is set, then create the process in a new UTS namespace, "
"whose identifiers are initialized by duplicating the identifiers from the "
"UTS namespace of the calling process. If this flag is not set, then (as "
-"with B<fork>(2)), the process is created in the same UTS namespace as the "
+"with B<fork>(2)) the process is created in the same UTS namespace as the "
"calling process. This flag is intended for the implementation of containers."
msgstr ""
"B<CLONE_NEWUTS> が設定された場合、新しい UTS 名前空間でプロセスを作成する。 "
"る。 このフラグは、コンテナの実装での使用を意図して用意されたものである。"
#. type: Plain text
-#: build/C/man2/clone.2:504
+#: build/C/man2/clone.2:487
msgid ""
"A UTS namespace is the set of identifiers returned by B<uname>(2); among "
"these, the domain name and the hostname can be modified by "
"のすべての プロセスに見えるが、別の UTS 名前空間のプロセスには見えない。"
#. type: Plain text
-#: build/C/man2/clone.2:509
+#: build/C/man2/clone.2:492
msgid ""
-"Use of this flag requires: a kernel configured with the B<CONFIG_UTS_NS> "
-"option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+"Only a privileged process (B<CAP_SYS_ADMIN>) can employ B<CLONE_NEWUTS>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:495
+msgid "For further information on UTS namespaces, see B<namespaces>(7)."
msgstr ""
-"このフラグを使用するためには、 カーネルでオプション B<CONFIG_UTS_NS> を有効に"
-"なっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが必要で"
-"ある。"
#. type: TP
-#: build/C/man2/clone.2:509
+#: build/C/man2/clone.2:495
#, no-wrap
msgid "B<CLONE_PARENT> (since Linux 2.3.12)"
msgstr "B<CLONE_PARENT> (Linux 2.3.12 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:516
+#: build/C/man2/clone.2:502
msgid ""
"If B<CLONE_PARENT> is set, then the parent of the new child (as returned by "
"B<getppid>(2)) will be the same as that of the calling process."
"プロセスは呼び出し元のプロセスの親プロセスと同じになる。"
#. type: Plain text
-#: build/C/man2/clone.2:522
+#: build/C/man2/clone.2:508
msgid ""
"If B<CLONE_PARENT> is not set, then (as with B<fork>(2)) the child's parent "
"is the calling process."
"プロセスがその子供の親になる。"
#. type: Plain text
-#: build/C/man2/clone.2:530
+#: build/C/man2/clone.2:516
msgid ""
"Note that it is the parent process, as returned by B<getppid>(2), which is "
"signaled when the child terminates, so that if B<CLONE_PARENT> is set, then "
"ロセスではなく呼び出し元のプロセスの 親プロセスにシグナルが送られる。"
#. type: TP
-#: build/C/man2/clone.2:530
+#: build/C/man2/clone.2:516
#, no-wrap
msgid "B<CLONE_PARENT_SETTID> (since Linux 2.5.49)"
msgstr "B<CLONE_PARENT_SETTID> (Linux 2.5.49 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:538
+#: build/C/man2/clone.2:524
msgid ""
"Store child thread ID at location I<ptid> in parent and child memory. (In "
"Linux 2.5.32-2.5.48 there was a flag B<CLONE_SETTID> that did this.)"
"いうフラグが存在した。)"
#. type: TP
-#: build/C/man2/clone.2:538
+#: build/C/man2/clone.2:524
#, no-wrap
msgid "B<CLONE_PID> (obsolete)"
msgstr "B<CLONE_PID> (廃止予定)"
#. type: Plain text
-#: build/C/man2/clone.2:549
+#: build/C/man2/clone.2:535
msgid ""
"If B<CLONE_PID> is set, the child process is created with the same process "
"ID as the calling process. This is good for hacking the system, but "
"0) だけがこのフラグを指定できる。 Linux 2.5.16 で削除された。"
#. type: TP
-#: build/C/man2/clone.2:549
+#: build/C/man2/clone.2:535
#, no-wrap
msgid "B<CLONE_PTRACE> (since Linux 2.2)"
msgstr "B<CLONE_PTRACE> (Linux 2.2 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:556
+#: build/C/man2/clone.2:542
msgid ""
"If B<CLONE_PTRACE> is specified, and the calling process is being traced, "
"then trace the child also (see B<ptrace>(2))."
"場合、子プロセスも 同様に追跡される。 (B<ptrace>(2) を参照のこと)"
#. type: TP
-#: build/C/man2/clone.2:556
+#: build/C/man2/clone.2:542
#, no-wrap
msgid "B<CLONE_SETTLS> (since Linux 2.5.32)"
msgstr "B<CLONE_SETTLS> (Linux 2.5.32 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:563
+#: build/C/man2/clone.2:549
msgid ""
"The I<newtls> argument is the new TLS (Thread Local Storage) descriptor. "
"(See B<set_thread_area>(2).)"
"(B<set_thread_area>(2) を参照のこと)"
#. type: TP
-#: build/C/man2/clone.2:563
+#: build/C/man2/clone.2:549
#, no-wrap
msgid "B<CLONE_SIGHAND> (since Linux 2.0)"
msgstr "B<CLONE_SIGHAND> (Linux 2.0 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:579
+#: build/C/man2/clone.2:565
msgid ""
"If B<CLONE_SIGHAND> is set, the calling process and the child process share "
"the same table of signal handlers. If the calling process or child process "
"したりできる。"
#. type: Plain text
-#: build/C/man2/clone.2:590
+#: build/C/man2/clone.2:576
msgid ""
"If B<CLONE_SIGHAND> is not set, the child process inherits a copy of the "
"signal handlers of the calling process at the time B<clone>() is called. "
"は影響を与えない。"
#. type: Plain text
-#: build/C/man2/clone.2:598
+#: build/C/man2/clone.2:584
msgid ""
"Since Linux 2.6.0-test6, I<flags> must also include B<CLONE_VM> if "
"B<CLONE_SIGHAND> is specified"
"も I<flags> に含めなければならない。"
#. type: TP
-#: build/C/man2/clone.2:598
+#: build/C/man2/clone.2:584
#, no-wrap
msgid "B<CLONE_STOPPED> (since Linux 2.6.0-test2)"
msgstr "B<CLONE_STOPPED> (Linux 2.6.0-test2 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:607
+#: build/C/man2/clone.2:593
msgid ""
"If B<CLONE_STOPPED> is set, then the child is initially stopped (as though "
"it was sent a B<SIGSTOP> signal), and must be resumed by sending it a "
#. glibc 2.8 removed this defn from bits/sched.h
#. type: Plain text
-#: build/C/man2/clone.2:615
+#: build/C/man2/clone.2:601
msgid ""
"This flag was I<deprecated> from Linux 2.6.25 onward, and was I<removed> "
"altogether in Linux 2.6.38."
"Linux 2.6.38 で完全にI<削除>された。"
#. type: TP
-#: build/C/man2/clone.2:615
+#: build/C/man2/clone.2:601
#, no-wrap
msgid "B<CLONE_SYSVSEM> (since Linux 2.5.10)"
msgstr "B<CLONE_SYSVSEM> (Linux 2.5.10 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:624
+#: build/C/man2/clone.2:619
+#, fuzzy
+#| msgid ""
+#| "If B<CLONE_SYSVSEM> is set, then the child and the calling process share "
+#| "a single list of System\\ V semaphore undo values (see B<semop>(2)). If "
+#| "this flag is not set, then the child has a separate undo list, which is "
+#| "initially empty."
msgid ""
"If B<CLONE_SYSVSEM> is set, then the child and the calling process share a "
-"single list of System\\ V semaphore undo values (see B<semop>(2)). If this "
-"flag is not set, then the child has a separate undo list, which is initially "
-"empty."
+"single list of System V semaphore adjustment (I<semadj>) values (see "
+"B<semop>(2)). In this case, the shared list accumulates I<semadj> values "
+"across all processes sharing the list, and semaphore adjustments are "
+"performed only when the last process that is sharing the list terminates (or "
+"ceases sharing the list using B<unshare>(2)). If this flag is not set, then "
+"the child has a separate I<semadj> list that is initially empty."
msgstr ""
"B<CLONE_SYSVSEM> がセットされると、子プロセスと呼び出し元プロセスは一つの "
"System\\ V セマフォのアンドゥ値リスト (B<semop>(2) 参照) を共有する。このフ"
"の初期値は空である)。"
#. type: TP
-#: build/C/man2/clone.2:624
+#: build/C/man2/clone.2:619
#, no-wrap
msgid "B<CLONE_THREAD> (since Linux 2.4.0-test8)"
msgstr "B<CLONE_THREAD> (Linux 2.4.0-test8以降)"
#. type: Plain text
-#: build/C/man2/clone.2:633
+#: build/C/man2/clone.2:628
msgid ""
"If B<CLONE_THREAD> is set, the child is placed in the same thread group as "
"the calling process. To make the remainder of the discussion of "
"のに使うこととする。"
#. type: Plain text
-#: build/C/man2/clone.2:641
+#: build/C/man2/clone.2:636
msgid ""
"Thread groups were a feature added in Linux 2.4 to support the POSIX threads "
"notion of a set of threads that share a single PID. Internally, this shared "
"レッドグループ ID を返す。"
#. type: Plain text
-#: build/C/man2/clone.2:650
+#: build/C/man2/clone.2:645
msgid ""
"The threads within a group can be distinguished by their (system-wide) "
"unique thread IDs (TID). A new thread's TID is available as the function "
"返され、 スレッドは自分自身の TID を B<gettid>(2) で取得できる。"
#. type: Plain text
-#: build/C/man2/clone.2:660
+#: build/C/man2/clone.2:655
msgid ""
"When a call is made to B<clone>() without specifying B<CLONE_THREAD>, then "
"the resulting thread is placed in a new thread group whose TGID is the same "
"置かれる。このスレッドは 新しいスレッドグループの「リーダー」である。"
#. type: Plain text
-#: build/C/man2/clone.2:682
+#: build/C/man2/clone.2:677
msgid ""
"A new thread created with B<CLONE_THREAD> has the same parent process as the "
"caller of B<clone>() (i.e., like B<CLONE_PARENT>), so that calls to "
"る)。"
#. type: Plain text
-#: build/C/man2/clone.2:687
+#: build/C/man2/clone.2:682
msgid ""
"After all of the threads in a thread group terminate the parent process of "
"the thread group is sent a B<SIGCHLD> (or other termination) signal."
"ロセスに B<SIGCHLD> (もしくは他の終了シグナル) が送られる。"
#. type: Plain text
-#: build/C/man2/clone.2:692
+#: build/C/man2/clone.2:687
msgid ""
"If any of the threads in a thread group performs an B<execve>(2), then all "
"threads other than the thread group leader are terminated, and the new "
"ドグループリーダーの下で 実行される。"
#. type: Plain text
-#: build/C/man2/clone.2:698
+#: build/C/man2/clone.2:693
msgid ""
"If one of the threads in a thread group creates a child using B<fork>(2), "
"then any thread in the group can B<wait>(2) for that child."
"る。"
#. type: Plain text
-#: build/C/man2/clone.2:711
+#: build/C/man2/clone.2:706
msgid ""
"Since Linux 2.5.35, I<flags> must also include B<CLONE_SIGHAND> if "
"B<CLONE_THREAD> is specified (and note that, since Linux 2.6.0-test6, "
"こと)。"
#. type: Plain text
-#: build/C/man2/clone.2:716
+#: build/C/man2/clone.2:711
msgid ""
"Signals may be sent to a thread group as a whole (i.e., a TGID) using "
"B<kill>(2), or to a specific thread (i.e., TID) using B<tgkill>(2)."
"こともできる。"
#. type: Plain text
-#: build/C/man2/clone.2:721
+#: build/C/man2/clone.2:716
msgid ""
"Signal dispositions and actions are process-wide: if an unhandled signal is "
"delivered to a thread, then it will affect (terminate, stop, continue, be "
"影響を及ぼす (終了したり、停止したり、動作を継続したり、無視されたりする)。"
#. type: Plain text
-#: build/C/man2/clone.2:734
+#: build/C/man2/clone.2:729
msgid ""
"Each thread has its own signal mask, as set by B<sigprocmask>(2), but "
"signals can be pending either: for the whole process (i.e., deliverable to "
"し元の スレッドに対する処理待ちシグナルを結合したシグナル集合が返される。"
#. type: Plain text
-#: build/C/man2/clone.2:746
+#: build/C/man2/clone.2:741
msgid ""
"If B<kill>(2) is used to send a signal to a thread group, and the thread "
"group has installed a handler for the signal, then the handler will be "
"B<kill (2)> を使って送信されたシグナルを受信する。"
#. type: TP
-#: build/C/man2/clone.2:746
+#: build/C/man2/clone.2:741
#, no-wrap
msgid "B<CLONE_UNTRACED> (since Linux 2.5.46)"
msgstr "B<CLONE_UNTRACED> (Linux 2.5.46 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:753
+#: build/C/man2/clone.2:748
msgid ""
"If B<CLONE_UNTRACED> is specified, then a tracing process cannot force "
"B<CLONE_PTRACE> on this child process."
"スに B<CLONE_PTRACE> を適用することができない。"
#. type: TP
-#: build/C/man2/clone.2:753
+#: build/C/man2/clone.2:748
#, no-wrap
msgid "B<CLONE_VFORK> (since Linux 2.2)"
msgstr "B<CLONE_VFORK> (Linux 2.2 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:765
+#: build/C/man2/clone.2:760
msgid ""
"If B<CLONE_VFORK> is set, the execution of the calling process is suspended "
"until the child releases its virtual memory resources via a call to "
"元のプロセスの実行は停止される。"
#. type: Plain text
-#: build/C/man2/clone.2:771
+#: build/C/man2/clone.2:766
msgid ""
"If B<CLONE_VFORK> is not set, then both the calling process and the child "
"are schedulable after the call, and an application should not rely on "
"らのプロセスの 実行順序に依存しないようにすべきである。"
#. type: TP
-#: build/C/man2/clone.2:771
+#: build/C/man2/clone.2:766
#, no-wrap
msgid "B<CLONE_VM> (since Linux 2.0)"
msgstr "B<CLONE_VM> (Linux 2.0 以降)"
#. type: Plain text
-#: build/C/man2/clone.2:784
+#: build/C/man2/clone.2:779
msgid ""
"If B<CLONE_VM> is set, the calling process and the child process run in the "
"same memory space. In particular, memory writes performed by the calling "
"プしたりアンマップした場合、 もう一方のプロセスにも影響が及ぶ。"
#. type: Plain text
-#: build/C/man2/clone.2:793
+#: build/C/man2/clone.2:788
msgid ""
"If B<CLONE_VM> is not set, the child process runs in a separate copy of the "
"memory space of the calling process at the time of B<clone>(). Memory "
"B<fork>(2) の場合と同様、もう一方のプロセスには影響しない。"
#. type: SS
-#: build/C/man2/clone.2:793
+#: build/C/man2/clone.2:788 build/C/man2/sched_setaffinity.2:200
#, no-wrap
-msgid "The raw system call interface"
-msgstr "素のシステムコールのインターフェース"
+msgid "C library/kernel ABI differences"
+msgstr ""
#. type: Plain text
-#: build/C/man2/clone.2:809
+#: build/C/man2/clone.2:804
msgid ""
"The raw B<clone>() system call corresponds more closely to B<fork>(2) in "
"that execution in the child continues from the point of the call. As such, "
"ターフェースは、 おおまかには次のようになっている。"
#. type: Plain text
-#: build/C/man2/clone.2:815
+#: build/C/man2/clone.2:810
#, no-wrap
msgid ""
"B<long clone(unsigned long >I<flags>B<, void *>I<child_stack>B<,>\n"
"B< struct pt_regs *>I<regs>B<);>\n"
#. type: Plain text
-#: build/C/man2/clone.2:826
+#: build/C/man2/clone.2:821
msgid ""
"Another difference for the raw system call is that the I<child_stack> "
"argument may be zero, in which case copy-on-write semantics ensure that the "
"B<CLONE_VM> オプションを指定してはならない。"
#. type: Plain text
-#: build/C/man2/clone.2:834
+#: build/C/man2/clone.2:829
msgid ""
"For some architectures, the order of the arguments for the system call "
"differs from that shown above. On the score, microblaze, ARM, ARM 64, PA-"
"クチャでは、最初と 2 番目の引き数の順番が逆である。"
#. type: SS
-#: build/C/man2/clone.2:834
+#: build/C/man2/clone.2:829
#, no-wrap
msgid "blackfin, m68k, and sparc"
msgstr "blackfin, m68k, sparc"
#. type: Plain text
-#: build/C/man2/clone.2:838
+#: build/C/man2/clone.2:833
msgid ""
"The argument-passing conventions on blackfin, m68k, and sparc are different "
"from the descriptions above. For details, see the kernel (and glibc) source."
"カーネル (と glibc) のソースを参照のこと。"
#. type: SS
-#: build/C/man2/clone.2:838
+#: build/C/man2/clone.2:833
#, no-wrap
msgid "ia64"
msgstr "ia64"
#. type: Plain text
-#: build/C/man2/clone.2:840
+#: build/C/man2/clone.2:835
msgid "On ia64, a different interface is used:"
msgstr "ia64 では、別のインターフェースが使用される:"
#. type: Plain text
-#: build/C/man2/clone.2:847
+#: build/C/man2/clone.2:842
#, no-wrap
msgid ""
"B<int __clone2(int (*>I<fn>B<)(void *), >\n"
"B< /* pid_t *>I<ptid>B<, struct user_desc *>I<tls>B<, pid_t *>I<ctid>B< */ );>\n"
#. type: Plain text
-#: build/C/man2/clone.2:859
+#: build/C/man2/clone.2:854
msgid ""
"The prototype shown above is for the glibc wrapper function; the raw system "
"call interface has no I<fn> or I<arg> argument, and changes the order of the "
"り、 I<flags> が最初の引き数で、 I<tls> が最後の引き数である。"
#. type: Plain text
-#: build/C/man2/clone.2:870
+#: build/C/man2/clone.2:865
msgid ""
"B<__clone2>() operates in the same way as B<clone>(), except that "
"I<child_stack_base> points to the lowest address of the child's stack area, "
"I<stack_size> は I<child_stack_base> が指し示すスタックエリアの大きさを示す。"
#. type: SS
-#: build/C/man2/clone.2:870
+#: build/C/man2/clone.2:865
#, no-wrap
msgid "Linux 2.4 and earlier"
msgstr "Linux 2.4 以前"
#. type: Plain text
-#: build/C/man2/clone.2:878
+#: build/C/man2/clone.2:873
msgid ""
"In Linux 2.4 and earlier, B<clone>() does not take arguments I<ptid>, "
"I<tls>, and I<ctid>."
#. gettid(2) returns current->pid;
#. getpid(2) returns current->tgid;
#. type: Plain text
-#: build/C/man2/clone.2:887
+#: build/C/man2/clone.2:882
msgid ""
"On success, the thread ID of the child process is returned in the caller's "
"thread of execution. On failure, -1 is returned in the caller's context, no "
"成されず、 I<errno> が適切に設定される。"
#. type: SH
-#: build/C/man2/clone.2:887 build/C/man2/kcmp.2:170
+#: build/C/man2/clone.2:882 build/C/man2/kcmp.2:170
#: build/C/man2/sched_get_priority_max.2:107 build/C/man3/sched_getcpu.3:65
#: build/C/man2/sched_rr_get_interval.2:80
#: build/C/man2/sched_setaffinity.2:116 build/C/man2/sched_setattr.2:271
#: build/C/man2/sched_setparam.2:96 build/C/man2/sched_setscheduler.2:145
-#: build/C/man2/sched_yield.2:48 build/C/man2/setns.2:77
-#: build/C/man2/unshare.2:212
+#: build/C/man2/sched_yield.2:48 build/C/man2/setns.2:145
+#: build/C/man2/unshare.2:282
#, no-wrap
msgid "ERRORS"
msgstr "エラー"
#. type: TP
-#: build/C/man2/clone.2:888
+#: build/C/man2/clone.2:883
#, no-wrap
msgid "B<EAGAIN>"
msgstr "B<EAGAIN>"
#. type: Plain text
-#: build/C/man2/clone.2:891
-msgid "Too many processes are already running."
-msgstr "すでに実行中のプロセスが多すぎる。"
+#: build/C/man2/clone.2:887
+msgid "Too many processes are already running; see B<fork>(2)."
+msgstr "すでに実行中のプロセスが多すぎる。 B<fork>(2) 参照。"
#. type: TP
-#: build/C/man2/clone.2:891 build/C/man2/clone.2:898 build/C/man2/clone.2:913
-#: build/C/man2/clone.2:921 build/C/man2/clone.2:929 build/C/man2/clone.2:937
-#: build/C/man2/clone.2:943 build/C/man2/clone.2:953 build/C/man2/clone.2:961
-#: build/C/man2/clone.2:969 build/C/man2/kcmp.2:181
+#: build/C/man2/clone.2:887 build/C/man2/clone.2:894 build/C/man2/clone.2:909
+#: build/C/man2/clone.2:926 build/C/man2/clone.2:934 build/C/man2/clone.2:946
+#: build/C/man2/clone.2:952 build/C/man2/clone.2:962 build/C/man2/clone.2:970
+#: build/C/man2/clone.2:978 build/C/man2/kcmp.2:181
#: build/C/man2/sched_get_priority_max.2:108
#: build/C/man2/sched_rr_get_interval.2:84
#: build/C/man2/sched_setaffinity.2:120 build/C/man2/sched_setaffinity.2:128
#: build/C/man2/sched_setattr.2:323 build/C/man2/sched_setparam.2:97
#: build/C/man2/sched_setparam.2:104 build/C/man2/sched_setscheduler.2:146
#: build/C/man2/sched_setscheduler.2:153 build/C/man2/sched_setscheduler.2:158
-#: build/C/man2/setns.2:82 build/C/man2/unshare.2:213
+#: build/C/man2/setns.2:150 build/C/man2/setns.2:155 build/C/man2/setns.2:159
+#: build/C/man2/setns.2:163 build/C/man2/setns.2:170
+#: build/C/man2/unshare.2:283 build/C/man2/unshare.2:287
#, no-wrap
msgid "B<EINVAL>"
msgstr "B<EINVAL>"
#. type: Plain text
-#: build/C/man2/clone.2:898
+#: build/C/man2/clone.2:894
msgid ""
"B<CLONE_SIGHAND> was specified, but B<CLONE_VM> was not. (Since Linux 2.6.0-"
"test6.)"
#. was specified.
#. (Since Linux 2.6.0-test6.)
#. type: Plain text
-#: build/C/man2/clone.2:913
+#: build/C/man2/clone.2:909
msgid ""
"B<CLONE_THREAD> was specified, but B<CLONE_SIGHAND> was not. (Since Linux "
"2.5.35.)"
"B<CLONE_THREAD> が指定されていたが、 B<CLONE_SIGHAND> が指定されていなかっ"
"た。 (Linux 2.5.35 以降)"
+#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
#. type: Plain text
-#: build/C/man2/clone.2:921
+#: build/C/man2/clone.2:918
msgid "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in I<flags>."
msgstr "B<CLONE_FS> と B<CLONE_NEWNS> の両方が I<flags> に指定された。"
+#. type: TP
+#: build/C/man2/clone.2:918
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_VM> (since Linux 2.0)"
+msgid "B<EINVAL> (since Linux 3.9)"
+msgstr "B<CLONE_VM> (Linux 2.0 以降)"
+
+#. type: Plain text
+#: build/C/man2/clone.2:926
+#, fuzzy
+#| msgid "Both B<CLONE_FS> and B<CLONE_NEWNS> were specified in I<flags>."
+msgid "Both B<CLONE_NEWUSER> and B<CLONE_FS> were specified in I<flags>."
+msgstr "B<CLONE_FS> と B<CLONE_NEWNS> の両方が I<flags> に指定された。"
+
#. type: Plain text
-#: build/C/man2/clone.2:929
+#: build/C/man2/clone.2:934
msgid "Both B<CLONE_NEWIPC> and B<CLONE_SYSVSEM> were specified in I<flags>."
msgstr "B<CLONE_NEWIPC> と B<CLONE_SYSVSEM> の両方が I<flags> に指定された。"
#. type: Plain text
-#: build/C/man2/clone.2:937
-msgid "Both B<CLONE_NEWPID> and B<CLONE_THREAD> were specified in I<flags>."
+#: build/C/man2/clone.2:946
+#, fuzzy
+#| msgid "Both B<CLONE_NEWPID> and B<CLONE_THREAD> were specified in I<flags>."
+msgid ""
+"One (or both) of B<CLONE_NEWPID> or B<CLONE_NEWUSER> and one (or both) of "
+"B<CLONE_THREAD> or B<CLONE_PARENT> were specified in I<flags>."
msgstr "B<CLONE_NEWPID> と B<CLONE_THREAD> の両方が I<flags> に指定された。"
#. type: Plain text
-#: build/C/man2/clone.2:943
+#: build/C/man2/clone.2:952
msgid ""
"Returned by B<clone>() when a zero value is specified for I<child_stack>."
msgstr "I<child_stack> にゼロを指定した場合に B<clone>() が返す。"
#. type: Plain text
-#: build/C/man2/clone.2:953
+#: build/C/man2/clone.2:962
msgid ""
"B<CLONE_NEWIPC> was specified in I<flags>, but the kernel was not configured "
"with the B<CONFIG_SYSVIPC> and B<CONFIG_IPC_NS> options."
"B<CONFIG_SYSVIPC> と B<CONFIG_IPC_NS> が有効になっていなかった。"
#. type: Plain text
-#: build/C/man2/clone.2:961
+#: build/C/man2/clone.2:970
msgid ""
"B<CLONE_NEWNET> was specified in I<flags>, but the kernel was not configured "
"with the B<CONFIG_NET_NS> option."
"B<CONFIG_NET_NS> が有効になっていなかった。"
#. type: Plain text
-#: build/C/man2/clone.2:969
+#: build/C/man2/clone.2:978
msgid ""
"B<CLONE_NEWPID> was specified in I<flags>, but the kernel was not configured "
"with the B<CONFIG_PID_NS> option."
"B<CONFIG_PID_NS> が有効になっていなかった。"
#. type: Plain text
-#: build/C/man2/clone.2:977
+#: build/C/man2/clone.2:986
msgid ""
"B<CLONE_NEWUTS> was specified in I<flags>, but the kernel was not configured "
"with the B<CONFIG_UTS> option."
"B<CONFIG_UTS> が有効になっていなかった。"
#. type: TP
-#: build/C/man2/clone.2:977 build/C/man2/setns.2:89 build/C/man2/unshare.2:217
+#: build/C/man2/clone.2:986 build/C/man2/setns.2:174
+#: build/C/man2/unshare.2:296
#, no-wrap
msgid "B<ENOMEM>"
msgstr "B<ENOMEM>"
#. type: Plain text
-#: build/C/man2/clone.2:982
+#: build/C/man2/clone.2:991
msgid ""
"Cannot allocate sufficient memory to allocate a task structure for the "
"child, or to copy those parts of the caller's context that need to be copied."
"コピーするのに必要なメモリを十分に割り当てることができない。"
#. type: TP
-#: build/C/man2/clone.2:982 build/C/man2/clone.2:991 build/C/man2/kcmp.2:185
+#: build/C/man2/clone.2:991 build/C/man2/clone.2:1000
+#: build/C/man2/clone.2:1004 build/C/man2/kcmp.2:185
#: build/C/man2/sched_setaffinity.2:135 build/C/man2/sched_setattr.2:339
#: build/C/man2/sched_setattr.2:342 build/C/man2/sched_setparam.2:109
-#: build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:92
-#: build/C/man2/unshare.2:221
+#: build/C/man2/sched_setscheduler.2:164 build/C/man2/setns.2:177
+#: build/C/man2/unshare.2:300 build/C/man2/unshare.2:303
#, no-wrap
msgid "B<EPERM>"
msgstr "B<EPERM>"
#. type: Plain text
-#: build/C/man2/clone.2:991
+#: build/C/man2/clone.2:1000
msgid ""
"B<CLONE_NEWIPC>, B<CLONE_NEWNET>, B<CLONE_NEWNS>, B<CLONE_NEWPID>, or "
"B<CLONE_NEWUTS> was specified by an unprivileged process (process without "
"た。"
#. type: Plain text
-#: build/C/man2/clone.2:995
+#: build/C/man2/clone.2:1004
msgid "B<CLONE_PID> was specified by a process other than process 0."
msgstr "PID が 0 以外のプロセスによって B<CLONE_PID> が指定された。"
#. type: Plain text
-#: build/C/man2/clone.2:1002
+#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
+msgid ""
+"B<CLONE_NEWUSER> was specified in I<flags>, but either the effective user ID "
+"or the effective group ID of the caller does not have a mapping in the "
+"parent namespace (see B<user_namespaces>(7))."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:1012 build/C/man2/unshare.2:311
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_VM> (since Linux 2.0)"
+msgid "B<EPERM> (since Linux 3.9)"
+msgstr "B<CLONE_VM> (Linux 2.0 以降)"
+
+#. commit 3151527ee007b73a0ebd296010f1c0454a919c7d
+#. FIXME What is the rationale for this restriction?
+#. type: Plain text
+#: build/C/man2/clone.2:1021 build/C/man2/unshare.2:320
+msgid ""
+"B<CLONE_NEWUSER was specified in> I<flags> and the caller is in a chroot "
+"environment (i.e., the caller's root directory does not match the root "
+"directory of the mount namespace in which it resides)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/clone.2:1021 build/C/man2/unshare.2:320
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_FS> (since Linux 2.0)"
+msgid "B<EUSERS> (since Linux 3.11)"
+msgstr "B<CLONE_FS> (Linux 2.0 以降)"
+
+#. type: Plain text
+#: build/C/man2/clone.2:1030 build/C/man2/unshare.2:329
+msgid ""
+"B<CLONE_NEWUSER> was specified in I<flags>, and the call would cause the "
+"limit on the number of nested user namespaces to be exceeded. See "
+"B<user_namespaces>(7)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/clone.2:1037
msgid ""
"There is no entry for B<clone>() in libc5. glibc2 provides B<clone>() as "
"described in this manual page."
"マニュアルページに記載の通りである。"
#. type: Plain text
-#: build/C/man2/clone.2:1006
+#: build/C/man2/clone.2:1041
msgid ""
"B<clone>() is Linux-specific and should not be used in programs intended to "
"be portable."
"い。"
#. type: Plain text
-#: build/C/man2/clone.2:1016
+#: build/C/man2/clone.2:1051
msgid ""
"In the kernel 2.4.x series, B<CLONE_THREAD> generally does not make the "
"parent of the new thread the same as the parent of the calling process. "
"グを指定すると、 暗黙のうちに CLONE_PARENT フラグを指定したことになる。"
#. type: Plain text
-#: build/C/man2/clone.2:1026
+#: build/C/man2/clone.2:1061
msgid ""
"For a while there was B<CLONE_DETACHED> (introduced in 2.5.32): parent wants "
"no child-exit signal. In 2.6.2 the need to give this together with "
"要はなくなった。 このフラグはまだ定義されているが、何の効果もない。"
#. type: Plain text
-#: build/C/man2/clone.2:1031
+#: build/C/man2/clone.2:1066
msgid ""
"On i386, B<clone>() should not be called through vsyscall, but directly "
"through I<int $0x80>."
"呼び出すべきである。"
#. type: Plain text
-#: build/C/man2/clone.2:1062
+#: build/C/man2/clone.2:1097
msgid ""
"Versions of the GNU C library that include the NPTL threading library "
"contain a wrapper function for B<getpid>(2) that performs caching of PIDs. "
"い。"
#. type: Plain text
-#: build/C/man2/clone.2:1065
+#: build/C/man2/clone.2:1100
#, no-wrap
msgid " #include E<lt>syscall.hE<gt>\n"
msgstr " #include E<lt>syscall.hE<gt>\n"
#. type: Plain text
-#: build/C/man2/clone.2:1067
+#: build/C/man2/clone.2:1102
#, no-wrap
msgid " pid_t mypid;\n"
msgstr " pid_t mypid;\n"
#. type: Plain text
-#: build/C/man2/clone.2:1069
+#: build/C/man2/clone.2:1104
#, no-wrap
msgid " mypid = syscall(SYS_getpid);\n"
msgstr " mypid = syscall(SYS_getpid);\n"
#. type: Plain text
-#: build/C/man2/clone.2:1083
+#: build/C/man2/clone.2:1118
msgid ""
"The following program demonstrates the use of B<clone>() to create a child "
"process that executes in a separate UTS namespace. The child changes the "
"このプログラムの使用方法については B<setns>(2) を参照。"
#. type: SS
-#: build/C/man2/clone.2:1083 build/C/man2/setns.2:166
+#: build/C/man2/clone.2:1118 build/C/man2/setns.2:250
+#: build/C/man2/unshare.2:395
#, no-wrap
msgid "Program source"
msgstr "プログラムのソース"
#. type: Plain text
-#: build/C/man2/clone.2:1093
+#: build/C/man2/clone.2:1128
#, no-wrap
msgid ""
"#define _GNU_SOURCE\n"
"#include E<lt>unistd.hE<gt>\n"
#. type: Plain text
-#: build/C/man2/clone.2:1096 build/C/man2/setns.2:177
+#: build/C/man2/clone.2:1131 build/C/man2/setns.2:261
+#: build/C/man2/unshare.2:414
#, no-wrap
msgid ""
"#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n"
" } while (0)\n"
#. type: Plain text
-#: build/C/man2/clone.2:1101
+#: build/C/man2/clone.2:1136
#, no-wrap
msgid ""
"static int /* Start function for cloned child */\n"
" struct utsname uts;\n"
#. type: Plain text
-#: build/C/man2/clone.2:1103
+#: build/C/man2/clone.2:1138
#, no-wrap
msgid " /* Change hostname in UTS namespace of child */\n"
msgstr " /* 子プロセスの UTS 名前空間でホスト名を変更する */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1106
+#: build/C/man2/clone.2:1141
#, no-wrap
msgid ""
" if (sethostname(arg, strlen(arg)) == -1)\n"
" errExit(\"sethostname\");\n"
#. type: Plain text
-#: build/C/man2/clone.2:1108
+#: build/C/man2/clone.2:1143
#, no-wrap
msgid " /* Retrieve and display hostname */\n"
msgstr " /* ホスト名を取得し表示する */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1112
+#: build/C/man2/clone.2:1147
#, no-wrap
msgid ""
" if (uname(&uts) == -1)\n"
" printf(\"uts.nodename in child: %s\\en\", uts.nodename);\n"
#. type: Plain text
-#: build/C/man2/clone.2:1116
+#: build/C/man2/clone.2:1151
#, no-wrap
msgid ""
" /* Keep the namespace open for a while, by sleeping.\n"
" 別のプロセスがこの名前空間に参加するなど。 */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1118
+#: build/C/man2/clone.2:1153
#, no-wrap
msgid " sleep(200);\n"
msgstr " sleep(200);\n"
#. type: Plain text
-#: build/C/man2/clone.2:1121
+#: build/C/man2/clone.2:1156
#, no-wrap
msgid ""
" return 0; /* Child terminates now */\n"
"}\n"
#. type: Plain text
-#: build/C/man2/clone.2:1123
+#: build/C/man2/clone.2:1158
#, no-wrap
msgid "#define STACK_SIZE (1024 * 1024) /* Stack size for cloned child */\n"
msgstr "#define STACK_SIZE (1024 * 1024) /* clone される子プロセスのスタックサイズ */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1131
+#: build/C/man2/clone.2:1166
#, no-wrap
msgid ""
"int\n"
" struct utsname uts;\n"
#. type: Plain text
-#: build/C/man2/clone.2:1136
+#: build/C/man2/clone.2:1171
#, no-wrap
msgid ""
" if (argc E<lt> 2) {\n"
" }\n"
#. type: Plain text
-#: build/C/man2/clone.2:1138
+#: build/C/man2/clone.2:1173
#, no-wrap
msgid " /* Allocate stack for child */\n"
msgstr " /* 子プロセス用のスタックを割り当てる */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1143
+#: build/C/man2/clone.2:1178
#, no-wrap
msgid ""
" stack = malloc(STACK_SIZE);\n"
" stackTop = stack + STACK_SIZE; /* スタックは下方向に伸びるものとする */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1146
+#: build/C/man2/clone.2:1181
#, no-wrap
msgid ""
" /* Create child that has its own UTS namespace;\n"
" 子プロセスは childFunc() の実行を開始する */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1151
+#: build/C/man2/clone.2:1186
#, no-wrap
msgid ""
" pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]);\n"
" printf(\"clone() returned %ld\\en\", (long) pid);\n"
#. type: Plain text
-#: build/C/man2/clone.2:1153
+#: build/C/man2/clone.2:1188
#, no-wrap
msgid " /* Parent falls through to here */\n"
msgstr " /* 親プロセスの実行はここに来る */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1155
+#: build/C/man2/clone.2:1190
#, no-wrap
msgid " sleep(1); /* Give child time to change its hostname */\n"
msgstr " sleep(1); /* 子プロセスがホスト名を変更する時間を与える */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1158
+#: build/C/man2/clone.2:1193
#, no-wrap
msgid ""
" /* Display hostname in parent\\(aqs UTS namespace. This will be\n"
" これは子プロセスの UTS 名前空間でのホスト名とは異なる */\n"
#. type: Plain text
-#: build/C/man2/clone.2:1162
+#: build/C/man2/clone.2:1197
#, no-wrap
msgid ""
" if (uname(&uts) == -1)\n"
" printf(\"uts.nodename in parent: %s\\en\", uts.nodename);\n"
#. type: Plain text
-#: build/C/man2/clone.2:1166
+#: build/C/man2/clone.2:1201
#, no-wrap
msgid ""
" if (waitpid(pid, NULL, 0) == -1) /* Wait for child */\n"
" printf(\"child has terminated\\en\");\n"
#. type: Plain text
-#: build/C/man2/clone.2:1169
+#: build/C/man2/clone.2:1204
#, no-wrap
msgid ""
" exit(EXIT_SUCCESS);\n"
"}\n"
#. type: Plain text
-#: build/C/man2/clone.2:1184
+#: build/C/man2/clone.2:1220
+#, fuzzy
+#| msgid ""
+#| "B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
+#| "B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
+#| "B<unshare>(2), B<wait>(2), B<capabilities>(7), B<pthreads>(7)"
msgid ""
"B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
"B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
-"B<unshare>(2), B<wait>(2), B<capabilities>(7), B<pthreads>(7)"
+"B<unshare>(2), B<wait>(2), B<capabilities>(7), B<namespaces>(7), "
+"B<pthreads>(7)"
msgstr ""
"B<fork>(2), B<futex>(2), B<getpid>(2), B<gettid>(2), B<kcmp>(2), "
"B<set_thread_area>(2), B<set_tid_address>(2), B<setns>(2), B<tkill>(2), "
"リプタを比較する必要がある場合に、特に役に立つ。"
#. type: TP
-#: build/C/man2/kcmp.2:171 build/C/man2/setns.2:78
+#: build/C/man2/kcmp.2:171 build/C/man2/setns.2:146
#, no-wrap
msgid "B<EBADF>"
msgstr "B<EBADF>"
msgstr "SCHED_GETCPU"
#. type: TH
-#: build/C/man3/sched_getcpu.3:26 build/C/man2/sched_setaffinity.2:34
+#: build/C/man3/sched_getcpu.3:26
#, no-wrap
msgid "2014-05-10"
msgstr "2014-05-10"
msgid "SCHED_SETAFFINITY"
msgstr "SCHED_SETAFFINITY"
+#. type: TH
+#: build/C/man2/sched_setaffinity.2:34
+#, fuzzy, no-wrap
+#| msgid "2014-05-12"
+msgid "2014-08-19"
+msgstr "2014-05-12"
+
#. type: Plain text
#: build/C/man2/sched_setaffinity.2:38
msgid ""
#. type: TH
#: build/C/man2/sched_setattr.2:26
-#, fuzzy, no-wrap
-#| msgid "SCHED_SETPARAM"
+#, no-wrap
msgid "SCHED_SETATTR"
-msgstr "SCHED_SETPARAM"
+msgstr "SCHED_SETATTR"
#. type: TH
-#: build/C/man2/sched_setattr.2:26 build/C/man7/sched.7:32
+#: build/C/man2/sched_setattr.2:26 build/C/man2/sched_setscheduler.2:26
+#: build/C/man7/sched.7:32
#, fuzzy, no-wrap
-#| msgid "2014-05-12"
-msgid "2014-05-13"
-msgstr "2014-05-12"
+#| msgid "2014-05-28"
+msgid "2014-10-02"
+msgstr "2014-05-28"
#. type: Plain text
#: build/C/man2/sched_setattr.2:30
#. type: Plain text
#: build/C/man2/sched_setattr.2:36
-#, fuzzy, no-wrap
-#| msgid ""
-#| "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
-#| "B< cpu_set_t *>I<mask>B<);>\n"
+#, no-wrap
msgid ""
"B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
"B< unsigned int >I<flags>B<);>\n"
msgstr ""
-"B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
-"B< cpu_set_t *>I<mask>B<);>\n"
+"B<int sched_setattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B< unsigned int >I<flags>B<);>\n"
#. type: Plain text
#: build/C/man2/sched_setattr.2:39
-#, fuzzy, no-wrap
-#| msgid ""
-#| "B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
-#| "B< cpu_set_t *>I<mask>B<);>\n"
+#, no-wrap
msgid ""
"B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
"B< unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
msgstr ""
-"B<int sched_getaffinity(pid_t >I<pid>B<, size_t >I<cpusetsize>B<,>\n"
-"B< cpu_set_t *>I<mask>B<);>\n"
+"B<int sched_getattr(pid_t >I<pid>B<, const struct sched_attr *>I<attr>B<,>\n"
+"B< unsigned int >I<size>B<, unsigned int >I<flags>B<);>\n"
#. type: SS
#: build/C/man2/sched_setattr.2:42
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
+#, no-wrap
msgid "sched_setattr()"
-msgstr "B<sched_getcpu>():"
+msgstr "sched_setattr()"
#. type: Plain text
#: build/C/man2/sched_setattr.2:52
#. type: TP
#: build/C/man2/sched_setattr.2:86
-#, fuzzy, no-wrap
-#| msgid "B<SCHED_IDLE>"
+#, no-wrap
msgid "B<SCHED_DEADLINE>"
-msgstr "B<SCHED_IDLE>"
+msgstr "B<SCHED_DEADLINE>"
#. type: Plain text
#: build/C/man2/sched_setattr.2:91
#. type: SS
#: build/C/man2/sched_setattr.2:210
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
+#, no-wrap
msgid "sched_getattr()"
-msgstr "B<sched_getcpu>():"
+msgstr "sched_getattr()"
#. type: Plain text
#: build/C/man2/sched_setattr.2:221
#. type: TP
#: build/C/man2/sched_setattr.2:318
-#, fuzzy, no-wrap
-#| msgid "B<EBADF>"
+#, no-wrap
msgid "B<EBUSY>"
-msgstr "B<EBADF>"
+msgstr "B<EBUSY>"
#. type: Plain text
#: build/C/man2/sched_setattr.2:323
"B<sched_setaffinity>(2))."
msgstr ""
-#. FIXME Add glibc version
+#. FIXME . Add glibc version
#. type: Plain text
#: build/C/man2/sched_setattr.2:351
#, fuzzy
"B<getpriority>(2)."
msgstr ""
-#. FIXME patch sent to Peter Zijlstra
+#. FIXME . patch sent to Peter Zijlstra
#. In Linux versions up to up 3.15,
-#. .\" FIXME patch from Peter Zijlstra pending
+#. FIXME . patch from Peter Zijlstra pending
#. .BR sched_setattr ()
#. allowed a negative
#. .I attr.sched_policy
msgstr ""
#. type: Plain text
-#: build/C/man2/sched_setattr.2:406
+#: build/C/man2/sched_setattr.2:407
#, fuzzy
#| msgid ""
#| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-#| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+#| "B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_getparam>(2), "
#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
-#| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
-#| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+#| "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+#| "B<setpriority>(2), B<pthread_getschedparam>(3), "
+#| "B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), "
+#| "B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
msgid ""
+"B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), "
+"B<sched_getscheduler>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getschedparam>(3), "
+"B<pthread_setschedparam>(3), B<pthread_setschedprio>(3), B<capabilities>(7), "
+"B<cpuset>(7), B<sched>(7)"
+msgstr ""
"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
"B<sched_getaffinity>(2), B<sched_getscheduler>(2), B<sched_getparam>(2), "
"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
"B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
"B<setpriority>(2), B<pthread_getschedparam>(3), B<pthread_setschedparam>(3), "
"B<pthread_setschedprio>(3), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
-msgstr ""
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
-"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
-"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
#. type: TH
#: build/C/man2/sched_setparam.2:30
msgid "SCHED_SETSCHEDULER"
msgstr "SCHED_SETSCHEDULER"
-#. type: TH
-#: build/C/man2/sched_setscheduler.2:26
-#, no-wrap
-msgid "2014-05-21"
-msgstr "2014-05-21"
-
#. type: Plain text
#: build/C/man2/sched_setscheduler.2:30
msgid ""
"に準拠しておらず、 成功時には常に 0 を返す。"
#. type: Plain text
-#: build/C/man2/sched_setscheduler.2:240
+#: build/C/man2/sched_setscheduler.2:241
+#, fuzzy
+#| msgid ""
+#| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+#| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
+#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+#| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+#| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
msgid ""
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
-"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
-"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+"B<chrt>(1), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getaffinity>(2), B<sched_getattr>(2), "
+"B<sched_getparam>(2), B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+"B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+"B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
msgstr ""
"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
"り、システム性能が 劣化する結果になるからである。"
#. type: TH
-#: build/C/man2/setns.2:8
-#, no-wrap
-msgid "SETNS"
-msgstr "SETNS"
-
-#. type: TH
-#: build/C/man2/setns.2:8
+#: build/C/man7/sched.7:32
#, no-wrap
-msgid "2013-01-01"
-msgstr "2013-01-01"
+msgid "SCHED"
+msgstr "SCHED"
#. type: Plain text
-#: build/C/man2/setns.2:11
-msgid "setns - reassociate thread with a namespace"
-msgstr "setns - スレッドに名前空間を関連付けしなおす"
+#: build/C/man7/sched.7:35
+msgid "sched - overview of scheduling APIs"
+msgstr ""
-#. type: Plain text
-#: build/C/man2/setns.2:17
+#. type: SS
+#: build/C/man7/sched.7:36
#, no-wrap
-msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
-msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+msgid "API summary"
+msgstr ""
#. type: Plain text
-#: build/C/man2/setns.2:21
-msgid ""
-"Given a file descriptor referring to a namespace, reassociate the calling "
-"thread with that namespace."
+#: build/C/man7/sched.7:38
+msgid "The Linux scheduling APIs are as follows:"
msgstr ""
-"名前空間を参照するファイルディスクリプタを指定すると、\n"
-"呼び出したスレッドにその名前空間を関連付けしなおす。"
+
+#. type: TP
+#: build/C/man7/sched.7:38
+#, no-wrap
+msgid "B<sched_setscheduler>(2)"
+msgstr "B<sched_setscheduler>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:34
-msgid ""
-"The I<fd> argument is a file descriptor referring to one of the namespace "
-"entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
-"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
-"with the corresponding namespace, subject to any constraints imposed by the "
-"I<nstype> argument."
+#: build/C/man7/sched.7:41
+msgid "Set the scheduling policy and parameters of a specified thread."
msgstr ""
-"I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリ\n"
-"のいずれかを参照するファイルディスクリプタである。\n"
-"I</proc/[pid]/ns/> の詳細は B<proc>(5) を参照。\n"
-"I<nstype> 引き数で指定された制限の範囲内で、\n"
-"呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
+
+#. type: TP
+#: build/C/man7/sched.7:41
+#, no-wrap
+msgid "B<sched_getscheduler>(2)"
+msgstr "B<sched_getscheduler>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:40
-msgid ""
-"The I<nstype> argument specifies which type of namespace the calling thread "
-"may be reassociated with. This argument can have one of the following "
-"values:"
-msgstr ""
-"I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を\n"
-"関連付けしなおすことができるかを指定する。\n"
-"この引き数には以下のいずれかの値を指定できる。"
+#: build/C/man7/sched.7:44
+#, fuzzy
+#| msgid "Resetting scheduling policy for child processes"
+msgid "Return the scheduling policy of a specified thread."
+msgstr "子プロセスでのスケジューリングポリシーのリセット"
#. type: TP
-#: build/C/man2/setns.2:40
+#: build/C/man7/sched.7:44
#, no-wrap
-msgid "B<0>"
-msgstr "B<0>"
+msgid "B<sched_setparam>(2)"
+msgstr "B<sched_setparam>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:43
-msgid "Allow any type of namespace to be joined."
-msgstr "どのタイプの名前空間も関連付けることができる。"
+#: build/C/man7/sched.7:47
+msgid "Set the scheduling parameters of a specified thread."
+msgstr ""
#. type: TP
-#: build/C/man2/setns.2:43
+#: build/C/man7/sched.7:47
#, no-wrap
-msgid "B<CLONE_NEWIPC>"
-msgstr "B<CLONE_NEWIPC>"
+msgid "B<sched_getparam>(2)"
+msgstr "B<sched_getparam>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:47
-msgid "I<fd> must refer to an IPC namespace."
-msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
+#: build/C/man7/sched.7:50
+msgid "Fetch the scheduling parameters of a specified thread."
+msgstr ""
#. type: TP
-#: build/C/man2/setns.2:47
+#: build/C/man7/sched.7:50
#, no-wrap
-msgid "B<CLONE_NEWNET>"
-msgstr "B<CLONE_NEWNET>"
+msgid "B<sched_get_priority_max>(2)"
+msgstr "B<sched_get_priority_max>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:51
-msgid "I<fd> must refer to a network namespace."
-msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
+#: build/C/man7/sched.7:53
+#, fuzzy
+#| msgid ""
+#| "The argument I<policy> does not identify a defined scheduling policy."
+msgid "Return the minimum priority available in a specified scheduling policy."
+msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
#. type: TP
-#: build/C/man2/setns.2:51
+#: build/C/man7/sched.7:53
#, no-wrap
-msgid "B<CLONE_NEWUTS>"
-msgstr "B<CLONE_NEWUTS>"
+msgid "B<sched_get_priority_min>(2)"
+msgstr "B<sched_get_priority_min>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:55
-msgid "I<fd> must refer to a UTS namespace."
-msgstr "I<fd> は UTS 名前空間を参照していなければならない。"
+#: build/C/man7/sched.7:56
+#, fuzzy
+#| msgid ""
+#| "The argument I<policy> does not identify a defined scheduling policy."
+msgid "Return the maximum priority available in a specified scheduling policy."
+msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
+
+#. type: TP
+#: build/C/man7/sched.7:56
+#, no-wrap
+msgid "B<sched_rr_get_interval>(2)"
+msgstr "B<sched_rr_get_interval>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:70
+#: build/C/man7/sched.7:60
msgid ""
-"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
-"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
-"for I<nstype> is useful if the caller does not know what type of namespace "
-"is referred to by I<fd> and wants to ensure that the namespace is of a "
-"particular type. (The caller might not know the type of the namespace "
-"referred to by I<fd> if the file descriptor was opened by another process "
-"and, for example, passed to the caller via a UNIX domain socket.)"
+"Fetch the quantum used for threads that are scheduled under the \"round-robin"
+"\" scheduling policy."
msgstr ""
-"呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
-"(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
-"である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
-"知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
-"I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の\n"
-"プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
-"側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
-"参照しているかを知らない可能性がある。)"
+
+#. type: TP
+#: build/C/man7/sched.7:60
+#, no-wrap
+msgid "B<sched_yield>(2)"
+msgstr "B<sched_yield>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:77
+#: build/C/man7/sched.7:64
msgid ""
-"On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
-"is set to indicate the error."
+"Cause the caller to relinquish the CPU, so that some other thread be "
+"executed."
msgstr ""
-"成功すると I<setns>() は 0 を返す。\n"
-"失敗すると、 -1 が返され、 I<errno> にエラーを示す値が設定される。"
-#. type: Plain text
-#: build/C/man2/setns.2:82
-msgid "I<fd> is not a valid file descriptor."
-msgstr "I<fd> が有効なファイルディスクリプタではない。"
+#. type: TP
+#: build/C/man7/sched.7:64
+#, no-wrap
+msgid "B<sched_setaffinity>(2)"
+msgstr "B<sched_setaffinity>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:89
-msgid ""
-"I<fd> refers to a namespace whose type does not match that specified in "
-"I<nstype>, or there is problem with reassociating the the thread with the "
-"specified namespace."
+#: build/C/man7/sched.7:68
+msgid "(Linux-specific) Set the CPU affinity of a specified thread."
msgstr ""
-"I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。\n"
-"または、指定された名前空間をそのスレッドに関連付けし直す際に問題\n"
-"があった。"
-#. type: Plain text
-#: build/C/man2/setns.2:92
-msgid "Cannot allocate sufficient memory to change the specified namespace."
-msgstr "指定された名前空間に変更するのに必要なメモリが割り当てられない。"
+#. type: TP
+#: build/C/man7/sched.7:68
+#, no-wrap
+msgid "B<sched_getaffinity>(2)"
+msgstr "B<sched_getaffinity>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:97
-msgid ""
-"The calling thread did not have the required privilege (B<CAP_SYS_ADMIN>) "
-"for this operation."
+#: build/C/man7/sched.7:72
+msgid "(Linux-specific) Get the CPU affinity of a specified thread."
msgstr ""
-"呼び出したスレッドがこの操作を行うのに必要な特権 (B<CAP_SYS_ADMIN>) を\n"
-"持っていなかった。"
+
+#. type: TP
+#: build/C/man7/sched.7:72
+#, no-wrap
+msgid "B<sched_setattr>(2)"
+msgstr "B<sched_setattr>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:102
+#: build/C/man7/sched.7:79
msgid ""
-"The B<setns>() system call first appeared in Linux in kernel 3.0; library "
-"support was added to glibc in version 2.14."
+"Set the scheduling policy and parameters of a specified thread. This (Linux-"
+"specific) system call provides a superset of the functionality of "
+"B<sched_setscheduler>(2) and B<sched_setparam>(2)."
msgstr ""
-"B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
-"ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
-#. type: Plain text
-#: build/C/man2/setns.2:106
-msgid "The B<setns>() system call is Linux-specific."
-msgstr "B<setns>() システムコールは Linux 固有である。"
+#. type: TP
+#: build/C/man7/sched.7:79
+#, no-wrap
+msgid "B<sched_getattr>(2)"
+msgstr "B<sched_getattr>(2)"
#. type: Plain text
-#: build/C/man2/setns.2:112
+#: build/C/man7/sched.7:87
msgid ""
-"Not all of the attributes that can be shared when a new thread is created "
-"using B<clone>(2) can be changed using B<setns>()."
+"Fetch the scheduling policy and parameters of a specified thread. This "
+"(Linux-specific) system call provides a superset of the functionality of "
+"B<sched_getscheduler>(2) and B<sched_getparam>(2)."
msgstr ""
-"新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
-"B<setns>() を使って変更できるわけではない。"
+
+#. type: SS
+#: build/C/man7/sched.7:87
+#, no-wrap
+msgid "Scheduling policies"
+msgstr "スケジューリングポリシー (scheduling policy)"
#. type: Plain text
-#: build/C/man2/setns.2:121
+#: build/C/man7/sched.7:95
+#, fuzzy
+#| msgid ""
+#| "The scheduler is the kernel component that decides which runnable thread "
+#| "will be executed by the CPU next. Each thread has an associated "
+#| "scheduling policy and a I<static> scheduling priority, I<sched_priority>; "
+#| "these are the settings that are modified by B<sched_setscheduler>(). The "
+#| "scheduler makes it decisions based on knowledge of the scheduling policy "
+#| "and static priority of all threads on the system."
msgid ""
-"The program below takes two or more arguments. The first argument specifies "
-"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
-"directory. The remaining arguments specify a command and its arguments. "
-"The program opens the namespace file, joins that namespace using B<setns>(), "
-"and executes the specified command inside that namespace."
+"The scheduler is the kernel component that decides which runnable thread "
+"will be executed by the CPU next. Each thread has an associated scheduling "
+"policy and a I<static> scheduling priority, I<sched_priority>. The "
+"scheduler makes its decisions based on knowledge of the scheduling policy "
+"and static priority of all threads on the system."
msgstr ""
-"以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
-"proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
-"数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
-"プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
-"間内で実行する。"
+"スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行"
+"可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ"
+"シーと 「静的」なスケジューリング優先度 I<sched_priority> が対応付けられ、 こ"
+"れらの設定は B<sched_setscheduler>() で変更できる。 スケジューラは、システム"
+"上の全スレッドのスケジューリングポリシーと 静的優先度に関する知識に基づいて決"
+"定を行う。"
#. type: Plain text
-#: build/C/man2/setns.2:131
+#: build/C/man7/sched.7:100
msgid ""
-"The following shell session demonstrates the use of this program (compiled "
-"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
-"example program in the B<clone>(2) man page (complied as a binary named "
-"I<newuts>)."
+"For threads scheduled under one of the normal scheduling policies "
+"(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
+"used in scheduling decisions (it must be specified as 0)."
msgstr ""
-"以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
-"としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
-"B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
+"通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
+"B<SCHED_BATCH>) の下でスケジューリングされるスレッドでは、 "
+"I<sched_priority> はスケジューリングの決定に使用されない (I<sched_priority> "
+"には 0 を指定しなければならない)。"
#. type: Plain text
-#: build/C/man2/setns.2:139
+#: build/C/man7/sched.7:114
msgid ""
-"We begin by executing the example program in B<clone>(2) in the "
-"background. That program creates a child in a separate UTS namespace. The "
-"child changes the hostname in its namespace, and then both processes display "
-"the hostnames in their UTS namespaces, so that we can see that they are "
-"different."
+"Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
+"B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
+"(high). (As the numbers imply, real-time threads always have higher "
+"priority than normal threads.) Note well: POSIX.1-2001 requires an "
+"implementation to support only a minimum 32 distinct priority levels for the "
+"real-time policies, and some systems supply just this minimum. Portable "
+"programs should use B<sched_get_priority_min>(2) and "
+"B<sched_get_priority_max>(2) to find the range of priorities supported for "
+"a particular policy."
msgstr ""
-"まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
-"ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
-"空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
-"れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
+"リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>) の下でスケ"
+"ジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) から 99 (最"
+"高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のス"
+"レッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要求"
+"しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レ"
+"ベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の "
+"優先度しか提供されていない、ということである。 移植性が必要なプログラムで"
+"は、 B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) を使っ"
+"て、あるポリシーがサポートする優先度の範囲を調べるべきである。"
#. type: Plain text
-#: build/C/man2/setns.2:151
-#, no-wrap
+#: build/C/man7/sched.7:120
msgid ""
-"$ B<su> # Need privilege for namespace operations\n"
-"Password:\n"
-"# B<./newuts bizarro &>\n"
-"[1] 3549\n"
-"clone() returned 3550\n"
-"uts.nodename in child: bizarro\n"
-"uts.nodename in parent: antero\n"
-"# B<uname -n> # Verify hostname in the shell\n"
-"antero\n"
+"Conceptually, the scheduler maintains a list of runnable threads for each "
+"possible I<sched_priority> value. In order to determine which thread runs "
+"next, the scheduler looks for the nonempty list with the highest static "
+"priority and selects the thread at the head of this list."
msgstr ""
-"$ B<su> # 名前空間の操作には特権が必要\n"
-"Password:\n"
-"# B<./newuts bizarro &>\n"
-"[1] 3549\n"
-"clone() returned 3550\n"
-"uts.nodename in child: bizarro\n"
-"uts.nodename in parent: antero\n"
-"# B<uname -n> # シェルでホスト名を確認\n"
-"antero\n"
+"概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して 実行"
+"可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する"
+"ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス"
+"トの先頭のスレッドを選択する。"
#. type: Plain text
-#: build/C/man2/setns.2:158
+#: build/C/man7/sched.7:124
msgid ""
-"We then run the program shown below, using it to execute a shell. Inside "
-"that shell, we verify that the hostname is the one set by the child created "
-"by the first program:"
+"A thread's scheduling policy determines where it will be inserted into the "
+"list of threads with equal static priority and how it will move inside this "
+"list."
msgstr ""
-"次に、以下のプログラムを使ってシェルを実行する。 このシェルの中では、ホスト名"
-"ã\81\8cæ\9c\80å\88\9dã\81®ã\83\97ã\83ã\82°ã\83©ã\83 ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\81\9få\90ã\83\97ã\83ã\82»ã\82¹ã\81\8cè¨å®\9aã\81\97ã\81\9fã\83\9bã\82¹ã\83\88å\90\8dã\81«ã\81ªã\81£ã\81¦ã\81\84ã\82\8bã\81\93ã\81¨ã\82\92"
-"確認できる。"
+"各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス"
+"ã\83¬ã\83\83ã\83\89ã\81®ã\83ªã\82¹ã\83\88ã\81®ä¸ã\81®ã\81©ã\81\93ã\81«æ\8c¿å\85¥ã\81\95ã\82\8cã\80\81 ã\81\93ã\81®ã\83ªã\82¹ã\83\88ã\81®ä¸ã\82\92ã\81©ã\81®ã\82\88ã\81\86ã\81«ç§»å\8b\95ã\81\99ã\82\8bã\81\8bã\82\92決"
+"定する。"
#. type: Plain text
-#: build/C/man2/setns.2:164
-#, no-wrap
+#: build/C/man7/sched.7:132
msgid ""
-"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
-"# B<uname -n> # Executed in shell started by ns_exec\n"
-"bizarro\n"
+"All scheduling is preemptive: if a thread with a higher static priority "
+"becomes ready to run, the currently running thread will be preempted and "
+"returned to the wait list for its static priority level. The scheduling "
+"policy determines the ordering only within the list of runnable threads with "
+"equal static priority."
msgstr ""
-"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
-"# B<uname -n> # ns_exec で起動されたシェル内で実行\n"
-"bizarro\n"
+"全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度"
+"のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ "
+"(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ"
+"ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順"
+"番のみを決定する。"
-#. type: Plain text
-#: build/C/man2/setns.2:174
+#. type: SS
+#: build/C/man7/sched.7:132
#, no-wrap
-msgid ""
-"#define _GNU_SOURCE\n"
-"#include E<lt>fcntl.hE<gt>\n"
-"#include E<lt>sched.hE<gt>\n"
-"#include E<lt>unistd.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
-msgstr ""
-"#define _GNU_SOURCE\n"
-"#include E<lt>fcntl.hE<gt>\n"
-"#include E<lt>sched.hE<gt>\n"
-"#include E<lt>unistd.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+msgid "SCHED_FIFO: First in-first out scheduling"
+msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
#. type: Plain text
-#: build/C/man2/setns.2:182
-#, no-wrap
+#: build/C/man7/sched.7:141
msgid ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int fd;\n"
+"B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
+"means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
+"immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
+"B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple scheduling algorithm "
+"without time slicing. For threads scheduled under the B<SCHED_FIFO> policy, "
+"the following rules apply:"
msgstr ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int fd;\n"
+"B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 "
+"B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
+"B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは直ち"
+"に実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケジューリング"
+"アルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリングされているスレッ"
+"ドには以下の ルールが適用される:"
-#. type: Plain text
-#: build/C/man2/setns.2:187
+#. type: IP
+#: build/C/man7/sched.7:141 build/C/man7/sched.7:146 build/C/man7/sched.7:149
+#: build/C/man7/sched.7:164 build/C/man7/sched.7:412 build/C/man7/sched.7:421
+#: build/C/man7/sched.7:444 build/C/man7/sched.7:452 build/C/man7/sched.7:491
+#: build/C/man7/sched.7:499 build/C/man7/sched.7:504 build/C/man7/sched.7:509
#, no-wrap
+msgid "*"
+msgstr "*"
+
+#. type: Plain text
+#: build/C/man7/sched.7:146
msgid ""
-" if (argc E<lt> 3) {\n"
-" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
+"priority will stay at the head of the list for its priority and will resume "
+"execution as soon as all threads of higher priority are blocked again."
msgstr ""
-" if (argc E<lt> 3) {\n"
-" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"より高い優先度の他のスレッドによって取って代わられた B<SCHED_FIFO> スレッドは"
+"その優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 "
+"(block) した場合に実行を再開する。"
#. type: Plain text
-#: build/C/man2/setns.2:191
-#, no-wrap
+#: build/C/man7/sched.7:149
msgid ""
-" fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
-" if (fd == -1)\n"
-" errExit(\"open\");\n"
+"When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
+"of the list for its priority."
msgstr ""
-" fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */\n"
-" if (fd == -1)\n"
-" errExit(\"open\");\n"
+"B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ"
+"れる。"
+#. In 2.2.x and 2.4.x, the thread is placed at the front of the queue
+#. In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
#. type: Plain text
-#: build/C/man2/setns.2:194
-#, no-wrap
+#: build/C/man7/sched.7:164
msgid ""
-" if (setns(fd, 0) == -1) /* Join that namespace */\n"
-" errExit(\"setns\");\n"
+"A call to B<sched_setscheduler>(2), B<sched_setparam>(2), or "
+"B<sched_setattr>(2) will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
+"identified by I<pid> at the start of the list if it was runnable. As a "
+"consequence, it may preempt the currently running thread if it has the same "
+"priority. (POSIX.1-2001 specifies that the thread should go to the end of "
+"the list.)"
msgstr ""
-" if (setns(fd, 0) == -1) /* 名前空間に参加 */\n"
-" errExit(\"setns\");\n"
+"B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_setattr>(2) は "
+"I<pid> で指定された B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能な"
+"場合、リストの最初に置く。 結果として、もし優先度が同じだった場合、 現在実行"
+"中のスレッドに先んじるかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後"
+"に行くべきと規定されている。)"
#. type: Plain text
-#: build/C/man2/setns.2:198
-#, no-wrap
+#: build/C/man7/sched.7:168
+msgid "A thread calling B<sched_yield>(2) will be put at the end of the list."
+msgstr "B<sched_yield>(2) を呼び出したスレッドはリストの最後に置かれる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:172
msgid ""
-" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
-" errExit(\"execvp\");\n"
-"}\n"
+"No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
+"in the wait list of runnable threads with equal static priority."
msgstr ""
-" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
-" errExit(\"execvp\");\n"
-"}\n"
+"その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるスレッ"
+"ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。"
#. type: Plain text
-#: build/C/man2/setns.2:205
-msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
-msgstr "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
-
-#. type: TH
-#: build/C/man2/unshare.2:20
-#, no-wrap
-msgid "UNSHARE"
-msgstr "UNSHARE"
+#: build/C/man7/sched.7:177
+msgid ""
+"A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
+"is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
+msgstr ""
+"B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ"
+"ドによって置きかえられるか、 B<sched_yield>(2) を呼び出すまで実行を続ける。"
-#. type: TH
-#: build/C/man2/unshare.2:20
+#. type: SS
+#: build/C/man7/sched.7:177
#, no-wrap
-msgid "2013-04-17"
-msgstr "2013-04-17"
+msgid "SCHED_RR: Round-robin scheduling"
+msgstr "SCHED_RR: ラウンドロビン (round-robin)スケジューリング"
+#. On Linux 2.4, the length of the RR interval is influenced
+#. by the process nice value -- MTK
#. type: Plain text
-#: build/C/man2/unshare.2:23
-msgid "unshare - disassociate parts of the process execution context"
-msgstr "unshare - プロセス実行コンテキストの一部を分離する"
+#: build/C/man7/sched.7:196
+msgid ""
+"B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything described "
+"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
+"is allowed to run only for a maximum time quantum. If a B<SCHED_RR> thread "
+"has been running for a time period equal to or longer than the time quantum, "
+"it will be put at the end of the list for its priority. A B<SCHED_RR> "
+"thread that has been preempted by a higher priority thread and subsequently "
+"resumes execution as a running thread will complete the unexpired portion of "
+"its round-robin time quantum. The length of the time quantum can be "
+"retrieved using B<sched_rr_get_interval>(2)."
+msgstr ""
+"B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
+"B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
+"それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
+"B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
+"その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
+"置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
+"ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
+"B<sched_rr_get_interval>(2) を使って取得できる。"
-#. type: Plain text
-#: build/C/man2/unshare.2:28
+#. type: SS
+#: build/C/man7/sched.7:196
#, no-wrap
-msgid "B<int unshare(int >I<flags>B<);>\n"
-msgstr "B<int unshare(int >I<flags>B<);>\n"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:36
-msgid "B<unshare>():"
-msgstr "B<unshare>():"
+msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
+msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:62
+#: build/C/man7/sched.7:208
msgid ""
-"B<unshare>() allows a process to disassociate parts of its execution "
-"context that are currently being shared with other processes. Part of the "
-"execution context, such as the mount namespace, is shared implicitly when a "
-"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
-"such as virtual memory, may be shared by explicit request when creating a "
-"process using B<clone>(2)."
+"Since version 3.14, Linux provides a deadline scheduling policy "
+"(B<SCHED_DEADLINE>). This policy is currently implemented using GEDF "
+"(Global Earliest Deadline First) in conjunction with CBS (Constant "
+"Bandwidth Server). To set and fetch this policy and associated attributes, "
+"one must use the Linux-specific B<sched_setattr>(2) and "
+"B<sched_getattr>(2) system calls."
msgstr ""
-"B<unshare>() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキ"
-"ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名"
-"前空間 (mount namespace) などは、新しいプロセスを B<fork>(2) または "
-"B<vfork>(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ"
-"リなどは、 B<clone>(2) を使ってプロセスを生成するときに、明示的に共有するこ"
-"とを要求できる。"
#. type: Plain text
-#: build/C/man2/unshare.2:67
+#: build/C/man7/sched.7:226
msgid ""
-"The main use of B<unshare>() is to allow a process to control its shared "
-"execution context without creating a new process."
+"A sporadic task is one that has a sequence of jobs, where each job is "
+"activated at most once per period. Each job also has a I<relative "
+"deadline>, before which it should finish execution, and a I<computation "
+"time>, which is the CPU time necessary for executing the job. The moment "
+"when a task wakes up because a new job has to be executed is called the "
+"I<arrival time> (also referred to as the request time or release time). The "
+"I<start time> is the time at which a task starts its execution. The "
+"I<absolute deadline> is thus obtained by adding the relative deadline to the "
+"arrival time."
msgstr ""
-"B<unshare>() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
-"有実行コンテキストを制御することである。"
#. type: Plain text
-#: build/C/man2/unshare.2:74
-msgid ""
-"The I<flags> argument is a bit mask that specifies which parts of the "
-"execution context should be unshared. This argument is specified by ORing "
-"together zero or more of the following constants:"
+#: build/C/man7/sched.7:228
+msgid "The following diagram clarifies these terms:"
msgstr ""
-"I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
-"するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
-#. type: TP
-#: build/C/man2/unshare.2:74
+#. type: Plain text
+#: build/C/man7/sched.7:239
#, no-wrap
-msgid "B<CLONE_FILES>"
-msgstr "B<CLONE_FILES>"
+msgid ""
+"arrival/wakeup absolute deadline\n"
+" | start time |\n"
+" | | |\n"
+" v v v\n"
+"-----x--------xooooooooooooooooo--------x--------x---\n"
+" |E<lt>- comp. time -E<gt>|\n"
+" |E<lt>------- relative deadline ------E<gt>|\n"
+" |E<lt>-------------- period -------------------E<gt>|\n"
+msgstr ""
#. type: Plain text
-#: build/C/man2/unshare.2:82
+#: build/C/man7/sched.7:258
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FILES> flag. Unshare the "
-"file descriptor table, so that the calling process no longer shares its file "
-"descriptors with any other process."
+"When setting a B<SCHED_DEADLINE> policy for a thread using "
+"B<sched_setattr>(2), one can specify three parameters: I<Runtime>, "
+"I<Deadline>, and I<Period>. These parameters do not necessarily correspond "
+"to the aforementioned terms: usual practice is to set Runtime to something "
+"bigger than the average computation time (or worst-case execution time for "
+"hard real-time tasks), Deadline to the relative deadline, and Period to the "
+"period of the task. Thus, for B<SCHED_DEADLINE> scheduling, we have:"
msgstr ""
-"B<clone>(2) B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプタ"
-"テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
-"タを共有しなくなる。"
-
-#. type: TP
-#: build/C/man2/unshare.2:82
-#, no-wrap
-msgid "B<CLONE_FS>"
-msgstr "B<CLONE_FS>"
#. type: Plain text
-#: build/C/man2/unshare.2:96
+#: build/C/man7/sched.7:269
+#, no-wrap
msgid ""
-"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
-"attributes, so that the calling process no longer shares its root directory "
-"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
-"attributes with any other process."
+"arrival/wakeup absolute deadline\n"
+" | start time |\n"
+" | | |\n"
+" v v v\n"
+"-----x--------xooooooooooooooooo--------x--------x---\n"
+" |E<lt>-- Runtime -------E<gt>|\n"
+" |E<lt>----------- Deadline -----------E<gt>|\n"
+" |E<lt>-------------- Period -------------------E<gt>|\n"
msgstr ""
-"B<clone>(2) B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
-"せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
-"クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
+#. FIXME It looks as though specifying sched_period as 0 means
+#. "make sched_period the same as sched_deadline".
+#. This needs to be documented.
#. type: Plain text
-#: build/C/man2/unshare.2:113
+#: build/C/man7/sched.7:289
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWIPC> flag. "
-"Unshare the System\\ V IPC namespace, so that the calling process has a "
-"private copy of the System\\ V IPC namespace which is not shared with any "
-"other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
-"as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
+"The three deadline-scheduling parameters correspond to the I<sched_runtime>, "
+"I<sched_deadline>, and I<sched_period> fields of the I<sched_attr> "
+"structure; see B<sched_setattr>(2). These fields express value in "
+"nanoseconds. If I<sched_period> is specified as 0, then it is made the same "
+"as I<sched_deadline>."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。\n"
-"System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n"
-"共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n"
-"すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を\n"
-"使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
#. type: Plain text
-#: build/C/man2/unshare.2:128
-msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
-"Unshare the network namespace, so that the calling process is moved into a "
-"new network namespace which is not shared with any previously existing "
-"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
+#: build/C/man7/sched.7:291
+msgid "The kernel requires that:"
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
-"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
-"い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
-"には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
-
-#. type: TP
-#: build/C/man2/unshare.2:128
-#, no-wrap
-msgid "B<CLONE_NEWNS>"
-msgstr "B<CLONE_NEWNS>"
-#. These flag name are inconsistent:
-#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
-#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
-#. flags of the same name.
#. type: Plain text
-#: build/C/man2/unshare.2:149
-msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
-"Unshare the mount namespace, so that the calling process has a private copy "
-"of its namespace which is not shared with any other process. Specifying "
-"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
-"requires the B<CAP_SYS_ADMIN> capability."
+#: build/C/man7/sched.7:293
+#, no-wrap
+msgid " sched_runtime E<lt>= sched_deadline E<lt>= sched_period\n"
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
-"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
-"有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
-"黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
-"ケーパビリティが必要である。"
+#. See __checkparam_dl in kernel/sched/core.c
#. type: Plain text
-#: build/C/man2/unshare.2:163
+#: build/C/man7/sched.7:303
msgid ""
-"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
-"Unshare the UTS IPC namespace, so that the calling process has a private "
-"copy of the UTS namespace which is not shared with any other process. Use "
-"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
+"In addition, under the current implementation, all of the parameter values "
+"must be at least 1024 (i.e., just over one microsecond, which is the "
+"resolution of the implementation), and less than 2^63. If any of these "
+"checks fails, B<sched_setattr>(2) fails with the error B<EINVAL>."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
-"IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
-"固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
-"B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
-"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
-
-#. type: TP
-#: build/C/man2/unshare.2:163
-#, no-wrap
-msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
-msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
-#. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
-#. As at 2.6.16, the following forced implications also apply,
-#. although the relevant flags are not yet implemented.
-#. If CLONE_THREAD is set force CLONE_VM.
-#. If CLONE_VM is set, force CLONE_SIGHAND.
-#. CLONE_NEWNSIf CLONE_SIGHAND is set and signals are also being shared
-#. (i.e., current->signal->count > 1), force CLONE_THREAD.
-#. FIXME . CLONE_VM is not (yet, as at 2.6.16) implemented.
-#. .TP
-#. .B CLONE_VM
-#. Reverse the effect of the
-#. .BR clone (2)
-#. .B CLONE_VM
-#. flag.
-#. .RB ( CLONE_VM
-#. is also implicitly set by
-#. .BR vfork (2),
-#. and can be reversed using this
-#. .BR unshare ()
-#. flag.)
-#. Unshare virtual memory, so that the calling process no
-#. longer shares its virtual address space with any other process.
-#. type: Plain text
-#: build/C/man2/unshare.2:200
+#. type: Plain text
+#: build/C/man7/sched.7:306
msgid ""
-"This flag reverses the effect of the B<clone>(2) B<CLONE_SYSVSEM> flag. "
-"Unshare System\\ V semaphore undo values, so that the calling process has a "
-"private copy which is not shared with any other process. Use of "
-"B<CLONE_SYSVSEM> requires the B<CAP_SYS_ADMIN> capability."
+"The CBS guarantees non-interference between tasks, by throttling threads "
+"that attempt to over-run their specified Runtime."
msgstr ""
-"このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。\n"
-"System\\ V セマフォのアンドゥ値を共有せず、呼び出し元プロセスは 他のプロ\n"
-"セスとは共有しない固有のコピーを持つ。B<CLONE_SYSVSEM> を使用するには\n"
-"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
#. type: Plain text
-#: build/C/man2/unshare.2:207
+#: build/C/man7/sched.7:319
msgid ""
-"If I<flags> is specified as zero, then B<unshare>() is a no-op; no changes "
-"are made to the calling process's execution context."
+"To ensure deadline scheduling guarantees, the kernel must prevent situations "
+"where the set of B<SCHED_DEADLINE> threads is not feasible (schedulable) "
+"within the given constraints. The kernel thus performs an admittance test "
+"when setting or changing B<SCHED_DEADLINE> policy and attributes. This "
+"admission test calculates whether the change is feasible; if it is not "
+"B<sched_setattr>(2) fails with the error B<EBUSY>."
msgstr ""
-"I<flags> に 0 が指定された場合、 B<unshare>() は何も行わないので、 呼び出し"
-"元プロセスの実行コンテキストは、何も変更されない。"
#. type: Plain text
-#: build/C/man2/unshare.2:212
+#: build/C/man7/sched.7:325
msgid ""
-"On success, zero returned. On failure, -1 is returned and I<errno> is set "
-"to indicate the error."
+"For example, it is required (but not necessarily sufficient) for the total "
+"utilization to be less than or equal to the total number of CPUs available, "
+"where, since each thread can maximally run for Runtime per Period, that "
+"thread's utilization is its Runtime divided by its Period."
msgstr ""
-"成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
-"ラーを示す値が設定される。"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:217
-msgid "An invalid bit was specified in I<flags>."
-msgstr "I<flags> に不正なビットが指定された。"
#. type: Plain text
-#: build/C/man2/unshare.2:221
+#: build/C/man7/sched.7:336
msgid ""
-"Cannot allocate sufficient memory to copy parts of caller's context that "
-"need to be unshared."
+"In order to fulfil the guarantees that are made when a thread is admitted to "
+"the B<SCHED_DEADLINE> policy, B<SCHED_DEADLINE> threads are the highest "
+"priority (user controllable) threads in the system; if any B<SCHED_DEADLINE> "
+"thread is runnable, it will preempt any thread scheduled under one of the "
+"other policies."
msgstr ""
-"呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするため"
-"に、 十分なメモリが確保できなかった。"
#. type: Plain text
-#: build/C/man2/unshare.2:224
+#: build/C/man7/sched.7:344
msgid ""
-"The calling process did not have the required privileges for this operation."
-msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:228
-msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
-msgstr "B<unshare>() システムコールは Linux カーネル 2.6.16 で追加された。"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:232
-msgid "The B<unshare>() system call is Linux-specific."
-msgstr "B<unshare>() システムコールは Linux 固有である。"
+"A call to B<fork>(2) by a thread scheduled under the B<SCHED_DEADLINE> "
+"policy will fail with the error B<EAGAIN>, unless the thread has its reset-"
+"on-fork flag set (see below)."
+msgstr ""
-#. FIXME all of the following needs to be reviewed for the current kernel
-#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
-#. was not specified when doing clone(); i.e., unsharing
-#. signal handlers is permitted if we are not actually
-#. sharing signal handlers. mtk
-#. However, we can do unshare(CLONE_VM) if CLONE_VM
-#. was not specified when doing clone(); i.e., unsharing
-#. virtual memory is permitted if we are not actually
-#. sharing virtual memory. mtk
-#. 9) Future Work
-#. --------------
-#. The current implementation of unshare does not allow unsharing of
-#. signals and signal handlers. Signals are complex to begin with and
-#. to unshare signals and/or signal handlers of a currently running
-#. process is even more complex. If in the future there is a specific
-#. need to allow unsharing of signals and/or signal handlers, it can
-#. be incrementally added to unshare without affecting legacy
-#. applications using unshare.
+#
+#. FIXME Calling sched_getparam() on a SCHED_DEADLINE thread
+#. fails with EINVAL, but sched_getscheduler() succeeds.
+#. Is that intended? (Why?)
#. type: Plain text
-#: build/C/man2/unshare.2:266
+#: build/C/man7/sched.7:355
msgid ""
-"Not all of the process attributes that can be shared when a new process is "
-"created using B<clone>(2) can be unshared using B<unshare>(). In "
-"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
-"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
-"Such functionality may be added in the future, if required."
+"A B<SCHED_DEADLINE> thread that calls B<sched_yield>(2) will yield the "
+"current job and wait for a new period to begin."
msgstr ""
-"B<clone>(2) で新しいプロセスを生成したときに共有される全てのプロセス属性"
-"を、 B<unshare>() によって共有の解除ができるわけではない。 特に、カーネル "
-"3.8 時点では、 B<unshare>() に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
-"B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
-"必要であれば将来追加されるかもしれない。"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:272
-msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
-msgstr "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
-
-#. type: Plain text
-#: build/C/man2/unshare.2:275
-msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
-msgstr "Linux カーネルソース内の I<Documentation/unshare.txt>"
-#. type: TH
-#: build/C/man7/sched.7:32
-#, fuzzy, no-wrap
-#| msgid "B<SCHED_RR>"
-msgid "SCHED"
-msgstr "B<SCHED_RR>"
+#. type: SS
+#: build/C/man7/sched.7:355
+#, no-wrap
+msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
+msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
#. type: Plain text
-#: build/C/man7/sched.7:35
-msgid "sched - overview of scheduling APIs"
+#: build/C/man7/sched.7:372
+msgid ""
+"B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is the "
+"standard Linux time-sharing scheduler that is intended for all threads that "
+"do not require the special real-time mechanisms. The thread to run is "
+"chosen from the static priority 0 list based on a I<dynamic> priority that "
+"is determined only inside this list. The dynamic priority is based on the "
+"nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2)) "
+"and increased for each time quantum the thread is ready to run, but denied "
+"to run by the scheduler. This ensures fair progress among all "
+"B<SCHED_OTHER> threads."
msgstr ""
+"B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux 標準"
+"の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ"
+"ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの"
+"中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 "
+"動的な優先度は (B<nice>(2), B<setpriority>(2), B<sched_setattr>(2) により設定"
+"される) nice 値に基づいて決定されるもので、 単位時間毎に、スレッドが実行可能"
+"だが、スケジューラにより実行が拒否された 場合にインクリメントされる。 これに"
+"より、全ての B<SCHED_OTHER> スレッドでの公平性が保証される。"
#. type: SS
-#: build/C/man7/sched.7:36
+#: build/C/man7/sched.7:372
#, no-wrap
-msgid "API summary"
-msgstr ""
+msgid "SCHED_BATCH: Scheduling batch processes"
+msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
#. type: Plain text
-#: build/C/man7/sched.7:38
-msgid "The Linux scheduling APIs are as follows:"
-msgstr ""
-
-#. type: TP
-#: build/C/man7/sched.7:38
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_setscheduler>(2)"
-msgstr "B<sched_getcpu>():"
+#: build/C/man7/sched.7:384
+#, fuzzy
+#| msgid ""
+#| "(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
+#| "0. This policy is similar to B<SCHED_OTHER> in that it schedules the "
+#| "thread according to its dynamic priority (based on the nice value). The "
+#| "difference is that this policy will cause the scheduler to always assume "
+#| "that the thread is CPU-intensive. Consequently, the scheduler will apply "
+#| "a small scheduling penalty with respect to wakeup behaviour, so that this "
+#| "thread is mildly disfavored in scheduling decisions."
+msgid ""
+"(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
+"0. This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
+"according to its dynamic priority (based on the nice value). The difference "
+"is that this policy will cause the scheduler to always assume that the "
+"thread is CPU-intensive. Consequently, the scheduler will apply a small "
+"scheduling penalty with respect to wakeup behavior, so that this thread is "
+"mildly disfavored in scheduling decisions."
+msgstr ""
+"(Linux 2.6.16 以降) B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 このポ"
+"リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン"
+"グが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポリシー"
+"では、スレッドが常に CPU に負荷のかかる (CPU-intensive) 処理を行うと、スケ"
+"ジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎にそのスレッ"
+"ドにスケジューリング上の ペナルティを少し課し、その結果、このスレッドはスケ"
+"ジューリングの決定で 若干冷遇されるようになる。"
+
+#. The following paragraph is drawn largely from the text that
+#. accompanied Ingo Molnar's patch for the implementation of
+#. SCHED_BATCH.
+#. commit b0a9499c3dd50d333e2aedb7e894873c58da3785
+#. type: Plain text
+#: build/C/man7/sched.7:394
+msgid ""
+"This policy is useful for workloads that are noninteractive, but do not want "
+"to lower their nice value, and for workloads that want a deterministic "
+"scheduling policy without interactivity causing extra preemptions (between "
+"the workload's tasks)."
+msgstr ""
+"このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の"
+"タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な "
+"(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。"
+
+#. type: SS
+#: build/C/man7/sched.7:394
+#, no-wrap
+msgid "SCHED_IDLE: Scheduling very low priority jobs"
+msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
+
+#. type: Plain text
+#: build/C/man7/sched.7:398
+msgid ""
+"(Since Linux 2.6.23.) B<SCHED_IDLE> can be used only at static priority 0; "
+"the process nice value has no influence for this policy."
+msgstr ""
+"(Linux 2.6.23 以降) B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 このポリ"
+"シーではプロセスの nice 値はスケジューリングに影響を与えない。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:406
+msgid ""
+"This policy is intended for running jobs at extremely low priority (lower "
+"even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
+"policies)."
+msgstr ""
+"非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
+"は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに低い"
+"優先度である)。"
+
+#. type: SS
+#: build/C/man7/sched.7:406
+#, no-wrap
+msgid "Resetting scheduling policy for child processes"
+msgstr "子プロセスでのスケジューリングポリシーのリセット"
+
+#. type: Plain text
+#: build/C/man7/sched.7:412
+msgid ""
+"Each thread has a reset-on-fork scheduling flag. When this flag is set, "
+"children created by B<fork>(2) do not inherit privileged scheduling "
+"policies. The reset-on-fork flag can be set by either:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:421
+#, fuzzy
+#| msgid ""
+#| "The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned "
+#| "by B<sched_getscheduler>()"
+msgid ""
+"ORing the B<SCHED_RESET_ON_FORK> flag into the I<policy> argument when "
+"calling B<sched_setscheduler>(2) (since Linux 2.6.32); or"
+msgstr ""
+"B<SCHED_RESET_ON_FORK> フラグは、 B<sched_getscheduler>() が返すポリシー値で"
+"参照できる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:428
+msgid ""
+"specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
+"calling B<sched_setattr>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:434
+msgid ""
+"Note that the constants used with these two APIs have different names. The "
+"state of the reset-on-fork flag can analogously be retrieved using "
+"B<sched_getscheduler>(2) and B<sched_getattr>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:441
+msgid ""
+"The reset-on-fork feature is intended for media-playback applications, and "
+"can be used to prevent applications evading the B<RLIMIT_RTTIME> resource "
+"limit (see B<getrlimit>(2)) by creating multiple child processes."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:444
+#, fuzzy
+#| msgid ""
+#| "More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
+#| "following rules apply for subsequently created children:"
+msgid ""
+"More precisely, if the reset-on-fork flag is set, the following rules apply "
+"for subsequently created children:"
+msgstr ""
+"より正確には、 B<SCHED_RESET_ON_FORK> フラグが指定された場合、それ以降に作成"
+"される子プロセスに以下のルールが適用される。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:452
+msgid ""
+"If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
+"B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
+msgstr ""
+"呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か B<SCHED_RR> "
+"の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:455
+msgid ""
+"If the calling process has a negative nice value, the nice value is reset to "
+"zero in child processes."
+msgstr ""
+"子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセット"
+"される。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:463
+#, fuzzy
+#| msgid ""
+#| "After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can be reset "
+#| "only if the thread has the B<CAP_SYS_NICE> capability. This flag is "
+#| "disabled in child processes created by B<fork>(2)."
+msgid ""
+"After the reset-on-fork flag has been enabled, it can be reset only if the "
+"thread has the B<CAP_SYS_NICE> capability. This flag is disabled in child "
+"processes created by B<fork>(2)."
+msgstr ""
+"一度 B<SCHED_RESET_ON_FORK> フラグが有効にされた後は、このフラグをリセットで"
+"きるのは、スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけである。この"
+"フラグは B<fork>(2) で作成された子プロセスでは無効になる。"
+
+#. type: SS
+#: build/C/man7/sched.7:463
+#, no-wrap
+msgid "Privileges and resource limits"
+msgstr "特権とリソース制限"
+
+#. type: Plain text
+#: build/C/man7/sched.7:475
+#, fuzzy
+#| msgid ""
+#| "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) "
+#| "threads can set a nonzero static priority (i.e., set a real-time "
+#| "scheduling policy). The only change that an unprivileged thread can make "
+#| "is to set the B<SCHED_OTHER> policy, and this can be done only if the "
+#| "effective user ID of the caller of B<sched_setscheduler>() matches the "
+#| "real or effective user ID of the target thread (i.e., the thread "
+#| "specified by I<pid>) whose policy is being changed."
+msgid ""
+"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) threads "
+"can set a nonzero static priority (i.e., set a real-time scheduling "
+"policy). The only change that an unprivileged thread can make is to set the "
+"B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
+"the caller matches the real or effective user ID of the target thread (i.e., "
+"the thread specified by I<pid>) whose policy is being changed."
+msgstr ""
+"2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
+"(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設"
+"定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ"
+"る。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定することだけで"
+"あり、さらにこの変更を行えるのは B<sched_setscheduler>() の呼び出し元の実効"
+"ユーザ ID がポリシーの変更対象スレッド (I<pid> で指定されたスレッド) の実ユー"
+"ザ ID か実効ユーザ ID と 一致する場合だけである。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:481
+msgid ""
+"A thread must be privileged (B<CAP_SYS_NICE>) in order to set or modify a "
+"B<SCHED_DEADLINE> policy."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:491
+msgid ""
+"Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
+"an unprivileged thread's static priority for the B<SCHED_RR> and "
+"B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
+"priority are as follows:"
+msgstr ""
+"Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 スケ"
+"ジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権スレッド"
+"の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際"
+"のルールは以下の通りである。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:499
+msgid ""
+"If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then it "
+"can change its scheduling policy and priority, subject to the restriction "
+"that the priority cannot be set to a value higher than the maximum of its "
+"current priority and its B<RLIMIT_RTPRIO> soft limit."
+msgstr ""
+"非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されている場"
+"合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で"
+"きるが、優先度を現在の自身の優先度と B<RLIMIT_RTPRIO> ソフトリミットの大きい"
+"方よりも高い値に設定できないという制限が課される。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:504
+msgid ""
+"If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes are "
+"to lower the priority, or to switch to a non-real-time policy."
+msgstr ""
+"B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで"
+"ないポリシーへ切り替えるかの変更だけが許可される。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:509
+msgid ""
+"Subject to the same rules, another unprivileged thread can also make these "
+"changes, as long as the effective user ID of the thread making the change "
+"matches the real or effective user ID of the target thread."
+msgstr ""
+"ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール"
+"が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザ ID が"
+"変更対象のスレッドの実ユーザ ID か実効ユーザ ID と 一致している場合に限られ"
+"る。"
+
+#. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
+#. type: Plain text
+#: build/C/man7/sched.7:528
+#, fuzzy
+#| msgid ""
+#| "Special rules apply for the B<SCHED_IDLE>. In Linux kernels before "
+#| "2.6.39, an unprivileged thread operating under this policy cannot change "
+#| "its policy, regardless of the value of its B<RLIMIT_RTPRIO> resource "
+#| "limit. In Linux kernels since 2.6.39, an unprivileged thread can switch "
+#| "to either the B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its "
+#| "nice value falls within the range permitted by its B<RLIMIT_NICE> "
+#| "resource limit (see B<getrlimit>(2))."
+msgid ""
+"Special rules apply for the B<SCHED_IDLE> policy. In Linux kernels before "
+"2.6.39, an unprivileged thread operating under this policy cannot change its "
+"policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit. In "
+"Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
+"B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
+"within the range permitted by its B<RLIMIT_NICE> resource limit (see "
+"B<getrlimit>(2))."
+msgstr ""
+"B<SCHED_IDLE> の場合には特別なルールが適用される。 2.6.39 より前の Linux カー"
+"ネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リソース"
+"上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の "
+"Linux カーネルでは、非特権スレッドは、自分の nice 値が B<RLIMIT_NICE> リソー"
+"ス上限 (B<getrlimit>(2) 参照) で許可された範囲である限りは、自分のスケジュー"
+"リングポリシーを B<SCHED_BATCH> か B<SCHED_NORMAL> ポリシーに切り替えることが"
+"できる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:539
+msgid ""
+"Privileged (B<CAP_SYS_NICE>) threads ignore the B<RLIMIT_RTPRIO> limit; as "
+"with older kernels, they can make arbitrary changes to scheduling policy and "
+"priority. See B<getrlimit>(2) for further information on B<RLIMIT_RTPRIO>."
+msgstr ""
+"特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
+"B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジューリン"
+"グポリシーと優先度に対し 任意の変更を行うことができる。 B<RLIMIT_RTPRIO> に関"
+"するもっと詳しい情報は B<getrlimit>(2) を参照のこと。"
+
+#. type: SS
+#: build/C/man7/sched.7:539
+#, no-wrap
+msgid "Limiting the CPU usage of real-time and deadline processes"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:552
+#, fuzzy
+#| msgid ""
+#| "Since a nonblocking infinite loop in a thread scheduled under "
+#| "B<SCHED_FIFO> or B<SCHED_RR> will block all threads with lower priority "
+#| "forever, a software developer should always keep available on the console "
+#| "a shell scheduled under a higher static priority than the tested "
+#| "application. This will allow an emergency kill of tested real-time "
+#| "applications that do not block or terminate as expected. See also the "
+#| "description of the B<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
+msgid ""
+"A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
+"B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all threads with lower "
+"priority forever. Prior to Linux 2.6.25, the only way of preventing a "
+"runaway real-time process from freezing the system was to run (at the "
+"console) a shell scheduled under a higher static priority than the tested "
+"application. This allows an emergency kill of tested real-time applications "
+"that do not block or terminate as expected."
+msgstr ""
+"B<SCHED_FIFO> や B<SCHED_RR> でスケジューリングされる スレッドが停止せずに無"
+"限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 (block) さ"
+"せてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストす"
+"る アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止"
+"したり終了したりしないリアルタイム アプリケーションを緊急終了させることが可能"
+"になる。 B<getrlimit>(2) のリソース制限 B<RLIMIT_RTTIME> の説明も参照のこ"
+"と。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:562
+msgid ""
+"Since Linux 2.6.25, there are other techniques for dealing with runaway real-"
+"time and deadline processes. One of these is to use the B<RLIMIT_RTTIME> "
+"resource limit to set a ceiling on the CPU time that a real-time process may "
+"consume. See B<getrlimit>(2) for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:570
+msgid ""
+"Since version 2.6.25, Linux also provides two I</proc> files that can be "
+"used to reserve a certain amount of CPU time to be used by non-real-time "
+"processes. Reserving some CPU time in this fashion allows some CPU time to "
+"be allocated to (say) a root shell that can be used to kill a runaway "
+"process. Both of these files specify time values in microseconds:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:570
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_period_us>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:578
+msgid ""
+"This file specifies a scheduling period that is equivalent to 100% CPU "
+"bandwidth. The value in this file can range from 1 to B<INT_MAX>, giving an "
+"operating range of 1 microsecond to around 35 minutes. The default value in "
+"this file is 1,000,000 (1 second)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/sched.7:578
+#, no-wrap
+msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/sched.7:591
+msgid ""
+"The value in this file specifies how much of the \"period\" time can be used "
+"by all real-time and deadline scheduled processes on the system. The value "
+"in this file can range from -1 to B<INT_MAX>-1. Specifying -1 makes the "
+"runtime the same as the period; that is, no CPU time is set aside for non-"
+"real-time processes (which was the Linux behavior before kernel 2.6.25). "
+"The default value in this file is 950,000 (0.95 seconds), meaning that 5% of "
+"the CPU time is reserved for processes that don't run under a real-time or "
+"deadline scheduling policy."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/sched.7:592
+#, no-wrap
+msgid "Response time"
+msgstr "応答時間 (response time)"
+
+#. as described in
+#. .BR request_irq (9).
+#. type: Plain text
+#: build/C/man7/sched.7:600
+msgid ""
+"A blocked high priority thread waiting for I/O has a certain response time "
+"before it is scheduled again. The device driver writer can greatly reduce "
+"this response time by using a \"slow interrupt\" interrupt handler."
+msgstr ""
+"I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい"
+"くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt"
+"\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで"
+"きる。"
+
+#. type: SS
+#: build/C/man7/sched.7:600
+#, no-wrap
+msgid "Miscellaneous"
+msgstr "その他"
+
+#. type: Plain text
+#: build/C/man7/sched.7:605
+msgid ""
+"Child processes inherit the scheduling policy and parameters across a "
+"B<fork>(2). The scheduling policy and parameters are preserved across "
+"B<execve>(2)."
+msgstr ""
+"子プロセスは B<fork>(2) の際に親プロセスのスケジューリングポリシーとパラメー"
+"タを継承する。 B<execve>(2) の前後で、スケジューリングポリシーとパラメータは"
+"保持される。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:611
+msgid ""
+"Memory locking is usually needed for real-time processes to avoid paging "
+"delays; this can be done with B<mlock>(2) or B<mlockall>(2)."
+msgstr ""
+"リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B<mlock>(2) "
+"や B<mlockall>(2) を使ってメモリロックをしなければならない。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:622
+msgid ""
+"Originally, Standard Linux was intended as a general-purpose operating "
+"system being able to handle background processes, interactive applications, "
+"and less demanding real-time applications (applications that need to usually "
+"meet timing deadlines). Although the Linux kernel 2.6 allowed for kernel "
+"preemption and the newly introduced O(1) scheduler ensures that the time "
+"needed to schedule is fixed and deterministic irrespective of the number of "
+"active tasks, true real-time computing was not possible up to kernel version "
+"2.6.17."
+msgstr ""
+"もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され"
+"ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要"
+"求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 "
+"(deadline) を満たす必要があるアプリケーション) を扱うことができた。 Linux "
+"カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ"
+"り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ"
+"らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが"
+"保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ"
+"ンピューティングは実現できなかった。"
+
+#. type: SS
+#: build/C/man7/sched.7:622
+#, no-wrap
+msgid "Real-time features in the mainline Linux kernel"
+msgstr "本流の Linux カーネルでのリアルタイム機能"
+
+#. FIXME . Probably this text will need some minor tweaking
+#. by about the time of 2.6.30; ask Carsten Emde about this then.
+#. type: Plain text
+#: build/C/man7/sched.7:636
+msgid ""
+"From kernel version 2.6.18 onward, however, Linux is gradually becoming "
+"equipped with real-time capabilities, most of which are derived from the "
+"former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
+"Gleixner, Steven Rostedt, and others. Until the patches have been "
+"completely merged into the mainline kernel (this is expected to be around "
+"kernel version 2.6.30), they must be installed to achieve the best real-time "
+"performance. These patches are named:"
+msgstr ""
+"カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
+"あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
+"Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
+"からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
+"では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
+"性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
+"これらのパッチは"
+
+#. type: Plain text
+#: build/C/man7/sched.7:640
+#, no-wrap
+msgid "patch-I<kernelversion>-rtI<patchversion>\n"
+msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
+
+#. type: Plain text
+#: build/C/man7/sched.7:646
+msgid ""
+"and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
+"kernel\\:/projects\\:/rt/> E<.UE .>"
+msgstr ""
+"という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
+"projects\\:/rt/> E<.UE> からダウンロードできる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:655
+msgid ""
+"Without the patches and prior to their full inclusion into the mainline "
+"kernel, the kernel configuration offers only the three preemption classes "
+"B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
+"B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
+"considerable reduction of the worst-case scheduling latency."
+msgstr ""
+"このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する"
+"までは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
+"B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプショ"
+"ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合"
+"のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:664
+msgid ""
+"With the patches applied or after their full inclusion into the mainline "
+"kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
+"available. If this is selected, Linux is transformed into a regular real-"
+"time operating system. The FIFO and RR scheduling policies are then used to "
+"run a thread with true real-time priority and a minimum worst-case "
+"scheduling latency."
+msgstr ""
+"パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了し"
+"た後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能になる。"
+"この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変"
+"身する。 この場合には、 FIFO と RR のスケジューリングポリシーは、 真のリアル"
+"タイム優先度を持つスレッドを最悪の場合のスケジューリング遅延が 最小となる環境"
+"で動作させるために使われることになる。"
+
+#. type: Plain text
+#: build/C/man7/sched.7:691
+#, fuzzy
+#| msgid ""
+#| "B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), "
+#| "B<munlock>(2), B<munlockall>(2), B<nice>(2), "
+#| "B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
+#| "B<sched_getscheduler>(2), B<sched_getaffinity>(2), B<sched_getparam>(2), "
+#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
+#| "B<sched_setscheduler>(2), B<sched_setparam>(2), B<sched_yield>(2), "
+#| "B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+#| "B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+#| "B<cpuset>(7)"
+msgid ""
+"B<chrt>(1), B<taskset>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), "
+"B<munlock>(2), B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7)"
+msgstr ""
+"B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
+"B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
+"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
+"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
+"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
+"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
+"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
+"B<cpuset>(7)"
#. type: Plain text
-#: build/C/man7/sched.7:41
-msgid "Set the scheduling policy and parameters of a specified thread."
+#: build/C/man7/sched.7:695
+msgid ""
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
msgstr ""
-
-#. type: TP
-#: build/C/man7/sched.7:41
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_getscheduler>(2)"
-msgstr "B<sched_getcpu>():"
-
-#. type: Plain text
-#: build/C/man7/sched.7:44
-#, fuzzy
-#| msgid "Resetting scheduling policy for child processes"
-msgid "Return the scheduling policy of a specified thread."
-msgstr "子プロセスでのスケジューリングポリシーのリセット"
-
-#. type: TP
-#: build/C/man7/sched.7:44
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_setparam>(2)"
-msgstr "B<sched_getcpu>():"
+"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
+"& Associates, Inc., ISBN 1-56592-074-0."
#. type: Plain text
-#: build/C/man7/sched.7:47
-msgid "Set the scheduling parameters of a specified thread."
+#: build/C/man7/sched.7:702
+msgid ""
+"The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
+"I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/scheduler/"
+"sched-design-CFS.txt>, and I<Documentation/scheduler/sched-nice-design.txt>"
msgstr ""
-#. type: TP
-#: build/C/man7/sched.7:47
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_getparam>(2)"
-msgstr "B<sched_getcpu>():"
+#. type: TH
+#: build/C/man2/setns.2:8
+#, no-wrap
+msgid "SETNS"
+msgstr "SETNS"
#. type: Plain text
-#: build/C/man7/sched.7:50
-msgid "Fetch the scheduling parameters of a specified thread."
-msgstr ""
-
-#. type: TP
-#: build/C/man7/sched.7:50
-#, fuzzy, no-wrap
-#| msgid "B<int sched_get_priority_max(int >I<policy>B<);>"
-msgid "B<sched_get_priority_max>(2)"
-msgstr "B<int sched_get_priority_max(int >I<policy>B<);>"
+#: build/C/man2/setns.2:11
+msgid "setns - reassociate thread with a namespace"
+msgstr "setns - スレッドに名前空間を関連付けしなおす"
#. type: Plain text
-#: build/C/man7/sched.7:53
-#, fuzzy
-#| msgid ""
-#| "The argument I<policy> does not identify a defined scheduling policy."
-msgid "Return the minimum priority available in a specified scheduling policy."
-msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
+#: build/C/man2/setns.2:17
+#, no-wrap
+msgid "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
+msgstr "B<int setns(int >I<fd>B<, int >I<nstype>B<);>\n"
-#. type: TP
-#: build/C/man7/sched.7:53
-#, fuzzy, no-wrap
-#| msgid "B<int sched_get_priority_min(int >I<policy>B<);>"
-msgid "B<sched_get_priority_min>(2)"
-msgstr "B<int sched_get_priority_min(int >I<policy>B<);>"
+#. type: Plain text
+#: build/C/man2/setns.2:21
+msgid ""
+"Given a file descriptor referring to a namespace, reassociate the calling "
+"thread with that namespace."
+msgstr ""
+"名前空間を参照するファイルディスクリプタを指定すると、\n"
+"呼び出したスレッドにその名前空間を関連付けしなおす。"
#. type: Plain text
-#: build/C/man7/sched.7:56
+#: build/C/man2/setns.2:34
#, fuzzy
#| msgid ""
-#| "The argument I<policy> does not identify a defined scheduling policy."
-msgid "Return the maximum priority available in a specified scheduling policy."
-msgstr "引き数 I<policy> が定義されているスケジューリング方針と一致しない。"
-
-#. type: TP
-#: build/C/man7/sched.7:56
-#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_rr_get_interval>(2)"
-msgstr "B<sched_getcpu>():"
+#| "The I<fd> argument is a file descriptor referring to one of the namespace "
+#| "entries in a I</proc/[pid]/ns/> directory; see B<proc>(5) for further "
+#| "information on I</proc/[pid]/ns/>. The calling thread will be "
+#| "reassociated with the corresponding namespace, subject to any constraints "
+#| "imposed by the I<nstype> argument."
+msgid ""
+"The I<fd> argument is a file descriptor referring to one of the namespace "
+"entries in a I</proc/[pid]/ns/> directory; see B<namespaces>(7) for further "
+"information on I</proc/[pid]/ns/>. The calling thread will be reassociated "
+"with the corresponding namespace, subject to any constraints imposed by the "
+"I<nstype> argument."
+msgstr ""
+"I<fd> 引き数は、 I</proc/[pid]/ns/> ディレクトリ内の名前空間エントリ\n"
+"のいずれかを参照するファイルディスクリプタである。\n"
+"I</proc/[pid]/ns/> の詳細は B<proc>(5) を参照。\n"
+"I<nstype> 引き数で指定された制限の範囲内で、\n"
+"呼び出したスレッドに I<fd> に対応する名前空間を関連付けしなおす。"
#. type: Plain text
-#: build/C/man7/sched.7:60
+#: build/C/man2/setns.2:40
msgid ""
-"Fetch the quantum used for threads that are scheduled under the \"round-robin"
-"\" scheduling policy."
+"The I<nstype> argument specifies which type of namespace the calling thread "
+"may be reassociated with. This argument can have one of the following "
+"values:"
msgstr ""
+"I<nstype> 引き数は、呼び出したスレッドがどのタイプの名前空間を\n"
+"関連付けしなおすことができるかを指定する。\n"
+"この引き数には以下のいずれかの値を指定できる。"
#. type: TP
-#: build/C/man7/sched.7:60
-#, fuzzy, no-wrap
-#| msgid "B<int sched_yield(void);>"
-msgid "B<sched_yield>(2)"
-msgstr "B<int sched_yield(void);>"
+#: build/C/man2/setns.2:40
+#, no-wrap
+msgid "B<0>"
+msgstr "B<0>"
#. type: Plain text
-#: build/C/man7/sched.7:64
-msgid ""
-"Cause the caller to relinquish the CPU, so that some other thread be "
-"executed."
-msgstr ""
+#: build/C/man2/setns.2:43
+msgid "Allow any type of namespace to be joined."
+msgstr "どのタイプの名前空間も関連付けることができる。"
#. type: TP
-#: build/C/man7/sched.7:64
+#: build/C/man2/setns.2:43
#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_setaffinity>(2)"
-msgstr "B<sched_getcpu>():"
+#| msgid "B<CLONE_NEWIPC> (since Linux 2.6.19)"
+msgid "B<CLONE_NEWIPC> (since Linux 3.0)"
+msgstr "B<CLONE_NEWIPC> (Linux 2.6.19 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:68
-msgid "(Linux-specific) Set the CPU affinity of a specified thread."
-msgstr ""
+#: build/C/man2/setns.2:47
+msgid "I<fd> must refer to an IPC namespace."
+msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
#. type: TP
-#: build/C/man7/sched.7:68
+#: build/C/man2/setns.2:47
#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_getaffinity>(2)"
-msgstr "B<sched_getcpu>():"
+#| msgid "B<CLONE_NEWNET> (since Linux 2.6.24)"
+msgid "B<CLONE_NEWNET> (since Linux 3.0)"
+msgstr "B<CLONE_NEWNET> (Linux 2.6.24 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:72
-msgid "(Linux-specific) Get the CPU affinity of a specified thread."
-msgstr ""
+#: build/C/man2/setns.2:51
+msgid "I<fd> must refer to a network namespace."
+msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
#. type: TP
-#: build/C/man7/sched.7:72
+#: build/C/man2/setns.2:51
#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_setattr>(2)"
-msgstr "B<sched_getcpu>():"
+#| msgid "B<CLONE_NEWNS> (since Linux 2.4.19)"
+msgid "B<CLONE_NEWNS> (since Linux 3.8)"
+msgstr "B<CLONE_NEWNS> (Linux 2.4.19 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:79
-msgid ""
-"Set the scheduling policy and parameters of a specified thread. This (Linux-"
-"specific) system call provides a superset of the functionality of "
-"B<sched_setscheduler>(2) and B<sched_setparam>(2)."
-msgstr ""
+#: build/C/man2/setns.2:55
+#, fuzzy
+#| msgid "I<fd> must refer to a network namespace."
+msgid "I<fd> must refer to a mount namespace."
+msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
#. type: TP
-#: build/C/man7/sched.7:79
+#: build/C/man2/setns.2:55 build/C/man2/unshare.2:149
#, fuzzy, no-wrap
-#| msgid "B<sched_getcpu>():"
-msgid "B<sched_getattr>(2)"
-msgstr "B<sched_getcpu>():"
+#| msgid "B<CLONE_NEWPID> (since Linux 2.6.24)"
+msgid "B<CLONE_NEWPID> (since Linux 3.8)"
+msgstr "B<CLONE_NEWPID> (Linux 2.6.24 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:87
-msgid ""
-"Fetch the scheduling policy and parameters of a specified thread. This "
-"(Linux-specific) system call provides a superset of the functionality of "
-"B<sched_getscheduler>(2) and B<sched_getparam>(2)."
-msgstr ""
+#: build/C/man2/setns.2:59
+#, fuzzy
+#| msgid "I<fd> must refer to an IPC namespace."
+msgid "I<fd> must refer to a PID namespace."
+msgstr "I<fd> は IPC 名前空間を参照していなければならない。"
-#. type: SS
-#: build/C/man7/sched.7:87
-#, no-wrap
-msgid "Scheduling policies"
-msgstr "スケジューリングポリシー (scheduling policy)"
+#. type: TP
+#: build/C/man2/setns.2:59 build/C/man2/unshare.2:176
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
+msgid "B<CLONE_NEWUSER> (since Linux 3.8)"
+msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:95
+#: build/C/man2/setns.2:63
#, fuzzy
-#| msgid ""
-#| "The scheduler is the kernel component that decides which runnable thread "
-#| "will be executed by the CPU next. Each thread has an associated "
-#| "scheduling policy and a I<static> scheduling priority, I<sched_priority>; "
-#| "these are the settings that are modified by B<sched_setscheduler>(). The "
-#| "scheduler makes it decisions based on knowledge of the scheduling policy "
-#| "and static priority of all threads on the system."
-msgid ""
-"The scheduler is the kernel component that decides which runnable thread "
-"will be executed by the CPU next. Each thread has an associated scheduling "
-"policy and a I<static> scheduling priority, I<sched_priority>. The "
-"scheduler makes its decisions based on knowledge of the scheduling policy "
-"and static priority of all threads on the system."
-msgstr ""
-"スケジューラ (scheduler) とはカーネルの構成要素で、 次に CPU で実行される実行"
-"可能なスレッドを決定するものである。 各々のスレッドには、スケジューリングポリ"
-"シーと 「静的」なスケジューリング優先度 I<sched_priority> が対応付けられ、 こ"
-"れらの設定は B<sched_setscheduler>() で変更できる。 スケジューラは、システム"
-"上の全スレッドのスケジューリングポリシーと 静的優先度に関する知識に基づいて決"
-"定を行う。"
+#| msgid "I<fd> must refer to a network namespace."
+msgid "I<fd> must refer to a user namespace."
+msgstr "I<fd> はネットワーク名前空間を参照していなければならない。"
-#. type: Plain text
-#: build/C/man7/sched.7:100
-msgid ""
-"For threads scheduled under one of the normal scheduling policies "
-"(B<SCHED_OTHER>, B<SCHED_IDLE>, B<SCHED_BATCH>), I<sched_priority> is not "
-"used in scheduling decisions (it must be specified as 0)."
-msgstr ""
-"通常のスケジューリングポリシー (B<SCHED_OTHER>, B<SCHED_IDLE>, "
-"B<SCHED_BATCH>) の下でスケジューリングされるスレッドでは、 "
-"I<sched_priority> はスケジューリングの決定に使用されない (I<sched_priority> "
-"には 0 を指定しなければならない)。"
+#. type: TP
+#: build/C/man2/setns.2:63
+#, fuzzy, no-wrap
+#| msgid "B<CLONE_NEWUTS> (since Linux 2.6.19)"
+msgid "B<CLONE_NEWUTS> (since Linux 3.0)"
+msgstr "B<CLONE_NEWUTS> (Linux 2.6.19 以降)"
#. type: Plain text
-#: build/C/man7/sched.7:114
-msgid ""
-"Processes scheduled under one of the real-time policies (B<SCHED_FIFO>, "
-"B<SCHED_RR>) have a I<sched_priority> value in the range 1 (low) to 99 "
-"(high). (As the numbers imply, real-time threads always have higher "
-"priority than normal threads.) Note well: POSIX.1-2001 requires an "
-"implementation to support only a minimum 32 distinct priority levels for the "
-"real-time policies, and some systems supply just this minimum. Portable "
-"programs should use B<sched_get_priority_min>(2) and "
-"B<sched_get_priority_max>(2) to find the range of priorities supported for "
-"a particular policy."
-msgstr ""
-"リアルタイムスケジューリングポリシー (B<SCHED_FIFO>, B<SCHED_RR>) の下でスケ"
-"ジューリングされるスレッドは、 I<sched_priority> の値は 1 (最低) から 99 (最"
-"高) の範囲となる (数字から分かるように、リアルタイムスレッドは常に通常のス"
-"レッドよりも 高い優先度を持つ)。 ここで注意すべきなのは、POSIX.1-2001 が要求"
-"しているのは、 リアルタイムポリシーの実装において最低 32 種類の異なる優先度レ"
-"ベルが サポートされることだけであり、いくつかのシステムではこの最低限の数の "
-"優先度しか提供されていない、ということである。 移植性が必要なプログラムで"
-"は、 B<sched_get_priority_min>(2) と B<sched_get_priority_max>(2) を使っ"
-"て、あるポリシーがサポートする優先度の範囲を調べるべきである。"
+#: build/C/man2/setns.2:67
+msgid "I<fd> must refer to a UTS namespace."
+msgstr "I<fd> は UTS 名前空間を参照していなければならない。"
#. type: Plain text
-#: build/C/man7/sched.7:120
+#: build/C/man2/setns.2:82
msgid ""
-"Conceptually, the scheduler maintains a list of runnable threads for each "
-"possible I<sched_priority> value. In order to determine which thread runs "
-"next, the scheduler looks for the nonempty list with the highest static "
-"priority and selects the thread at the head of this list."
+"Specifying I<nstype> as 0 suffices if the caller knows (or does not care) "
+"what type of namespace is referred to by I<fd>. Specifying a nonzero value "
+"for I<nstype> is useful if the caller does not know what type of namespace "
+"is referred to by I<fd> and wants to ensure that the namespace is of a "
+"particular type. (The caller might not know the type of the namespace "
+"referred to by I<fd> if the file descriptor was opened by another process "
+"and, for example, passed to the caller via a UNIX domain socket.)"
msgstr ""
-"概念としては、 スケジューラはその I<sched_priority> の値それぞれに対して 実行"
-"可能なスレッドのリストを管理している。 どのスレッドを次に実行するかを決定する"
-"ために、 スケジューラは静的優先度の最も高い空でないリストを探して、 そのリス"
-"トの先頭のスレッドを選択する。"
+"呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを知っている\n"
+"(もしくは気にする必要がない) 場合には、 I<nstype> に 0 を指定すれば十分\n"
+"である。呼び出し側が I<fd> がどのタイプの名前空間を参照しているかを\n"
+"知っておらず、かつ、特定のタイプの名前空間であることを保証したい場合、\n"
+"I<nstype> に 0 以外の値を指定するとよい。 (ファイルディスクリプタが別の\n"
+"プロセスによりオープンされ、例えば、UNIX ドメインソケット経由で呼び出し\n"
+"側に渡された場合などでは、呼び出し側が I<fd> がどのタイプの名前空間を\n"
+"参照しているかを知らない可能性がある。)"
#. type: Plain text
-#: build/C/man7/sched.7:124
+#: build/C/man2/setns.2:97
msgid ""
-"A thread's scheduling policy determines where it will be inserted into the "
-"list of threads with equal static priority and how it will move inside this "
-"list."
+"B<CLONE_NEWPID> behaves somewhat differently from the other I<nstype> "
+"values: reassociating the calling thread with a PID namespace only changes "
+"the PID namespace that child processes of the caller will be created in; it "
+"does not change the PID namespace of the caller itself. Reassociating with "
+"a PID namespace is only allowed if the PID namespace specified by I<fd> is a "
+"descendant (child, grandchild, etc.) of the PID namespace of the caller. "
+"For further details on PID namespaces, see B<pid_namespaces>(7)."
msgstr ""
-"各スレッドのスケジューリングポリシーは、 そのスレッドが同じ静的優先度を持つス"
-"レッドのリストの中のどこに挿入され、 このリストの中をどのように移動するかを決"
-"定する。"
+#. See kernel/user_namespace.c:userns_install() [3.8 source]
+#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
+#. https://lwn.net/Articles/543273/
#. type: Plain text
-#: build/C/man7/sched.7:132
+#: build/C/man2/setns.2:124
msgid ""
-"All scheduling is preemptive: if a thread with a higher static priority "
-"becomes ready to run, the currently running thread will be preempted and "
-"returned to the wait list for its static priority level. The scheduling "
-"policy determines the ordering only within the list of runnable threads with "
-"equal static priority."
+"A process reassociating itself with a user namespace must have the "
+"B<CAP_SYS_ADMIN> capability in the target user namespace. Upon successfully "
+"joining a user namespace, a process is granted all capabilities in that "
+"namespace, regardless of its user and group IDs. A multithreaded process "
+"may not change user namespace with B<setns>(). It is not permitted to use "
+"B<setns>() to reenter the caller's current user namespace. This prevents a "
+"caller that has dropped capabilities from regaining those capabilities via a "
+"call to B<setns>(). For security reasons, a process can't join a new user "
+"namespace if it is sharing filesystem-related attributes (the attributes "
+"whose sharing is controlled by the B<clone>(2) B<CLONE_FS> flag) with "
+"another process. For further details on user namespaces, see "
+"B<user_namespaces>(7)."
msgstr ""
-"全てのスケジューリングはプリエンプティブ (preemptive) である: より高い優先度"
-"のスレッドが実行可能になると、現在実行中のスレッドは実行権を 取り上げられ "
-"(preempted)、そのスレッドの静的優先度レベルの待ちリストに 戻される。スケ"
-"ジューリングポリシーは同じ静的優先度を持つ実行可能な スレッドのリストの中で順"
-"番のみを決定する。"
-
-#. type: SS
-#: build/C/man7/sched.7:132
-#, no-wrap
-msgid "SCHED_FIFO: First in-first out scheduling"
-msgstr "SCHED_FIFO: ファーストインファーストアウトスケジューリング"
+#. Above check is in fs/namespace.c:mntns_install() [3.8 source]
#. type: Plain text
-#: build/C/man7/sched.7:141
+#: build/C/man2/setns.2:138
msgid ""
-"B<SCHED_FIFO> can be used only with static priorities higher than 0, which "
-"means that when a B<SCHED_FIFO> threads becomes runnable, it will always "
-"immediately preempt any currently running B<SCHED_OTHER>, B<SCHED_BATCH>, or "
-"B<SCHED_IDLE> thread. B<SCHED_FIFO> is a simple scheduling algorithm "
-"without time slicing. For threads scheduled under the B<SCHED_FIFO> policy, "
-"the following rules apply:"
+"A process may not be reassociated with a new mount namespace if it is "
+"multithreaded. Changing the mount namespace requires that the caller "
+"possess both B<CAP_SYS_CHROOT> and B<CAP_SYS_ADMIN> capabilities in its own "
+"user namespace and B<CAP_SYS_ADMIN> in the target mount namespace. See "
+"B<user_namespaces>(7) for details on the interaction of user namespaces and "
+"mount namespaces."
msgstr ""
-"B<SCHED_FIFO> は 0 より大きな静的優先度でのみ使用できる。このポリシーでは、 "
-"B<SCHED_FIFO> スレッドが実行可能になった場合、 そのポリシーが "
-"B<SCHED_OTHER>、 B<SCHED_BATCH>、 B<SCHED_IDLE> の 現在実行中のスレッドは直ち"
-"に実行権を取り上げられる。 B<SCHED_FIFO> は時分割のない単純なスケジューリング"
-"アルゴリズムである。 B<SCHED_FIFO> ポリシーでスケジューリングされているスレッ"
-"ドには以下の ルールが適用される:"
-
-#. type: IP
-#: build/C/man7/sched.7:141 build/C/man7/sched.7:146 build/C/man7/sched.7:149
-#: build/C/man7/sched.7:164 build/C/man7/sched.7:413 build/C/man7/sched.7:422
-#: build/C/man7/sched.7:445 build/C/man7/sched.7:453 build/C/man7/sched.7:492
-#: build/C/man7/sched.7:500 build/C/man7/sched.7:505 build/C/man7/sched.7:510
-#, no-wrap
-msgid "*"
-msgstr "*"
#. type: Plain text
-#: build/C/man7/sched.7:146
+#: build/C/man2/setns.2:145
msgid ""
-"A B<SCHED_FIFO> thread that has been preempted by another thread of higher "
-"priority will stay at the head of the list for its priority and will resume "
-"execution as soon as all threads of higher priority are blocked again."
+"On success, I<setns>() returns 0. On failure, -1 is returned and I<errno> "
+"is set to indicate the error."
msgstr ""
-"より高い優先度の他のスレッドによって取って代わられた B<SCHED_FIFO> スレッドは"
-"その優先度のリストの先頭に留まり続け、 より高い優先度のスレッド全てが停止 "
-"(block) した場合に実行を再開する。"
+"成功すると I<setns>() は 0 を返す。\n"
+"失敗すると、 -1 が返され、 I<errno> にエラーを示す値が設定される。"
#. type: Plain text
-#: build/C/man7/sched.7:149
-msgid ""
-"When a B<SCHED_FIFO> thread becomes runnable, it will be inserted at the end "
-"of the list for its priority."
-msgstr ""
-"B<SCHED_FIFO> スレッドが実行可能になった時、その優先度のリストの最後 に挿入さ"
-"れる。"
+#: build/C/man2/setns.2:150
+msgid "I<fd> is not a valid file descriptor."
+msgstr "I<fd> が有効なファイルディスクリプタではない。"
-#. In 2.2.x and 2.4.x, the thread is placed at the front of the queue
-#. In 2.0.x, the Right Thing happened: the thread went to the back -- MTK
#. type: Plain text
-#: build/C/man7/sched.7:164
+#: build/C/man2/setns.2:155
#, fuzzy
#| msgid ""
-#| "A call to B<sched_setscheduler>() or B<sched_setparam>(2) will put the "
-#| "B<SCHED_FIFO> (or B<SCHED_RR>) thread identified by I<pid> at the start "
-#| "of the list if it was runnable. As a consequence, it may preempt the "
-#| "currently running thread if it has the same priority. (POSIX.1-2001 "
-#| "specifies that the thread should go to the end of the list.)"
+#| "I<fd> refers to a namespace whose type does not match that specified in "
+#| "I<nstype>, or there is problem with reassociating the the thread with the "
+#| "specified namespace."
msgid ""
-"A call to B<sched_setscheduler>(2), B<sched_setparam>(2), or "
-"B<sched_setattr>(2) will put the B<SCHED_FIFO> (or B<SCHED_RR>) thread "
-"identified by I<pid> at the start of the list if it was runnable. As a "
-"consequence, it may preempt the currently running thread if it has the same "
-"priority. (POSIX.1-2001 specifies that the thread should go to the end of "
-"the list.)"
+"I<fd> refers to a namespace whose type does not match that specified in "
+"I<nstype>."
msgstr ""
-"B<sched_setscheduler>() や B<sched_setparam>(2) は I<pid> で指定された "
-"B<SCHED_FIFO> (または B<SCHED_RR>) スレッドが 実行可能な場合、リストの最初に"
-"置く。 結果として、もし優先度が同じだった場合、 現在実行中のスレッドに先んじ"
-"るかもしれない。 (POSIX.1-2001 ではスレッドはリストの最後に行くべきと規定され"
-"ている。)"
+"I<fd> が I<nstype> で指定されたタイプと一致しない名前空間を参照している。\n"
+"または、指定された名前空間をそのスレッドに関連付けし直す際に問題\n"
+"があった。"
#. type: Plain text
-#: build/C/man7/sched.7:168
-msgid "A thread calling B<sched_yield>(2) will be put at the end of the list."
-msgstr "B<sched_yield>(2) を呼び出したスレッドはリストの最後に置かれる。"
+#: build/C/man2/setns.2:159
+#, fuzzy
+#| msgid "setns - reassociate thread with a namespace"
+msgid ""
+"There is problem with reassociating the thread with the specified namespace."
+msgstr "setns - スレッドに名前空間を関連付けしなおす"
#. type: Plain text
-#: build/C/man7/sched.7:172
+#: build/C/man2/setns.2:163
msgid ""
-"No other events will move a thread scheduled under the B<SCHED_FIFO> policy "
-"in the wait list of runnable threads with equal static priority."
+"The caller attempted to join the user namespace in which it is already a "
+"member."
msgstr ""
-"その他のイベントによって B<SCHED_FIFO> ポリシーでスケジューリングされるスレッ"
-"ドが同じ優先度の実行可能なスレッドの待ちリストの中を移動することはない。"
+#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
#. type: Plain text
-#: build/C/man7/sched.7:177
+#: build/C/man2/setns.2:170
msgid ""
-"A B<SCHED_FIFO> thread runs until either it is blocked by an I/O request, it "
-"is preempted by a higher priority thread, or it calls B<sched_yield>(2)."
+"The caller shares filesystem (B<CLONE_FS>) state (in particular, the root "
+"directory) with other processes and tried to join a new user namespace."
msgstr ""
-"B<SCHED_FIFO> スレッドは I/O 要求によって停止するか、 より高い優先度のスレッ"
-"ドによって置きかえられるか、 B<sched_yield>(2) を呼び出すまで実行を続ける。"
-
-#. type: SS
-#: build/C/man7/sched.7:177
-#, no-wrap
-msgid "SCHED_RR: Round-robin scheduling"
-msgstr "SCHED_RR: ラウンドロビン (round-robin)スケジューリング"
-#. On Linux 2.4, the length of the RR interval is influenced
-#. by the process nice value -- MTK
+#. See kernel/user_namespace.c::userns_install() [kernel 3.15 sources]
#. type: Plain text
-#: build/C/man7/sched.7:196
-msgid ""
-"B<SCHED_RR> is a simple enhancement of B<SCHED_FIFO>. Everything described "
-"above for B<SCHED_FIFO> also applies to B<SCHED_RR>, except that each thread "
-"is allowed to run only for a maximum time quantum. If a B<SCHED_RR> thread "
-"has been running for a time period equal to or longer than the time quantum, "
-"it will be put at the end of the list for its priority. A B<SCHED_RR> "
-"thread that has been preempted by a higher priority thread and subsequently "
-"resumes execution as a running thread will complete the unexpired portion of "
-"its round-robin time quantum. The length of the time quantum can be "
-"retrieved using B<sched_rr_get_interval>(2)."
+#: build/C/man2/setns.2:174
+msgid "The caller is multithreaded and tried to join a new user namespace."
msgstr ""
-"B<SCHED_RR> は B<SCHED_FIFO> の単純な拡張である。 上述された\n"
-"B<SCHED_FIFO> に関する記述は全て B<SCHED_RR> に 適用できる。異なるのは\n"
-"それぞれのスレッドは最大時間単位までしか実行できない ということである。\n"
-"B<SCHED_RR> スレッドが時間単位と同じかそれより 長い時間実行されると、\n"
-"その優先度のリストの最後に置かれる。 より高い優先度のスレッドによって\n"
-"置きかえられ、その後実行を再開した B<SCHED_RR> スレッドは、そのラウンド\n"
-"ロビン時間単位を完全に使い切る まで実行される。その時間単位の長さは\n"
-"B<sched_rr_get_interval>(2) を使って取得できる。"
-#. type: SS
-#: build/C/man7/sched.7:196
-#, no-wrap
-msgid "SCHED_DEADLINE: Sporadic task model deadline scheduling"
-msgstr ""
+#. type: Plain text
+#: build/C/man2/setns.2:177
+msgid "Cannot allocate sufficient memory to change the specified namespace."
+msgstr "指定された名前空間に変更するのに必要なメモリが割り当てられない。"
#. type: Plain text
-#: build/C/man7/sched.7:208
+#: build/C/man2/setns.2:181
+#, fuzzy
+#| msgid ""
+#| "The calling process did not have the required privileges for this "
+#| "operation."
msgid ""
-"Since version 3.14, Linux provides a deadline scheduling policy "
-"(B<SCHED_DEADLINE>). This policy is currently implemented using GEDF "
-"(Global Earliest Deadline First) in conjunction with CBS (Constant "
-"Bandwidth Server). To set and fetch this policy and associated attributes, "
-"one must use the Linux-specific B<sched_setattr>(2) and "
-"B<sched_getattr>(2) system calls."
-msgstr ""
+"The calling thread did not have the required capability for this operation."
+msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
#. type: Plain text
-#: build/C/man7/sched.7:226
+#: build/C/man2/setns.2:186
msgid ""
-"A sporadic task is one that has a sequence of jobs, where each job is "
-"activated at most once per period. Each job also has a I<relative "
-"deadline>, before which it should finish execution, and a I<computation "
-"time>, which is the CPU time necessary for executing the job. The moment "
-"when a task wakes up because a new job has to be executed is called the "
-"I<arrival time> (also referred to as the request time or release time). The "
-"I<start time> is the time at which a task starts its execution. The "
-"I<absolute deadline> is thus obtained by adding the relative deadline to the "
-"arrival time."
+"The B<setns>() system call first appeared in Linux in kernel 3.0; library "
+"support was added to glibc in version 2.14."
msgstr ""
+"B<setns>() システムコールはカーネル 3.0 で Linux に初めて登場した。\n"
+"ライブラリによるサポートは glibc バージョン 2.14 を追加された。"
#. type: Plain text
-#: build/C/man7/sched.7:228
-msgid "The following diagram clarifies these terms:"
+#: build/C/man2/setns.2:190
+msgid "The B<setns>() system call is Linux-specific."
+msgstr "B<setns>() システムコールは Linux 固有である。"
+
+#. type: Plain text
+#: build/C/man2/setns.2:196
+msgid ""
+"Not all of the attributes that can be shared when a new thread is created "
+"using B<clone>(2) can be changed using B<setns>()."
msgstr ""
+"新しいスレッドが B<clone>(2) を使って作成された際に共有できる全ての属性を、\n"
+"B<setns>() を使って変更できるわけではない。"
#. type: Plain text
-#: build/C/man7/sched.7:239
-#, no-wrap
+#: build/C/man2/setns.2:205
msgid ""
-"arrival/wakeup absolute deadline\n"
-" | start time |\n"
-" | | |\n"
-" v v v\n"
-"-----x--------xooooooooooooooooo--------x--------x---\n"
-" |E<lt>- comp. time -E<gt>|\n"
-" |E<lt>------- relative deadline ------E<gt>|\n"
-" |E<lt>-------------- period -------------------E<gt>|\n"
+"The program below takes two or more arguments. The first argument specifies "
+"the pathname of a namespace file in an existing I</proc/[pid]/ns/> "
+"directory. The remaining arguments specify a command and its arguments. "
+"The program opens the namespace file, joins that namespace using B<setns>(), "
+"and executes the specified command inside that namespace."
msgstr ""
+"以下のプログラムは 2 つ以上の引き数を取る。 最初の引き数には、 既存の I</"
+"proc/[pid]/ns/> ディレクトリの名前空間ファイルのパス名を指定する。 残りの引き"
+"数は、コマンドとその引き数を指定する。 このプログラムは名前空間ファイルをオー"
+"プンし、 B<setns>() を使って名前空間に参加し、 指定されたコマンドをその名前空"
+"間内で実行する。"
#. type: Plain text
-#: build/C/man7/sched.7:258
+#: build/C/man2/setns.2:215
msgid ""
-"When setting a B<SCHED_DEADLINE> policy for a thread using "
-"B<sched_setattr>(2), one can specify three parameters: I<Runtime>, "
-"I<Deadline>, and I<Period>. These parameters do not necessarily correspond "
-"to the aforementioned terms: usual practice is to set Runtime to something "
-"bigger than the average computation time (or worst-case execution time for "
-"hard real-time tasks), Deadline to the relative deadline, and Period to the "
-"period of the task. Thus, for B<SCHED_DEADLINE> scheduling, we have:"
+"The following shell session demonstrates the use of this program (compiled "
+"as a binary named I<ns_exec>) in conjunction with the B<CLONE_NEWUTS> "
+"example program in the B<clone>(2) man page (complied as a binary named "
+"I<newuts>)."
msgstr ""
+"以下のシェルセッションでは、 このプログラム (I<ns_exec> という名前のバイナリ"
+"としてコンパイルされている)を、 B<clone>(2) のマニュアルページの "
+"B<CLONE_NEWUTS> のサンプルプログラムと組み合わせて使っている。"
#. type: Plain text
-#: build/C/man7/sched.7:269
-#, no-wrap
+#: build/C/man2/setns.2:223
msgid ""
-"arrival/wakeup absolute deadline\n"
-" | start time |\n"
-" | | |\n"
-" v v v\n"
-"-----x--------xooooooooooooooooo--------x--------x---\n"
-" |E<lt>-- Runtime -------E<gt>|\n"
-" |E<lt>----------- Deadline -----------E<gt>|\n"
-" |E<lt>-------------- Period -------------------E<gt>|\n"
+"We begin by executing the example program in B<clone>(2) in the "
+"background. That program creates a child in a separate UTS namespace. The "
+"child changes the hostname in its namespace, and then both processes display "
+"the hostnames in their UTS namespaces, so that we can see that they are "
+"different."
msgstr ""
+"まず、 B<clone>(2) のサンプルプログラムをバックグラウンドで実行する。 このプ"
+"ログラムは、 別の UTS 名前空間で子プロセスを作成する。 子プロセスは自分の名前"
+"空間内でホスト名を変更する。 それから、 親プロセスと子プロセスの両方でそれぞ"
+"れの UTS 名前空間のホスト名を表示し、 2 つのホスト名が違うことが確認できる。"
-#. FIXME It looks as though specifying sched_period as 0 means
-#. "make sched_period the same as sched_deadline", right?
-#. This needs to be documented.
#. type: Plain text
-#: build/C/man7/sched.7:289
+#: build/C/man2/setns.2:235
+#, no-wrap
msgid ""
-"The three deadline-scheduling parameters correspond to the I<sched_runtime>, "
-"I<sched_deadline>, and I<sched_period> fields of the I<sched_attr> "
-"structure; see B<sched_setattr>(2). These fields express value in "
-"nanoseconds. If I<sched_period> is specified as 0, then it is made the same "
-"as I<sched_deadline>."
+"$ B<su> # Need privilege for namespace operations\n"
+"Password:\n"
+"# B<./newuts bizarro &>\n"
+"[1] 3549\n"
+"clone() returned 3550\n"
+"uts.nodename in child: bizarro\n"
+"uts.nodename in parent: antero\n"
+"# B<uname -n> # Verify hostname in the shell\n"
+"antero\n"
msgstr ""
+"$ B<su> # 名前空間の操作には特権が必要\n"
+"Password:\n"
+"# B<./newuts bizarro &>\n"
+"[1] 3549\n"
+"clone() returned 3550\n"
+"uts.nodename in child: bizarro\n"
+"uts.nodename in parent: antero\n"
+"# B<uname -n> # シェルでホスト名を確認\n"
+"antero\n"
#. type: Plain text
-#: build/C/man7/sched.7:291
-msgid "The kernel requires that:"
+#: build/C/man2/setns.2:242
+msgid ""
+"We then run the program shown below, using it to execute a shell. Inside "
+"that shell, we verify that the hostname is the one set by the child created "
+"by the first program:"
msgstr ""
+"次に、以下のプログラムを使ってシェルを実行する。 このシェルの中では、ホスト名"
+"が最初のプログラムで作成された子プロセスが設定したホスト名になっていることを"
+"確認できる。"
#. type: Plain text
-#: build/C/man7/sched.7:293
+#: build/C/man2/setns.2:248
#, no-wrap
-msgid " sched_runtime E<lt>= sched_deadline E<lt>= sched_period\n"
+msgid ""
+"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
+"# B<uname -n> # Executed in shell started by ns_exec\n"
+"bizarro\n"
msgstr ""
+"# B<./ns_exec /proc/3550/ns/uts /bin/bash>\n"
+"# B<uname -n> # ns_exec で起動されたシェル内で実行\n"
+"bizarro\n"
-#. See __checkparam_dl in kernel/sched/core.c
#. type: Plain text
-#: build/C/man7/sched.7:303
+#: build/C/man2/setns.2:258
+#, no-wrap
msgid ""
-"In addition, under the current implementation, all of the parameter values "
-"must be at least 1024 (i.e., just over one microsecond, which is the "
-"resolution of the implementation), and less than 2^63. If any of these "
-"checks fails, B<sched_setattr>(2) fails with the error B<EINVAL>."
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
msgstr ""
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
#. type: Plain text
-#: build/C/man7/sched.7:306
+#: build/C/man2/setns.2:266
+#, no-wrap
msgid ""
-"The CBS guarantees non-interference between tasks, by throttling threads "
-"that attempt to over-run their specified Runtime."
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
#. type: Plain text
-#: build/C/man7/sched.7:319
+#: build/C/man2/setns.2:271
+#, no-wrap
msgid ""
-"To ensure deadline scheduling guarantees, the kernel must prevent situations "
-"where the set of B<SCHED_DEADLINE> threads is not feasible (schedulable) "
-"within the given constraints. The kernel thus performs an admittance test "
-"when setting or changing B<SCHED_DEADLINE> policy and attributes. This "
-"admission test calculates whether the change is feasible; if it is not "
-"B<sched_setattr>(2) fails with the error B<EBUSY>."
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
msgstr ""
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"%s /proc/PID/ns/FILE cmd args...\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
#. type: Plain text
-#: build/C/man7/sched.7:325
+#: build/C/man2/setns.2:275
+#, fuzzy, no-wrap
+#| msgid ""
+#| " fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
+#| " if (fd == -1)\n"
+#| " errExit(\"open\");\n"
msgid ""
-"For example, it is required (but not necessarily sufficient) for the total "
-"utilization to be less than or equal to the total number of CPUs available, "
-"where, since each thread can maximally run for Runtime per Period, that "
-"thread's utilization is its Runtime divided by its Period."
+" fd = open(argv[1], O_RDONLY); /* Get descriptor for namespace */\n"
+" if (fd == -1)\n"
+" errExit(\"open\");\n"
msgstr ""
+" fd = open(argv[1], O_RDONLY); /* 名前空間のディスクリプタを取得 */\n"
+" if (fd == -1)\n"
+" errExit(\"open\");\n"
#. type: Plain text
-#: build/C/man7/sched.7:336
+#: build/C/man2/setns.2:278
+#, fuzzy, no-wrap
+#| msgid ""
+#| " if (setns(fd, 0) == -1) /* Join that namespace */\n"
+#| " errExit(\"setns\");\n"
msgid ""
-"In order to fulfil the guarantees that are made when a thread is admitted to "
-"the B<SCHED_DEADLINE> policy, B<SCHED_DEADLINE> threads are the highest "
-"priority (user controllable) threads in the system; if any B<SCHED_DEADLINE> "
-"thread is runnable, it will preempt any thread scheduled under one of the "
-"other policies."
+" if (setns(fd, 0) == -1) /* Join that namespace */\n"
+" errExit(\"setns\");\n"
msgstr ""
+" if (setns(fd, 0) == -1) /* 名前空間に参加 */\n"
+" errExit(\"setns\");\n"
#. type: Plain text
-#: build/C/man7/sched.7:344
+#: build/C/man2/setns.2:282
+#, fuzzy, no-wrap
+#| msgid ""
+#| " execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
+#| " errExit(\"execvp\");\n"
+#| "}\n"
msgid ""
-"A call to B<fork>(2) by a thread scheduled under the B<SCHED_DEADLINE> "
-"policy will fail with the error B<EAGAIN>, unless the thread has its reset-"
-"on-fork flag set (see below)."
+" execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
+" errExit(\"execvp\");\n"
+"}\n"
msgstr ""
+" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
+" errExit(\"execvp\");\n"
+"}\n"
-#
-#. FIXME Calling sched_getparam() on a SCHED_DEADLINE thread
-#. fails with EINVAL, but sched_getscheduler() succeeds.
-#. Is that intended? (Why?)
#. type: Plain text
-#: build/C/man7/sched.7:356
+#: build/C/man2/setns.2:290
+#, fuzzy
+#| msgid "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
msgid ""
-"A B<SCHED_DEADLINE> thread that calls B<sched_yield>(2) will yield the "
-"current job and wait for a new period to begin."
-msgstr ""
+"B<clone>(2), B<fork>(2), B<unshare>(2), B<vfork>(2), B<namespaces>(7), "
+"B<unix>(7)"
+msgstr "B<clone>(2), B<fork>(2), B<vfork>(2), B<proc>(5), B<unix>(7)"
-#. type: SS
-#: build/C/man7/sched.7:356
+#. type: TH
+#: build/C/man2/unshare.2:20
#, no-wrap
-msgid "SCHED_OTHER: Default Linux time-sharing scheduling"
-msgstr "SCHED_OTHER: Linux のデフォルトの時分割スケジューリング"
+msgid "UNSHARE"
+msgstr "UNSHARE"
#. type: Plain text
-#: build/C/man7/sched.7:373
-#, fuzzy
-#| msgid ""
-#| "B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is "
-#| "the standard Linux time-sharing scheduler that is intended for all "
-#| "threads that do not require the special real-time mechanisms. The thread "
-#| "to run is chosen from the static priority 0 list based on a I<dynamic> "
-#| "priority that is determined only inside this list. The dynamic priority "
-#| "is based on the nice value (set by B<nice>(2) or B<setpriority>(2)) and "
-#| "increased for each time quantum the thread is ready to run, but denied to "
-#| "run by the scheduler. This ensures fair progress among all "
-#| "B<SCHED_OTHER> threads."
-msgid ""
-"B<SCHED_OTHER> can be used at only static priority 0. B<SCHED_OTHER> is the "
-"standard Linux time-sharing scheduler that is intended for all threads that "
-"do not require the special real-time mechanisms. The thread to run is "
-"chosen from the static priority 0 list based on a I<dynamic> priority that "
-"is determined only inside this list. The dynamic priority is based on the "
-"nice value (set by B<nice>(2), B<setpriority>(2), or B<sched_setattr>(2)) "
-"and increased for each time quantum the thread is ready to run, but denied "
-"to run by the scheduler. This ensures fair progress among all "
-"B<SCHED_OTHER> threads."
-msgstr ""
-"B<SCHED_OTHER> は静的優先度 0 でのみ使用できる。 B<SCHED_OTHER> は Linux 標準"
-"の時分割スケジューラで、 特別なリアルタイム機構を必要としていない全てのスレッ"
-"ドで使用される。 実行するスレッドは、静的優先度 0 のリストから、このリストの"
-"中だけで 決定される「動的な」優先度 (dynamic priority) に基いて決定される。 "
-"動的な優先度は (B<nice>(2) や B<setpriority>(2) により設定される) nice 値に"
-"基づいて決定されるもので、 単位時間毎に、スレッドが実行可能だが、スケジューラ"
-"により実行が拒否された 場合にインクリメントされる。 これにより、全ての "
-"B<SCHED_OTHER> スレッドでの公平性が保証される。"
+#: build/C/man2/unshare.2:23
+msgid "unshare - disassociate parts of the process execution context"
+msgstr "unshare - プロセス実行コンテキストの一部を分離する"
-#. type: SS
-#: build/C/man7/sched.7:373
+#. type: Plain text
+#: build/C/man2/unshare.2:28
#, no-wrap
-msgid "SCHED_BATCH: Scheduling batch processes"
-msgstr "SCHED_BATCH: バッチプロセスのスケジューリング"
+msgid "B<int unshare(int >I<flags>B<);>\n"
+msgstr "B<int unshare(int >I<flags>B<);>\n"
#. type: Plain text
-#: build/C/man7/sched.7:385
-msgid ""
-"(Since Linux 2.6.16.) B<SCHED_BATCH> can be used only at static priority "
-"0. This policy is similar to B<SCHED_OTHER> in that it schedules the thread "
-"according to its dynamic priority (based on the nice value). The difference "
-"is that this policy will cause the scheduler to always assume that the "
-"thread is CPU-intensive. Consequently, the scheduler will apply a small "
-"scheduling penalty with respect to wakeup behaviour, so that this thread is "
-"mildly disfavored in scheduling decisions."
-msgstr ""
-"(Linux 2.6.16 以降) B<SCHED_BATCH> は静的優先度 0 でのみ使用できる。 このポ"
-"リシーは (nice 値に基づく) 動的な優先度にしたがってスレッドの スケジューリン"
-"グが行われるという点で、B<SCHED_OTHER> に似ている。 異なるのは、このポリシー"
-"では、スレッドが常に CPU に負荷のかかる (CPU-intensive) 処理を行うと、スケ"
-"ジューラが仮定する点である。 スケジューラはスレッドを呼び起こす毎にそのスレッ"
-"ドにスケジューリング上の ペナルティを少し課し、その結果、このスレッドはスケ"
-"ジューリングの決定で 若干冷遇されるようになる。"
+#: build/C/man2/unshare.2:36
+msgid "B<unshare>():"
+msgstr "B<unshare>():"
-#. The following paragraph is drawn largely from the text that
-#. accompanied Ingo Molnar's patch for the implementation of
-#. SCHED_BATCH.
-#. commit b0a9499c3dd50d333e2aedb7e894873c58da3785
#. type: Plain text
-#: build/C/man7/sched.7:395
+#: build/C/man2/unshare.2:62
msgid ""
-"This policy is useful for workloads that are noninteractive, but do not want "
-"to lower their nice value, and for workloads that want a deterministic "
-"scheduling policy without interactivity causing extra preemptions (between "
-"the workload's tasks)."
+"B<unshare>() allows a process to disassociate parts of its execution "
+"context that are currently being shared with other processes. Part of the "
+"execution context, such as the mount namespace, is shared implicitly when a "
+"new process is created using B<fork>(2) or B<vfork>(2), while other parts, "
+"such as virtual memory, may be shared by explicit request when creating a "
+"process using B<clone>(2)."
msgstr ""
-"このポリシーは、非対話的な処理だがその nice 値を下げたくない処理や、 (処理の"
-"タスク間で) 余計なタスクの置き換えの原因とある対話的な処理なしで 確定的な "
-"(deterministic) スケジューリングポリシーを適用したい処理に 対して有効である。"
-
-#. type: SS
-#: build/C/man7/sched.7:395
-#, no-wrap
-msgid "SCHED_IDLE: Scheduling very low priority jobs"
-msgstr "SCHED_IDLE: 非常に優先度の低いジョブのスケジューリング"
+"B<unshare>() を使うと、プロセスは他のプロセスと現在共有している 実行コンテキ"
+"ストの一部を分離することができる。 実行コンテキストの一部、たとえばマウント名"
+"前空間 (mount namespace) などは、新しいプロセスを B<fork>(2) または "
+"B<vfork>(2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモ"
+"リなどは、 B<clone>(2) を使ってプロセスを生成するときに、明示的に共有するこ"
+"とを要求できる。"
#. type: Plain text
-#: build/C/man7/sched.7:399
+#: build/C/man2/unshare.2:67
msgid ""
-"(Since Linux 2.6.23.) B<SCHED_IDLE> can be used only at static priority 0; "
-"the process nice value has no influence for this policy."
+"The main use of B<unshare>() is to allow a process to control its shared "
+"execution context without creating a new process."
msgstr ""
-"(Linux 2.6.23 以降) B<SCHED_IDLE> は静的優先度 0 でのみ使用できる。 このポリ"
-"シーではプロセスの nice 値はスケジューリングに影響を与えない。"
+"B<unshare>() の主な利用法は、プロセスが新しいプロセスを生成することなく、 共"
+"有実行コンテキストを制御することである。"
#. type: Plain text
-#: build/C/man7/sched.7:407
+#: build/C/man2/unshare.2:74
msgid ""
-"This policy is intended for running jobs at extremely low priority (lower "
-"even than a +19 nice value with the B<SCHED_OTHER> or B<SCHED_BATCH> "
-"policies)."
+"The I<flags> argument is a bit mask that specifies which parts of the "
+"execution context should be unshared. This argument is specified by ORing "
+"together zero or more of the following constants:"
msgstr ""
-"非常に低い優先度でのジョブの実行を目的としたものである (非常に低い優先度と"
-"は、ポリシー B<SCHED_OTHER> か B<SCHED_BATCH> での nice 値 +19 よりさらに低い"
-"優先度である)。"
+"I<flags> 引き数はビットマスクであり、 実行コンテキストのどの部分の共有を解除"
+"するかを表す。 この引き数は、以下の定数の 0 個以上の OR で指定する:"
-#. type: SS
-#: build/C/man7/sched.7:407
+#. type: TP
+#: build/C/man2/unshare.2:74
#, no-wrap
-msgid "Resetting scheduling policy for child processes"
-msgstr "子プロセスでのスケジューリングポリシーのリセット"
+msgid "B<CLONE_FILES>"
+msgstr "B<CLONE_FILES>"
#. type: Plain text
-#: build/C/man7/sched.7:413
+#: build/C/man2/unshare.2:82
msgid ""
-"Each thread has a reset-on-fork scheduling flag. When this flag is set, "
-"children created by B<fork>(2) do not inherit privileged scheduling "
-"policies. The reset-on-fork flag can be set by either:"
+"Reverse the effect of the B<clone>(2) B<CLONE_FILES> flag. Unshare the "
+"file descriptor table, so that the calling process no longer shares its file "
+"descriptors with any other process."
msgstr ""
+"B<clone>(2) B<CLONE_FILES> フラグの効果を取り消す。 ファイルディスクリプタ"
+"テーブルを共有させず、 呼び出し元プロセスは他のプロセスとファイルディスクリプ"
+"タを共有しなくなる。"
+
+#. type: TP
+#: build/C/man2/unshare.2:82
+#, no-wrap
+msgid "B<CLONE_FS>"
+msgstr "B<CLONE_FS>"
#. type: Plain text
-#: build/C/man7/sched.7:422
-#, fuzzy
-#| msgid ""
-#| "The B<SCHED_RESET_ON_FORK> flag is visible in the policy value returned "
-#| "by B<sched_getscheduler>()"
+#: build/C/man2/unshare.2:96
msgid ""
-"ORing the B<SCHED_RESET_ON_FORK> flag into the I<policy> argument when "
-"calling B<sched_setscheduler>(2) (since Linux 2.6.32); or"
+"Reverse the effect of the B<clone>(2) B<CLONE_FS> flag. Unshare filesystem "
+"attributes, so that the calling process no longer shares its root directory "
+"(B<chroot>(2)), current directory (B<chdir>(2)), or umask (B<umask>(2)) "
+"attributes with any other process."
msgstr ""
-"B<SCHED_RESET_ON_FORK> フラグは、 B<sched_getscheduler>() が返すポリシー値で"
-"参照できる。"
+"B<clone>(2) B<CLONE_FS> フラグの効果を取り消す。ファイルシステム属性を共有さ"
+"せず、呼び出し元プロセスは、ルートディレクトリ (B<chroot>(2))、カレントディレ"
+"クトリ (B<chdir>(2))、 umask (B<umask>(2)) を他のプロセスと共有しなくなる。"
#. type: Plain text
-#: build/C/man7/sched.7:429
+#: build/C/man2/unshare.2:113
msgid ""
-"specifying the B<SCHED_FLAG_RESET_ON_FORK> flag in I<attr.sched_flags> when "
-"calling B<sched_setattr>(2)."
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWIPC> flag. "
+"Unshare the System\\ V IPC namespace, so that the calling process has a "
+"private copy of the System\\ V IPC namespace which is not shared with any "
+"other process. Specifying this flag automatically implies B<CLONE_SYSVSEM> "
+"as well. Use of B<CLONE_NEWIPC> requires the B<CAP_SYS_ADMIN> capability."
msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWIPC> フラグと同じ効果を持つ。\n"
+"System\\ V IPC 名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは\n"
+"共有しない固有の System\\ V IPC 名前空間のコピーを持つ。 このフラグを指定\n"
+"すると、 B<CLONE_SYSVSEM> も暗黙のうちに指定される。 B<CLONE_NEWIPC> を\n"
+"使用するには B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
#. type: Plain text
-#: build/C/man7/sched.7:435
+#: build/C/man2/unshare.2:128
msgid ""
-"Note that the constants used with these two APIs have different names. The "
-"state of the reset-on-fork flag can analogously be retrieved using "
-"B<sched_getscheduler>(2) and B<sched_getattr>(2)."
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
+"Unshare the network namespace, so that the calling process is moved into a "
+"new network namespace which is not shared with any previously existing "
+"process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
+"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
+"い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
+"には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+
+#. type: TP
+#: build/C/man2/unshare.2:128
+#, no-wrap
+msgid "B<CLONE_NEWNS>"
+msgstr "B<CLONE_NEWNS>"
+#. These flag name are inconsistent:
+#. CLONE_NEWNS does the same thing in clone(), but CLONE_VM,
+#. CLONE_FS, and CLONE_FILES reverse the action of the clone()
+#. flags of the same name.
#. type: Plain text
-#: build/C/man7/sched.7:442
+#: build/C/man2/unshare.2:149
msgid ""
-"The reset-on-fork feature is intended for media-playback applications, and "
-"can be used to prevent applications evading the B<RLIMIT_RTTIME> resource "
-"limit (see B<getrlimit>(2)) by creating multiple child processes."
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
+"Unshare the mount namespace, so that the calling process has a private copy "
+"of its namespace which is not shared with any other process. Specifying "
+"this flag automatically implies B<CLONE_FS> as well. Use of B<CLONE_NEWNS> "
+"requires the B<CAP_SYS_ADMIN> capability."
msgstr ""
+"このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
+"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
+"有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
+"黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
+"ケーパビリティが必要である。"
#. type: Plain text
-#: build/C/man7/sched.7:445
+#: build/C/man2/unshare.2:176
#, fuzzy
#| msgid ""
-#| "More precisely, if the B<SCHED_RESET_ON_FORK> flag is specified, the "
-#| "following rules apply for subsequently created children:"
-msgid ""
-"More precisely, if the reset-on-fork flag is set, the following rules apply "
-"for subsequently created children:"
+#| "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNS> flag. "
+#| "Unshare the mount namespace, so that the calling process has a private "
+#| "copy of its namespace which is not shared with any other process. "
+#| "Specifying this flag automatically implies B<CLONE_FS> as well. Use of "
+#| "B<CLONE_NEWNS> requires the B<CAP_SYS_ADMIN> capability."
+msgid ""
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWPID> flag. "
+"Unshare the PID namespace, so that the calling process has a new PID "
+"namespace for its children which is not shared with any previously existing "
+"process. The calling process is I<not> moved into the new namespace. The "
+"first child created by the calling process will have the process ID 1 and "
+"will assume the role of B<init>(1) in the new namespace. B<CLONE_NEWPID> "
+"automatically implies B<CLONE_THREAD> as well. Use of B<CLONE_NEWPID> "
+"requires the B<CAP_SYS_ADMIN> capability. For further information, see "
+"B<pid_namespaces>(7)."
msgstr ""
-"より正確には、 B<SCHED_RESET_ON_FORK> フラグが指定された場合、それ以降に作成"
-"される子プロセスに以下のルールが適用される。"
+"このフラグは B<clone>(2) B<CLONE_NEWNS> フラグと同じ効果を持つ。 マウン\n"
+"ト名前空間を共有せず、呼び出し元プロセスは 他のプロセスとは共有しない固\n"
+"有の名前空間のコピーを持つ。 このフラグを指定すると、 B<CLONE_FS> も暗\n"
+"黙のうちに指定される。 B<CLONE_NEWNS> を使用するには B<CAP_SYS_ADMIN>\n"
+"ケーパビリティが必要である。"
#. type: Plain text
-#: build/C/man7/sched.7:453
+#: build/C/man2/unshare.2:190
+#, fuzzy
+#| msgid ""
+#| "This flag has the same effect as the B<clone>(2) B<CLONE_NEWNET> flag. "
+#| "Unshare the network namespace, so that the calling process is moved into "
+#| "a new network namespace which is not shared with any previously existing "
+#| "process. Use of B<CLONE_NEWNET> requires the B<CAP_SYS_ADMIN> capability."
msgid ""
-"If the calling thread has a scheduling policy of B<SCHED_FIFO> or "
-"B<SCHED_RR>, the policy is reset to B<SCHED_OTHER> in child processes."
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUSER> flag. "
+"Unshare the user namespace, so that the calling process is moved into a new "
+"user namespace which is not shared with any previously existing process. As "
+"with the child process created by B<clone>(2) with the B<CLONE_NEWUSER> "
+"flag, the caller obtains a full set of capabilities in the new namespace."
msgstr ""
-"呼び出したスレッドのスケジューリングポリシーが B<SCHED_FIFO> か B<SCHED_RR> "
-"の場合、子プロセスのポリシーは B<SCHED_OTHER> にリセットされる。"
+"このフラグは B<clone>(2) B<CLONE_NEWNET> フラグと同じ効果を持つ。ネット\n"
+"ワーク名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しな\n"
+"い固有のネットワーク名前空間のコピーを持つ。B<CLONE_NEWNET> を使用する\n"
+"には B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+#. commit e66eded8309ebf679d3d3c1f5820d1f2ca332c71
+#. https://lwn.net/Articles/543273/
#. type: Plain text
-#: build/C/man7/sched.7:456
+#: build/C/man2/unshare.2:206
msgid ""
-"If the calling process has a negative nice value, the nice value is reset to "
-"zero in child processes."
+"B<CLONE_NEWUSER> requires that the calling process is not threaded; "
+"specifying B<CLONE_NEWUSER> automatically implies B<CLONE_THREAD>. Since "
+"Linux 3.9, B<CLONE_NEWUSER> also automatically implies B<CLONE_FS>. "
+"B<CLONE_NEWUSER> requires that the user ID and group ID of the calling "
+"process are mapped to user IDs and group IDs in the user namespace of the "
+"calling process at the time of the call."
msgstr ""
-"子プロセスが負の nice 値を持っている場合、子プロセスの nice 値は 0 にリセット"
-"される。"
#. type: Plain text
-#: build/C/man7/sched.7:464
-#, fuzzy
-#| msgid ""
-#| "After the B<SCHED_RESET_ON_FORK> flag has been enabled, it can be reset "
-#| "only if the thread has the B<CAP_SYS_NICE> capability. This flag is "
-#| "disabled in child processes created by B<fork>(2)."
+#: build/C/man2/unshare.2:223
msgid ""
-"After the reset-on-fork flag has been enabled, it can be reset only if the "
-"thread has the B<CAP_SYS_NICE> capability. This flag is disabled in child "
-"processes created by B<fork>(2)."
+"This flag has the same effect as the B<clone>(2) B<CLONE_NEWUTS> flag. "
+"Unshare the UTS IPC namespace, so that the calling process has a private "
+"copy of the UTS namespace which is not shared with any other process. Use "
+"of B<CLONE_NEWUTS> requires the B<CAP_SYS_ADMIN> capability."
msgstr ""
-"一度 B<SCHED_RESET_ON_FORK> フラグが有効にされた後は、このフラグをリセットで"
-"きるのは、スレッドが B<CAP_SYS_NICE> ケーパビリティを持つ場合だけである。この"
-"フラグは B<fork>(2) で作成された子プロセスでは無効になる。"
+"このフラグは B<clone>(2) B<CLONE_NEWUTS> フラグと同じ効果を持つ。 UTS\n"
+"IPC 名前空間を共有せず、呼び出し元プロセスは他のプロセスとは共有しない\n"
+"固有の UTS IPC 名前空間のコピーを持つ。 このフラグを指定すると、\n"
+"B<CLONE_FS> も暗黙のうちに指定される。B<CLONE_NEWUTS> を使用するには\n"
+"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
-#. type: SS
-#: build/C/man7/sched.7:464
+#. type: TP
+#: build/C/man2/unshare.2:223
#, no-wrap
-msgid "Privileges and resource limits"
-msgstr "特権とリソース制限"
+msgid "B<CLONE_SYSVSEM> (since Linux 2.6.26)"
+msgstr "B<CLONE_SYSVSEM> (Linux 2.6.26 以降)"
+#. commit 9edff4ab1f8d82675277a04e359d0ed8bf14a7b7
+#. CLONE_NEWNS If CLONE_SIGHAND is set and signals are also being shared
+#. (i.e., current->signal->count > 1), force CLONE_THREAD.
#. type: Plain text
-#: build/C/man7/sched.7:476
+#: build/C/man2/unshare.2:243
#, fuzzy
#| msgid ""
-#| "In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) "
-#| "threads can set a nonzero static priority (i.e., set a real-time "
-#| "scheduling policy). The only change that an unprivileged thread can make "
-#| "is to set the B<SCHED_OTHER> policy, and this can be done only if the "
-#| "effective user ID of the caller of B<sched_setscheduler>() matches the "
-#| "real or effective user ID of the target thread (i.e., the thread "
-#| "specified by I<pid>) whose policy is being changed."
+#| "This flag reverses the effect of the B<clone>(2) B<CLONE_SYSVSEM> flag. "
+#| "Unshare System\\ V semaphore undo values, so that the calling process has "
+#| "a private copy which is not shared with any other process. Use of "
+#| "B<CLONE_SYSVSEM> requires the B<CAP_SYS_ADMIN> capability."
msgid ""
-"In Linux kernels before 2.6.12, only privileged (B<CAP_SYS_NICE>) threads "
-"can set a nonzero static priority (i.e., set a real-time scheduling "
-"policy). The only change that an unprivileged thread can make is to set the "
-"B<SCHED_OTHER> policy, and this can be done only if the effective user ID of "
-"the caller matches the real or effective user ID of the target thread (i.e., "
-"the thread specified by I<pid>) whose policy is being changed."
+"This flag reverses the effect of the B<clone>(2) B<CLONE_SYSVSEM> flag. "
+"Unshare System\\ V semaphore adjustment (I<semadj>) values, so that the "
+"calling process has a new empty I<semadj> list that is not shared with any "
+"other process. If this is the last process that has a reference to the "
+"process's current I<semadj> list, then the adjustments in that list are "
+"applied to the corresponding semaphores, as described in B<semop>(2)."
msgstr ""
-"2.6.12 より前のバージョンの Linux カーネルでは、 特権スレッド "
-"(B<CAP_SYS_NICE> ケーパビリティを持つスレッド) だけが 0 以外の静的優先度を設"
-"定する (すなわち、リアルタイムスケジューリングポリシーを設定する) ことができ"
-"る。 非特権スレッドができる変更は B<SCHED_OTHER> ポリシーを設定することだけで"
-"あり、さらにこの変更を行えるのは B<sched_setscheduler>() の呼び出し元の実効"
-"ユーザ ID がポリシーの変更対象スレッド (I<pid> で指定されたスレッド) の実ユー"
-"ザ ID か実効ユーザ ID と 一致する場合だけである。"
+"このフラグは B<clone>(2) B<CLONE_SYSVSEM> フラグの効果を逆転させる。\n"
+"System\\ V セマフォのアンドゥ値を共有せず、呼び出し元プロセスは 他のプロ\n"
+"セスとは共有しない固有のコピーを持つ。B<CLONE_SYSVSEM> を使用するには\n"
+"B<CAP_SYS_ADMIN> ケーパビリティが必要である。"
+#
+#. As at 3.9, the following forced implications also apply,
+#. although the relevant flags are not yet implemented.
+#. If CLONE_THREAD is set force CLONE_VM.
+#. If CLONE_VM is set, force CLONE_SIGHAND.
+#. See kernel/fork.c::check_unshare_flags()
#. type: Plain text
-#: build/C/man7/sched.7:482
+#: build/C/man2/unshare.2:270
msgid ""
-"A thread must be privileged (B<CAP_SYS_NICE>) in order to set or modify a "
-"B<SCHED_DEADLINE> policy."
+"In addition, B<CLONE_THREAD>, B<CLONE_SIGHAND>, and B<CLONE_VM> can be "
+"specified in I<flags> if the caller is single threaded (i.e., it is not "
+"sharing its address space with another process or thread). In this case, "
+"these flags have no effect. (Note also that specifying B<CLONE_THREAD> "
+"automatically implies B<CLONE_VM>, and specifying B<CLONE_VM> automatically "
+"implies B<CLONE_SIGHAND>.) If the process is multithreaded, then the use of "
+"these flags results in an error."
msgstr ""
#. type: Plain text
-#: build/C/man7/sched.7:492
+#: build/C/man2/unshare.2:277
msgid ""
-"Since Linux 2.6.12, the B<RLIMIT_RTPRIO> resource limit defines a ceiling on "
-"an unprivileged thread's static priority for the B<SCHED_RR> and "
-"B<SCHED_FIFO> policies. The rules for changing scheduling policy and "
-"priority are as follows:"
+"If I<flags> is specified as zero, then B<unshare>() is a no-op; no changes "
+"are made to the calling process's execution context."
msgstr ""
-"Linux 2.6.12 以降では、リソース制限 B<RLIMIT_RTPRIO> が定義されており、 スケ"
-"ジューリングポリシーが B<SCHED_RR> と B<SCHED_FIFO> の場合の、非特権スレッド"
-"の静的優先度の上限を定めている。 スケジューリングポリシーと優先度を変更する際"
-"のルールは以下の通りである。"
+"I<flags> に 0 が指定された場合、 B<unshare>() は何も行わないので、 呼び出し"
+"元プロセスの実行コンテキストは、何も変更されない。"
#. type: Plain text
-#: build/C/man7/sched.7:500
+#: build/C/man2/unshare.2:282
msgid ""
-"If an unprivileged thread has a nonzero B<RLIMIT_RTPRIO> soft limit, then it "
-"can change its scheduling policy and priority, subject to the restriction "
-"that the priority cannot be set to a value higher than the maximum of its "
-"current priority and its B<RLIMIT_RTPRIO> soft limit."
+"On success, zero returned. On failure, -1 is returned and I<errno> is set "
+"to indicate the error."
msgstr ""
-"非特権スレッドに 0 以外の B<RLIMIT_RTPRIO> ソフトリミットが設定されている場"
-"合、 非特権スレッドはそのスレッドのスケジューリングポリシーと優先度を 変更で"
-"きるが、優先度を現在の自身の優先度と B<RLIMIT_RTPRIO> ソフトリミットの大きい"
-"方よりも高い値に設定できないという制限が課される。"
+"成功した場合は 0 が返される。 失敗した場合は -1 が返されて、 I<errno> にはエ"
+"ラーを示す値が設定される。"
#. type: Plain text
-#: build/C/man7/sched.7:505
-msgid ""
-"If the B<RLIMIT_RTPRIO> soft limit is 0, then the only permitted changes are "
-"to lower the priority, or to switch to a non-real-time policy."
-msgstr ""
-"B<RLIMIT_RTPRIO> ソフトリミットが 0 の場合、優先度を下げるか、 リアルタイムで"
-"ないポリシーへ切り替えるかの変更だけが許可される。"
+#: build/C/man2/unshare.2:287
+msgid "An invalid bit was specified in I<flags>."
+msgstr "I<flags> に不正なビットが指定された。"
#. type: Plain text
-#: build/C/man7/sched.7:510
+#: build/C/man2/unshare.2:296
msgid ""
-"Subject to the same rules, another unprivileged thread can also make these "
-"changes, as long as the effective user ID of the thread making the change "
-"matches the real or effective user ID of the target thread."
+"B<CLONE_THREAD>, B<CLONE_SIGHAND>, or B<CLONE_VM> was specified in I<flags>, "
+"and the caller is multithreaded."
msgstr ""
-"ある非特権スレッドが別のスレッドに対してこれらの変更を行う際にも、 同じルール"
-"が適用される。変更を行えるのは、変更を行おうとするスレッド の実効ユーザ ID が"
-"変更対象のスレッドの実ユーザ ID か実効ユーザ ID と 一致している場合に限られ"
-"る。"
-#. commit c02aa73b1d18e43cfd79c2f193b225e84ca497c8
#. type: Plain text
-#: build/C/man7/sched.7:529
-#, fuzzy
-#| msgid ""
-#| "Special rules apply for the B<SCHED_IDLE>. In Linux kernels before "
-#| "2.6.39, an unprivileged thread operating under this policy cannot change "
-#| "its policy, regardless of the value of its B<RLIMIT_RTPRIO> resource "
-#| "limit. In Linux kernels since 2.6.39, an unprivileged thread can switch "
-#| "to either the B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its "
-#| "nice value falls within the range permitted by its B<RLIMIT_NICE> "
-#| "resource limit (see B<getrlimit>(2))."
+#: build/C/man2/unshare.2:300
msgid ""
-"Special rules apply for the B<SCHED_IDLE> policy. In Linux kernels before "
-"2.6.39, an unprivileged thread operating under this policy cannot change its "
-"policy, regardless of the value of its B<RLIMIT_RTPRIO> resource limit. In "
-"Linux kernels since 2.6.39, an unprivileged thread can switch to either the "
-"B<SCHED_BATCH> or the B<SCHED_NORMAL> policy so long as its nice value falls "
-"within the range permitted by its B<RLIMIT_NICE> resource limit (see "
-"B<getrlimit>(2))."
+"Cannot allocate sufficient memory to copy parts of caller's context that "
+"need to be unshared."
msgstr ""
-"B<SCHED_IDLE> の場合には特別なルールが適用される。 2.6.39 より前の Linux カー"
-"ネルでは、このポリシーで動作する非特権スレッドは、 B<RLIMIT_RTPRIO> リソース"
-"上限の値に関わらず、自分のポリシーを変更することができない。 2.6.39 以降の "
-"Linux カーネルでは、非特権スレッドは、自分の nice 値が B<RLIMIT_NICE> リソー"
-"ス上限 (B<getrlimit>(2) 参照) で許可された範囲である限りは、自分のスケジュー"
-"リングポリシーを B<SCHED_BATCH> か B<SCHED_NORMAL> ポリシーに切り替えることが"
-"できる。"
+"呼び出し元のコンテキストのうち共有を解除する必要がある部分をコピーするため"
+"に、 十分なメモリが確保できなかった。"
#. type: Plain text
-#: build/C/man7/sched.7:540
+#: build/C/man2/unshare.2:303
msgid ""
-"Privileged (B<CAP_SYS_NICE>) threads ignore the B<RLIMIT_RTPRIO> limit; as "
-"with older kernels, they can make arbitrary changes to scheduling policy and "
-"priority. See B<getrlimit>(2) for further information on B<RLIMIT_RTPRIO>."
-msgstr ""
-"特権スレッド (B<CAP_SYS_NICE> ケーパビリティを持つスレッド) の場合、 "
-"B<RLIMIT_RTPRIO> の制限は無視される; 古いカーネルと同じように、スケジューリン"
-"グポリシーと優先度に対し 任意の変更を行うことができる。 B<RLIMIT_RTPRIO> に関"
-"するもっと詳しい情報は B<getrlimit>(2) を参照のこと。"
+"The calling process did not have the required privileges for this operation."
+msgstr "呼び出し元プロセスはこの操作を行うのに必要な特権を持っていなかった。"
-#. type: SS
-#: build/C/man7/sched.7:540
-#, no-wrap
-msgid "Limiting the CPU usage of real-time and deadline processes"
-msgstr ""
+#. type: Plain text
+#: build/C/man2/unshare.2:333
+msgid "The B<unshare>() system call was added to Linux in kernel 2.6.16."
+msgstr "B<unshare>() システムコールは Linux カーネル 2.6.16 で追加された。"
#. type: Plain text
-#: build/C/man7/sched.7:553
-#, fuzzy
-#| msgid ""
-#| "Since a nonblocking infinite loop in a thread scheduled under "
-#| "B<SCHED_FIFO> or B<SCHED_RR> will block all threads with lower priority "
-#| "forever, a software developer should always keep available on the console "
-#| "a shell scheduled under a higher static priority than the tested "
-#| "application. This will allow an emergency kill of tested real-time "
-#| "applications that do not block or terminate as expected. See also the "
-#| "description of the B<RLIMIT_RTTIME> resource limit in B<getrlimit>(2)."
-msgid ""
-"A nonblocking infinite loop in a thread scheduled under the B<SCHED_FIFO>, "
-"B<SCHED_RR>, or B<SCHED_DEADLINE> policy will block all threads with lower "
-"priority forever. Prior to Linux 2.6.25, the only way of preventing a "
-"runaway real-time process from freezing the system was to run (at the "
-"console) a shell scheduled under a higher static priority than the tested "
-"application. This allows an emergency kill of tested real-time applications "
-"that do not block or terminate as expected."
-msgstr ""
-"B<SCHED_FIFO> や B<SCHED_RR> でスケジューリングされる スレッドが停止せずに無"
-"限ループに陥ると、 他の全てのより低い優先度のスレッドを永久に停止 (block) さ"
-"せてしまうので、 ソフトウェア開発者はコンソールのシェルの静的優先度をテストす"
-"る アプリケーションよりも常に高く保つべきである。 これによって期待通りに停止"
-"したり終了したりしないリアルタイム アプリケーションを緊急終了させることが可能"
-"になる。 B<getrlimit>(2) のリソース制限 B<RLIMIT_RTTIME> の説明も参照のこ"
-"と。"
+#: build/C/man2/unshare.2:337
+msgid "The B<unshare>() system call is Linux-specific."
+msgstr "B<unshare>() システムコールは Linux 固有である。"
+#. FIXME all of the following needs to be reviewed for the current kernel
+#. However, we can do unshare(CLONE_SIGHAND) if CLONE_SIGHAND
+#. was not specified when doing clone(); i.e., unsharing
+#. signal handlers is permitted if we are not actually
+#. sharing signal handlers. mtk
+#. However, we can do unshare(CLONE_VM) if CLONE_VM
+#. was not specified when doing clone(); i.e., unsharing
+#. virtual memory is permitted if we are not actually
+#. sharing virtual memory. mtk
+#. 9) Future Work
+#. --------------
+#. The current implementation of unshare does not allow unsharing of
+#. signals and signal handlers. Signals are complex to begin with and
+#. to unshare signals and/or signal handlers of a currently running
+#. process is even more complex. If in the future there is a specific
+#. need to allow unsharing of signals and/or signal handlers, it can
+#. be incrementally added to unshare without affecting legacy
+#. applications using unshare.
#. type: Plain text
-#: build/C/man7/sched.7:563
+#: build/C/man2/unshare.2:371
msgid ""
-"Since Linux 2.6.25, there are other techniques for dealing with runaway real-"
-"time and deadline processes. One of these is to use the B<RLIMIT_RTTIME> "
-"resource limit to set a ceiling on the CPU time that a real-time process may "
-"consume. See B<getrlimit>(2) for details."
+"Not all of the process attributes that can be shared when a new process is "
+"created using B<clone>(2) can be unshared using B<unshare>(). In "
+"particular, as at kernel 3.8, B<unshare>() does not implement flags that "
+"reverse the effects of B<CLONE_SIGHAND>, B<CLONE_THREAD>, or B<CLONE_VM>. "
+"Such functionality may be added in the future, if required."
msgstr ""
+"B<clone>(2) で新しいプロセスを生成したときに共有される全てのプロセス属性"
+"を、 B<unshare>() によって共有の解除ができるわけではない。 特に、カーネル "
+"3.8 時点では、 B<unshare>() に B<CLONE_SIGHAND>, B<CLONE_THREAD>, "
+"B<CLONE_VM> の効果を取り消すためのフラグが実装されていない。 これらの機能は、"
+"必要であれば将来追加されるかもしれない。"
#. type: Plain text
-#: build/C/man7/sched.7:571
+#: build/C/man2/unshare.2:380
msgid ""
-"Since version 2.6.25, Linux also provides two I</proc> files that can be "
-"used to reserve a certain amount of CPU time to be used by non-real-time "
-"processes. Reserving some CPU time in this fashion allows some CPU time to "
-"be allocated to (say) a root shell that can be used to kill a runaway "
-"process. Both of these files specify time values in microseconds:"
-msgstr ""
-
-#. type: TP
-#: build/C/man7/sched.7:571
-#, no-wrap
-msgid "I</proc/sys/kernel/sched_rt_period_us>"
+"The program below provides a simple implementation of the B<unshare>(1) "
+"command, which unshares one or more namespaces and executes the command "
+"supplied in its command-line arguments. Here's an example of the use of "
+"this program, running a shell in a new mount namespace, and verifying that "
+"the original shell and the new shell are in separate mount namespaces:"
msgstr ""
#. type: Plain text
-#: build/C/man7/sched.7:579
-msgid ""
-"This file specifies a scheduling period that is equivalent to 100% CPU "
-"bandwidth. The value in this file can range from 1 to B<INT_MAX>, giving an "
-"operating range of 1 microsecond to around 35 minutes. The default value in "
-"this file is 1,000,000 (1 second)."
-msgstr ""
-
-#. type: TP
-#: build/C/man7/sched.7:579
+#: build/C/man2/unshare.2:389
#, no-wrap
-msgid "I</proc/sys/kernel/sched_rt_runtime_us>"
+msgid ""
+"$ B<readlink /proc/$$/ns/mnt>\n"
+"mnt:[4026531840]\n"
+"$ B<sudo ./unshare -m /bin/bash>\n"
+"[sudo] password for cecilia:\n"
+"# B<readlink /proc/$$/ns/mnt>\n"
+"mnt:[4026532325]\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/sched.7:592
+#: build/C/man2/unshare.2:395
msgid ""
-"The value in this file specifies how much of the \"period\" time can be used "
-"by all real-time and deadline scheduled processes on the system. The value "
-"in this file can range from -1 to B<INT_MAX>-1. Specifying -1 makes the "
-"runtime the same as the period; that is, no CPU time is set aside for non-"
-"real-time processes (which was the Linux behavior before kernel 2.6.25). "
-"The default value in this file is 950,000 (0.95 seconds), meaning that 5% of "
-"the CPU time is reserved for processes that don't run under a real-time or "
-"deadline scheduling policy."
+"The differing output of the two B<readlink>(1) commands shows that the two "
+"shells are in different mount namespaces."
msgstr ""
-#. type: SS
-#: build/C/man7/sched.7:593
+#. type: Plain text
+#: build/C/man2/unshare.2:399
#, no-wrap
-msgid "Response time"
-msgstr "応答時間 (response time)"
+msgid "/* unshare.c\n"
+msgstr ""
-#. as described in
-#. .BR request_irq (9).
#. type: Plain text
-#: build/C/man7/sched.7:601
-#, fuzzy
+#: build/C/man2/unshare.2:408
+#, fuzzy, no-wrap
#| msgid ""
-#| "A blocked high priority thread waiting for the I/O has a certain response "
-#| "time before it is scheduled again. The device driver writer can greatly "
-#| "reduce this response time by using a \"slow interrupt\" interrupt handler."
-msgid ""
-"A blocked high priority thread waiting for I/O has a certain response time "
-"before it is scheduled again. The device driver writer can greatly reduce "
-"this response time by using a \"slow interrupt\" interrupt handler."
+#| "#define _GNU_SOURCE\n"
+#| "#include E<lt>fcntl.hE<gt>\n"
+#| "#include E<lt>sched.hE<gt>\n"
+#| "#include E<lt>unistd.hE<gt>\n"
+#| "#include E<lt>stdlib.hE<gt>\n"
+#| "#include E<lt>stdio.hE<gt>\n"
+msgid ""
+" A simple implementation of the unshare(1) command: unshare\n"
+" namespaces and execute a command.\n"
+"*/\n"
+"#define _GNU_SOURCE\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
msgstr ""
-"I/O 待ちで停止したより高い優先度のスレッドは再びスケジューリングされる 前にい"
-"くらかの応答時間がかかる。デバイスドライバーを書く場合には \"slow interrupt"
-"\" 割り込みハンドラーを使用することで この応答時間を劇的に減少させることがで"
-"きる。"
-
-#. type: SS
-#: build/C/man7/sched.7:601
-#, no-wrap
-msgid "Miscellaneous"
-msgstr "その他"
+"#define _GNU_SOURCE\n"
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>sched.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
#. type: Plain text
-#: build/C/man7/sched.7:606
+#: build/C/man2/unshare.2:411
+#, no-wrap
msgid ""
-"Child processes inherit the scheduling policy and parameters across a "
-"B<fork>(2). The scheduling policy and parameters are preserved across "
-"B<execve>(2)."
+"/* A simple error-handling function: print an error message based\n"
+" on the value in \\(aqerrno\\(aq and terminate the calling process */\n"
msgstr ""
-"子プロセスは B<fork>(2) の際に親プロセスのスケジューリングポリシーとパラメー"
-"タを継承する。 B<execve>(2) の前後で、スケジューリングポリシーとパラメータは"
-"保持される。"
#. type: Plain text
-#: build/C/man7/sched.7:612
+#: build/C/man2/unshare.2:428
+#, no-wrap
msgid ""
-"Memory locking is usually needed for real-time processes to avoid paging "
-"delays; this can be done with B<mlock>(2) or B<mlockall>(2)."
+"static void\n"
+"usage(char *pname)\n"
+"{\n"
+" fprintf(stderr, \"Usage: %s [options] program [arg...]\\en\", pname);\n"
+" fprintf(stderr, \"Options can be:\\en\");\n"
+" fprintf(stderr, \" -i unshare IPC namespace\\en\");\n"
+" fprintf(stderr, \" -m unshare mount namespace\\en\");\n"
+" fprintf(stderr, \" -n unshare network namespace\\en\");\n"
+" fprintf(stderr, \" -p unshare PID namespace\\en\");\n"
+" fprintf(stderr, \" -u unshare UTS namespace\\en\");\n"
+" fprintf(stderr, \" -U unshare user namespace\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+"}\n"
msgstr ""
-"リアルタイムプロセスは大抵、ページングの待ち時間を避けるために B<mlock>(2) "
-"や B<mlockall>(2) を使ってメモリロックをしなければならない。"
#. type: Plain text
-#: build/C/man7/sched.7:623
+#: build/C/man2/unshare.2:433
+#, fuzzy, no-wrap
+#| msgid ""
+#| "int\n"
+#| "main(int argc, char *argv[])\n"
+#| "{\n"
+#| " int fd;\n"
msgid ""
-"Originally, Standard Linux was intended as a general-purpose operating "
-"system being able to handle background processes, interactive applications, "
-"and less demanding real-time applications (applications that need to usually "
-"meet timing deadlines). Although the Linux kernel 2.6 allowed for kernel "
-"preemption and the newly introduced O(1) scheduler ensures that the time "
-"needed to schedule is fixed and deterministic irrespective of the number of "
-"active tasks, true real-time computing was not possible up to kernel version "
-"2.6.17."
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int flags, opt;\n"
msgstr ""
-"もともとは、標準の Linux は一般目的のオペレーティングシステムとして 設計され"
-"ており、バックグラウンドプロセスや対話的アプリケーション、 リアルタイム性の要"
-"求が厳しくないリアルタイムアプリケーション (普通はタイミングの応答期限 "
-"(deadline) を満たす必要があるアプリケーション) を扱うことができた。 Linux "
-"カーネル 2.6 では、 カーネルのプリエンプション (タスクの置き換え) が可能であ"
-"り、 新たに導入された O(1) スケジューラにより、 アクティブなタスクの数に関わ"
-"らずスケジューリングに必要な時間は 固定で確定的 (deterministic) であることが"
-"保証されている。 それにも関わらず、カーネル 2.6.17 までは 真のリアルタイムコ"
-"ンピューティングは実現できなかった。"
-
-#. type: SS
-#: build/C/man7/sched.7:623
-#, no-wrap
-msgid "Real-time features in the mainline Linux kernel"
-msgstr "本流の Linux カーネルでのリアルタイム機能"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int fd;\n"
-#. FIXME . Probably this text will need some minor tweaking
-#. by about the time of 2.6.30; ask Carsten Emde about this then.
#. type: Plain text
-#: build/C/man7/sched.7:637
-msgid ""
-"From kernel version 2.6.18 onward, however, Linux is gradually becoming "
-"equipped with real-time capabilities, most of which are derived from the "
-"former I<realtime-preempt> patches developed by Ingo Molnar, Thomas "
-"Gleixner, Steven Rostedt, and others. Until the patches have been "
-"completely merged into the mainline kernel (this is expected to be around "
-"kernel version 2.6.30), they must be installed to achieve the best real-time "
-"performance. These patches are named:"
+#: build/C/man2/unshare.2:435
+#, no-wrap
+msgid " flags = 0;\n"
msgstr ""
-"カーネル 2.6.18 から現在まで、 Linux は徐々にリアルタイム機能を備えつつ\n"
-"あるが、 これらの機能のほとんどは、 Ingo Molnar, Thomas Gleixner,\n"
-"Steven Rostedt らによって開発された、 以前の I<realtime-preempt> パッチ\n"
-"からのものである。 これらのパッチが本流のカーネルに完全にマージされるま\n"
-"では (マージの完了はカーネル 2.6.30 あたりの予定)、 最高のリアルタイム\n"
-"性能を達成するには realtime-preempt パッチを 組み込まなければならない。\n"
-"これらのパッチは"
#. type: Plain text
-#: build/C/man7/sched.7:641
+#: build/C/man2/unshare.2:447
#, no-wrap
-msgid "patch-I<kernelversion>-rtI<patchversion>\n"
-msgstr "patch-I<kernelversion>-rtI<patchversion>\n"
-
-#. type: Plain text
-#: build/C/man7/sched.7:647
msgid ""
-"and can be downloaded from E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/"
-"kernel\\:/projects\\:/rt/> E<.UE .>"
+" while ((opt = getopt(argc, argv, \"imnpuU\")) != -1) {\n"
+" switch (opt) {\n"
+" case \\(aqi\\(aq: flags |= CLONE_NEWIPC; break;\n"
+" case \\(aqm\\(aq: flags |= CLONE_NEWNS; break;\n"
+" case \\(aqn\\(aq: flags |= CLONE_NEWNET; break;\n"
+" case \\(aqp\\(aq: flags |= CLONE_NEWPID; break;\n"
+" case \\(aqu\\(aq: flags |= CLONE_NEWUTS; break;\n"
+" case \\(aqU\\(aq: flags |= CLONE_NEWUSER; break;\n"
+" default: usage(argv[0]);\n"
+" }\n"
+" }\n"
msgstr ""
-"という名前で、 E<.UR http://www.kernel.org\\:/pub\\:/linux\\:/kernel\\:/"
-"projects\\:/rt/> E<.UE> からダウンロードできる。"
#. type: Plain text
-#: build/C/man7/sched.7:656
+#: build/C/man2/unshare.2:450
+#, no-wrap
msgid ""
-"Without the patches and prior to their full inclusion into the mainline "
-"kernel, the kernel configuration offers only the three preemption classes "
-"B<CONFIG_PREEMPT_NONE>, B<CONFIG_PREEMPT_VOLUNTARY>, and "
-"B<CONFIG_PREEMPT_DESKTOP> which respectively provide no, some, and "
-"considerable reduction of the worst-case scheduling latency."
+" if (optind E<gt>= argc)\n"
+" usage(argv[0]);\n"
msgstr ""
-"このパッチが適用されず、かつパッチの内容の本流のカーネルへのマージが 完了する"
-"までは、カーネルの設定では B<CONFIG_PREEMPT_NONE>, "
-"B<CONFIG_PREEMPT_VOLUNTARY>, B<CONFIG_PREEMPT_DESKTOP> の 3つのプリエンプショ"
-"ンクラス (preemption class) だけが提供される。 これらのクラスでは、最悪の場合"
-"のスケジューリング遅延がそれぞれ 全く減らない、いくらか減る、かなり減る。"
#. type: Plain text
-#: build/C/man7/sched.7:665
-#, fuzzy
+#: build/C/man2/unshare.2:453
+#, fuzzy, no-wrap
#| msgid ""
-#| "With the patches applied or after their full inclusion into the mainline "
-#| "kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
-#| "available. If this is selected, Linux is transformed into a regular real-"
-#| "time operating system. The FIFO and RR scheduling policies that can be "
-#| "selected using B<sched_setscheduler>() are then used to run a thread "
-#| "with true real-time priority and a minimum worst-case scheduling latency."
+#| " if (sethostname(arg, strlen(arg)) == -1)\n"
+#| " errExit(\"sethostname\");\n"
msgid ""
-"With the patches applied or after their full inclusion into the mainline "
-"kernel, the additional configuration item B<CONFIG_PREEMPT_RT> becomes "
-"available. If this is selected, Linux is transformed into a regular real-"
-"time operating system. The FIFO and RR scheduling policies are then used to "
-"run a thread with true real-time priority and a minimum worst-case "
-"scheduling latency."
+" if (unshare(flags) == -1)\n"
+" errExit(\"unshare\");\n"
msgstr ""
-"パッチが適用された場合、またはパッチの内容の本流のカーネルへのマージが 完了し"
-"た後では、上記に加えて設定項目として B<CONFIG_PREEMPT_RT> が利用可能になる。"
-"この項目を選択すると、 Linux は通常のリアルタイムオペレーティングシステムに変"
-"身する。 この場合には、 B<sched_setscheduler>() で選択できる FIFO と RR のス"
-"ケジューリングポリシーは、 真のリアルタイム優先度を持つスレッドを最悪の場合の"
-"スケジューリング遅延が 最小となる環境で動作させるために使われることになる。"
+" if (sethostname(arg, strlen(arg)) == -1)\n"
+" errExit(\"sethostname\");\n"
#. type: Plain text
-#: build/C/man7/sched.7:691
-#, fuzzy
+#: build/C/man2/unshare.2:457
+#, fuzzy, no-wrap
#| msgid ""
-#| "B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-#| "B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-#| "B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), "
-#| "B<sched_setattr>(2), B<sched_setparam>(2), B<sched_yield>(2), "
-#| "B<setpriority>(2), B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+#| " execvp(argv[2], &argv[2]); /* Execute a command in namespace */\n"
+#| " errExit(\"execvp\");\n"
+#| "}\n"
msgid ""
-"B<chrt>(1), B<getpriority>(2), B<mlock>(2), B<mlockall>(2), B<munlock>(2), "
-"B<munlockall>(2), B<nice>(2), B<sched_get_priority_max>(2), "
-"B<sched_get_priority_min>(2), B<sched_getscheduler>(2), "
-"B<sched_getaffinity>(2), B<sched_getparam>(2), B<sched_rr_get_interval>(2), "
-"B<sched_setaffinity>(2), B<sched_setscheduler>(2), B<sched_setparam>(2), "
-"B<sched_yield>(2), B<setpriority>(2), B<pthread_getaffinity_np>(3), "
-"B<pthread_setaffinity_np>(3), B<sched_getcpu>(3), B<capabilities>(7), "
-"B<cpuset>(7)"
+" execvp(argv[optind], &argv[optind]);\n"
+" errExit(\"execvp\");\n"
+"}\n"
msgstr ""
-"B<nice>(2), B<sched_get_priority_max>(2), B<sched_get_priority_min>(2), "
-"B<sched_getaffinity>(2), B<sched_getattr>(2), B<sched_getparam>(2), "
-"B<sched_rr_get_interval>(2), B<sched_setaffinity>(2), B<sched_setattr>(2), "
-"B<sched_setparam>(2), B<sched_yield>(2), B<setpriority>(2), "
-"B<capabilities>(7), B<cpuset>(7), B<sched>(7)"
+" execvp(argv[2], &argv[2]); /* 名前空間内でコマンドを実行 */\n"
+" errExit(\"execvp\");\n"
+"}\n"
#. type: Plain text
-#: build/C/man7/sched.7:695
+#: build/C/man2/unshare.2:466
+#, fuzzy
+#| msgid "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
msgid ""
-"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
-"& Associates, Inc., ISBN 1-56592-074-0."
-msgstr ""
-"I<Programming for the real world - POSIX.4> by Bill O. Gallmeister, O'Reilly "
-"& Associates, Inc., ISBN 1-56592-074-0."
+"B<unshare>(1), B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), "
+"B<vfork>(2), B<namespaces>(7)"
+msgstr "B<clone>(2), B<fork>(2), B<kcmp>(2), B<setns>(2), B<vfork>(2)"
#. type: Plain text
-#: build/C/man7/sched.7:702
-msgid ""
-"The Linux kernel source files I<Documentation/scheduler/sched-deadline.txt>, "
-"I<Documentation/scheduler/sched-rt-group.txt>, I<Documentation/scheduler/"
-"sched-design-CFS.txt>, and I<Documentation/scheduler/sched-nice-design.txt>"
-msgstr ""
+#: build/C/man2/unshare.2:469
+msgid "I<Documentation/unshare.txt> in the Linux kernel source tree"
+msgstr "Linux カーネルソース内の I<Documentation/unshare.txt>"
+
+#~ msgid ""
+#~ "Use of this flag requires: a kernel configured with the B<CONFIG_SYSVIPC> "
+#~ "and B<CONFIG_IPC_NS> options and that the process be privileged "
+#~ "(B<CAP_SYS_ADMIN>). This flag can't be specified in conjunction with "
+#~ "B<CLONE_SYSVSEM>."
+#~ msgstr ""
+#~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_SYSVIPC> と "
+#~ "B<CONFIG_IPC_NS> を有効になっていること、 プロセスが特権 "
+#~ "(B<CAP_SYS_ADMIN>) を持っていることが必要である。 このフラグは "
+#~ "B<CLONE_SYSVSEM> と組み合わせて使うことはできない。"
+
+#~ msgid ""
+#~ "Use of this flag requires: a kernel configured with the B<CONFIG_NET_NS> "
+#~ "option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+#~ msgstr ""
+#~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_NET_NS> を有"
+#~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
+#~ "必要である。"
+
+#~ msgid "Start the child in a new mount namespace."
+#~ msgstr "子プロセスを新しいマウント名前空間 (mount namespace) で開始する。"
+
+#~ msgid ""
+#~ "Every process lives in a mount namespace. The I<namespace> of a process "
+#~ "is the data (the set of mounts) describing the file hierarchy as seen by "
+#~ "that process. After a B<fork>(2) or B<clone>() where the "
+#~ "B<CLONE_NEWNS> flag is not set, the child lives in the same mount "
+#~ "namespace as the parent. The system calls B<mount>(2) and B<umount>(2) "
+#~ "change the mount namespace of the calling process, and hence affect all "
+#~ "processes that live in the same namespace, but do not affect processes in "
+#~ "a different mount namespace."
+#~ msgstr ""
+#~ "各プロセスはある一つのマウント名前空間中に存在する。プロセスの I<名前空間 "
+#~ "(namespace)> は、そのプロセスから見えるファイル階層を表すデータ (mount の"
+#~ "集合) である。 B<CLONE_NEWNS> フラグがセットされずに B<fork>(2) か "
+#~ "B<clone>() が呼ばれると、子プロセスは親プロセスと同じマウント名前空間に作"
+#~ "成される。 システムコール B<mount>(2)、 B<umount>(2) が呼ばれると呼び出し"
+#~ "元のプロセスのマウント名前空間が変更され、この結果 呼び出し元のプロセスと"
+#~ "同じ名前空間にいるプロセスはすべて影響を受けるが、 異なるマウント名前空間"
+#~ "にいるプロセスは影響を受けない。"
+
+#~ msgid ""
+#~ "A PID namespace provides an isolated environment for PIDs: PIDs in a new "
+#~ "namespace start at 1, somewhat like a standalone system, and calls to "
+#~ "B<fork>(2), B<vfork>(2), or B<clone>() will produce processes with PIDs "
+#~ "that are unique within the namespace."
+#~ msgstr ""
+#~ "PID 名前空間は、PID に関して分離された環境を提供するものである。 新しい名"
+#~ "前空間における PID は 1 から始まり (これはスタンドアロンのシステムと似たよ"
+#~ "うな感じ)、 B<fork>(2), B<vfork>(2), B<clone>() を呼び出すと、その名前空"
+#~ "間で一意な PID を持ったプロセスが作成される。"
+
+#~ msgid ""
+#~ "The first process created in a new namespace (i.e., the process created "
+#~ "using the B<CLONE_NEWPID> flag) has the PID 1, and is the \"init\" "
+#~ "process for the namespace. Children that are orphaned within the "
+#~ "namespace will be reparented to this process rather than B<init>(8). "
+#~ "Unlike the traditional B<init> process, the \"init\" process of a PID "
+#~ "namespace can terminate, and if it does, all of the processes in the "
+#~ "namespace are terminated."
+#~ msgstr ""
+#~ "新しい名前空間で作成される最初のプロセス (つまり、 B<CLONE_NEWPID> フラグ"
+#~ "を使って作成されたプロセス) の PID は 1 であり、 このプロセスはその名前空"
+#~ "間における \"init\" プロセスとなる。 この名前空間において孤児 (orphaned) "
+#~ "となった子プロセスについては、 B<init>(8) ではなくこのプロセスが親プロセ"
+#~ "スとなる。 昔ながらの B<init> プロセスとは違い、PID 名前空間の \"init\" プ"
+#~ "ロセスは終了 (terminated) する ことができ、その場合には、この名前空間の全"
+#~ "てのプロセスが終了される。"
+
+#~ msgid ""
+#~ "PID namespaces form a hierarchy. When a new PID namespace is created, "
+#~ "the processes in that namespace are visible in the PID namespace of the "
+#~ "process that created the new namespace; analogously, if the parent PID "
+#~ "namespace is itself the child of another PID namespace, then processes in "
+#~ "the child and parent PID namespaces will both be visible in the "
+#~ "grandparent PID namespace. Conversely, the processes in the \"child\" "
+#~ "PID namespace do not see the processes in the parent namespace. The "
+#~ "existence of a namespace hierarchy means that each process may now have "
+#~ "multiple PIDs: one for each namespace in which it is visible; each of "
+#~ "these PIDs is unique within the corresponding namespace. (A call to "
+#~ "B<getpid>(2) always returns the PID associated with the namespace in "
+#~ "which the process lives.)"
+#~ msgstr ""
+#~ "PID 名前空間間には階層構造が形成される。 新しい PID 名前空間が作成される"
+#~ "と、その名前空間のプロセスは、 新しい名前空間を作成したプロセスの PID 名前"
+#~ "空間で見える。 同様に、親の PID 名前空間自体が別の PID 名前空間の子供の場"
+#~ "合には、 子供の PID 名前空間と親の PID 名前空間のプロセスはどれも 親の親"
+#~ "の PID 名前空間でも見えることになる。 反対に、「子供」の PID 名前空間のプ"
+#~ "ロセスには、 親の名前空間のプロセスは見えない。 名前空間に階層構造が存在す"
+#~ "るということは、個々のプロセスは 複数の PID を持つということを意味してい"
+#~ "る。 そのプロセスが見える名前空間一つにつき PID が一つあり、 それぞれの "
+#~ "PID は対応する名前空間において一意である。 (B<getpid>(2) を呼び出すと、常"
+#~ "にそのプロセスが存在している名前空間における PID が返される。)"
+
+#~ msgid ""
+#~ "After creating the new namespace, it is useful for the child to change "
+#~ "its root directory and mount a new procfs instance at I</proc> so that "
+#~ "tools such as B<ps>(1) work correctly. (If B<CLONE_NEWNS> is also "
+#~ "included in I<flags>, then it isn't necessary to change the root "
+#~ "directory: a new procfs instance can be mounted directly over I</proc>.)"
+#~ msgstr ""
+#~ "新しい名前空間の作成後には、 子プロセスにおいて、 B<ps>(1) といったツール"
+#~ "が正しく動作するように、 自身の root ディレクトリを変更し、 I</proc> に新"
+#~ "しい procfs インスタンスをマウントするのがよいだろう。 (B<flags> に "
+#~ "B<CLONE_NEWNS> も指定されていた場合には、root ディレクトリを変更する必要は"
+#~ "なく、 いきなり新しい procfs インスタンスを I</proc> にマウントすることが"
+#~ "できる。)"
+
+#~ msgid ""
+#~ "Use of this flag requires: a kernel configured with the B<CONFIG_PID_NS> "
+#~ "option and that the process be privileged (B<CAP_SYS_ADMIN>). This flag "
+#~ "can't be specified in conjunction with B<CLONE_THREAD>."
+#~ msgstr ""
+#~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_PID_NS> を有"
+#~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
+#~ "必要である。 このフラグは B<CLONE_THREAD> と組み合わせて使うことはできな"
+#~ "い。"
+
+#~ msgid ""
+#~ "Use of this flag requires: a kernel configured with the B<CONFIG_UTS_NS> "
+#~ "option and that the process be privileged (B<CAP_SYS_ADMIN>)."
+#~ msgstr ""
+#~ "このフラグを使用するためには、 カーネルでオプション B<CONFIG_UTS_NS> を有"
+#~ "効になっていること、 プロセスが特権 (B<CAP_SYS_ADMIN>) を持っていることが"
+#~ "必要である。"
+
+#~ msgid "The raw system call interface"
+#~ msgstr "素のシステムコールのインターフェース"
+
+#~ msgid "2014-05-13"
+#~ msgstr "2014-05-13"
+
+#~ msgid "2013-01-01"
+#~ msgstr "2013-01-01"
+
+#~ msgid "B<CLONE_NEWIPC>"
+#~ msgstr "B<CLONE_NEWIPC>"
+
+#~ msgid "B<CLONE_NEWNET>"
+#~ msgstr "B<CLONE_NEWNET>"
+
+#~ msgid ""
+#~ "The calling thread did not have the required privilege "
+#~ "(B<CAP_SYS_ADMIN>) for this operation."
+#~ msgstr ""
+#~ "呼び出したスレッドがこの操作を行うのに必要な特権 (B<CAP_SYS_ADMIN>) を\n"
+#~ "持っていなかった。"
+
+#~ msgid "2013-04-17"
+#~ msgstr "2013-04-17"
+
+#~ msgid "2014-02-27"
+#~ msgstr "2014-02-27"
#~ msgid "2013-09-23"
#~ msgstr "2013-09-23"